123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework.DataTable;
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- namespace MetaClient
- {
- [Serializable]
- public abstract class AircraftData : TargetableObjectData
- {
- [SerializeField]
- private ThrusterData m_ThrusterData = null;
- [SerializeField]
- private List<WeaponData> m_WeaponDatas = new List<WeaponData>();
- [SerializeField]
- private List<ArmorData> m_ArmorDatas = new List<ArmorData>();
- [SerializeField]
- private int m_MaxHP = 0;
- [SerializeField]
- private int m_Defense = 0;
- [SerializeField]
- private int m_DeadEffectId = 0;
- [SerializeField]
- private int m_DeadSoundId = 0;
- public AircraftData(int entityId, int typeId, CampType camp)
- : base(entityId, typeId, camp)
- {
- IDataTable<DRAircraft> dtAircraft = GameEntry.DataTable.GetDataTable<DRAircraft>();
- DRAircraft drAircraft = dtAircraft.GetDataRow(TypeId);
- if (drAircraft == null)
- {
- return;
- }
- m_ThrusterData = new ThrusterData(GameEntry.Entity.GenerateSerialId(), drAircraft.ThrusterId, Id, Camp);
- for (int index = 0, weaponId = 0; (weaponId = drAircraft.GetWeaponIdAt(index)) > 0; index++)
- {
- AttachWeaponData(new WeaponData(GameEntry.Entity.GenerateSerialId(), weaponId, Id, Camp));
- }
- for (int index = 0, armorId = 0; (armorId = drAircraft.GetArmorIdAt(index)) > 0; index++)
- {
- AttachArmorData(new ArmorData(GameEntry.Entity.GenerateSerialId(), armorId, Id, Camp));
- }
- m_DeadEffectId = drAircraft.DeadEffectId;
- m_DeadSoundId = drAircraft.DeadSoundId;
- HP = m_MaxHP;
- }
- /// <summary>
- /// 最大生命。
- /// </summary>
- public override int MaxHP
- {
- get
- {
- return m_MaxHP;
- }
- }
- /// <summary>
- /// 防御。
- /// </summary>
- public int Defense
- {
- get
- {
- return m_Defense;
- }
- }
- /// <summary>
- /// 速度。
- /// </summary>
- public float Speed
- {
- get
- {
- return m_ThrusterData.Speed;
- }
- }
- public int DeadEffectId
- {
- get
- {
- return m_DeadEffectId;
- }
- }
- public int DeadSoundId
- {
- get
- {
- return m_DeadSoundId;
- }
- }
- public ThrusterData GetThrusterData()
- {
- return m_ThrusterData;
- }
- public List<WeaponData> GetAllWeaponDatas()
- {
- return m_WeaponDatas;
- }
- public void AttachWeaponData(WeaponData weaponData)
- {
- if (weaponData == null)
- {
- return;
- }
- if (m_WeaponDatas.Contains(weaponData))
- {
- return;
- }
- m_WeaponDatas.Add(weaponData);
- }
- public void DetachWeaponData(WeaponData weaponData)
- {
- if (weaponData == null)
- {
- return;
- }
- m_WeaponDatas.Remove(weaponData);
- }
- public List<ArmorData> GetAllArmorDatas()
- {
- return m_ArmorDatas;
- }
- public void AttachArmorData(ArmorData armorData)
- {
- if (armorData == null)
- {
- return;
- }
- if (m_ArmorDatas.Contains(armorData))
- {
- return;
- }
- m_ArmorDatas.Add(armorData);
- RefreshData();
- }
- public void DetachArmorData(ArmorData armorData)
- {
- if (armorData == null)
- {
- return;
- }
- m_ArmorDatas.Remove(armorData);
- RefreshData();
- }
- private void RefreshData()
- {
- m_MaxHP = 0;
- m_Defense = 0;
- for (int i = 0; i < m_ArmorDatas.Count; i++)
- {
- m_MaxHP += m_ArmorDatas[i].MaxHP;
- m_Defense += m_ArmorDatas[i].Defense;
- }
- if (HP > m_MaxHP)
- {
- HP = m_MaxHP;
- }
- }
- }
- }
|