/// <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); }
/// <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)); } }