コード例 #1
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            xs.StreamXmlForDBID(s, mode, kXmlElementTech, ref mTechID, DatabaseObjectKind.Tech);
            s.StreamElementOpt(mode, kXmlElementPowerFromHero, ref mPowerFromHero, Util.kNotFalsePredicate);
        }
コード例 #2
0
        public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            if (mode == FA.Write)
            {
                var task_sort_cond = Task.Factory.StartNew(() => Conditions.Sort(SortById));
                var task_sort_effe = Task.Factory.StartNew(() => Effects.Sort(SortById));

                var task_unknowns = Task <int> .Factory.StartNew(() =>
                {
                    using (s.EnterCursorBookmark("Unknowns"))
                        return(WriteUnknowns(s, mode, xs));
                });

                s.WriteAttribute("UnknownCount", task_unknowns.Result);
                s.WriteAttribute("ConditionsCount", Conditions.Count);
                s.WriteAttribute("EffectsCount", Effects.Count);

                Task.WaitAll(task_sort_cond, task_sort_effe);
            }

            XML.Util.Serialize(s, mode, xs, Conditions, BTriggerProtoCondition.kBListXmlParams);
            XML.Util.Serialize(s, mode, xs, Effects, BTriggerProtoEffect.kBListXmlParams);

            if (mode == FA.Read)
            {
                foreach (var c in Conditions)
                {
                    LookupTableAdd(c);
                }
                foreach (var e in Effects)
                {
                    LookupTableAdd(e);
                }
            }
        }
