public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            base.Serialize(s);

            XML.XmlUtil.Serialize(s, ResourceCost, mResourceCostXmlParams);
            s.StreamElementOpt("BuildPoints", ref mBuildTime, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("ResearchPoints", ref mResearchTime, PhxPredicates.IsNotInvalid);
        }
Exemplo n.º 2
0
 public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
     where TDoc : class
     where TCursor : class
 {
     s.StreamCursor(ref mAttachmentName);
     s.StreamElementOpt("Hitpoints", ref mHitpoints, PhxPredicates.IsNotInvalid);
     s.StreamElementOpt("Shieldpoints", ref mShieldpoints, PhxPredicates.IsNotInvalid);
 }
Exemplo n.º 3
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            var xs = s.GetSerializerInterface();

            s.StreamAttribute("objectdbid", ref mObjectDBID);
            XML.XmlUtil.Serialize(s, Effects, BCollectibleSkullEffect.kBListXmlParams);
            s.StreamElementOpt("DisplayImageOn", ref mDisplayImageOn, Predicates.IsNotNullOrEmpty);
            s.StreamElementOpt("DisplayImageOff", ref mDisplayImageOff, Predicates.IsNotNullOrEmpty);
            s.StreamElementOpt("DisplayImageLocked", ref mDisplayImageLocked, Predicates.IsNotNullOrEmpty);
            s.StreamElementNamedFlag("Hidden", ref mHidden);
        }
 public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
     where TDoc : class
     where TCursor : class
 {
     s.StreamElementOpt("CollectiblesXMLVersion", ref mXmlVersion, Predicates.IsNotNone);
     SkullManager.Serialize(s);
 }
        public bool StreamStringID <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s, string xmlName,
                                                   ref int value, IO.TagElementNodeType xmlSource = XmlUtil.kSourceElement)
            where TDoc : class
            where TCursor : class
        {
            Contract.Requires(xmlSource.RequiresName() == (xmlName != XML.XmlUtil.kNoXmlName));

            bool was_streamed = false;

            if (xmlSource == XmlUtil.kSourceElement)
            {
                was_streamed = s.StreamElementOpt(xmlName, ref value, Predicates.IsNotNone);
            }
            else if (xmlSource == XmlUtil.kSourceAttr)
            {
                was_streamed = s.StreamAttributeOpt(xmlName, ref value, Predicates.IsNotNone);
            }
            else if (xmlSource == XmlUtil.kSourceCursor)
            {
                was_streamed = true;
                s.StreamCursor(ref value);
            }

            if (s.IsReading)
            {
                if (value.IsNotNone())
                {
                    Database.AddStringIDReference(value);
                }
            }

            return(was_streamed);
        }
Exemplo n.º 6
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            s.StreamAttributeEnumOpt("flags", ref Flags, flags => flags != 0, true);
            s.StreamAttributeOpt("PrecisionWeaponReticuleBloom", ref PrecisionWeaponBloom, f => f != 1.0f);

            if (s.StreamElementOpt("ArmorLockDamageToEnergyTransfer", ref ArmorLockDamageToEnergyTransfer, f => f != 0.0f))
            {
                s.WriteComment("Damage received while in Armor Lock is transferred to remaining Armor Ability energy");
            }
            s.StreamElementOpt("ArmorLockDamageToEnergyCap", ref ArmorLockDamageToEnergyCap, f => f != 0.0f);

            s.StreamElementOpt("ActiveCamoOverrideEnergyCurveMin", ref ActiveCamoOverrideEnergyCurveMin, f => f != 0.02f);
            s.StreamElementOpt("ActiveCamoOverrideEnergyCurveMax", ref ActiveCamoOverrideEnergyCurveMax, f => f != 0.07f);

            s.StreamAttributeOpt("MagnumDamageMultiplier", ref MagnumDamageMultiplier, f => f != 1.0f);
            s.StreamAttributeOpt("MagnumFireRecoveryTimeMultiplier", ref MagnumFireRecoveryTimeMultiplier, f => f != 1.0f);
        }
