Exemplo n.º 1
0
        public MapEditorScene()
        {
            // 地图编辑器应该分两层
            // 下层为Engine里的tile绘制层
            // 上层为编辑功能层,支持鼠标和键盘操作

            TilesPluginMgr.RegistAllTiles();

            Container = new TiledMapDataContainer(MapSize_X, MapSize_Y);

            Display = new MapEditorSceneTiledLayer(Container.MapSize, Vector2.One * NodeSize);
            this.AddChind(Display, 1);

            Operat = new MapEditorSceneOperateLayer(Vector2.One * NodeSize);
            this.AddChind(Operat, 2);

            Operat.TiledCommandMessages += (sender, msg) =>
            {
                CommandHistory.Instance.Do(msg.Command, Container);
            };

            Operat.TiledCommandUndo += (sender, msg) =>
            {
                CommandHistory.Instance.Undo(Container);
            };
            //TestCase();
        }
Exemplo n.º 2
0
 public void Do(TiledMapDataContainer container)
 {
     if (Data != null)
     {
         uint[,] rect = null;
         if (Data.type.CompareTo("square") == 0)
         {
             rect = new uint[Data.w, Data.w];
             FillRect(Data.data, rect);
         }
         else if (Data.type.CompareTo("rect") == 0)
         {
             rect = new uint[Data.w, Data.h];
             FillRect(Data.data, rect);
         }
         int x = rect.GetLength(0);
         int y = rect.GetLength(1);
         for (int i = 0; i < x; ++i)
         {
             for (int j = 0; j < y; ++j)
             {
                 ModifyContainer(container, i, j, rect[i, j]);
             }
         }
     }
 }
Exemplo n.º 3
0
 public void Do(TiledMapDataContainer container)
 {
     if(Data != null)
     {
         uint[,] rect    = null;
         if (Data.type.CompareTo("square") == 0)
         {
             rect        = new uint[Data.w, Data.w];
             FillRect(Data.data, rect);
         }
         else if (Data.type.CompareTo("rect") == 0)
         {
             rect        = new uint[Data.w, Data.h];
             FillRect(Data.data, rect);
         }
         int x = rect.GetLength(0);
         int y = rect.GetLength(1);
         for (int i = 0; i < x; ++i)
         {
             for (int j = 0; j < y; ++j)
             {
                 ModifyContainer(container, i, j, rect[i, j]);
             }
         }
     }
 }
Exemplo n.º 4
0
        public MapEditorScene()
        {
            // 地图编辑器应该分两层
            // 下层为Engine里的tile绘制层
            // 上层为编辑功能层,支持鼠标和键盘操作

            TilesPluginMgr.RegistAllTiles();

            Container               = new TiledMapDataContainer(MapSize_X, MapSize_Y);

            Display                 = new MapEditorSceneTiledLayer(Container.MapSize, Vector2.One * NodeSize);
            this.AddChind(Display, 1);

            Operat                  = new MapEditorSceneOperateLayer(Vector2.One * NodeSize);
            this.AddChind(Operat, 2);

            Operat.TiledCommandMessages += (sender, msg) =>
            {
                CommandHistory.Instance.Do(msg.Command, Container);
            };

            Operat.TiledCommandUndo += (sender, msg) =>
            {
                CommandHistory.Instance.Undo(Container);
            };
            //TestCase();
        }
Exemplo n.º 5
0
 public void Undo(TiledMapDataContainer container)
 {
     foreach (var obj in OriModifyList)
     {
         container.Write(obj.Key.X, obj.Key.Y, obj.Value);
     }
 }
Exemplo n.º 6
0
 public void Undo(TiledMapDataContainer container)
 {
     foreach (var obj in OriModifyList)
     {
         container.Write(obj.Key.X, obj.Key.Y, obj.Value);
     }
 }
Exemplo n.º 7
0
 public void Do(TiledMapDataContainer container)
 {
     OriModifyList = new List <KeyValuePair <Point, uint> >();
     foreach (var obj in ModifyList)
     {
         OriModifyList.Add(new KeyValuePair <Point, uint>(obj.Key, container.Read(obj.Key.X, obj.Key.Y)));
         container.Write(obj.Key.X, obj.Key.Y, obj.Value);
     }
 }