コード例 #3
0
            void StreamCommandData(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
            {
                const string attr_name = kXmlAttrODT_Command_Data;

                switch (CommandType)
                {
                case BProtoObjectCommandType.Research:                         // proto tech
                    xs.StreamXmlForDBID(s, mode, attr_name, ref CommandData, DatabaseObjectKind.Tech, false, XML.Util.kSourceAttr);
                    break;

                case BProtoObjectCommandType.TrainUnit:                         // proto object
                case BProtoObjectCommandType.Build:
                case BProtoObjectCommandType.BuildOther:
                    xs.StreamXmlForDBID(s, mode, attr_name, ref CommandData, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
                    break;

                case BProtoObjectCommandType.TrainSquad:                         // proto squad
                    xs.StreamXmlForDBID(s, mode, attr_name, ref CommandData, DatabaseObjectKind.Squad, false, XML.Util.kSourceAttr);
                    break;

                case BProtoObjectCommandType.ChangeMode:                         // unused
                    s.StreamAttributeEnum(mode, attr_name, ref CommandDataSM);
                    break;

                case BProtoObjectCommandType.Ability:
                    xs.StreamXmlForDBID(s, mode, attr_name, ref CommandData, DatabaseObjectKind.Ability, false, XML.Util.kSourceAttr);
                    break;

                case BProtoObjectCommandType.Power:
                    xs.StreamXmlForDBID(s, mode, attr_name, ref CommandData, DatabaseObjectKind.Power, false, XML.Util.kSourceAttr);
                    break;
                }
            }
コード例 #4
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamAttributeOpt(mode, kXmlAttrId, ref mId, Util.kNotInvalidPredicate);
            s.StreamElementEnumOpt(mode, kXmlElementObjectClass, ref mClassType, x => x != BProtoObjectClassType.Invalid);

            XML.Util.Serialize(s, mode, xs, Veterancy, BProtoObjectVeterancy.kBListExplicitIndexXmlParams);

            s.StreamElementOpt(mode, kXmlElementCostEscalation, ref mCostEscalation, Util.kNotInvalidPredicateSingle);
            s.StreamElementOpt(mode, kXmlElementHitpoints, ref mHitpoints, Util.kNotInvalidPredicateSingle);
            s.StreamElementOpt(mode, kXmlElementAttackGradeDPS, ref mAttackGradeDPS, Util.kNotInvalidPredicateSingle);
//			s.StreamElementOpt(mode, kXmlElementCombatValue, ref mCombatValue, Util.kNotInvalidPredicateSingle);
            s.StreamElementOpt(mode, kXmlElementBounty, ref mBounty, Util.kNotInvalidPredicateSingle);
            XML.Util.Serialize(s, mode, xs, Populations, BPopulation.kBListXmlParamsSingle);
            XML.Util.Serialize(s, mode, xs, PopulationsCapAddition, BPopulation.kBListXmlParamsSingle_CapAddition);

            (xs as XML.BDatabaseXmlSerializerBase).StreamXmlTactic(s, mode, kXmlElementTactics, this, ref mHasTactics);

            XML.Util.Serialize(s, mode, xs, Rates, BGameData.kRatesBListTypeValuesXmlParams);
            XML.Util.Serialize(s, mode, xs, AddResource, BResource.kBListTypeValuesXmlParams_AddResource, kXmlElementAddRsrcAttrAmount);

            XML.Util.Serialize(s, mode, xs, Flags, XML.BBitSetXmlParams.kFlagsSansRoot);
            XML.Util.Serialize(s, mode, xs, ObjectTypes, kObjectTypesXmlParams);
        }
コード例 #5
0
        void StreamConditions(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            var k_AND_params = BTriggerCondition.kBListXmlParams_And;

            if (mode == FA.Read)
            {
                if (OrConditions = !s.ElementsExists(k_AND_params.RootName))
                {
                    XML.Util.Serialize(s, mode, xs, Conditions, BTriggerCondition.kBListXmlParams_Or);
                }
                else
                {
                    XML.Util.Serialize(s, mode, xs, Conditions, k_AND_params);
                }
            }
            else if (mode == FA.Write)
            {
                // Even if there are no conditions, the runtime expects there to be an empty And tag :|
                // Well, technically we could use an empty Or tag as well, but it wouldn't be consistent
                // with the engine. The runtime will assume the the TS is bad if neither tag is present
                if (Conditions.Count == 0)
                {
                    s.WriteElement(k_AND_params.RootName);
                }
                else
                {
                    XML.Util.Serialize(s, mode, xs, Conditions,
                                       OrConditions ? BTriggerCondition.kBListXmlParams_Or : k_AND_params);
                }
            }
        }
コード例 #6
0
        public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            s.StreamAttribute(mode, DatabaseNamedObject.kXmlAttrNameN, ref mName);
            s.StreamAttributeEnum(mode, kXmlAttrType, ref mType);
            s.StreamAttribute(mode, kXmlAttrNextTriggerVar, ref mNextTriggerVarID);
            s.StreamAttribute(mode, kXmlAttrNextTrigger, ref mNextTriggerID);
            s.StreamAttribute(mode, kXmlAttrNextCondition, ref mNextConditionID);
            s.StreamAttribute(mode, kXmlAttrNextEffect, ref mNextEffectID);
            s.StreamAttribute(mode, kXmlAttrExternal, ref mExternal);

            using (s.EnterOwnerBookmark(this))
            {
                XML.Util.Serialize(s, mode, xs, Groups, BTriggerGroup.kBListXmlParams);
                if (mode == FA.Read)
                {
                    BuildDictionary(out m_dbiGroups, Groups);
                }

                XML.Util.Serialize(s, mode, xs, Vars, BTriggerVar.kBListXmlParams);
                if (mode == FA.Read)
                {
                    BuildDictionary(out m_dbiVars, Vars);
                }
                XML.Util.Serialize(s, mode, xs, Triggers, BTrigger.kBListXmlParams);
                if (mode == FA.Read)
                {
                    BuildDictionary(out m_dbiTriggers, Triggers);
                }
            }

            (xs as XML.BTriggerScriptSerializer).TriggerDb.UpdateFromGameData(this);
        }
コード例 #7
0
 public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     s.StreamAttribute(mode, kXmlAttrObjectDBID, ref mObjectDBID);
     XML.Util.Serialize(s, mode, xs, Effects, BCollectibleSkullEffect.kBListXmlParams);
     xs.StreamXmlForStringID(s, mode, kXmlElementDescriptionID, ref mDescriptionID);
     XML.Util.StreamElementNamedFlag(s, mode, kXmlElementHidden, ref mHidden);
 }
コード例 #8
0
		public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
		{
			xs.StreamXmlForDBID(s, mode, kXmlAttrBase, ref mBaseObjectID, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
			xs.StreamXmlForDBID(s, mode, kXmlAttrInfected, ref mInfectedObjectID, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
			if(xs.Database.Engine.Build != PhxEngineBuild.Alpha)
				xs.StreamXmlForDBID(s, mode, kXmlAttrInfectedSquad, ref mInfectedSquadID, DatabaseObjectKind.Squad, false, XML.Util.kSourceAttr);
		}
コード例 #9
0
 public void StreamCommand(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     if (s.StreamAttributeEnumOpt(mode, kXmlAttrODT_Command_Type, ref CommandType, e => e != BProtoObjectCommandType.Invalid))
     {
         StreamCommandData(s, mode, xs);
     }
 }
コード例 #10
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            s.StreamAttribute(mode, kXmlAttrDbId, ref mDbId);
            s.StreamAttribute(mode, kXmlAttrVersion, ref mVersion);

            XML.Util.Serialize(s, mode, xs, Params, BTriggerParam.kBListExplicitIndexXmlParams);
        }
コード例 #11
0
        //string mValue;

        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamAttributeEnum(mode, kXmlAttrType, ref mType);
            s.StreamAttribute(mode, kXmlAttrIsNull, ref mIsNull);
            //s.StreamCursor(mode, ref mValue);
        }
