コード例 #1
0
        /// <summary>
        /// API:parts
        /// </summary>
        /// <param name="slot"></param>
        /// <param name="part"></param>
        public void DeleteSlotWeaponPart(EWeaponSlotType slot, EWeaponPartType part)
        {
            if (slot == EWeaponSlotType.None)
            {
                return;
            }
            WeaponEntity entity = GetWeaponAgent(slot).Entity;

            if (entity == null)
            {
                throw new ExWeaponNotFoundException("{0} slot weapon not found", slot);
                return;
            }

            WeaponPartsStruct lastParts = entity.weaponBasicData.GetParts();
            var parts = WeaponPartsUtil.ModifyParts(
                entity.weaponBasicData.GetParts(), part,
                UniversalConsts.InvalidIntId);

            entity.weaponBasicData.ApplyParts(parts);
            if (slot == HeldSlotType)
            {
                RefreshHeldWeaponAttachment();
            }
            var newParts = WeaponPartsUtil.ModifyParts(lastParts, part, UniversalConsts.InvalidIntId);

            newParts = newParts.ApplyDefaultParts(entity.weaponBasicData.ConfigId);
            WeaponPartsRefreshStruct refreshData = new WeaponPartsRefreshStruct();

            refreshData.weaponInfo = entity.ToWeaponScan();
            refreshData.slot       = slot;
            refreshData.oldParts   = lastParts;
            refreshData.newParts   = newParts;
            RefreshModelWeaponParts(refreshData);
        }
コード例 #2
0
 public void Update(PlayerEntity playerEntity, WeaponEntity weaponEntity, IUserCmd cmd)
 {
     _leftcmd.SetCurrentCmd(cmd);
     _rightCmd.SetCurrentCmd(cmd);
     _leftFireLogic.OnFrame(playerEntity, weaponEntity, _leftcmd);
     _rightFireLogic.OnFrame(playerEntity, weaponEntity, _rightCmd);
 }
コード例 #3
0
 internal static void SetFlagWaitDestroy(this WeaponEntity weaponEntity)
 {
     if (!weaponEntity.isFlagSyncSelf)
     {
         weaponEntity.isFlagDestroy = true;
     }
 }
コード例 #4
0
        public void TryHoldGrenade(bool autoStuff = true, bool tryArm = true)
        {
            var weaponAgent = this[EWeaponSlotType.ThrowingWeapon];

            if (autoStuff && weaponAgent.IsValid())
            {
                return;
            }
            int nextId = _grenadeHandler.FindUsable(autoStuff);

            if (nextId < 0 || weaponAgent.ConfigId == nextId)
            {
                return;
            }
            WeaponPartsRefreshStruct refreshParams = new WeaponPartsRefreshStruct();
            WeaponEntity             newEntity     =
                weaponAgent.ReplaceWeapon(Owner, WeaponUtil.CreateScan(nextId), ref refreshParams);

            SyncBagWeapon(EWeaponSlotType.ThrowingWeapon, newEntity.entityKey.Value);
            RefreshWeaponModelAndParts(refreshParams);
            if (tryArm)
            {
                TryArmWeaponImmediately(EWeaponSlotType.ThrowingWeapon);
            }
        }
コード例 #5
0
    /// <summary> Take loot logic,
    /// If there is an empty slot, then the weapon is added to it
    /// If there is such a weapon, then the number of cartridges is added
    /// </summary>
    /// <param name="loot"> Loot in world entity </param>
    private void TakeLoot(Loot loot)
    {
        var characterWeapon = Weapons.Find(w => w.Weapon == loot.Weapon);

        if (characterWeapon != null)
        {
            if (characterWeapon.CartridgesTotal < characterWeapon.Weapon.MaxCartridges)
            {
                characterWeapon.CartridgesTotal += loot.CartridgesTotal + loot.CartridgesInMagazine;
                UpdateGamePanel();
                loot.PlayLootSound();
                Destroy(loot.gameObject);
            }
            LootInInteractionZone = null;
        }
        else if (Weapons.Count < Description.WeaponsCount)
        {
            var newWeapon = new WeaponEntity(this, loot.Weapon);
            newWeapon.CartridgesInMagazine = loot.CartridgesInMagazine;
            newWeapon.CartridgesTotal      = loot.CartridgesTotal;
            Weapons.Add(newWeapon);
            loot.PlayLootSound();
            Destroy(loot.gameObject);
            LootInInteractionZone = null;
        }
    }
