Exemple #1
0
        private void FldMnuEdit_Click(object sender, EventArgs e)
        {
            try
            {
                int[] selPos = Tools.GetSelectPos(this.FieldSheet);

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

                int selXPos = selPos[0] + DC.I.FieldSheetLeftXPos;
                int selYPos = selPos[1];

                FieldCellData fcd = DC.I.FieldMap.Table[selXPos][selYPos].FrontCD;

                if (fcd == null)
                {
                    throw new CtrlException("敵オブジェクトが選択されていません。");
                }

                new EditWin(fcd).ShowDialog();
            }
            catch (CtrlException ex)
            {
                Tools.DispError(ex.Message, "編集失敗");
            }
            catch (Exception ex)
            {
                Tools.DispError(ex);
            }
        }
 public static void AddToText(List <string> text, FieldCellData fcd)
 {
     if (fcd != null)
     {
         text.Add("" + fcd.Index);
         Tools.AddToValues <string>(text, fcd.CommonParamValueList.GetValueList_RTrim());
         text.Add("");
         Tools.AddToValues <string>(text, fcd.ParamValueList.GetValueList_RTrim());
     }
     text.Add("");
 }
Exemple #3
0
        public EditWin(FieldCellData targetEnemy)
        {
            this.TargetEnemy = targetEnemy;

            InitializeComponent();

            this.Text = "[ " + DC.I.EnemyList[this.TargetEnemy.Index].Name + " ]";

            this.EnemyPicBox.Image     = DC.I.EnemyList[this.TargetEnemy.Index].Mitame.ImageData;
            this.EnemyPicBox.BackColor = Color.Black;

            this.InitSheet(this.CPVSheet, DC.I.EnemyCommonParamPromptList, this.TargetEnemy.CommonParamValueList);
            this.InitSheet(this.PVSheet, DC.I.EnemyList[this.TargetEnemy.Index].ParamPromptList, this.TargetEnemy.ParamValueList);
        }
Exemple #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);
        }
Exemple #5
0
        private void FldMnu配置_Click(object sender, EventArgs e)
        {
            try
            {
                int[] destPos = Tools.GetSelectPos(this.FieldSheet);

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

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

                if (this.MainTabCtrl.SelectedIndex == 0)                 // ? Map
                {
                    int[] srcPos = Tools.GetSelectPos(this.MapSheet);

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

                    int[] srcSize = Tools.GetSelectSize(this.MapSheet, srcPos);

                    if (destSize[0] == 1 && destSize[1] == 1)                     // ? Single Cell Selected
                    {
                        for (int x = 0; x < this.MapSheet.ColumnCount; x++)
                        {
                            for (int y = 0; y < this.MapSheet.RowCount; y++)
                            {
                                if (this.MapSheet[x, y].Selected)
                                {
                                    int rx = x - srcPos[0];
                                    int ry = y - srcPos[1];

                                    int dx = destPos[0] + rx;
                                    int dy = destPos[1] + ry;

                                    int mx = dx + DC.I.FieldSheetLeftXPos;
                                    int my = dy;

                                    if (
                                        0 <= mx &&
                                        0 <= my && my < Consts.FIELDMAP_H
                                        )
                                    {
                                        FieldCellData fcd = new FieldCellData(
                                            Consts.ENEMY_INDEX_OF_WALL,
                                            new ResourceDataList(),
                                            new ResourceDataList()
                                            );

                                        fcd.SetTilePos(
                                            DC.I.MapTableIndex,
                                            x,
                                            y
                                            );

                                        DC.I.FieldMap.GetCell(mx, my).BackCD = fcd;
                                    }
                                }
                            }
                        }
                    }
                    else                     // ? Multi Cell Selected
                    {
                        for (int x = 0; x < destSize[0]; x++)
                        {
                            for (int y = 0; y < destSize[1]; y++)
                            {
                                FieldCellData fcd = new FieldCellData(
                                    Consts.ENEMY_INDEX_OF_WALL,
                                    new ResourceDataList(),
                                    new ResourceDataList()
                                    );

                                fcd.SetTilePos(
                                    DC.I.MapTableIndex,
                                    srcPos[0] + x % srcSize[0],
                                    srcPos[1] + y % srcSize[1]
                                    );

                                DC.I.FieldMap.GetCell(
                                    destPos[0] + x + DC.I.FieldSheetLeftXPos,
                                    destPos[1] + y
                                    )
                                .BackCD = fcd;
                            }
                        }
                        Tools.SelectRect(this.MapSheet, srcPos, srcSize);
                    }
                    Tools.SelectRect(this.FieldSheet, destPos, destSize);
                }
                else                 // ? Enemy
                {
                    int enemyIndex = Tools.GetSelectRowIndex(this.EnemySheet);

                    if (
                        enemyIndex == -1                         // not found
                        //enemyIndex == Consts.ENEMY_INDEX_OF_WALL
                        )
                    {
                        throw new CtrlException("敵オブジェクトが選択されていないか、配置できない敵オブジェクトが選択されています。");
                    }

                    for (int x = 0; x < this.FieldSheet.ColumnCount; x++)
                    {
                        for (int y = 0; y < this.FieldSheet.RowCount; y++)
                        {
                            if (this.FieldSheet[x, y].Selected)
                            {
                                FieldCellData fcd = DC.I.FieldMap.GetCell(x + DC.I.FieldSheetLeftXPos, y).FrontCD;

                                if (fcd == null)                                 // ? キャラなし
                                {
                                    DC.I.FieldMap.GetCell(x + DC.I.FieldSheetLeftXPos, y).FrontCD = new FieldCellData(
                                        enemyIndex,
                                        new ResourceDataList(),
                                        new ResourceDataList()
                                        );
                                }
                            }
                        }
                    }
                }
                this.ReqUpdateFieldSheet = true;
            }
            catch (CtrlException ex)
            {
                Tools.DispError(ex.Message, "オブジェクト配置エラー");
            }
            catch (Exception ex)
            {
                Tools.DispError(ex);
            }
        }
Exemple #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;
                    }
                }
            }
        }
Exemple #7
0
 public FieldCell(FieldCellData backCD, FieldCellData frontCD)
 {
     this.BackCD  = backCD;
     this.FrontCD = frontCD;
 }