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(""); }
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); }
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); }
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); } }
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; } } } }
public FieldCell(FieldCellData backCD, FieldCellData frontCD) { this.BackCD = backCD; this.FrontCD = frontCD; }