コード例 #6
0
 public void Update(PlayerEntity playerEntity, WeaponEntity weaponEntity, IUserCmd cmd)
 {
     _cmd.SetCurrentCmd(cmd);
     if (null != _fireLogic)
     {
         _fireLogic.OnFrame(playerEntity, weaponEntity, _cmd);
     }
 }
コード例 #7
0
 internal static WeaponScanStruct ToWeaponScan(this WeaponEntity weaponEntity)
 {
     if (!weaponEntity.hasWeaponScan)
     {
         weaponEntity.AddWeaponScan();
     }
     weaponEntity.weaponScan.CopyFrom(weaponEntity.weaponBasicData);
     return(weaponEntity.weaponScan.Value);
 }
コード例 #8
0
 public static bool TryGetWeapon(this PlayerEntity playerEntity,
                                 Contexts contexts, EWeaponSlotType slot, out WeaponEntity weaponEntity)
 {
     return(TryGetWeapon(playerEntity,
                         contexts,
                         (EWeaponBagIndex)playerEntity.bagState.CurBag,
                         slot,
                         out weaponEntity));
 }
コード例 #9
0
        private void Weapon_ImageLoaded(Entity entity)
        {
            WeaponEntity weapon = (WeaponEntity)entity;

            if (weapon.Preferred)
            {
                heroEntity.SwitchTo(weapon);
            }
        }
コード例 #10
0
 public static void SetDestroy(this WeaponEntity weaponEntity)
 {
     if (weaponEntity.hasOwnerId)
     {
         weaponEntity.RemoveOwnerId();
     }
     weaponEntity.isFlagSyncSelf    = false;
     weaponEntity.isFlagSyncNonSelf = false;
     weaponEntity.isFlagDestroy     = true;
 }
コード例 #11
0
    /// <summary> Initialisation character after start </summary>
    /// <param name="description"> Character description</param>
    private void InitCharacter(CharacterDescription description)
    {
        Description = description;
        Health      = Description.MaxHealth;
        RB          = GetComponent <Rigidbody2D>();
        Animator    = GetComponent <Animator>();

        SelectedWeapon = new WeaponEntity(this, Description.StartedWeapon);
        SelectedWeapon.CartridgesTotal = SelectedWeapon.Weapon.MaxCartridges;
        Weapons.Add(SelectedWeapon);

        if (RB == null)
        {
            Debug.LogError("RigidBody2D not found", this);
        }
        if (Animator == null)
        {
            Debug.LogError("Animator not found", this);
        }

        Animator.runtimeAnimatorController = Description.Animator;

        //Set hands
        if (FirstShoulder)
        {
            FirstShoulder.sprite = Description.FirstShoulder;
        }
        if (FirstForearm)
        {
            FirstForearm.sprite = Description.FirstForearm;
        }
        if (FirstForearmOutline)
        {
            FirstForearmOutline.sprite = Description.FirstForearmOutline;
        }
        if (SecondShoulder)
        {
            SecondShoulder.sprite = Description.SecondShoulder;
        }
        if (SecondForearm)
        {
            SecondForearm.sprite = Description.SecondForearm;
        }
        if (SecondForearmOutline)
        {
            SecondForearmOutline.sprite = Description.SecondForearmOutline;
        }

        //Set head
        if (HeadTransform)
        {
            HeadTransform.sprite = Description.HeadSprite;
        }
    }
コード例 #12
0
 public static void AddOwner(this WeaponEntity weaponEntity, EntityKey entityKey)
 {
     if (!weaponEntity.hasOwnerId)
     {
         weaponEntity.AddOwnerId(entityKey);
     }
     else
     {
         weaponEntity.ownerId.Value = entityKey;
     }
     weaponEntity.isFlagSyncSelf = true;
 }