Exemplo n.º 7
0
		public void Serialize<TDoc, TCursor>(IO.TagElementStream<TDoc, TCursor, string> s)
			where TDoc : class
			where TCursor : class
		{
			s.StreamAttributeEnum("type", ref Type);
			SerializeActivity(s, "activity", ref Activity);
			s.StreamAttributeEnum("mode", ref Mode);
			s.StreamAttributeEnum("engine", ref EngineType);

			s.StreamAttributeOpt("fileLength", ref FileLength, Predicates.IsNotZero);

			using (s.EnterCursorBookmark("Unknown"))
			{
				s.StreamAttributeOpt("id0", ref unk08, Predicates.IsNotZero, NumeralBase.Hex);
				s.StreamAttributeOpt("id1", ref unk10, Predicates.IsNotZero, NumeralBase.Hex);
				s.StreamAttributeOpt("id2", ref unk18, Predicates.IsNotZero, NumeralBase.Hex);
				s.StreamAttributeOpt("unk20", ref unk20, Predicates.IsNotZero, NumeralBase.Hex);

				s.StreamAttributeOpt("unk2C", ref unk2C, Predicates.IsNotNone);
			}

			using (s.EnterCursorBookmark("Creator"))
				s.StreamObject(Creator);
			using (s.EnterCursorBookmark("Modifier"))
				s.StreamObject(Modifier);

			s.StreamElement("Title", ref Title);
			s.StreamElementOpt("Description", ref Description, Predicates.IsNotNullOrEmpty);

			if (Type == ContentType.Film || Type == ContentType.FilmClip)
				s.StreamElement("FilmLength_", ref unk280);
			else if (Type == ContentType.GameVariant)
				if (!s.StreamElementOpt("EngineIconIndex", ref unk280, Predicates.IsNotNone))
					EngineIconIndex = TypeExtensions.kNone;
			s.StreamAttributeOpt("EngineCategoryIndex", ref EngineCategoryIndex, Predicates.IsNotNone);

			if (Activity == 2)
				s.StreamElement("HopperID", ref HopperId);

			SerializeGameSpecificData(s);
		}
Exemplo n.º 8
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            base.Serialize(s);

            var xs = s.GetSerializerInterface();

            s.StreamAttributeOpt("Alpha", ref mAlpha, Predicates.IsNotNone);
            xs.StreamDBID(s, "CivTech", ref mTechID, DatabaseObjectKind.Tech);
            xs.StreamDBID(s, "CommandAckObject", ref mCommandAckObjectID, DatabaseObjectKind.Object);
            xs.StreamDBID(s, "RallyPointObject", ref mRallyPointObjectID, DatabaseObjectKind.Object);
            xs.StreamDBID(s, "LocalRallyPointObject", ref mLocalRallyPointObjectID, DatabaseObjectKind.Object);
            xs.StreamDBID(s, "Transport", ref mTransportObjectID, DatabaseObjectKind.Object);
            xs.StreamDBID(s, "TransportTrigger", ref mTransportTriggerObjectID, DatabaseObjectKind.Object);
            s.StreamElementOpt("ExpandHull", ref mHullExpansionRadius, Predicates.IsNotZero);
            s.StreamElementOpt("TerrainPushOff", ref mTerrainPushOffRadius, Predicates.IsNotZero);
            s.StreamElementOpt("BuildingMagnetRange", ref mBuildingMagnetRange, Predicates.IsNotZero);
            s.StreamStringOpt("SoundBank", ref mSoundBank, toLower: false, type: XML.XmlUtil.kSourceElement);
            xs.StreamStringID(s, "LeaderMenuNameID", ref mLeaderMenuNameID);
            s.StreamElementOpt("PowerFromHero", ref mPowerFromHero, Predicates.IsTrue);
            s.StreamStringOpt("UIControlBackground", ref mUIControlBackground, toLower: false, type: XML.XmlUtil.kSourceElement);
        }
Exemplo n.º 9
0
        internal static void SerializeViaElementOpt <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s,
                                                                    string elementName, ref ListLimitTraits traits)
            where TDoc : class
            where TCursor : class
        {
            bool streamed = s.StreamElementOpt(elementName, ref traits.MaxCount, Predicates.IsNotZero);

            if (streamed && s.IsReading)
            {
                traits.InitializeBitLengths();
            }
        }
        void ReadNodes <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            var xs = s.GetSerializerInterface();

            Collections.IProtoEnum penum = Bits.InitializeFromEnum(xs.Database);

            if (Params.ElementItselfMeansTrue)
            {
                var getDefault = Bits.Params.kGetMemberDefaultValue;
                foreach (var e in s.Elements)
                {
                    var element_name = s.GetElementName(e);
                    int id           = penum.TryGetMemberId(element_name);
                    if (id.IsNone())
                    {
                        continue;
                    }

                    bool flag = true;
                    s.StreamElementOpt(element_name, ref flag);

                    if (getDefault != null && flag != getDefault(id))
                    {
                        // do nothing, allow the Set call below
                    }
                    else if (!flag)
                    {
                        continue;
                    }

                    Bits.Set(id, flag);
                }
            }
            else
            {
                foreach (var n in s.ElementsByName(Params.ElementName))
                {
                    using (s.EnterCursorBookmark(n))
                    {
                        string name = null;
                        Params.StreamDataName(s, ref name);

                        int id = penum.GetMemberId(name);
                        Bits.Set(id);
                    }
                }
            }

            Bits.OptimizeStorage();
        }
