コード例 #1
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void WriteExternalMapEvents(string fnMap)
        {
            TMX tmx=new TMX(fnMap, false);

            bool ExistDef=false;

            string fnLuaScript=String.Format("scripts/maps/{0}.lua", FileSystem.GetFilenameWithoutExt(fnMap));

            foreach(Objectgroup og in tmx.ObjectLayers)
            {
                foreach(CSCL.FileFormats.TMX.Object objk in og.Objects)
                {
                    if(objk.Name.ToLower()=="external map events")
                    {
                        //name der Skriptdatei korrekt setzen
                        foreach(Property prop in objk.Properties)
                        {
                            if(prop.Name.ToLower()=="filename")
                            {
                                prop.Value=fnLuaScript;
                            }
                        }

                        ExistDef=true;
                        break;
                    }
                }
            }

            if(ExistDef==false)
            {
                Objectgroup objectGroup=null;

                if(tmx.ObjectLayers.Count==0)
                {
                    tmx.ObjectLayers.Add(new Objectgroup("Object", 0, 0, 0, 0));
                }

                objectGroup=tmx.ObjectLayers[0];
                CSCL.FileFormats.TMX.Object mapObject=new CSCL.FileFormats.TMX.Object("External Map Events", "SCRIPT", 0, 0, 0, 0);
                mapObject.Properties.Add(new Property("FILENAME", fnLuaScript));
                objectGroup.Objects.Add(mapObject);
            }

            tmx.Save(fnMap);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void RenameTilesetNameInMapsToTilesetFilename()
        {
            //Maps laden
            List<string> mapfiles=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");

            foreach(string i in mapfiles)
            {
                bool changed=false;

                TMX maptmx=new TMX(i);

                //Tiles transformieren
                foreach(TMX.TilesetData ld in maptmx.Tilesets)
                {
                    string fnForTilesetName=FileSystem.GetFilenameWithoutExt(ld.imgsource);

                    if(ld.name!=fnForTilesetName)
                    {
                        changed=true;
                        ld.name=fnForTilesetName;
                    }
                }

                if(changed)
                {
                    //Map speichern
                    maptmx.Save(i);
                }
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: Invertika/tools
        //public partial class FormTileReplacer : Form
        //{
        //    public string Filename { get; set; }
        //    public int TileID { get; private set; }
        //    private void pbImage_MouseDoubleClick(object sender, MouseEventArgs e)
        //    {
        //        int xInTiles=e.X/32;
        //        int yInTiles=e.Y/32;
        //        int tileID=yInTiles*32+xInTiles;
        //        TileID=tileID;
        //        DialogResult=DialogResult.OK;
        //    }
        //}
        static void TransformTileInMaps(string srcTileset, string dstTileset, int src, int dst)
        {
            //Maps laden
            List<string> mapfiles=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");

            foreach(string i in mapfiles)
            {
                bool changed=false;

                TMX maptmx=new TMX(i);

                //schauen ob zieltileset vorhanden
                bool TargetTilesetExists=false;

                TMX.TilesetData destTileset=null;

                foreach(TMX.TilesetData td in maptmx.Tilesets)
                {
                    if(td.imgsource.IndexOf(FileSystem.GetFilename(dstTileset))!=-1)
                    {
                        TargetTilesetExists=true;
                        destTileset=td;
                        break;
                    }
                }

                //Tiles transformieren
                maptmx.RemoveGidsFromLayerData(); //RemoveGidFrom Tiles

                if(TargetTilesetExists==false)
                {
                    //Tileset eintragen
                    TMX.TilesetData tsData=new TMX.TilesetData();
                    tsData.name=FileSystem.GetFilenameWithoutExt(dstTileset);
                    tsData.imgsource="../graphics/tiles/"+FileSystem.GetFilename(dstTileset);
                    tsData.tileheight=32;
                    tsData.tilewidth=32;
                    maptmx.Tilesets.Add(tsData);

                    destTileset=tsData;
                }

                foreach(TMX.LayerData ld in maptmx.Layers)
                {
                    for(int y=0;y<ld.height;y++)
                    {
                        for(int x=0;x<ld.width;x++)
                        {
                            TMX.TilesetData ts=ld.tilesetmap[x, y];
                            int TileNumber=ld.data[x, y];

                            if(ts.imgsource!=null)
                            {
                                if(ts.imgsource.IndexOf(FileSystem.GetFilename(srcTileset))!=-1)
                                {
                                    if(TileNumber==src)
                                    {
                                        changed=true;
                                        ld.data[x, y]=dst;
                                        ld.tilesetmap[x, y]=destTileset;
                                    }
                                }
                            }
                        }
                    }
                }

                if(changed)
                {
                    //FirstGids neu vergeben
                    maptmx.Tilesets.Sort();

                    int firstgit=1;

                    foreach(TMX.TilesetData gidChange in maptmx.Tilesets)
                    {
                        gidChange.firstgid=firstgit;
                        firstgit+=2000; //Sicherheitsabstand
                    }

                    //AddGidToTiles
                    maptmx.AddsGidsToLayerData();

                    //Map speichern
                    maptmx.Save(i);
                }
            }

            Console.WriteLine("Tile wurde transformiert.");
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void RenameTileset(string oldName, string newName)
        {
            //Maps laden
            List<string> mapfiles=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");

            foreach(string i in mapfiles)
            {
                bool changed=false;

                TMX maptmx=new TMX(i);

                //Tiles transformieren
                foreach(TMX.TilesetData ld in maptmx.Tilesets)
                {
                    string newSource=ld.imgsource.Replace(oldName, newName);

                    if(ld.imgsource!=newSource)
                    {
                        ld.imgsource=newSource;
                        changed=true;
                    }
                }

                if(changed)
                {
                    Console.WriteLine("Bennene Tileset in Map {0} um.", FileSystem.GetFilename(i));
                    //Map speichern
                    maptmx.Save(i);
                }
            }

            //Tileset umbennen
            string oldFn=Globals.folder_data_graphics_tiles+oldName;
            string newFn=Globals.folder_data_graphics_tiles+newName;

            FileSystem.RenameFile(oldFn, newFn);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void RemoveNonExistingTilesetsFromMaps()
        {
            if(Globals.folder_root=="")
            {
                Console.WriteLine("Bitte geben sie in den Optionen den Pfad zum Invertika Repository an.");
                return;
            }

            List<string> maps=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");
            int removedTilesets=0;

            foreach(string fnCurrent in maps)
            {
                TMX map=new TMX(fnCurrent, false);

                for(int i=0;i<map.Tilesets.Count;i++)
                {
                    CSCL.FileFormats.TMX.TMX.TilesetData fnTileset=map.Tilesets[i];

                    string cleanTileset=Globals.folder_data+fnTileset.imgsource.Replace("../graphics", "graphics");

                    if(!FileSystem.ExistsFile(cleanTileset))
                    {
                        map.Tilesets.Remove(fnTileset);
                        removedTilesets++;
                    }
                }

                map.Save(fnCurrent);
            }

            Console.WriteLine("Es wurden "+removedTilesets+" fehlerhafte Tilesets korrigiert.");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void RemoveBlankTilesFromMaps()
        {
            //Maps laden
            List<string> mapfiles=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");

            foreach(string i in mapfiles)
            {
                bool changed=false;

                TMX maptmx=new TMX(i);

                //für jeden Layer
                foreach(TMX.LayerData ld in maptmx.Layers)
                {
                    for(int y=0;y<ld.height;y++)
                    {
                        for(int x=0;x<ld.width;x++)
                        {
                            int TileNumber=ld.data[x, y];

                            if(TileNumber==0)
                                continue; //leeres Tile

                            Graphic tile=maptmx.GetTile(TileNumber);
                            Color median=tile.GetMedianColor();

                            int summe=median.A+median.R+median.G+median.R;

                            if(summe==0)
                            {
                                ld.data[x, y]=0;
                                changed=true;
                            }
                        }
                    }
                }

                if(changed)
                {
                    //Map speichern
                    maptmx.Save(i);
                }
            }

            Console.WriteLine("Leere Tiles wurden entfernt.");
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void DecompressMaps()
        {
            List<string> files=FileSystem.GetFiles(Globals.folder_data_maps, true, "*.tmx");

            if(files==null)
            {
                Console.WriteLine("Es wurden keine Maps gefunden.");
                Console.WriteLine("Eventuell ist der Pfad des Repositories in der Konfigurationdatei falsch.");
                return;
            }

            #region Bilder berechnen
            foreach(string i in files)
            {
                //Karte berechnen
                Console.WriteLine("Dekpmprimiere Map {0}", FileSystem.GetFilename(i));

                TMX file=new TMX(i);
                file.Save(i, false);
            }
            #endregion

            Globals.Options.Save();
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: Invertika/tools
        static void CreateCollisionsOnMaps()
        {
            //Maps laden
            List<string> mapfiles=FileSystem.GetFiles(Globals.folder_data, true, "*.tmx");

            foreach(string filename in mapfiles)
            {
                TMX TestTMX=new TMX(filename);

                TMX.LayerData fringe=null;
                TMX.LayerData coll=null;

                foreach(TMX.LayerData layer in TestTMX.Layers)
                {
                    switch(layer.name)
                    {
                        case "Fringe":
                            {
                                fringe=layer;
                                break;
                            }
                        case "Collision":
                            {
                                coll=layer;
                                break;
                            }
                    }
                }

                if(fringe==null||coll==null)
                {
                    Console.WriteLine("Überspringe Map {0}", FileSystem.GetFilename(filename));
                    continue;
                }

                //CollID =
                int CollID=coll.data[0, 0];
                bool FileChanged=false;

                for(int y=0;y<fringe.height;y++)
                {
                    for(int x=0;x<fringe.width;x++)
                    {
                        int fieldData=fringe.data[x, y];
                        if(fieldData==0)
                            continue;

                        TMX.TilesetData tInfo=TestTMX.GetTileset(fieldData);

                        if(CollID==coll.data[x, y])
                            continue;

                        switch(FileSystem.GetFilename(tInfo.imgsource))
                        {
                            case "wood1_32_64.png":
                                {
                                    int realID=fieldData-tInfo.firstgid;

                                    switch(realID)
                                    {
                                        case 0: //Stein
                                        case 1: //Stein
                                        case 2: //Pfeil Links
                                        case 3: //Pfeil Rechts
                                        case 4: //Baum
                                        case 5: //Holzteil
                                        case 6: //Pflanze
                                        case 7: //Pflanze
                                        case 10: //Pflanze
                                        case 11: //Pflanze
                                        case 14: //Pflanze
                                        case 15: //Pflanze
                                        case 22: //Heu
                                        case 23: //Heu
                                        case 25: //Schild
                                        case 26: //Schild
                                        case 27: //Schild
                                        case 28: //Schild
                                        case 29: //Schild
                                        case 30: //Schild
                                        case 31: //Schild
                                        case 32: //Pflanze
                                        case 33: //Pflanze
                                        case 34: //Pflanze
                                        case 35: //Pflanze
                                        case 36: //Pflanze
                                        case 37: //Pflanze
                                        case 38: //Pflanze
                                            {
                                                FileChanged=true;
                                                coll.data[x, y]=CollID;
                                                break;
                                            }
                                    }

                                    break;
                                }
                            case "wood1_32_96.png":
                                {
                                    int realID=fieldData-tInfo.firstgid;

                                    switch(realID)
                                    {
                                        case 0: //Baum
                                        case 1: //Baum
                                        case 2: //Baum
                                        case 3: //Baum
                                        case 4: //Baum
                                        case 5: //Baum
                                        case 14: //Baum
                                        case 15: //Baum
                                        case 32: //Pflanze
                                        case 33: //Pflanze
                                        case 34: //Pflanze
                                        case 35: //Pflanze
                                        case 36: //Pflanze
                                        case 37: //Pflanze
                                        case 46: //Baum
                                        case 47: //Baum
                                            {
                                                FileChanged=true;
                                                coll.data[x, y]=CollID;
                                                break;
                                            }
                                    }

                                    break;
                                }
                            case "wood1_32_128.png":
                                {
                                    int realID=fieldData-tInfo.firstgid;

                                    switch(realID)
                                    {
                                        case 0: //Baum
                                        case 1: //Baum
                                        case 2: //Baum
                                        case 3: //Baum
                                            {
                                                FileChanged=true;
                                                coll.data[x, y]=CollID;
                                                break;
                                            }
                                        case 4:
                                        case 7:
                                            {
                                                FileChanged=true;
                                                coll.data[x, y--]=CollID;
                                                break;
                                            }
                                        case 5:
                                        case 6:
                                            {
                                                FileChanged=true;
                                                coll.data[x, y]=CollID;
                                                coll.data[x, y--]=CollID;
                                                break;
                                            }
                                    }
                                    break;
                                }
                            case "wood1_32_160.png":
                                {
                                    int realID=fieldData-tInfo.firstgid;

                                    switch(realID)
                                    {
                                        case 1: //Baum
                                        case 4: //Baum
                                        case 7: //Baum
                                            {
                                                FileChanged=true;
                                                coll.data[x, y]=CollID;
                                                break;
                                            }
                                    }

                                    break;
                                }
                        }
                    }
                }

                if(FileChanged)
                    TestTMX.Save(filename);
            }

            Console.WriteLine("Vorgang beendet.");
        }