コード例 #13
0
 internal static void SetFlagHasOwnwer(this WeaponEntity weaponEntity, EntityKey entityKey)
 {
     if (!weaponEntity.hasOwnerId)
     {
         weaponEntity.AddOwnerId(entityKey);
     }
     else
     {
         weaponEntity.ownerId.Value = entityKey;
     }
     weaponEntity.isFlagSyncSelf = true;
     weaponEntity.isFlagDestroy  = false;
 }
コード例 #14
0
ファイル: PlayerMapper.cs プロジェクト: invisy/trpz
        public override Player Map(PlayerEntity entity)
        {
            Type type = charactarTypesDict[entity.Character];

            SkinEntity   skinEntity   = _uof.Repository <ISkinsRepository>().Get(entity.SkinId);
            Skin         skin         = _skinMapper.Map(skinEntity);
            WeaponEntity weaponEntity = _uof.Repository <IWeaponsRepository>().Get(entity.WeaponId);
            Weapon       weapon       = _weaponMapper.Map(weaponEntity);

            Character character = (Character)Activator.CreateInstance(type, entity.Id, skin, weapon);
            Player    player    = (Player)Activator.CreateInstance(typeof(Player), entity.Id, entity.Money, character);

            return(player);
        }
コード例 #15
0
        public static EntityKey CreateCustomizeWeapon(EntityKey lastKey, EntityKey owner, int configId)
        {
            if (lastKey.IsValid())
            {
                WeaponEntity currWeapon = WeaponEntityFactory.GetWeaponEntity(lastKey);
                if (currWeapon != null)
                {
                    WeaponEntityFactory.RemoveWeaponEntity(currWeapon);
                }
            }
            WeaponEntity newWeapon = WeaponEntityFactory.CreateEntity(WeaponUtil.CreateScan(configId));

            newWeapon.SetRetain(owner);
            return(newWeapon.entityKey.Value);
        }
コード例 #16
0
 internal static void ResetFireModel(this WeaponEntity weapoon)
 {
     if (weapoon.weaponBasicData.FireMode == 0)
     {
         bool hasAutoFireModel = SingletonManager.Get <WeaponDataConfigManager>().HasAutoFireMode(weapoon.weaponBasicData.ConfigId);
         if (hasAutoFireModel)
         {
             SetFireMode(weapoon, EFireMode.Auto);
         }
         else
         {
             SetFireMode(weapoon, SingletonManager.Get <WeaponDataConfigManager>().GetFirstAvaliableFireMode(weapoon.weaponBasicData.ConfigId));
         }
     }
 }
コード例 #17
0
        public static void SyncSelf(this WeaponScanStruct weaponScan, WeaponEntity weaponEntity)
        {
            var weaponBasicData = weaponEntity.weaponBasicData;

            weaponScan.Assign(weaponEntity.entityKey.Value, weaponBasicData.ConfigId);
            weaponScan.AvatarId       = weaponBasicData.WeaponAvatarId;
            weaponScan.UpperRail      = weaponBasicData.UpperRail;
            weaponScan.LowerRail      = weaponBasicData.LowerRail;
            weaponScan.Magazine       = weaponBasicData.Magazine;
            weaponScan.Muzzle         = weaponBasicData.Muzzle;
            weaponScan.Bullet         = weaponBasicData.Bullet;
            weaponScan.Stock          = weaponBasicData.Stock;
            weaponScan.ReservedBullet = weaponBasicData.ReservedBullet;
            weaponScan.FireMode       = (EFireMode)weaponBasicData.FireMode;
            weaponScan.PullBolt       = weaponBasicData.PullBolt;
        }
コード例 #18
0
 public static void SetRetain(this WeaponEntity weaponEntity, EntityKey owner)
 {
     if (!owner.IsValid())
     {
         return;
     }
     weaponEntity.isFlagSyncSelf    = true;
     weaponEntity.isFlagSyncNonSelf = false;
     if (weaponEntity.hasOwnerId)
     {
         weaponEntity.ownerId.Value = owner;
     }
     else
     {
         weaponEntity.AddOwnerId(owner);
     }
 }
