public static void Register(ScoreType st) { ScoringDB.Score s = new ScoringDB.Score(st.Name, new List <string>(), new List <string>(), st.Initial); for (int i = 0; i < st.Applies.Count; i++) { s.calculateDMs.Add(st.Applies[i]); } for (int i = 0; i < st.Viewers.Count; i++) { s.displayDMs.Add(st.Viewers[i]); } for (int i = 0; i < st.Rules.Count; i++) { string thisRuleName = st.Rules[i]; ScoringRuleType thisRule = ScoringRules.Get(thisRuleName); if (ScoringDB.ConditionInfo.ConditionType.ObjectExists == thisRule.Condition.conditionType) { for (int unitLoc = 0; unitLoc < thisRule.Unit.Region.Zone.Count; unitLoc++) { ScoringDB.ActorInfo.OwnerInfo unitOwnerInfo = new ScoringDB.ActorInfo.OwnerInfo(thisRule.Unit.Owner); ScoringDB.ActorInfo.IdentifierInfo unitIdentifierInfo = thisRule.Unit.ID; ScoringDB.ActorInfo.LocationInfo unitLocationInfo = new ScoringDB.ActorInfo.LocationInfo(thisRule.Unit.Region.Relationship, thisRule.Unit.Region.Zone[unitLoc]); ScoringDB.ConditionInfo conditionInfo = new ScoringDB.ConditionInfo(thisRule.Condition.conditionType, thisRule.Condition.oldState, thisRule.Condition.newState); s.rules.Add(new ScoringDB.ScoringRule(new ScoringDB.ActorInfo(unitOwnerInfo, unitIdentifierInfo, unitLocationInfo), conditionInfo, null, thisRule.Increment)); } } else { for (int unitLoc = 0; unitLoc < thisRule.Unit.Region.Zone.Count; unitLoc++) { for (int objectLoc = 0; objectLoc < thisRule.Unit.Region.Zone.Count; objectLoc++) { ScoringDB.ActorInfo.OwnerInfo unitOwnerInfo = new ScoringDB.ActorInfo.OwnerInfo(thisRule.Unit.Owner); ScoringDB.ActorInfo.IdentifierInfo unitIdentifierInfo = thisRule.Unit.ID; ScoringDB.ActorInfo.LocationInfo unitLocationInfo = new ScoringDB.ActorInfo.LocationInfo(thisRule.Unit.Region.Relationship, thisRule.Unit.Region.Zone[unitLoc]); ScoringDB.ActorInfo.OwnerInfo objectOwnerInfo = new ScoringDB.ActorInfo.OwnerInfo(thisRule.ObjectID.Owner); ScoringDB.ActorInfo.IdentifierInfo objectIdentifierInfo = thisRule.ObjectID.ID; ScoringDB.ActorInfo.LocationInfo objectLocationInfo = new ScoringDB.ActorInfo.LocationInfo(thisRule.ObjectID.Region.Relationship, thisRule.ObjectID.Region.Zone[objectLoc]); ScoringDB.ConditionInfo conditionInfo = new ScoringDB.ConditionInfo(thisRule.Condition.conditionType, thisRule.Condition.oldState, thisRule.Condition.newState); s.rules.Add(new ScoringDB.ScoringRule(new ScoringDB.ActorInfo(unitOwnerInfo, unitIdentifierInfo, unitLocationInfo), conditionInfo, new ScoringDB.ActorInfo(objectOwnerInfo, objectIdentifierInfo, objectLocationInfo), thisRule.Increment)); } } } } ScoringDB.scores[st.Name] = s; }
public ScoringRuleType(pScoringRuleType s) { this.name = s.Name; this.unit = new ActorType(s.Unit); this.objectID = null; this.condition = new ScoringDB.ConditionInfo(ScoringDB.ConditionInfo.ConditionType.ObjectExists, null, null); if (null != s.ObjectID) { this.objectID = new ActorType(s.ObjectID); this.condition = new ScoringDB.ConditionInfo(ScoringDB.ConditionInfo.ConditionType.StateChange, s.From, s.NewState); } this.newState = s.NewState; this.from = s.From; this.increment = s.Increment; }