コード例 #12
0
 static void SetupStream(IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     s.IgnoreCaseOnEnums        = true;
     s.ExceptionOnEnumParseFail = true;
     s.StreamMode = mode;
     s.InitializeAtRootElement();
     s.SetSerializerInterface(xs);
 }
コード例 #13
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamAttribute(mode, kXmlAttrInvert, ref mInvert);
            s.StreamAttribute(mode, kXmlAttrAsync, ref mAsync);
            s.StreamAttribute(mode, kXmlAttrAsyncParameterKey, ref mAsyncParameterKey);
        }
コード例 #14
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            XML.Util.Serialize(s, mode, xs, ResourceCost, mResourceCostXmlParams);
            s.StreamElementOpt(mode, kXmlElementBuildPoints, ref mBuildTime, Util.kNotInvalidPredicateSingle);
            s.StreamElementOpt(mode, kXmlElementResearchPoints, ref mResearchTime, Util.kNotInvalidPredicateSingle);
        }
コード例 #15
0
 void StreamXmlStartingUnit(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     using (s.EnterCursorBookmark(mode, kXmlElementStartingUnit))
     {
         xs.StreamXmlForDBID(s, mode, null, ref mStartingUnitID, DatabaseObjectKind.Object, false, XML.Util.kSourceCursor);
         xs.StreamXmlForDBID(s, mode, kXmlElementStartingUnitAttrBuildOther, ref mStartingUnitBuildOtherID, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
     }
 }
コード例 #16
0
 public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     //if (mode == FA.Read) s.ReadCursorName(ref mType);
     s.StreamAttributeEnum(mode, kXmlAttrType, ref mType);
     s.StreamAttribute(mode, kXmlAttrSigId, ref mSigID);
     s.StreamAttribute(mode, DatabaseNamedObject.kXmlAttrNameN, ref mName);
     s.StreamAttributeOpt(mode, kXmlAttrOptional, ref mOptional, Util.kNotFalsePredicate);
     s.StreamCursorEnum(mode, ref mVarType);
 }
コード例 #17
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            if (s.StreamAttributeOpt(mode, kXmlAttrAsync, ref mAsync, Util.kNotFalsePredicate))
            {
                s.StreamAttribute(mode, kXmlAttrAsyncParameterKey, ref mAsyncParameterKey);
            }
        }
コード例 #18
0
        void StreamXmlValueID(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            DatabaseObjectKind kind = ObjectKind;

            if (kind != DatabaseObjectKind.None)
            {
                xs.StreamXmlForDBID(s, mode, null, ref mValueID, kind, false, XML.Util.kSourceCursor);
            }
        }
コード例 #19
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamAttribute(mode, kXmlAttrDbId, ref mDbId);
            s.StreamAttribute(mode, kXmlAttrVersion, ref mVersion);
            // Stream it last, so when we save it ourselves, the (relatively) fixed width stuff comes first
//			XML.Util.StreamInternString(s, mode, kXmlAttrType, ref mTypeStr, false);
        }
コード例 #20
0
        void StreamXmlTargets(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            if (mode == FA.Read)
            {
                Targets = new Collections.BListArray <BProtoTechEffectTarget>();
            }

            XML.Util.Serialize(s, mode, xs, Targets, BProtoTechEffectTarget.kBListXmlParams);
        }
コード例 #21
0
 public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     s.StreamAttributeOpt(mode, kXmlAttrXP, ref mXP, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrDamage, ref mDamage, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrVelocity, ref mVelocity, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrAccuracy, ref mAccuracy, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrWorkRate, ref mWorkRate, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrWeaponRange, ref mWeaponRange, Util.kNotZeroPredicateSingle);
     s.StreamAttributeOpt(mode, kXmlAttrDamageTaken, ref mDamageTaken, Util.kNotZeroPredicateSingle);
 }