コード例 #19
0
 /// <summary> Interaction logic </summary>
 private void Interaction()
 {
     //If character is near loot
     if (LootInInteractionZone)
     {
         var tempWeapon = SelectedWeapon;
         var newWeapon  = new WeaponEntity(this, LootInInteractionZone.Weapon);
         newWeapon.CartridgesInMagazine = LootInInteractionZone.CartridgesInMagazine;
         newWeapon.CartridgesTotal      = LootInInteractionZone.CartridgesTotal;
         SelectedWeapon = newWeapon;
         Weapons[CurrentWeaponIndex] = SelectedWeapon;
         LootInInteractionZone.InitLoot(tempWeapon.Weapon, tempWeapon.CartridgesTotal, tempWeapon.CartridgesInMagazine);
         if (LootInInteractionZone != null)
         {
             LootInInteractionZone.PlayLootSound();
         }
     }
 }
コード例 #20
0
        private bool ReplaceCommonWeapon(EWeaponSlotType slotType, WeaponScanStruct orient, int bagIndex)
        {
            //  if (vertify)
            if (!processHelper.FilterVailed(orient, slotType))
            {
                return(false);
            }
            logger.InfoFormat("replace weapon:{0}: ", orient);
            //特殊全局性武器只取武器背包第0个索引值
            var weaponAgent = GetWeaponAgent(slotType);
            WeaponPartsRefreshStruct refreshParams = new WeaponPartsRefreshStruct();
            WeaponEntity             newEntity     = weaponAgent.ReplaceWeapon(Owner, orient, ref refreshParams);

            if (newEntity == null)
            {
                return(false);
            }
            SyncBagWeapon(slotType, newEntity.entityKey.Value);
            RefreshWeaponModelAndParts(refreshParams);
            return(true);
        }
コード例 #21
0
        /// <summary>
        /// API:parts
        /// </summary>
        /// <param name="slot"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool SetSlotWeaponPart(EWeaponSlotType slot, int id)
        {
            WeaponEntity entity = GetWeaponAgent(slot).Entity;

            if (entity == null)
            {
                throw new ExWeaponNotFoundException("{0} slot weapon not found", slot);
                return(false);
            }
            NewWeaponConfigItem wpConfig  = SingletonManager.Get <WeaponConfigManager>().GetConfigById(entity.weaponBasicData.ConfigId);
            WeaponPartsStruct   lastParts = entity.weaponBasicData.GetParts();
            int  realAttachId             = BagUtility.GetRealAttachmentId(id, wpConfig.Id);
            bool match = SingletonManager.Get <WeaponPartsConfigManager>().IsPartMatchWeapon(realAttachId, wpConfig.Id);

            if (!match)
            {
                return(false);
            }
            var attachments = WeaponPartsUtil.ModifyParts(
                entity.weaponBasicData.GetParts(),
                SingletonManager.Get <WeaponPartsConfigManager>().GetPartType(realAttachId),
                realAttachId);

            entity.weaponBasicData.ApplyParts(attachments);
            if (slot == HeldSlotType)
            {
                RefreshHeldWeaponAttachment();
            }
            WeaponPartsRefreshStruct refreshData = new WeaponPartsRefreshStruct();

            refreshData.weaponInfo = entity.ToWeaponScan();
            refreshData.slot       = slot;
            refreshData.oldParts   = lastParts;
            refreshData.newParts   = entity.weaponBasicData.GetParts();
            RefreshModelWeaponParts(refreshData);
            return(true);
        }
コード例 #22
0
        /// <summary>
        /// 更新到槽位但不是拿在手上
        /// 老的武器entity会被重置或销毁掉
        /// </summary>
        /// <param name="slotType"></param>
        /// <param name="orient"></param>
        /// <param name="bagIndex"></param>
        /// <param name="useBagGlobal"></param>
        /// <returns></returns>
        private bool ReplaceCommonWeapon(EWeaponSlotType slotType, WeaponScanStruct orient, int bagIndex)
        {
            //  if (vertify)
            if (!weaponProcessor.FilterVailed(orient, slotType))
            {
                return(false);
            }
            bool refreshAppearance = (bagIndex == HeldBagPointer || bagIndex < 0);
            //特殊全局性武器只取武器背包第0个索引值
            var weaponAgent = GetWeaponAgent(slotType, bagIndex);
            WeaponPartsRefreshStruct refreshParams = new WeaponPartsRefreshStruct();
            WeaponEntity             newEntity     = weaponAgent.ReplaceWeapon(Owner, orient, ref refreshParams);

            if (newEntity == null)
            {
                return(false);
            }
            playerWeaponAgent.AddBagWeapon(slotType, newEntity.entityKey.Value, bagIndex);
            if (refreshAppearance)
            {
                RefreshModelWeaponParts(refreshParams);
            }
            return(true);
        }