Exemplo n.º 11
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            base.Serialize(s);

            var xs = s.GetSerializerInterface();

            s.StreamAttributeOpt("Icon", ref mIconName, Predicates.IsNotNullOrEmpty);
            s.StreamAttributeOpt("Test", ref mTest, Predicates.IsTrue);
            s.StreamAttributeOpt("Alpha", ref mAlpha, Predicates.IsNotNone);

            s.StreamAttributeOpt("Random", ref mIsRandom, Predicates.IsTrue);
            s.StreamAttributeOpt("StatsID", ref mStatsID, Predicates.IsNotNone);
            s.StreamAttributeOpt("LeaderPickerOrder", ref mLeaderPickerOrder, Predicates.IsNotNone);
            s.StreamAttributeOpt("DefaultPlayerSlotFlags", ref mDefaultPlayerSlotFlags, Predicates.IsNotZero,
                                 NumeralBase.Hex);

            xs.StreamDBID(s, "Tech", ref mTechID, DatabaseObjectKind.Tech);
            xs.StreamDBID(s, "Civ", ref mCivID, DatabaseObjectKind.Civ);
            xs.StreamDBID(s, "Power", ref mPowerID, DatabaseObjectKind.Power);
            s.StreamElementOpt("FlashCivID", ref mFlashCivID, Predicates.IsNotNone);
            s.StreamStringOpt("FlashImg", ref mFlashImg, toLower: false, type: XML.XmlUtil.kSourceElement);
            // TODO: HW360's FlashPortrait elements have an ending " character (sans a starting quote). Be careful!
            s.StreamStringOpt("FlashPortrait", ref mFlashPortrait, toLower: false, type: XML.XmlUtil.kSourceElement);
            XML.XmlUtil.Serialize(s, SupportPowers, BLeaderSupportPower.kBListXmlParams);
            XML.XmlUtil.Serialize(s, StartingSquads, BLeaderStartingSquad.kBListXmlParams);
            XML.XmlUtil.Serialize(s, StartingUnits, BLeaderStartingUnit.kBListXmlParams);
            s.StreamBVector("RallyPointOffset", ref mRallyPointOffset);
            s.StreamElementOpt("RepairRate", ref mRepairRate, Predicates.IsNotZero);
            s.StreamElementOpt("RepairDelay", ref mRepairDelay, Predicates.IsNotZero);
            XML.XmlUtil.Serialize(s, RepairCost, kRepairCostTypeValuesXmlParams);
            s.StreamElementOpt("RepairTime", ref mRepairTime, Predicates.IsNotZero);
            XML.XmlUtil.Serialize(s, ReverseHotDropCost, kReverseHotDropCostTypeValuesXmlParams);
            XML.XmlUtil.Serialize(s, Populations, BPopulation.kBListXmlParams);
            XML.XmlUtil.Serialize(s, Resources, BResource.kBListTypeValuesXmlParams);
            s.StreamStringOpt("UIControlBackground", ref mUIControlBackground, toLower: false, type: XML.XmlUtil.kSourceElement);
        }