コード例 #22
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamElementEnumOpt(mode, kXmlElementType, ref mType, e => e != BAbilityType.Invalid);
            s.StreamElementEnumOpt(mode, kXmlElementSquadMode, ref mSquadMode, e => e != BSquadMode.Invalid);
            s.StreamElementOpt(mode, kXmlElementDamageTakenModifier, ref mDamageTakenModifier, Util.kNotInvalidPredicateSingle);
            s.StreamElementEnumOpt(mode, kXmlElementTargetType, ref mTargetType, e => e != BAbilityTargetType.Invalid);
            s.StreamElementOpt(mode, kXmlElementDuration, ref mDuration, Util.kNotInvalidPredicateSingle);
        }
コード例 #23
0
 public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     using (s.EnterOwnerBookmark(this))
     {
         XML.Util.Serialize(s, mode, xs, Weapons, BWeapon.kBListXmlParams);
         //XML.Util.Serialize(s, mode, db, TacticStates, BTacticState.kBListXmlParams);
         XML.Util.Serialize(s, mode, xs, Actions, BProtoAction.kBListXmlParams);
         Tactic.StreamXml(s, mode, xs);
     }
 }
コード例 #24
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            if (ShouldStreamUnits(s, mode))
            {
                XML.Util.Serialize(s, mode, xs, Units, BProtoSquadUnit.kBListXmlParams);
            }

            XML.Util.Serialize(s, mode, xs, Flags, XML.BBitSetXmlParams.kFlagsSansRoot);
        }
コード例 #25
0
 public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     if (mode == FA.Read)
     {
         s.ReadCursorName(ref mType);
     }
     s.StreamAttribute(mode, kXmlAttrSigId, ref mSigID);
     s.StreamAttribute(mode, DatabaseNamedObject.kXmlAttrNameN, ref mName);
     s.StreamAttribute(mode, kXmlAttrOptional, ref mOptional);
     s.StreamCursor(mode, ref mVarID);
 }
コード例 #26
0
 public void StreamTrainLimit(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs, DatabaseObjectKind kind)
 {
     if (kind == DatabaseObjectKind.Object)
     {
         xs.StreamXmlForDBID(s, mode, kXmlAttrODT_TrainLimit_Unit, ref TrainLimitType, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
     }
     else if (kind == DatabaseObjectKind.Squad)
     {
         xs.StreamXmlForDBID(s, mode, kXmlAttrODT_TrainLimit_Squad, ref TrainLimitType, DatabaseObjectKind.Squad, false, XML.Util.kSourceAttr);
     }
 }
コード例 #27
0
 public void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
 {
     xs.StreamXmlForDBID(s, mode, kXmlAttrUnit, ref mUnitID, DatabaseObjectKind.Object, false, XML.Util.kSourceAttr);
     if (!s.StreamAttributeEnumOpt(mode, kXmlAttrOperator, ref mOperator, e => e != BProtoTechTypeCountOperator.None))
     {
         mOperator = BProtoTechTypeCountOperator.None;
     }
     if (!s.StreamAttributeOpt(mode, kXmlAttrCount, ref mCount, Util.kNotInvalidPredicateInt16))
     {
         mCount = Util.kInvalidInt32;
     }
 }
コード例 #28
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            s.StreamElementEnum(mode, kXmlElementStatus, ref mStatus);

            if (ShouldStreamPrereqs(s, mode))
            {
                Prereqs.StreamXml(s, mode, xs);
            }

            XML.Util.Serialize(s, mode, xs, Effects, BProtoTechEffect.kBListXmlParams);
        }
コード例 #29
0
        int WriteUnknowns(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            int count = 0;

            for (int x = 1; x < mUsedIds.Length; x++)
            {
                if (!mUsedIds[x])
                {
                    s.WriteElement("Unknown", x);
                    count++;
                }
            }
            return(count);
        }
コード例 #30
0
        public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs)
        {
            base.StreamXml(s, mode, xs);

            xs.StreamXmlForDBID(s, mode, kXmlElementTech, ref mTechID, DatabaseObjectKind.Tech);
            xs.StreamXmlForDBID(s, mode, kXmlElementCiv, ref mCivID, DatabaseObjectKind.Civ);
            xs.StreamXmlForDBID(s, mode, kXmlElementPower, ref mPowerID, DatabaseObjectKind.Power);
            xs.StreamXmlForStringID(s, mode, kXmlElementNameID, ref mNameID);

            XML.Util.Serialize(s, mode, xs, Resources, BResource.kBListTypeValuesXmlParams);
            if (ShouldStreamStartingUnit(s, mode))
            {
                StreamXmlStartingUnit(s, mode, xs);
            }
            XML.Util.Serialize(s, mode, xs, StartingSquads, kStartingSquadBListXmlParams);
            XML.Util.Serialize(s, mode, xs, Populations, BPopulation.kBListXmlParams);
        }