コード例 #23
0
        /// <summary>
        /// 自动装填手雷到腰间,手雷已装备情况下忽略
        /// </summary>
        public void TryHoldGrenade(bool autoStuff = true, bool tryArm = true)
        {
            var weaponAgent = GetWeaponAgent(EWeaponSlotType.ThrowingWeapon, 0);

            if (autoStuff && weaponAgent.IsValid())
            {
                return;
            }
            int nextId = grenadeHelper.FindUsable(autoStuff);

            if (nextId < 0 || weaponAgent.ConfigId == nextId)
            {
                return;
            }
            WeaponPartsRefreshStruct refreshParams = new WeaponPartsRefreshStruct();
            WeaponEntity             newEntity     = weaponAgent.ReplaceWeapon(Owner, WeaponUtil.CreateScan(nextId), ref refreshParams);

            playerWeaponAgent.AddBagWeapon(EWeaponSlotType.ThrowingWeapon, newEntity.entityKey.Value, 0);
            RefreshModelWeaponParts(refreshParams);
            if (tryArm)
            {
                TryArmWeapon(EWeaponSlotType.ThrowingWeapon);
            }
        }
コード例 #24
0
        public static bool TryGetWeapon(this PlayerEntity playerEntity,
                                        Contexts contexts,
                                        EWeaponBagIndex bagIndex,
                                        EWeaponSlotType slot,
                                        out WeaponEntity weaponEntity)
        {
            if (slot <= EWeaponSlotType.None ||
                bagIndex <= EWeaponBagIndex.None ||
                bagIndex >= EWeaponBagIndex.Length ||
                slot >= EWeaponSlotType.Length)
            {
                weaponEntity = new WeaponEntity();
                return(false);
            }
            var entityId = GetWeaponInSlot(playerEntity, slot);

            if (!entityId.HasValue)
            {
                weaponEntity = new WeaponEntity();
                return(false);
            }
            weaponEntity = contexts.weapon.GetEntityWithEntityKey(new EntityKey(entityId.Value, (short)EEntityType.Weapon));
            return(null != weaponEntity);
        }
コード例 #25
0
ファイル: WeaponSystem.cs プロジェクト: Djadavin/kill-stuff
        private int Shoot(int entityId, WeaponEntity weaponEntity)
        {
            var transformComponent = this.EntityManager.GetComponent<TransformComponent>(entityId);

            // Compute initial position.
            var position = transformComponent.Position;
            if (weaponEntity.Anchor != null)
            {
                position += weaponEntity.Anchor.Offset;
            }

            // Compute initial velocity.
            var velocity = Vector2F.UnitX * weaponEntity.Weapon.Speed;

            // Gather initial attributes of projectile.
            var configuration = new AttributeTable
            {
                { TransformComponent.AttributePosition, position },
                { MovementComponent.AttributeVelocity, velocity }
            };

            // Create projectile.
            var projectileBlueprint = this.BlueprintManager.GetBlueprint(weaponEntity.Weapon.ProjectileBlueprintId);
            var projectileEntityId = this.EntityManager.CreateEntity(projectileBlueprint, configuration);

            return projectileEntityId;
        }
コード例 #26
0
 internal static void Activate(this WeaponEntity weaponEntity, bool activate)
 {
     weaponEntity.isActive = activate;
 }
