//配列サイズ変更処理
        public void Change(int newNumberX, int newNumberY)
        {
            var newMapOneMassList = new MapOneMass[newNumberX, newNumberY];

            //前のMapImageから、はみ出した部分があれば削除する
            for (int x = newNumberX; x < mapData.MapSizeX; x++)
            {
                for (int y = 0; y < mapData.MapSizeY; y++)
                {
                    mapData.List[x, y].Dispose();
                }
            }
            for (int x = 0; x < newNumberX; x++)
            {
                for (int y = newNumberY; y < mapData.MapSizeY; y++)
                {
                    mapData.List[x, y].Dispose();
                }
            }

            //新しいMapImageに前のMapImageをサイズの範囲内でコピーする
            for (int x = 0;
                 x < mapData.MapSizeX && x < newNumberX;
                 x++)
            {
                for (int y = 0;
                     y < mapData.MapSizeY && y < newNumberY;
                     y++)
                {
                    newMapOneMassList[x, y] = mapData.List[x, y];
                }
            }

            //新しいMapImageの新しく生成された領域を初期化する
            for (int x = mapData.MapSizeX; x < newNumberX; x++)
            {
                for (int y = 0; y < newNumberY; y++)
                {
                    newMapOneMassList[x, y]          = new MapOneMass(mapData.MapChipSize);
                    newMapOneMassList[x, y].LocalPos = new DXEX.Vect(x * mapData.MapChipSize, y * mapData.MapChipSize);
                }
            }
            for (int x = 0; x < mapData.MapSizeX; x++)
            {
                for (int y = mapData.MapSizeY; y < newNumberY; y++)
                {
                    newMapOneMassList[x, y]          = new MapOneMass(mapData.MapChipSize);
                    newMapOneMassList[x, y].LocalPos = new DXEX.Vect(x * mapData.MapChipSize, y * mapData.MapChipSize);
                }
            }
            //新しいMadDataリストの方のポインタを保存
            mapData.List = newMapOneMassList;
        }
        //MapOneMassが持つmapChip配列を交換する
        public void SwapMapChips(MapOneMass mapOneMass)
        {
            for (int i = 0; i < MapEditForm.maxLayer; i++)
            {
                mapChips[i].RemoveFromParent();
                mapOneMass.mapChips[i].RemoveFromParent();
                AddChild(mapOneMass.mapChips[i]);
                mapOneMass.AddChild(mapChips[i]);
            }
            var tempMapChips = mapChips;

            mapChips            = mapOneMass.mapChips;
            mapOneMass.mapChips = tempMapChips;
        }
Example #3
0
        //マップを左回転
        public void RotateLeft()
        {
            var newMapOneMassList = new MapOneMass[mapData.MapSizeY, mapData.MapSizeX];

            for (int x = 0; x < newMapOneMassList.GetLength(0); x++)
            {
                for (int y = 0; y < newMapOneMassList.GetLength(1); y++)
                {
                    newMapOneMassList[x, y]          = mapData.List[mapData.MapSizeX - y - 1, x];
                    newMapOneMassList[x, y].LocalPos = new DXEX.Vect(x * mapData.MapChipSize, y * mapData.MapChipSize);
                    newMapOneMassList[x, y].RotateLeft();
                }
            }
            //新しいMadDataリストの方のポインタを保存
            mapData.List = newMapOneMassList;
        }
Example #4
0
        // mapData.listの情報を文字列として書き出す
        public StringBuilder GetMapDataText()
        {
            StringBuilder mapDataText = new StringBuilder();

            mapDataText.Append(mapData.MapChipSize + "," + mapData.MapSizeX + "," + mapData.MapSizeY);
            for (int y = 0; y < mapData.MapSizeY; y++)
            {
                mapDataText.Append(Environment.NewLine);
                for (int x = 0; x < mapData.MapSizeX; x++)
                {
                    MapOneMass mom    = mapData.List[x, y];
                    MapChip[]  ChipId = mom.mapChips;
                    for (int i = 0; i < ChipId.Length; i++)
                    {
                        int Id       = ChipId[i].Id?.value ?? -1;
                        int Angle    = (int)(ChipId[i].Angle / 90.0);
                        int turnFlag = ChipId[i].turnFlag;
                        mapDataText.Append(Id + "," + Angle + "," + turnFlag + ",");
                    }
                }
            }
            return(mapDataText);
        }