Example #1
0
        public static bool IsAvailable(ConversationPredicate predicate, BaseCharacterController speaker)
        {
            switch (predicate)
            {
            case ConversationPredicate.PlayerIsHurt:
                return(IsPlayerHurt());

            case ConversationPredicate.NoDoubleJump:
                return(App.AIBlackboard.Player.MaxJumps < 2);

            case ConversationPredicate.PlayerIsSquare:
                return(App.AIBlackboard.Player.CurrentShape == CharacterFaction.Square);

            case ConversationPredicate.PlayerIsCircle:
                return(App.AIBlackboard.Player.CurrentShape == CharacterFaction.Circle);

            case ConversationPredicate.PlayerIsTriangle:
                return(App.AIBlackboard.Player.CurrentShape == CharacterFaction.Triangle);

            case ConversationPredicate.PlayerHasCashAndIsSquare:
                return(App.AIBlackboard.Player.Inventory.Contents.Currency >= 1000 && App.AIBlackboard.Player.CurrentShape == CharacterFaction.Square);

            case ConversationPredicate.PlayerHasCashAndIsTriangle:
                return(App.AIBlackboard.Player.Inventory.Contents.Currency >= 1000 && App.AIBlackboard.Player.CurrentShape == CharacterFaction.Triangle);

            case ConversationPredicate.NOTPlayerHasCashAndIsSquare:
                return(!(App.AIBlackboard.Player.Inventory.Contents.Currency >= 1000 && App.AIBlackboard.Player.CurrentShape == CharacterFaction.Square));

            case ConversationPredicate.NOTPlayerHasCashAndIsTriangle:
                return(!(App.AIBlackboard.Player.Inventory.Contents.Currency >= 1000 && App.AIBlackboard.Player.CurrentShape == CharacterFaction.Triangle));

            case ConversationPredicate.None:
            default:
                return(true);
            }
        }
Example #2
0
        public ConversationFragment(BinaryReader reader)
        {
            IsPlayer = reader.ReadBoolean();

            int count = reader.ReadInt32();

            ToSay            = new string[count];
            OptionOutputData = new ConversationData[count];

            for (int idx = 0; idx < count; idx++)
            {
                ToSay[idx] = reader.ReadString();
            }

            Output      = (ConversationOutput)reader.ReadInt16();
            IsAvailable = (ConversationPredicate)reader.ReadInt16();

            for (int idx = 0; idx < count; idx++)
            {
                OptionOutputData[idx] = new ConversationData(reader);
            }

            ShouldRerun = (RerunPredicate)reader.ReadInt16();
        }