コード例 #27
0
        private void Initialize(bool loaded = false)
        {
            _firingHit = _monsterHit = false;

            HeroCoins = 100;

            heroEntity              = new HeroEntity(11 * 32, 29 * 32);
            heroEntity.FloorY       = 1500;
            heroEntity.HealthPoints = 30f;
            heroEntity.Invicibility = 3000f;
            heroEntity.ClimbSpeed   = heroEntity.Jump / 5;
            heroEntity.RealWidth    = 25;
            heroEntity.RealHeight   = 57;
            heroEntity.RealX        = 18;
            heroEntity.RealY        = 18;
            heroEntity.AxeDamage    = 1f;

            HeroWeapons = new List <WeaponEntity>();

            WeaponEntity weapon = new WeaponEntity();

            weapon.BulletDamage       = 1;
            weapon.FireRate           = 1;
            weapon.RechargeTime       = 3000;
            weapon.TimeBetweenBullets = 430;
            weapon.ImageLoaded       += Weapon_ImageLoaded;
            weapon.Preferred          = true;
            weapon.NeedsRecharge      = true;
            weapon.BulletLifespan     = 450;
            weapon.RealHeight         = weapon.RealWidth = 1;
            weapon.BulletSpeed        = new Vector2(3 * Constants.EntitySpeed, 0);

            HeroWeapons.Add(weapon);
            //   Floor = new ObstacleEntity(ObstacleType.Floor, 0, 206);

            Laders = new List <Entity>();

            obstacleEntities = new List <ObstacleEntity>();
            // obstacleEntities.Add(Floor);

            //           CreateHaystack(250, 0);
            //   CreateLader(400, 0);
            //   CreateLader(550, 0);
            //   CreateLader(200, 0);

            MonsterEntities       = new List <MonsterEntity>();
            FarmerEntities        = new List <FarmerEntity>();
            FiringMonsterEntities = new List <FiringMonsterEntity>();
            CreateFarmer(20 * 32, 43 * 32);
            CreateGuard(91 * 32, 37 * 32);
            CreateFarmer(101 * 32, 38 * 32);
            CreateGuard(110 * 32, 38 * 32);

            TriangularLaders = new List <TriangularLader>();
//            CreateTriangularLader(600, 0);

            Marshes = new List <MarshEntity>();
//            CreateMarsh(heroEntity.X - 150, 200, 8 * 16, 6 * 16);

            Background = new StaticBackground();
            // Background.Height = 120;

            this.RNG = new Random(228);

            heroEntity.SwitchTo(weapon);
            heroEntity.AttachBackground(Background);
        }
コード例 #28
0
 /// <summary>
 /// sync from event of playerEntiy.BagSet.WeaponSlot Component
 /// </summary>
 /// <param name="entityKey"></param>
 internal void Sync(EntityKey entityKey)
 {
     entity = WeaponEntityFactory.GetWeaponEntity(WeaponContext, entityKey);
 }
