namespace Game { /// /// Represents the state of the game during the final campaign of the war. /// public sealed class FinalCampaign : WarState { /// /// Initializes a new instance of the FinalCampaign class. /// /// /// The computer's forces. /// /// /// The player's forces. /// public FinalCampaign(ArmedForces computerForces, ArmedForces playerForces) : base(computerForces, playerForces) { } protected override (WarState nextState, string message) AttackWithArmy(int attackSize) { if (attackSize < ComputerForces.Army / 2) { return ( new Ceasefire( ComputerForces, PlayerForces with { Army = PlayerForces.Army - attackSize }), "I WIPED OUT YOUR ATTACK!" ); } else { return ( new Ceasefire( ComputerForces with { Army = 0 }, PlayerForces), "YOU DESTROYED MY ARMY!" ); } } protected override (WarState nextState, string message) AttackWithNavy(int attackSize) { if (attackSize < ComputerForces.Navy / 2) { return ( new Ceasefire( ComputerForces, PlayerForces with { Army = PlayerForces.Army / 4, Navy = PlayerForces.Navy / 2 }), "I SUNK TWO OF YOUR BATTLESHIPS, AND MY AIR FORCE\n" + "WIPED OUT YOUR UNGAURDED CAPITOL." ); } else { return ( new Ceasefire( ComputerForces with { AirForce = 2 * ComputerForces.AirForce / 3, Navy = ComputerForces.Navy / 2 }, PlayerForces), "YOUR NAVY SHOT DOWN THREE OF MY XIII PLANES,\n" + "AND SUNK THREE BATTLESHIPS." ); } } protected override (WarState nextState, string message) AttackWithAirForce(int attackSize) { // BUG? Usually, larger attacks lead to better outcomes. // It seems odd that the logic is suddenly reversed here, // but this could be intentional. if (attackSize > ComputerForces.AirForce / 2) { return ( new Ceasefire( ComputerForces, PlayerForces with { Army = PlayerForces.Army / 3, Navy = PlayerForces.Navy / 3, AirForce = PlayerForces.AirForce / 3 }), "MY NAVY AND AIR FORCE IN A COMBINED ATTACK LEFT\n" + "YOUR COUNTRY IN SHAMBLES." ); } else { return ( new Ceasefire( ComputerForces, PlayerForces, absoluteVictory: true), "ONE OF YOUR PLANES CRASHED INTO MY HOUSE. I AM DEAD.\n" + "MY COUNTRY FELL APART." ); } } } }