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