コード例 #29
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            var weapon1 = new WeaponEntity
            {
                Id        = 1,
                Price     = 0,
                Damage    = 90,
                Distance  = 200,
                ModelPath = "models/weapons/skin1.3ds",
                Name      = "Стандартний молот",
                Character = Entities.Enums.CharacterType.GNOME
            };

            var weapon2 = new WeaponEntity
            {
                Id        = 2,
                Price     = 0,
                Damage    = 70,
                Distance  = 300,
                ModelPath = "models/weapons/skin2.3ds",
                Name      = "Стандартний лук",
                Character = Entities.Enums.CharacterType.ELF
            };

            var weapon3 = new WeaponEntity
            {
                Id        = 3,
                Price     = 0,
                Damage    = 120,
                Distance  = 100,
                ModelPath = "models/weapons/skin3.3ds",
                Name      = "Стандартний меч",
                Character = Entities.Enums.CharacterType.WARRIOR
            };

            var weapon4 = new WeaponEntity
            {
                Id        = 4,
                Price     = 0,
                Damage    = 180,
                Distance  = 50,
                ModelPath = "models/weapons/skin4.3ds",
                Name      = "Стандартний посох",
                Character = Entities.Enums.CharacterType.MAGICIAN
            };

            var weapon5 = new WeaponEntity
            {
                Id        = 5,
                Price     = 300,
                Damage    = 220,
                Distance  = 50,
                ModelPath = "models/weapons/skin5.3ds",
                Name      = "Золотий посох",
                Character = Entities.Enums.CharacterType.MAGICIAN
            };

            var skin1 = new SkinEntity
            {
                Id        = 1,
                Price     = 0,
                ModelPath = "models/skins/skin1.3ds",
                Name      = "Стандартний вигляд",
                Character = Entities.Enums.CharacterType.GNOME
            };

            var skin2 = new SkinEntity
            {
                Id        = 2,
                Price     = 0,
                ModelPath = "models/skins/skin2.3ds",
                Name      = "Стандартний вигляд",
                Character = Entities.Enums.CharacterType.ELF
            };

            var skin3 = new SkinEntity
            {
                Id        = 3,
                Price     = 0,
                ModelPath = "models/skins/skin3.3ds",
                Name      = "Стандартний вигляд",
                Character = Entities.Enums.CharacterType.WARRIOR
            };

            var skin4 = new SkinEntity
            {
                Id        = 4,
                Price     = 0,
                ModelPath = "models/skins/skin4.3ds",
                Name      = "Стандартний вигляд",
                Character = Entities.Enums.CharacterType.MAGICIAN
            };

            var skin5 = new SkinEntity
            {
                Id        = 5,
                Price     = 100,
                ModelPath = "models/skins/skin5.3ds",
                Name      = "Маг з плащем",
                Character = Entities.Enums.CharacterType.MAGICIAN
            };

            var skin6 = new SkinEntity
            {
                Id        = 6,
                Price     = 300,
                ModelPath = "models/skins/skin6.3ds",
                Name      = "Маг в костюмі",
                Character = Entities.Enums.CharacterType.MAGICIAN
            };

            var player = new PlayerEntity
            {
                Id        = 1,
                Character = Entities.Enums.CharacterType.ELF,
                Money     = 500,
                SkinId    = 2,
                WeaponId  = 2
            };

            modelBuilder.Entity <PlayerEntity>(entity =>
            {
                entity.HasKey(e => e.Id);
                entity.Property(e => e.Id).ValueGeneratedOnAdd();
                entity.Property(e => e.Money).IsRequired();
                entity.HasOne <WeaponEntity>().WithMany().HasForeignKey(w => w.WeaponId);
                entity.HasOne <SkinEntity>().WithMany().HasForeignKey(s => s.SkinId);
            });

            modelBuilder.Entity <SkinEntity>(entity =>
            {
                entity.HasKey(e => e.Id);
                entity.Property(e => e.Id).ValueGeneratedOnAdd();
                entity.Property(e => e.Name).IsRequired();
                entity.Property(e => e.Price).IsRequired();
                entity.Property(e => e.ModelPath).IsRequired();
                entity.Property(e => e.Character).IsRequired();
            });

            modelBuilder.Entity <WeaponEntity>(entity =>
            {
                entity.HasKey(e => e.Id);
                entity.Property(e => e.Id).ValueGeneratedOnAdd();
                entity.Property(e => e.Name).IsRequired();
                entity.Property(e => e.Damage).IsRequired();
                entity.Property(e => e.Price).IsRequired();
                entity.Property(e => e.ModelPath).IsRequired();
                entity.Property(e => e.Character).IsRequired();
            });

            modelBuilder.Entity <PlayerEntity>().HasData(player);
            modelBuilder.Entity <WeaponEntity>().HasData(weapon1, weapon2, weapon3, weapon4, weapon5);
            modelBuilder.Entity <SkinEntity>().HasData(skin1, skin2, skin3, skin4, skin5, skin6);
        }
コード例 #30
0
 public static void RemoveOwner(this WeaponEntity weaponEntity)
 {
     weaponEntity.isFlagSyncSelf = false;
 }
コード例 #31
0
 public static void RemoveWeaponEntity(WeaponEntity entity)
 {
     AssertUtility.Assert(SharedConfig.IsServer, "only Server remove weapon directly");
     DebugUtil.MyLog("Server Remove Weapon directly:" + entity.entityKey.Value, DebugUtil.DebugColor.Blue);
     WeaponEntityExt.SetDestroy(entity);
 }