Exemplo n.º 1
0
 public static void WriteObjectReferenceToPacket(
     MBObjectBase value,
     CompressionInfo.UnsignedInteger compressionInfo)
 {
     MBAPI.IMBNetwork.WriteUintToPacket(value != null ? value.Id.InternalValue : 0U, ref compressionInfo);
     DebugNetworkEventStatistics.AddDataToStatistic(compressionInfo.GetNumBits());
 }
Exemplo n.º 2
0
        public static MissionWeapon ReadMissileWeaponReferenceFromPacket(
            MBObjectManager objectManager,
            ref bool bufferReadValid)
        {
            MBObjectBase mbObjectBase = GameNetworkMessage.ReadObjectReferenceFromPacket(objectManager, CompressionBasic.GUIDCompressionInfo, ref bufferReadValid);
            short        num          = (short)GameNetworkMessage.ReadIntFromPacket(CompressionMission.WeaponUsageIndexCompressionInfo, ref bufferReadValid);

            return(new MissionWeapon(mbObjectBase as ItemObject, (ItemModifier)null, (Banner)null, (short)1)
            {
                CurrentUsageIndex = (int)num
            });
        }
        public static GameObject ToGameObject(this MBObjectBase mbObject)
        {
            switch (mbObject)
            {
            case CultureObject culture:
                return(new GameObject
                {
                    GameObjectType = GameObjectType.Culture,
                    StringId = culture.StringId
                });

            case Kingdom kingdom:
                return(new GameObject
                {
                    GameObjectType = GameObjectType.Kingdom,
                    StringId = kingdom.StringId
                });

            case Clan clan:
                return(new GameObject
                {
                    GameObjectType = GameObjectType.Clan,
                    StringId = clan.StringId
                });

            case Hero hero:
                return(new GameObject
                {
                    GameObjectType = GameObjectType.Hero,
                    StringId = hero.StringId
                });

            case CharacterObject character:
                return(new GameObject
                {
                    GameObjectType = GameObjectType.Character,
                    StringId = character.StringId
                });

            default:
                return(null);
            }
        }
        public static Clan ToClan(this MBObjectBase mbObject)
        {
            switch (mbObject)
            {
            case Kingdom kingdom:
                return(kingdom.RulingClan);

            case Clan clan:
                return(clan);

            case Hero hero when hero.Clan != null:
                return(hero.Clan);

            case CharacterObject character when character.HeroObject?.Clan != null:
                return(character.HeroObject.Clan);

            default:
                return(null);
            }
        }
        public static Kingdom ToKingdom(this MBObjectBase mbObject)
        {
            switch (mbObject)
            {
            case Kingdom kingdom:
                return(kingdom);

            case Clan clan when clan.Kingdom != null:
                return(clan.Kingdom);

            case Hero hero when hero.Clan?.Kingdom != null:
                return(hero.Clan.Kingdom);

            case CharacterObject character when character.HeroObject?.Clan?.Kingdom != null:
                return(character.HeroObject.Clan.Kingdom);

            default:
                return(null);
            }
        }
        public static CultureObject ToCulture(this MBObjectBase mbObject)
        {
            switch (mbObject)
            {
            case Kingdom kingdom:
                return(kingdom.Culture);

            case Clan clan:
                return(clan.Culture);

            case Hero hero:
                return(hero.Culture);

            case CharacterObject character:
                return(character.Culture);

            default:
                return(null);
            }
        }
        public static Hero ToHero(this MBObjectBase mbObject)
        {
            switch (mbObject)
            {
            case Kingdom kingdom:
                return(kingdom.Leader);

            case Clan clan:
                return(clan.Leader);

            case Hero hero:
                return(hero);

            case CharacterObject character when character.IsHero:
                return(character.HeroObject);

            default:
                return(null);
            }
        }
Exemplo n.º 8
0
        public static MissionWeapon ReadWeaponReferenceFromPacket(
            MBObjectManager objectManager,
            ref bool bufferReadValid)
        {
            if (GameNetworkMessage.ReadBoolFromPacket(ref bufferReadValid))
            {
                return(MissionWeapon.Invalid);
            }
            MBObjectBase mbObjectBase1 = GameNetworkMessage.ReadObjectReferenceFromPacket(objectManager, CompressionBasic.GUIDCompressionInfo, ref bufferReadValid);
            int          num1          = GameNetworkMessage.ReadIntFromPacket(CompressionGeneric.ItemDataValueCompressionInfo, ref bufferReadValid);
            int          num2          = GameNetworkMessage.ReadIntFromPacket(CompressionMission.WeaponReloadPhaseCompressionInfo, ref bufferReadValid);
            short        num3          = (short)GameNetworkMessage.ReadIntFromPacket(CompressionMission.WeaponUsageIndexCompressionInfo, ref bufferReadValid);
            int          num4          = GameNetworkMessage.ReadBoolFromPacket(ref bufferReadValid) ? 1 : 0;
            Banner       banner        = (Banner)null;

            if (num4 != 0)
            {
                string bannerKey = GameNetworkMessage.ReadStringFromPacket(ref bufferReadValid);
                if (bufferReadValid)
                {
                    banner = new Banner(bannerKey);
                }
            }
            ItemObject    primaryItem1 = mbObjectBase1 as ItemObject;
            bool          flag         = GameNetworkMessage.ReadBoolFromPacket(ref bufferReadValid);
            MissionWeapon missionWeapon;

            if (bufferReadValid & flag)
            {
                MBObjectBase mbObjectBase2 = GameNetworkMessage.ReadObjectReferenceFromPacket(objectManager, CompressionBasic.GUIDCompressionInfo, ref bufferReadValid);
                int          num5          = GameNetworkMessage.ReadIntFromPacket(CompressionGeneric.ItemDataValueCompressionInfo, ref bufferReadValid);
                ItemObject   primaryItem2  = mbObjectBase2 as ItemObject;
                missionWeapon = new MissionWeapon(primaryItem1, (ItemModifier)null, banner, (short)num1, (short)num2, new MissionWeapon?(new MissionWeapon(primaryItem2, (ItemModifier)null, banner, (short)num5)));
            }
            else
            {
                missionWeapon = new MissionWeapon(primaryItem1, (ItemModifier)null, banner, (short)num1, (short)num2, new MissionWeapon?());
            }
            missionWeapon.CurrentUsageIndex = (int)num3;
            return(missionWeapon);
        }
        /* Variables */

        /**
         * <summary>
         * Check whether a variable <paramref name="name"/> is stored upon <paramref name="object"/>.
         * </summary>
         * <returns>
         * <see langword="true"/> if it exists, else <see langword="false"/>.
         * </returns>
         * <example>
         * <code>
         *  foreach (var skill in SkillObject.All)
         *      if (!skill.HasVariable("CustomModifiers"))
         *          RecalculateCustomModifiers(skill);
         * </code>
         * </example>
         * <param name="object">A game object.</param>
         * <param name="name">The variable's name.</param>
         */
        internal static bool HasVariable(this MBObjectBase @object, string name)
        {
            if (name is null !)
            {
                throw new ArgumentNullException(nameof(name));
            }