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; }
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); }
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); } }
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 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); } }
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; } } } }