Exemplo n.º 8
0
        public void Redo(TiledMapDataContainer container)
        {
            if (m_redoCommandStack.Count == 0)
                throw new Exception("No commands to redo");

            ICommand command = m_redoCommandStack.Pop();
            command.Do(container);
            m_undoCommandStack.Push(command);
        }
Exemplo n.º 9
0
 public void Do(TiledMapDataContainer container)
 {
     OriModifyList = new List<KeyValuePair<Point, uint>>();
     foreach(var obj in ModifyList)
     {
         OriModifyList.Add(new KeyValuePair<Point, uint>(obj.Key, container.Read(obj.Key.X, obj.Key.Y)));
         container.Write(obj.Key.X, obj.Key.Y, obj.Value);
     }
 }
Exemplo n.º 10
0
 public void Execute(TiledMapDataContainer container)
 {
     for (int x = 0; x < container.MapSize.X; ++x)
     {
         for (int y = 0; y < container.MapSize.Y; ++y)
         {
             container.Write(x, y, CozyTileId.Red);
         }
     }
 }
Exemplo n.º 11
0
 public void Execute(TiledMapDataContainer container)
 {
     for (int x = 0; x < container.MapSize.X; ++x)
     {
         for (int y = 0; y < container.MapSize.Y; ++y)
         {
             container.Write(x, y, CozyTileId.Red);
         }
     }
 }
Exemplo n.º 12
0
 public void Undo(TiledMapDataContainer container)
 {
     for (int x = 0; x < container.MapSize.X; ++x)
     {
         for (int y = 0; y < container.MapSize.Y; ++y)
         {
             container.Write(x, y, oriContainer.Read(x, y));
         }
     }
 }
Exemplo n.º 13
0
        public void Redo(TiledMapDataContainer container)
        {
            if (m_redoCommandStack.Count == 0)
            {
                throw new Exception("No commands to redo");
            }

            ICommand command = m_redoCommandStack.Pop();

            command.Do(container);
            m_undoCommandStack.Push(command);
        }
Exemplo n.º 14
0
 public void Undo(TiledMapDataContainer container)
 {
     // 克隆并没有设置到tiledmap,这里先循环set一下
     //container = oriContainer.Clone() as TiledMapDataContainer;
     for (int x = 0; x < container.MapSize.X; ++x)
     {
         for (int y = 0; y < container.MapSize.Y; ++y)
         {
             container.Write(x, y, oriContainer.Read(x, y));
         }
     }
 }
Exemplo n.º 15
0
 public void Do(ICommand command, TiledMapDataContainer container)
 {
     command.Do(container);
     m_undoCommandStack.Push(command);
     m_redoCommandStack.Clear();
 }
Exemplo n.º 16
0
 private void ModifyContainer(TiledMapDataContainer container, int x, int y, uint data)
 {
     OriModifyList.Add(new KeyValuePair<Point, uint>(new Point(x, y), container.Read(x, y)));
     container.Write(Origion.X + x, Origion.Y + y, data);
 }
Exemplo n.º 17
0
 public void Undo(TiledMapDataContainer container)
 {
     container.Write(X, Y, oriData);
 }
Exemplo n.º 18
0
 public void Do(ICommand command, TiledMapDataContainer container)
 {
     command.Do(container);
     m_undoCommandStack.Push(command);
     m_redoCommandStack.Clear();
 }
Exemplo n.º 19
0
 public void Do(TiledMapDataContainer container)
 {
     oriContainer = container.Clone() as TiledMapDataContainer;
     container.SaveMap();
 }
Exemplo n.º 20
0
 public void Undo(TiledMapDataContainer container)
 {
     container.Write(X, Y, oriData);
 }
Exemplo n.º 21
0
 public void Do(TiledMapDataContainer container)
 {
     oriData = container.Read(X, Y);
     container.Write(X, Y, Data);
 }
Exemplo n.º 22
0
 private void ModifyContainer(TiledMapDataContainer container, int x, int y, uint data)
 {
     OriModifyList.Add(new KeyValuePair <Point, uint>(new Point(x, y), container.Read(x, y)));
     container.Write(Origion.X + x, Origion.Y + y, data);
 }
Exemplo n.º 23
0
 public void Do(TiledMapDataContainer container)
 {
     oriData = container.Read(X, Y);
     container.Write(X, Y, Data);
 }