Example #1
0
 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;
 }
Example #2
0
        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;
        }