Пример #1
0
        private void FieldErase(bool frontMode)
        {
            for (int x = 0; x < this.FieldSheet.ColumnCount; x++)
            {
                for (int y = 0; y < this.FieldSheet.RowCount; y++)
                {
                    if (this.FieldSheet[x, y].Selected)
                    {
                        int mx = x + DC.I.FieldSheetLeftXPos;
                        int my = y;

                        FieldCell fc = DC.I.FieldMap.Table[mx][my];

                        if (frontMode)
                        {
                            fc.FrontCD = null;
                        }
                        else
                        {
                            fc.BackCD = null;
                        }
                    }
                }
            }
            this.ReqUpdateFieldSheet = true;
        }
Пример #2
0
        public void AddColumn()
        {
            FieldCell[] column = new FieldCell[Consts.FIELDMAP_H];

            for (int y = 0; y < Consts.FIELDMAP_H; y++)
            {
                column[y] = new FieldCell(null, null);
            }
            this.Table.Add(column);
        }
Пример #3
0
        public List <FieldCell[]> Table = new List <FieldCell[]>();       // [x][y]

        public FieldTable(ResourceData backReader, ResourceData frontReader)
        {
            while (backReader.HasValue() || frontReader.HasValue())
            {
                FieldCell[] column = new FieldCell[Consts.FIELDMAP_H];

                for (int y = 0; y < Consts.FIELDMAP_H; y++)
                {
                    column[y] = new FieldCell(
                        this.GetFieldCellData(backReader),
                        this.GetFieldCellData(frontReader)
                        );
                }
                this.Table.Add(column);
            }
        }
Пример #4
0
        public void SaveData()
        {
            List <string> backText  = new List <string>();
            List <string> frontText = new List <string>();

            for (int x = 0; x < DC.I.FieldMap.Width; x++)
            {
                for (int y = 0; y < Consts.FIELDMAP_H; y++)
                {
                    FieldCell fc = this.FieldMap.Table[x][y];

                    FieldCellData.AddToText(backText, fc.BackCD);
                    FieldCellData.AddToText(frontText, fc.FrontCD);
                }
            }
            Tools.RTrim(backText);
            Tools.RTrim(frontText);

            File.WriteAllLines(Consts.DATA_DIR + "\\WallData.txt", backText.ToArray(), Tools.CP932);
            File.WriteAllLines(Consts.DATA_DIR + "\\StageData.txt", frontText.ToArray(), Tools.CP932);
        }
Пример #5
0
        private void FldMnuPaste_Click(object sender, EventArgs e)
        {
            try
            {
                if (DC.I.CopiedTable == null)
                {
                    throw new CtrlException("コピー元がありません。");
                }

                int[] destPos = Tools.GetSelectPos(this.FieldSheet);

                if (destPos == null)
                {
                    throw new CtrlException("フィールドマップの領域が選択されていません。");
                }

                int[] destSize = Tools.GetSelectSize(this.FieldSheet, destPos);

                if (destSize[0] == 1 && destSize[1] == 1)                 // ? Single Cell Selected
                {
                    for (int x = 0; x < DC.I.CT_W; x++)
                    {
                        for (int y = 0; y < DC.I.CT_H; y++)
                        {
                            int mx = destPos[0] + x + DC.I.FieldSheetLeftXPos;
                            int my = destPos[1] + y;

                            if (
                                0 <= mx &&
                                0 <= my && my < Consts.FIELDMAP_H
                                )
                            {
                                FieldCell src_fc  = DC.I.CopiedTable[x][y];
                                FieldCell dest_fc = DC.I.FieldMap.Table[mx][my];

                                if (DC.I.DispBackLayer)
                                {
                                    dest_fc.BackCD = src_fc.BackCD;
                                }
                                if (DC.I.DispFrontLayer)
                                {
                                    dest_fc.FrontCD = src_fc.FrontCD;
                                }
                            }
                        }
                    }
                }
                else                 // ? Multi Cell Selected
                {
                    for (int x = 0; x < destSize[0]; x++)
                    {
                        for (int y = 0; y < destSize[1]; y++)
                        {
                            int sx = x % DC.I.CT_W;
                            int sy = y % DC.I.CT_H;

                            int dx = destPos[0] + x + DC.I.FieldSheetLeftXPos;
                            int dy = destPos[1] + y;

                            FieldCell src_fc  = DC.I.CopiedTable[sx][sy];
                            FieldCell dest_fc = DC.I.FieldMap.Table[dx][dy];

                            if (DC.I.DispBackLayer)
                            {
                                dest_fc.BackCD = src_fc.BackCD;
                            }
                            if (DC.I.DispFrontLayer)
                            {
                                dest_fc.FrontCD = src_fc.FrontCD;
                            }
                        }
                    }
                }
                Tools.SelectRect(this.FieldSheet, destPos, destSize);
            }
            catch (CtrlException ex)
            {
                Tools.DispError(ex.Message, "貼り付け失敗");
            }
            catch (Exception ex)
            {
                Tools.DispError(ex);
            }
        }
Пример #6
0
        public void UpdateFieldSheet()
        {
            FieldTable fm = DC.I.FieldMap;

            for (int x = 0; x < Consts.FIELDSHEET_W; x++)
            {
                for (int y = 0; y < Consts.FIELDSHEET_H; y++)
                {
                    FieldCell     fc  = fm.GetCell(x + DC.I.FieldSheetLeftXPos, y);
                    FieldCellData fcd = null;

                    if (DC.I.DispBackLayer && fc.BackCD != null)
                    {
                        fcd = fc.BackCD;
                    }
                    if (DC.I.DispFrontLayer && fc.FrontCD != null)
                    {
                        fcd = fc.FrontCD;
                    }
                    TileImage tile;

                    if (fcd != null)
                    {
                        if (fcd.Index == Consts.ENEMY_INDEX_OF_WALL)
                        {
                            int[] mapPos = fcd.GetTilePos();

                            int mapIndex = mapPos[0];
                            int xPos     = mapPos[1];
                            int yPos     = mapPos[2];

                            try
                            {
                                tile = DC.I.MapTableList[mapIndex].Table[yPos][xPos].Tile;
                            }
                            catch
                            {
                                tile = DC.I.DefaultTile;
                            }
                        }
                        else
                        {
                            tile = DC.I.EnemyList[fcd.Index].Tile;
                        }
                    }
                    else
                    {
                        tile = DC.I.DefaultTile;
                    }

                    Image image;

                    if (this.FieldSheet[x, y].Selected)
                    {
                        image = tile.SelectedImage.ImageData;
                    }
                    else
                    {
                        image = tile.NormalImage.ImageData;
                    }

                    if (this.FieldSheet[x, y].Value != image)
                    {
                        this.FieldSheet[x, y].Value = image;
                    }
                }
            }
        }