public static PlayerAction DecodeAction(BsonDocument actionDocument, Dictionary <String, BaseItem> baseItems) { string actionType = actionDocument.GetValue("type").AsString; if (actionType == "set_flag") { string flagKey = actionDocument.GetValue("flag").AsString; Flag flagValue = DecodeFlag(actionDocument.GetValue("value")); return(new SetFlagAction(flagKey, flagValue)); } else if (actionType == "give_item") { BsonDocument itemDocument = actionDocument.GetValue("item").AsBsonDocument; return(new GiveItemAction(DecodeItem(itemDocument, baseItems))); } else if (actionType == "increment_flag") { string flagKey = actionDocument.GetValue("flag").AsString; NumericalFlag amount = (NumericalFlag)DecodeFlag(actionDocument.GetValue("value")); return(new IncrementFlagAction(flagKey, amount)); } else { return(new NullAction()); } }
public static Requirement DecodeRequirement(BsonDocument requirementDocument) { string requirementType = requirementDocument.GetValue("type").AsString; if (requirementType == "set_flag") { string flagKey = requirementDocument.GetValue("flag").AsString; return(new SetRequirement(flagKey)); } else if (requirementType == "null_flag") { string flagKey = requirementDocument.GetValue("flag").AsString; return(new NullRequirement(flagKey)); } else if (requirementType == "equals") { string flagKey = requirementDocument.GetValue("flag").AsString; Flag flagValue = DecodeFlag(requirementDocument.GetValue("value")); return(new EqualsRequirement(flagKey, flagValue)); } else if (requirementType == "less_than") { string flagKey = requirementDocument.GetValue("flag").AsString; NumericalFlag flagValue = (NumericalFlag)DecodeFlag(requirementDocument.GetValue("value")); return(new LessThanRequirement(flagKey, flagValue)); } else if (requirementType == "more_than") { string flagKey = requirementDocument.GetValue("flag").AsString; NumericalFlag flagValue = (NumericalFlag)DecodeFlag(requirementDocument.GetValue("value")); return(new MoreThanRequirement(flagKey, flagValue)); } else if (requirementType == "not") { BsonDocument subRequirementDocument = requirementDocument.GetValue("requirement").AsBsonDocument; return(new NotRequirement(DecodeRequirement(subRequirementDocument))); } else if (requirementType == "and") { List <Requirement> requirements = new List <Requirement>(); BsonArray requirementArray = requirementDocument.GetValue("requirements").AsBsonArray; foreach (BsonValue requirementValue in requirementArray) { BsonDocument subRequirementDocument = requirementValue.AsBsonDocument; requirements.Add(DecodeRequirement(requirementDocument)); } return(new AndRequirement(requirements.ToArray())); } else if (requirementType == "or") { List <Requirement> requirements = new List <Requirement>(); BsonArray requirementArray = requirementDocument.GetValue("requirements").AsBsonArray; foreach (BsonValue requirementValue in requirementArray) { BsonDocument subRequirementDocument = requirementValue.AsBsonDocument; requirements.Add(DecodeRequirement(requirementDocument)); } return(new OrRequirement(requirements.ToArray())); } else if (requirementType == "true") { return(new TrueRequirement()); } else { return(new FalseRequirement()); } }
public IncrementFlagAction(string flagKey, NumericalFlag flagValue) { this.flagKey = flagKey; this.flagValue = flagValue; }