public void Do(ActionStack pActionStack) { foreach (GameAction g in mActions) { g.Do(pActionStack); } }
public PlayArea(Page pPage, int pSize) { mPage = pPage; Grid bottomButtons = new Grid(); mUndoButton = new Button() { Text = "Undo Turn" }; mUndoButton.Pressed += BackPressed; bottomButtons.Children.AddHorizontal(mUndoButton); Button button = new Button() { Text = "End Turn" }; button.Pressed += EndTurnPressed; bottomButtons.Children.AddHorizontal(button); button = new Button() { Text = "Solve Turn" }; button.Pressed += SolveTurn;; bottomButtons.Children.AddHorizontal(button); Padding = 0; Margin = 0; RowSpacing = 3; ColumnSpacing = 3; BackgroundColor = Color.Black; mSize = pSize; mPlayerUnits = new List <PlayerUnit>(); mEnemyUnits = new List <EnemyUnit>(); mGridBuildings = new List <GridBuilding>(); mHighlightedSquares = new List <Square>(); mEmergingSquares = new List <Square>(); mSquares = new Square[mSize, mSize]; mActionStackNew = new ActionStack(this); string board = "rrfmmrrr,rrrrmfrr,rffmrrrr,frrrrrrm,rrrrrrfr,rrrrrrrr,fffrrrrm,rrrrrrmm"; string[] rows = board.Split(','); string r; char s; Square square; for (int row = 0; row < mSize; ++row) { r = rows[row]; for (int col = 0; col < mSize; ++col) { s = r[col]; switch (s) { case 'f': square = new ForestSquare(this, row, col); break; case 'm': square = new RegularSquare(this, row, col); new Mountain(square); break; default: square = new RegularSquare(this, row, col); break; } mSquares[row, col] = square; Children.Add(square, col, row); } } mPlayerUnits.Add(new GravityMech(mSquares[3, 2], null)); mPlayerUnits.Add(new SiegeMech(mSquares[4, 2], null)); mPlayerUnits.Add(new JudoMech(mSquares[3, 4], new ChenRong())); mPlayerUnits.Add(new OldArtillery(mSquares[3, 3])); mPlayerUnits[3].Damage(1, DamageType.Direct); mEnemyUnits.Add(new Scorpion(mSquares[5, 2])); mEnemyUnits[0].Damage(1, DamageType.Direct); mEnemyUnits.Add(new Scorpion(mSquares[2, 5])); mEnemyUnits.Add(new Firefly(mSquares[5, 4])); mEnemyUnits.Add(new Scorpion(mSquares[3, 5])); mGridBuildings.Add(new GridBuilding(mSquares[1, 1], 1)); mGridBuildings.Add(new ObjectiveGridBuilding(mSquares[1, 3], 1)); mGridBuildings.Add(new GridBuilding(mSquares[2, 4], 1)); mGridBuildings.Add(new GridBuilding(mSquares[2, 7], 1)); mGridBuildings.Add(new GridBuilding(mSquares[4, 1], 2)); mGridBuildings.Add(new GridBuilding(mSquares[4, 7], 2)); mGridBuildings.Add(new GridBuilding(mSquares[5, 1], 2)); mGridBuildings.Add(new GridBuilding(mSquares[5, 7], 2)); ToggleEmerging(mSquares[5, 3]); ToggleEmerging(mSquares[7, 4]); mSquares[6, 1].ApplyStatus(SquareStatus.Fire); //other = new Mountain(mSquares[3, 4]); //other = new EnemyUnit(mSquares[4, 6], 3); //mEnemyUnits[1].MoveSquares().ForEach(sq => sq.BackgroundColor = Color.Red); //List<PlayerAttack> attacks = mPlayerUnits[3].PossibleAttacks(); //attacks.ForEach(a => a.TargetSquare.BackgroundColor = Color.Blue); //attacks[0].Do(mActionStack); //attacks = unit.PossibleAttacks(); //attacks[0].Do(mActionStack); //UndoLastAttack(); //attacks.ForEach(a => { if (a.TargetSquare.Equals(mSquares[3, 3])) a.Do(mActionStack); }); Children.Add(bottomButtons, 0, mSize, mSize, mSize + 1); }