Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[C#] TXed - TXCobalt Map Editor - TSnake41
Auteur Message
Répondre en citant
Message [C#] TXed - TXCobalt Map Editor - TSnake41 
Bonjour, j'ai remarqué que TXCobalt manquait d'un éditeur donc j'en ai fait un, en mode console à la main fait avec uniquement notepad++ (et cs-script) et compilable sur n'importe quel pc (pas besoin de Visual Studio).
Son nom est TXed, (TXCobalt map Editor).



Téléchargement (script de génération, code source et exécutable + librairies) : https://up1.ca/#VTvLFpUZnDhBE-CwmHOfww

Pour charger une map, on peut faire L ou glisser/déposer la map vers l’exécutable (=argument)

Codé, testé et construit sur Windows XP x86 en utilisant le framework 4.0.

Code:
[lang=csharp]using System;
using System.IO;

using TXCobalt.Core;

namespace TXed
{
   class Program
   {
      static Map map;
      static Vector2D cursorpos = new Vector2D(1, 1);
      
      static void Main(string[] args)
      {
         Console.Title = "TXed map editor";
         Log.UseLogFile = false;

         Console.WriteLine("TXed map editor");
         Console.WriteLine("");
         
         if(File.Exists(string.Concat(args)))
            map = Map.ImportMap(string.Concat(args));   
         else         
            map = CreateMap();
         Editor();
      }

      static Map CreateMap()
      {
         string s_MapLength, s_MapHeigth;
         int MapLenght, MapHeight;

         do
         {
            Console.Write("Map Lenght : ");
            s_MapLength = Console.ReadLine();
         }
         while(!int.TryParse(s_MapLength, out MapLenght));

         do
         {
            Console.Write("Map Height : ");
            s_MapHeigth = Console.ReadLine();
         }
         while(!int.TryParse(s_MapHeigth, out MapHeight));

         Console.WriteLine("Generate map...");
         byte[] mapdata = new byte[MapLenght*MapHeight];

         for (int i = 0; i < MapHeight * MapLenght;i++)
            mapdata[i] = 0;

         return new Map(mapdata, MapLenght, MapHeight, new Vector2D(1, 1));
      }

      static void Editor()
      {
         while (true)
         {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.SetCursorPosition(0, 2);
            // Draw map
            for(int y = 0;y < map.Height;y++)
            {
               for(int x = 0; x < map.Lenght;x++)
                  if(map.MapData[y*map.Lenght+x]>127)
                     Console.Write('█');
                  else
                     Console.Write(' ');
                  
               Console.Write('\n');
            }
            
            // Draw spawnpoint
            Console.SetCursorPosition(map.DefaultSpawn.x,map.DefaultSpawn.y+2);
            Console.ForegroundColor = ConsoleColor.Green;
            if(map.MapData[map.DefaultSpawn.y*map.Lenght+map.DefaultSpawn.x]>127)
               Console.BackgroundColor = ConsoleColor.Gray;
            else
               Console.BackgroundColor = ConsoleColor.Black;
            Console.Write('s');

            // Draw Cursor
            Console.SetCursorPosition(cursorpos.x, cursorpos.y+2);
            Console.ForegroundColor = ConsoleColor.Green;
               
            if(map.MapData[cursorpos.y*map.Lenght+cursorpos.x]>127)
               Console.BackgroundColor = ConsoleColor.Gray;
            else
               Console.BackgroundColor = ConsoleColor.Black;
            
            Console.WriteLine('+');
            Console.ForegroundColor = ConsoleColor.Gray;
            Console.BackgroundColor = ConsoleColor.Black;

            // Draw cursor position
            Console.SetCursorPosition(0, 0);
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("x: {0}", cursorpos.x);
            Console.WriteLine("y: {0}", cursorpos.y);
            
            // Draw help
            Console.SetCursorPosition(0,map.Height+3);
            Console.ForegroundColor = ConsoleColor.DarkGray;
            Console.WriteLine("TXed map editor for TXCobalt");
            Console.WriteLine("Arrows : Move cursor ; Spacebar : switch wall ; S : Define spawn ; E : Save ; L : Load ; N : New map");
            
            switch(Console.ReadKey(true).Key)
            {
               case ConsoleKey.UpArrow:
                  if(cursorpos.y!=0)
                     cursorpos.y--;
                  break;
               case ConsoleKey.DownArrow:
                  if(cursorpos.y<map.Height-1)
                     cursorpos.y++;
                  break;
               case ConsoleKey.LeftArrow:
                  if(cursorpos.x!=0)
                     cursorpos.x--;
                  break;
               case ConsoleKey.RightArrow:
                  if(cursorpos.x<map.Lenght-1)
                     cursorpos.x++;
                  break;
               case ConsoleKey.Spacebar:
                  if(map.MapData[cursorpos.y*map.Lenght+cursorpos.x]<127)
                     map.MapData[cursorpos.y*map.Lenght+cursorpos.x] = 128;
                  else
                     map.MapData[cursorpos.y*map.Lenght+cursorpos.x] = 0;
                  break;
               case ConsoleKey.S:
                  map.DefaultSpawn = cursorpos;
                  break;
               case ConsoleKey.E:
                  Console.WriteLine("Type the name of the map to export : ");
                  string path = Console.ReadLine();
                  try
                  {
                     map.ExportMap(path+".map");
                  }
                  catch
                  {
                     Console.WriteLine("Unable to export the map");
                     Console.ReadKey();
                  }
                  break;
               case ConsoleKey.L:
                  Console.WriteLine("Drag and drop or type the path of the map to load: ");
                  string mappath = Console.ReadLine().Replace("\"","");
                  if(File.Exists(mappath))
                     try
                     {
                        Map new_map = Map.ImportMap(mappath);
                        map = new_map;
                        cursorpos = new Vector2D(1,1);
                     }
                     catch
                     {
                        Console.WriteLine("Unable to load the map");
                        Console.ReadKey();
                     }
                  break;
               case ConsoleKey.N:
                  Console.WriteLine("Are you sure to create new map ? Y/n");
                  char keychar = Console.ReadKey(true).KeyChar;
                  if(keychar.ToString().ToLower() == "y")
                  {
                     Console.Clear();
                     cursorpos = new Vector2D(1,1);
                     map = CreateMap();
                  }
                  
                  break;
            }
         }
      }
   }
}





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message Publicité 
PublicitéSupprimer les publicités ?


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch