Forum de la communauté SFML

Bindings - autres langages => DotNet => Discussion démarrée par: Drakilster le Décembre 16, 2012, 11:11:49 am

Titre: [C#] Problème d'affichage map
Posté par: Drakilster le Décembre 16, 2012, 11:11:49 am
Bonjour,Je vous explique mon problème qui persiste depuis au moin plus de 2 jour.
J'ai un map ou je refresh ma carte  pour afficher le contenu.
Le problème est mon contenue ne s'affiche pas voici ce qui affiche le contenue :
public void RefreshMap()
        {
            RenduMap.Clear();
            RenduMap.SetFramerateLimit(60);
            for (int Ytime = 0; Ytime < 15; Ytime++)
            {
                for (int XTime = 0; XTime < 20; XTime++)
                {
                    for (int coucheX = 0; coucheX < 3; coucheX++)
                    {
                        String[] CouchesCp = MapCouche1[Ytime, XTime].Split(new String[] { "()" }, StringSplitOptions.RemoveEmptyEntries);
                        String[] CouchesEventCp = CouchesCp[Convert.ToInt32(coucheX)].Split(new String[] { "--" }, StringSplitOptions.RemoveEmptyEntries);
                        if (CouchesEventCp[1] == "-0" && CouchesEventCp[0] == "-0")
                        {
                        }
                        else
                        {
                            AffCase.SubRect = new IntRect((Convert.ToInt32(CouchesEventCp[1]) * 32), (Convert.ToInt32(CouchesEventCp[0]) * 32), (Convert.ToInt32(CouchesEventCp[1]) * 32) + 32, (Convert.ToInt32(CouchesEventCp[0]) * 32) + 32);
                            AffCase.Position = new Vector2(Convert.ToInt32(CouchesEventCp[3]) * 32, Convert.ToInt32(CouchesEventCp[2]) * 32);
                            RenduMap.Draw(AffCase);
                        }
                       
                    }
                   
                }
            }
RenduMap.display();
}
L'initialise de la map et la :
public void ConstructeurMap(PictureBox B)
        {
            //initialise Y
           
            PicMap = B;
            RenduMap = new RenderWindow(PicMap.Handle);
            RenduMap.SetFramerateLimit(60);
            AffCase = new Sprite(ImgTile);
            RenduMap.Clear();
            RenduMap.Display();
            for (int i = 0; i < 15; i++)
            {
                //Initialise X
                for (int i2 = 0; i2 < 20; i2++)
                {
                    // Explication Code 1-TileY 2-TileX 3-MapY 4-MapX 5-Even 6-Bloque
                    MapCouche1[i, i2] = "-0---0--" + i + "--" + i2 + "--0--1()-0---0--" + i + "--" + i2 + "()-0---0--" + i + "--" + i2;
                    MapCouche2[i, i2] = "-0---0--" + i + "--" + i2 + "--0--1()-0---0--" + i + "--" + i2 + "()-0---0--" + i + "--" + i2;
                }
            }
        }

Bref si je met par exemple un draw dans le constructeur ce draw reste afficher et clignote met mon contenue ne s'affiche pas on dirait que mon refresh ne clear rien ou n'enregistre rien.
J'ai verifier aussi si il recever bien les case il les recois bien donc sa vien d'autre chose j'ai beau chercher impossible de trouve ce qui lance le refresh et ce code la :
private void FrmEditeur_Shown(object sender, EventArgs e)
        {
           
            Edit.ConstructeurTile(PicTile);
            Edit.ConstructeurMap(PicMap);
            RefreshTile.RunWorkerAsync();
            RefreshMap.RunWorkerAsync();
           
        }

Le truc comme vous voyer le tile et refresh lui aussi et celui ci marche comparer a la map .
Voici le runworker :
private void RefreshMap_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                    Edit.RefreshMap();
            }
        }

Il est identique au refreshTile voici le code du refresh tile :
public void RefreshTile()
        {
            if (CaseSelect == 1)
            {

                RenduTile.SetFramerateLimit(60);
                RenduTile.Clear();
                RenduTile.Draw(AffTile);
                RenduTile.Draw(AffCaseSelect);
               
               
                RenduTile.Display();
            }
            else
            {
                RenduTile.SetFramerateLimit(60);
                RenduTile.Clear();
                RenduTile.Draw(AffTile);
                RenduTile.Display();
            }
           
           
        }

Celui ci marche sans soucie  alors que la code maps et cassi identique comment je peux faire ?

edit :
Le problème viens exactement de RenduMap car si je le remplace par RenduTile le code fonctionne les image s'affiche etc.
Problème et que je voie pas quel et le  problème réel car si sa viens pas du code refresh alors sa viens du constructeur mais j'ai rien vue d'anormal

edit :

J'ai resolu le probleme si j'enlever dans COnstruteur maps display et clear le tile s'affiche pas mes les event maps s'affiche parcontre si j'enleve aussi les event au tile ben la maps fonctionne pas mais le tile fonctionne  bizzard