Exemplo n.º 12
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            var xs = s.GetSerializerInterface();

            s.StreamElementOpt("DamagePerSecond", ref mDamagePerSecond, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("DOTrate", ref mDOTRate, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("DOTduration", ref mDOTDuration, PhxPredicates.IsNotInvalid);

            s.StreamElementOpt("AttackRate", ref mAttackRate, PhxPredicates.IsNotInvalid);
            xs.StreamDBID(s, "Projectile", ref mProjectileObjectID, DatabaseObjectKind.Object);

            xs.StreamDBID(s, "WeaponType", ref mWeaponTypeID, DatabaseObjectKind.WeaponType);
            s.StreamElementOpt("VisualAmmo", ref mVisualAmmo, Predicates.IsNotNone);
            //TriggerScript

            s.StreamElementOpt("MinRange", ref mMinRange, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("MaxRange", ref mMaxRange, PhxPredicates.IsNotInvalid);

            s.StreamElementOpt("ReflectDamageFactor", ref mReflectDamageFactor, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("MovingAccuracy", ref mMovingAccuracy, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("MaxDeviation", ref mMaxDeviation, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("MovingMaxDeviation", ref mMovingMaxDeviation, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("AccuracyDistanceFactor", ref mAccuracyDistanceFactor, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("AccuracyDeviationFactor", ref mAccuracyDeviationFactor, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("MaxVelocityLead", ref mMaxVelocityLead, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("AirBurstSpan", ref mAirBurstSpan, PhxPredicates.IsNotInvalid);

            XML.XmlUtil.Serialize(s, DamageOverrides, BDamageRatingOverride.kBListXmlParams);
            XML.XmlUtil.Serialize(s, TargetPriorities, BTargetPriority.kBListXmlParams);

            using (var bm = s.EnterCursorBookmarkOpt("Stasis", this, o => o.mStasisSmartTargeting)) if (bm.IsNotNull)
                {
                    s.StreamAttribute("SmartTargeting", ref mStasisSmartTargeting);
                }

            s.StreamElementOpt("StasisHealToDrainRatio", ref mStasisHealToDrainRatio, PhxPredicates.IsNotInvalid);

            s.StreamElementOpt("Bounces", ref mBounces, Predicates.IsNotNone);
            s.StreamElementOpt("BounceRange", ref mBounceRange, PhxPredicates.IsNotInvalid);

            s.StreamElementOpt("MaxPullRange", ref mMaxPullRange, PhxPredicates.IsNotInvalid);
        }
Exemplo n.º 13
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            bool reading = s.IsReading;

            #region Internal
            if (reading)
            {
                int max_trigger_groups = 0, max_virtual_triggers = 0, max_script_values = 0
                ;

                s.ReadElement(kMaxTriggerGroupsElementName, ref max_trigger_groups);
                s.ReadElementOpt(kMaxVirtualTriggersElementName, ref max_virtual_triggers);
                s.ReadElement(kMaxScriptValuesElementName, ref max_script_values);

#if false // #TODO_BLAM
                TriggerGroupsDesc = Collections.ActiveListDesc <Editor.LogicalGroupUI> .
                                    CreateForNullData(max_trigger_groups, fixedLength : false);
#endif
                VirtualTriggersDesc = Collections.ActiveListDesc <Model.MegaloScriptVirtualTrigger> .
                                      CreateForNullData(max_virtual_triggers, fixedLength : false);

                VirtualTriggersDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;

                ScriptValuesDesc = Collections.ActiveListDesc <Model.MegaloScriptValueBase> .
                                   CreateForNullData(max_script_values, fixedLength : false);

                ScriptValuesDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;
            }
            else
            {
//				s.WriteElement(kMaxTriggerGroupsElementName, TriggerGroupsDesc.Capacity);
                s.WriteElement(kMaxVirtualTriggersElementName, VirtualTriggersDesc.Capacity);
                s.WriteElement(kMaxScriptValuesElementName, ScriptValuesDesc.Capacity);
            }
            #endregion

            #region Scripting
            s.StreamElementEnum("EntryPoints", ref SupportedEntryPoints, true);
            s.StreamElementOpt("SupportsVirtualTriggers", ref SupportsVirtualTriggers);
            s.StreamElementOpt("StreamEntryPointIndexAsPointer", ref StreamEntryPointIndexAsPointer);
            s.StreamElementOpt("StreamConditionsAndActionsRefsAsRefs", ref StreamConditionsAndActionsRefsAsRefs);

            ListLimitTraits.SerializeViaElement(s, "MaxConditions", ref Conditions);
            ListLimitTraits.SerializeViaElement(s, "MaxActions", ref Actions);
            ListLimitTraits.SerializeViaElement(s, "MaxTriggers", ref Triggers);

            if (reading)
            {
                UnionGroupsDesc = Collections.ActiveListDesc <Model.MegaloScriptUnionGroup> .
                                  CreateForNullData(Conditions.MaxCount);

                UnionGroupsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;

                ConditionsDesc = Collections.ActiveListDesc <Model.MegaloScriptCondition> .
                                 CreateForNullData(Conditions.MaxCount);

                ConditionsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;

                ActionsDesc = Collections.ActiveListDesc <Model.MegaloScriptAction> .
                              CreateForNullData(Actions.MaxCount);

                ActionsDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;

                TriggersDesc = Collections.ActiveListDesc <Model.MegaloScriptTrigger> .
                               CreateForNullData(Triggers.MaxCount);

                TriggersDesc.ObjectToIndex = Model.MegaloScriptModelObject.kObjectToIndex;
            }
            #endregion

            #region Static
            ListLimitTraits.SerializeViaElement(s, "NumberOfGameEngineOptions", ref GameEngineOptions);
            ListLimitTraits.SerializeViaElement(s, "MaxMultiplayerObjectTypes", ref MultiplayerObjectTypes);
            ListLimitTraits.SerializeViaElement(s, "MaxMegaloStringIds", ref MegaloStringIds);
            ListLimitTraits.SerializeViaElement(s, "MaxMegaloEngineSounds", ref MegaloEngineSounds);
            ListLimitTraits.SerializeViaElement(s, "MaxGameIncidentTypes", ref GameIncidentTypes);
            ListLimitTraits.SerializeViaElement(s, "MaxMegaloHudWidgetIcons", ref MegaloHudWidgetIcons);
            ListLimitTraits.SerializeViaElement(s, "MaxGameEngineIcons", ref GameEngineIcons);
            ListLimitTraits.SerializeViaElement(s, "MaxGameMedals", ref GameMedals);
            ListLimitTraits.SerializeViaElementOpt(s, "MaxGameOrdnanceTypes", ref GameOrdnanceTypes);

            ListLimitTraits.SerializeViaElement(s, "NumberOfEngineCategories", ref EngineCategories);
            #endregion

            #region Variant
            ListLimitTraits.SerializeViaElement(s, "NumberOfLoadoutPalettes", ref LoadoutPalettes);
            ListLimitTraits.SerializeViaElement(s, "MaxUserDefinedOptions", ref UserDefinedOptions);
            ListLimitTraits.SerializeViaElement(s, "MaxUserDefinedOptionValues", ref UserDefinedOptionValues);
            ListLimitTraits.SerializeViaElement(s, "MaxVariantStrings", ref VariantStrings);
            ListLimitTraits.SerializeViaElementOpt(s, "MaxLoadouts", ref Loadouts);
            ListLimitTraits.SerializeViaElement(s, "MaxPlayerTraits", ref PlayerTraits);
            ListLimitTraits.SerializeViaElement(s, "MaxGameStatistics", ref GameStatistics);
            ListLimitTraits.SerializeViaElement(s, "MaxHudWidgets", ref HudWidgets);
            ListLimitTraits.SerializeViaElement(s, "MaxObjectFilters", ref ObjectFilters);

            ListLimitTraits.SerializeViaElementOpt(s, "MaxGameObjectFilters", ref GameObjectFilters);
            #endregion
        }
Exemplo n.º 14
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            var xs = s.GetSerializerInterface();
            var td = KSoft.Debug.TypeCheck.CastReference <BTacticData>(s.UserData);

            s.StreamElementEnumOpt("ActionType", ref mActionType, kNotInvalidActionType);
            s.StreamElementOpt("ProjectileSpread", ref mProjectileSpread, PhxPredicates.IsNotInvalid);

            xs.StreamDBID(s, "SquadType", ref mSquadTypeID, DatabaseObjectKind.Squad);
            td.StreamID(s, "Weapon", ref mWeaponID, TacticDataObjectKind.Weapon);
            td.StreamID(s, "LinkedAction", ref mLinkedActionID, TacticDataObjectKind.Action);

            s.StreamElementEnumOpt("SquadMode", ref mSquadMode, kNotInvalidSquadMode);
            s.StreamElementEnumOpt("NewSquadMode", ref mNewSquadMode, kNotInvalidSquadMode);
#if false
            td.StreamID(s, "NewTacticState", ref mNewTacticStateID, BTacticData.ObjectKind.TacticState);
#endif

            #region Work
            s.StreamElementOpt("WorkRate", ref mWorkRate, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("WorkRateVariance", ref mWorkRateVariance, PhxPredicates.IsNotInvalid);
            s.StreamElementOpt("WorkRange", ref mWorkRange, PhxPredicates.IsNotInvalid);
            #endregion

            #region DamageModifiers
            using (var bm = s.EnterCursorBookmarkOpt("DamageModifiers", this, o => mDamageModifiersDmg != PhxUtil.kInvalidSingle)) if (bm.IsNotNull)
                {
                    s.StreamAttribute("damage", ref mDamageModifiersDmg);
                    s.StreamAttributeOpt("damageTaken", ref mDamageModifiersDmgTaken, PhxPredicates.IsNotInvalid);
                    s.StreamAttributeOpt("byCombatValue", ref mDamageModifiersByCombatValue, Predicates.IsTrue);
                }
            #endregion

            xs.StreamTypeName(s, "Resource", ref mResourceID, GameDataObjectKind.Cost);
            // if element equals 'true' this is the default action
            s.StreamElementOpt("Default", ref mDefault, Predicates.IsTrue);

            td.StreamID(s, "SlaveAttackAction", ref mSlaveAttackActionID, TacticDataObjectKind.Action);
            td.StreamID(s, "BaseDPSWeapon", ref mBaseDPSWeaponID, TacticDataObjectKind.Weapon);

            s.StreamElementEnumOpt("PersistentActionType", ref mPersistentActionType, kNotInvalidActionType);

            #region Duration
            using (var bm = s.EnterCursorBookmarkOpt("Duration", this, o => mDuration != PhxUtil.kInvalidSingle)) if (bm.IsNotNull)
                {
                    s.StreamCursor(ref mDuration);
                    s.StreamAttributeOpt("DurationSpread", ref mDurationSpread, PhxPredicates.IsNotInvalid);
                }
            #endregion

            #region AutoRepair
            using (var bm = s.EnterCursorBookmarkOpt("AutoRepair", this, o => mAutoRepairIdleTime != PhxUtil.kInvalidSingle)) if (bm.IsNotNull)
                {
                    s.StreamAttribute("AutoRepairIdleTime", ref mAutoRepairIdleTime);
                    s.StreamAttribute("AutoRepairThreshold", ref mAutoRepairThreshold);
                    s.StreamAttribute("AutoRepairSearchDistance", ref mAutoRepairSearchDistance);
                }
            #endregion
            xs.StreamDBID(s, "InvalidTarget", ref mInvalidTargetObjectID, DatabaseObjectKind.Object);

            #region ProtoObject
            using (var bm = s.EnterCursorBookmarkOpt("ProtoObject", this, o => mProtoObjectID.IsNotNone())) if (bm.IsNotNull)
                {
                    // TODO: This IS optional, right? Only on 'true'?
                    // inner text: if 0, proto object, if not, proto squad
                    s.StreamAttributeOpt("Squad", ref mProtoObjectIsSquad, Predicates.IsTrue);
                    xs.StreamDBID(s, null, ref mSquadTypeID,
                                  mProtoObjectIsSquad ? DatabaseObjectKind.Squad : DatabaseObjectKind.Object, false, XML.XmlUtil.kSourceCursor);
                }
            #endregion
#if false
            xs.StreamXmlForStringID(s, "Count", ref mCountStringID);
#endif
            s.StreamElementOpt("MaxNumUnitsPerformAction", ref mMaxNumUnitsPerformAction, Predicates.IsNotNone);
            s.StreamElementOpt("DamageCharge", ref mDamageCharge, PhxPredicates.IsNotInvalid);
        }
Exemplo n.º 15
0
 public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
 {
     s.StreamAttribute("EditorColor", ref mEditorColor, NumeralBase.Hex);
     s.StreamElementOpt("ImpactEffect", ref mImpactEffect, Predicates.IsNotNullOrEmpty);
 }
Exemplo n.º 16
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            base.Serialize(s);
            var xs = s.GetSerializerInterface();

            s.StreamElementEnumOpt("Type", ref mType, e => e != BAbilityType.Invalid);
            s.StreamElementOpt("AmmoCost", ref mAmmoCost, Predicates.IsNotZero);
            s.StreamElements("Object", ObjectIDs, xs, XML.BDatabaseXmlSerializerBase.StreamObjectID);
            s.StreamElementEnumOpt("SquadMode", ref mSquadMode, e => e != BSquadMode.Invalid);
            s.StreamElementEnumOpt("RecoverStart", ref mRecoverStart, e => e != BRecoverType.Move);
            s.StreamElementEnumOpt("RecoverType", ref mRecoverType, e => e != BRecoverType.Move);
            s.StreamElementOpt("RecoverTime", ref mRecoverTime, Predicates.IsNotZero);
            s.StreamElementOpt("MovementSpeedModifier", ref mMovementSpeedModifier, Predicates.IsNotZero);
            s.StreamElementEnumOpt("MovementModifierType", ref mMovementModifierType, e => e != BMovementModifierType.Mode);
            s.StreamElementOpt("DamageTakenModifier", ref mDamageTakenModifier, Predicates.IsNotZero);
            s.StreamElementOpt("DodgeModifier", ref mDodgeModifier, Predicates.IsNotZero);
            s.StreamStringOpt("Icon", ref mIcon, toLower: false, type: XML.XmlUtil.kSourceElement);
            s.StreamElementEnumOpt("TargetType", ref mTargetType, e => e != BAbilityTargetType.None);
            s.StreamStringOpt("RecoverAnimAttachment", ref mRecoverAnimAttachment, toLower: false, type: XML.XmlUtil.kSourceElement);
            s.StreamStringOpt("RecoverStartAnim", ref mRecoverStartAnim, toLower: false, type: XML.XmlUtil.kSourceElement);
            s.StreamStringOpt("RecoverEndAnim", ref mRecoverEndAnim, toLower: false, type: XML.XmlUtil.kSourceElement);
            s.StreamElementOpt("Sprinting", ref mSprinting, Predicates.IsTrue);
            s.StreamElementOpt("DontInterruptAttack", ref mDontInterruptAttack, Predicates.IsTrue);
            s.StreamElementOpt("KeepSquadMode", ref mKeepSquadMode, Predicates.IsTrue);
            s.StreamElementOpt("AttackSquadMode", ref mAttackSquadMode, Predicates.IsTrue);
            s.StreamElementOpt("Duration", ref mDuration, Predicates.IsNotZero);
            s.StreamElementOpt("SmartTargetRange", ref mSmartTargetRange, v => v != cDefaultSmartTargetRange);
            s.StreamElementOpt("CanHeteroCommand", ref mCanHeteroCommand, Predicates.IsFalse);
            s.StreamElementOpt("NoAbilityReticle", ref mNoAbilityReticle, Predicates.IsTrue);
        }
Exemplo n.º 17
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            var xs = s.GetSerializerInterface();

            using (s.EnterCursorBookmark("Attributes"))
            {
                base.Serialize(s);

                using (var bm = s.EnterCursorBookmarkOpt("Cost", Cost, x => x.HasNonZeroItems)) if (bm.IsNotNull)
                    {
                        XML.XmlUtil.SerializeCostHack(s, Cost);
                    }
                XML.XmlUtil.Serialize(s, DynamicCosts, BPowerDynamicCost.kBListXmlParams);
                XML.XmlUtil.Serialize(s, TargetEffectiveness, BPowerTargetEffectiveness.kBListXmlParams);
                XML.XmlUtil.Serialize(s, Populations, BPopulation.kBListXmlParamsSingle_LowerCase);
                s.StreamElementOpt("UIRadius", ref mUIRadius, Predicates.IsNotZero);
                s.StreamElementEnumOpt("PowerType", ref mPowerType, e => e != BPowerType.Invalid);
                s.StreamElementOpt("AutoRecharge", ref mAutoRecharge, Predicates.IsNotZero);
                s.StreamElementOpt("UseLimit", ref mUseLimit, Predicates.IsNotZero);
                XML.XmlUtil.Serialize(s, Flags, XML.BBitSetXmlParams.kFlagsAreElementNamesThatMeanTrue);
                XML.XmlUtil.Serialize(s, Flags2, XML.BBitSetXmlParams.kFlagsAreElementNamesThatMeanTrue);
                s.StreamElementOpt("Icon", ref mIconTextureName, Predicates.IsNotNullOrEmpty);
                s.StreamElements("IconLocation", IconLocations, xs, StreamIconLocation);
                s.StreamElements("TechPrereq", TechPrereqs, xs, XML.BDatabaseXmlSerializerBase.StreamTechID);
                s.StreamElementEnumOpt("Action", ref mActionType, BProtoAction.kNotInvalidActionType);
                s.StreamElementEnumOpt("Minigame", ref mMinigameType, e => e != BMinigameType.None);
                s.StreamElementOpt("CameraZoomMin", ref mCameraZoomMin, Predicates.IsNotZero);
                s.StreamElementOpt("CameraZoomMax", ref mCameraZoomMax, Predicates.IsNotZero);
                s.StreamElementOpt("CameraPitchMin", ref mCameraPitchMin, Predicates.IsNotZero);
                s.StreamElementOpt("CameraPitchMax", ref mCameraPitchMax, Predicates.IsNotZero);
                s.StreamElementOpt("CameraEffectIn", ref mCameraEffectIn, Predicates.IsNotNullOrEmpty);
                s.StreamElementOpt("CameraEffectOut", ref mCameraEffectOut, Predicates.IsNotNullOrEmpty);
                s.StreamElementOpt("MinDistanceToSquad", ref mMinDistanceToSquad, PhxPredicates.IsNotInvalid);
                s.StreamElementOpt("MaxDistanceToSquad", ref mMaxDistanceToSquad, PhxPredicates.IsNotInvalid);
                using (var bm = s.EnterCursorBookmarkOpt("ShowTargetHighlight", this, x => x.HasShowTargetHighlightData)) if (bm.IsNotNull)
                    {
                        xs.StreamDBID(s, "ObjectType", ref mShowTargetHighlightObjectType, DatabaseObjectKind.ObjectType, xmlSource: XML.XmlUtil.kSourceAttr);
                        s.StreamAttributeEnumOpt("Relation", ref mShowTargetHighlightRelation, e => e != BRelationType.Any);
                    }
                using (var bm = s.EnterCursorBookmarkOpt("ChildObjects", ChildObjectIDs, Predicates.HasItems)) if (bm.IsNotNull)
                    {
                        s.StreamElements("Object", ChildObjectIDs, xs, XML.BDatabaseXmlSerializerBase.StreamObjectID);
                    }
                using (var bm = s.EnterCursorBookmarkOpt("BaseDataLevel", this, x => x.BaseDataLevel != null)) if (bm.IsNotNull)
                    {
                        if (s.IsReading)
                        {
                            mBaseDataLevel = new BProtoPowerDataLevel();
                        }

                        BaseDataLevel.Serialize(s);
                    }
                XML.XmlUtil.Serialize(s, LevelData, BProtoPowerDataLevel.kBListExplicitIndexXmlParams);
            }
            s.StreamElementOpt("TriggerScript", ref mTriggerScript, Predicates.IsNotNullOrEmpty);
            s.StreamElementOpt("CommandTriggerScript", ref mCommandTriggerScript, Predicates.IsNotNullOrEmpty);
        }
Exemplo n.º 18
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            bool reading = s.IsReading;

            #region Value0
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value0) || reading) &&
                s.StreamElementOpt("Value0", ref mValue0))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value0);
            }
            #endregion
            #region Value1
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value1) || reading) &&
                s.StreamElementOpt("Value1", ref mValue1))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value1);
            }
            #endregion
            #region Value2
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value2) || reading) &&
                s.StreamElementOpt("Value2", ref mValue2))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value2);
            }
            #endregion
            #region Value3
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value3) || reading) &&
                s.StreamElementOpt("Value3", ref mValue3))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value3);
            }
            #endregion
            #region Value4
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value4) || reading) &&
                s.StreamElementOpt("Value4", ref mValue4))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value4);
            }
            #endregion
            #region Value5
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value5) || reading) &&
                s.StreamElementOpt("Value5", ref mValue5))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value5);
            }
            #endregion
            #region Value6
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value6) || reading) &&
                s.StreamElementOpt("Value6", ref mValue6))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value6);
            }
            #endregion
            #region Value7
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value7) || reading) &&
                s.StreamElementOpt("Value7", ref mValue7))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value7);
            }
            #endregion
            #region Value8
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value8) || reading) &&
                s.StreamElementOpt("Value8", ref mValue8))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value8);
            }
            #endregion
            #region Value9
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value9) || reading) &&
                s.StreamElementOpt("Value9", ref mValue9))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value9);
            }
            #endregion
            #region Value10
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value10) || reading) &&
                s.StreamElementOpt("Value10", ref mValue10))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value10);
            }
            #endregion
            #region Value11
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value11) || reading) &&
                s.StreamElementOpt("Value11", ref mValue11))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value11);
            }
            #endregion
            #region Value12
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value12) || reading) &&
                s.StreamElementOpt("Value12", ref mValue12))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value12);
            }
            #endregion
            #region Value13
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value13) || reading) &&
                s.StreamElementOpt("Value13", ref mValue13))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value13);
            }
            #endregion
        }
Exemplo n.º 19
0
        public override void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
        {
            s.StreamElementOpt("DeathAnimation", ref mDeathAnimation, Predicates.IsNotNullOrEmpty);

            XML.XmlUtil.Serialize(s, Modifiers, BWeaponModifier.kBListXmlParams);
        }