コード例 #1
0
ファイル: GameState.cs プロジェクト: rettigcd/spiritisland
    /// <summary>
    /// Called AFTER everything has been configured. and BEFORE players make first move.
    /// </summary>
    public void Initialize()
    {
        // ! this has to go first since ManyMinds requires the beast to be in place
        foreach (var board in Island.Boards)
        {
            Tokens[board[2]].Disease.Init(1);
            var lowest = board.Spaces.Skip(1).OfType <Space1>().First(s => s.StartUpCounts.Empty);
            Tokens[lowest].Beasts.Adjust(1);
        }

        foreach (var board in Island.Boards)
        {
            foreach (var space in board.Spaces)
            {
                ((Space1)space).InitTokens(Tokens[space]);
            }
        }

        // Explore
        InvaderDeck.Explore[0].Explore(this).Wait();

        InvaderDeck.Advance();

        InitSpirits();

        // Blight
        BlightCard.OnGameStart(this);
        Tokens.TokenAdded.ForGame.Add(async args => {
            if (args.Token == TokenType.Blight)
            {
                await BlightAdded(args);
            }
        });
        Tokens.TokenRemoved.ForGame.Add(args => {
            if (args.Token == TokenType.Blight &&
                !args.Reason.IsOneOf(
                    RemoveReason.MovedFrom,                     // pushing / gathering blight
                    RemoveReason.Replaced                       // just in case...
                    )
                )
            {
                this.blightOnCard += args.Count;
            }
        });
    }
コード例 #2
0
 static void Advance(InvaderDeck sut)
 {
     sut.Advance();
     sut.Advance();
     sut.Advance();
 }