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