Exemplo n.º 1
0
    /// <summary>
    /// 在武器变化的时候, 更新当前实装的武器的准星信息
    /// </summary>
    private void UpdateBattleWeapons(IComponentEvent entityEvent)
    {
        ItemOperateEvent itemEvent = entityEvent as ItemOperateEvent;

        Dictionary <ulong, BattleWeaponBase> newBattleWeapons = new Dictionary <ulong, BattleWeaponBase>();

        for (int iWeapon = 0; iWeapon < BATTLE_WEAPON_COUNT; iWeapon++)
        {
            IWeapon weapon = m_SkillProxy.GetWeaponByIndex(iWeapon);
            if (weapon == null)
            {
                continue;
            }

            // 获取iWeapon对应武器的UID
            ulong uid = weapon.GetUID();
            // 查看当前是否有这把武器的准星信息
            if (m_Property.HaveBattleWeapon(uid))
            {
                newBattleWeapons.Add(uid, m_Property.GetBattleWeapon(uid));
            }
            else
            {
                BattleWeaponBase.BattleWeaponType weaponType = BattleWeaponBase.GetBattleWeaponTypeByReticle(weapon.GetConfig().Reticle);
                newBattleWeapons.Add(uid, CreateNewBattleWeapon(weaponType, weapon));
            }
        }

        m_Property.ResetBattleWeapons(newBattleWeapons);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 创建一个新的运行时武器信息
    /// </summary>
    /// <param name="weaponType"></param>
    private BattleWeaponBase CreateNewBattleWeapon(BattleWeaponBase.BattleWeaponType weaponType, IWeapon weapon)
    {
        switch (weaponType)
        {
        case BattleWeaponBase.BattleWeaponType.MachineGun:
            return(new BattleWeapon_MachineGun(weapon));

        case BattleWeaponBase.BattleWeaponType.Missile:
            Debug.Log("创建导弹类型的战斗武器");
            return(new BattleWeapon_Missile_CenterLock(weapon));

        case BattleWeaponBase.BattleWeaponType.Shotgun:
            return(new BattleWeapon_Shotgun(weapon));

        default:
            return(new BattleWeaponBase(weapon));
        }
    }