void StreamXmlObjectData(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs) { switch (mDU.SubType) { #region Unused case BObjectDataType.RateAmount: case BObjectDataType.RateMultiplier: xs.StreamXmlForTypeName(s, mode, kXmlAttrODT_Rate, ref mDU.ID, DatabaseTypeKind.Rate, false, XML.Util.kSourceAttr); break; #endregion case BObjectDataType.CommandEnable: case BObjectDataType.CommandSelectable: // Unused mDU.StreamCommand(s, mode, xs); break; case BObjectDataType.Cost: mDU.StreamCost(s, mode, xs); break; #region Unused case BObjectDataType.DamageModifier: mDU.StreamDamageModifier(s, mode, xs); break; #endregion case BObjectDataType.PopCap: case BObjectDataType.PopMax: xs.StreamXmlForTypeName(s, mode, kXmlAttrODT_Pop_PopType, ref mDU.ID, DatabaseTypeKind.Pop, false, XML.Util.kSourceAttr); break; #region Unused case BObjectDataType.UnitTrainLimit: mDU.StreamTrainLimit(s, mode, xs, DatabaseObjectKind.Object); break; case BObjectDataType.SquadTrainLimit: mDU.StreamTrainLimit(s, mode, xs, DatabaseObjectKind.Squad); break; #endregion case BObjectDataType.PowerRechargeTime: case BObjectDataType.PowerUseLimit: case BObjectDataType.PowerLevel: xs.StreamXmlForDBID(s, mode, kXmlAttrODT_Power_Power, ref mDU.ID, DatabaseObjectKind.Power, false, XML.Util.kSourceAttr); break; #region Ignored case BObjectDataType.ImpactEffect: break; #endregion #region Unused // case BObjectDataType.DisplayNameID: // break; #endregion #region Ignored case BObjectDataType.TurretYawRate: case BObjectDataType.TurretPitchRate: break; #endregion case BObjectDataType.AbilityRecoverTime: xs.StreamXmlForDBID(s, mode, kXmlAttrODT_AbilityRecoverTime_Ability, ref mDU.ID, DatabaseObjectKind.Ability, false, XML.Util.kSourceAttr); break; #region Ignored case BObjectDataType.HPBar: break; #endregion #region Unused // case BObjectDataType.DeathSpawn: // break; #endregion // assume everything else (sans ignored/unused) only uses amount default: //throw new Debug.UnreachableException(mSubType.ToString()); break; } }
public override void StreamXml(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs) { var td = s.Owner as BTacticData; s.StreamElementEnumOpt(mode, kXmlElementActionType, ref mActionType, kNotInvalidActionType); s.StreamElementOpt(mode, kXmlElementProjectileSpread, ref mProjectileSpread, Util.kNotInvalidPredicateSingle); xs.StreamXmlForDBID(s, mode, kXmlElementSquadType, ref mSquadTypeID, DatabaseObjectKind.Squad); td.StreamXmlForID(s, mode, kXmlElementWeapon, ref mWeaponID, BTacticData.ObjectKind.Weapon); td.StreamXmlForID(s, mode, kXmlElementLinkedAction, ref mLinkedActionID, BTacticData.ObjectKind.Action); s.StreamElementEnumOpt(mode, kXmlElementSquadMode, ref mSquadMode, kNotInvalidSquadMode); s.StreamElementEnumOpt(mode, kXmlElementNewSquadMode, ref mNewSquadMode, kNotInvalidSquadMode); #if false td.StreamXmlForID(s, mode, kXmlElementNewTacticState, ref mNewTacticStateID, BTacticData.ObjectKind.TacticState); #endif #region Work s.StreamElementOpt(mode, kXmlElementWorkRate, ref mWorkRate, Util.kNotInvalidPredicateSingle); s.StreamElementOpt(mode, kXmlElementWorkRateVariance, ref mWorkRateVariance, Util.kNotInvalidPredicateSingle); s.StreamElementOpt(mode, kXmlElementWorkRange, ref mWorkRange, Util.kNotInvalidPredicateSingle); #endregion #region DamageModifiers if (ShouldStreamDamageModifiers(s, mode)) { using (s.EnterCursorBookmark(mode, kXmlElementDamageModifiers)) { s.StreamAttribute(mode, kXmlElementDamageModifiersAttrDamage, ref mDamageModifiersDmg); s.StreamAttributeOpt(mode, kXmlElementDamageModifiersAttrDamageTaken, ref mDamageModifiersDmgTaken, Util.kNotInvalidPredicateSingle); s.StreamAttributeOpt(mode, kXmlElementDamageModifiersAttrByCombatValue, ref mDamageModifiersByCombatValue, Util.kNotFalsePredicate); } } #endregion xs.StreamXmlForTypeName(s, mode, kXmlElementResource, ref mResourceID, DatabaseTypeKind.Cost); s.StreamElementOpt(mode, kXmlElementDefault, ref mDefault, Util.kNotFalsePredicate); td.StreamXmlForID(s, mode, kXmlElementSlaveAttackAction, ref mSlaveAttackActionID, BTacticData.ObjectKind.Action); td.StreamXmlForID(s, mode, kXmlElementBaseDPSWeapon, ref mBaseDPSWeaponID, BTacticData.ObjectKind.Weapon); s.StreamElementEnumOpt(mode, kXmlElementPersistentActionType, ref mPersistentActionType, kNotInvalidActionType); #region Duration if (ShouldStreamDuration(s, mode)) { using (s.EnterCursorBookmark(mode, kXmlElementDuration)) { s.StreamCursor(mode, ref mDuration); s.StreamAttributeOpt(mode, kXmlElementDurationAttrSpread, ref mDurationSpread, Util.kNotInvalidPredicateSingle); } } #endregion #region AutoRepair if (ShouldStreamAutoRepair(s, mode)) { using (s.EnterCursorBookmark(mode, kXmlElementAutoRepair)) { s.StreamAttribute(mode, kXmlElementAutoRepairAttrIdleTime, ref mAutoRepairIdleTime); s.StreamAttribute(mode, kXmlElementAutoRepairAttrThreshold, ref mAutoRepairThreshold); s.StreamAttribute(mode, kXmlElementAutoRepairAttrSearchDistance, ref mAutoRepairSearchDistance); } } #endregion xs.StreamXmlForDBID(s, mode, kXmlElementInvalidTarget, ref mInvalidTargetObjectID, DatabaseObjectKind.Object); #region ProtoObject if (ShouldStreamProtoObject(s, mode)) { using (s.EnterCursorBookmark(mode, kXmlElementProtoObject)) { // TODO: This IS optional, right? Only on 'true'? s.StreamAttributeOpt(mode, kXmlElementProtoObjectAttrSquad, ref mProtoObjectIsSquad, Util.kNotFalsePredicate); xs.StreamXmlForDBID(s, mode, null, ref mSquadTypeID, mProtoObjectIsSquad ? DatabaseObjectKind.Squad : DatabaseObjectKind.Object, false, XML.Util.kSourceCursor); } } #endregion #if false xs.StreamXmlForStringID(s, mode, kXmlElementCount, ref mCountStringID); #endif s.StreamElementOpt(mode, kXmlElementMaxNumUnitsPerformAction, ref mMaxNumUnitsPerformAction, Util.kNotInvalidPredicate); s.StreamElementOpt(mode, kXmlElementDamageCharge, ref mDamageCharge, Util.kNotInvalidPredicateSingle); }
public void StreamCost(KSoft.IO.XmlElementStream s, FA mode, XML.BXmlSerializerInterface xs) { xs.StreamXmlForTypeName(s, mode, kXmlAttrODT_Cost_Resource, ref Cost_Type, DatabaseTypeKind.Cost, false, XML.Util.kSourceAttr); xs.StreamXmlForDBID(s, mode, kXmlAttrODT_Cost_UnitType, ref Cost_UnitType, DatabaseObjectKind.Unit, true, XML.Util.kSourceAttr); }