| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using cfg;
- public class SoldierLevelRecord : MonoBehaviour
- {
- public LevelSelect levelSelect;
- [System.Serializable]
- public struct SoldierExtraBuff
- {
- public SoldierType st;
- public int summonAttack; //起手式伤害
- public int marchAttack; //行军式伤害
- public int hp; //血量
- public int armor; //护甲
- public int mp; //蓝耗
- public int armorPiercing; //穿甲
- public int shootDownDamage; //击落伤害
- public float shootDownDamageRate; //击飞落地伤害比率
- }
- public struct SoldierEXPList
- {
- public SoldierType st;
- public List<SingleSoldierLevel> ssl;
- }
- [DisplayOnly]
- public SoldierExtraBuff[] seb = new SoldierExtraBuff[3];
- private SoldierBuff sb;
- //本局游戏的士兵表
- static public SoldierEXPList[] soldierEXPlists = new SoldierEXPList[3];
- //本局游戏三个士兵的等级上限
- static public int[] maxLevels = new int[3];
- //excel表
- private List<SingleSoldierLevel> expList;
- //把整个表按照士兵种类分出来
- static public List<SoldierEXPList> allSoldierEXPLists;
- private void Start()
- {
- expList = GameManager.instance.allCfgData.CfgSoldierLevel.DataList;
- for (int i = 0; i < 3; i++)
- {
- seb[i].st = GameManager.curSoldiers[i];
- soldierEXPlists[i].st = seb[i].st;
- }
- allSoldierEXPLists = new List<SoldierEXPList>();
- RecordLevelLists();
- CurGameSoldierEXPList();
- Test_LevelSetting test_LevelSetting = GetComponent<Test_LevelSetting>();
- //测试用——开局士兵初始等级
- if(test_LevelSetting != null && levelSelect.isDebug)
- {
- test_LevelSetting.TestLevel();
- }
- }
-
- private SoldierType TranStringToSoldierType(string sname)
- {
- return (SoldierType)System.Enum.Parse(typeof(SoldierType), sname);
- }
- //读取本局游戏的几个士兵表
- public void CurGameSoldierEXPList()
- {
- int id = 0;
- foreach(SoldierType st in GameManager.curSoldiers)
- {
- foreach (SoldierEXPList sel in allSoldierEXPLists)
- {
- if (sel.st == st)
- {
- soldierEXPlists[id].ssl = sel.ssl;
- maxLevels[id] = sel.ssl.Count + 1;
- GetComponent<SoldierEXP>().SetNextEXP(st);
- id++;
- break;
- }
- }
- }
- }
- //把升级表按士兵种类分放
- private void RecordLevelLists()
- {
- string sname = expList[0].Soldier;
- SoldierType st = TranStringToSoldierType(sname);
- SoldierEXPList sel;
- sel.st = st;
- List<SingleSoldierLevel> curSSL = new List<SingleSoldierLevel>();
- foreach(SingleSoldierLevel ssl in expList)
- {
- if (ssl.Soldier == sname)
- {
- curSSL.Add(ssl);
- }
- else
- {
- sel.ssl = curSSL;
- allSoldierEXPLists.Add(sel);
- curSSL = new List<SingleSoldierLevel>();
- sname = ssl.Soldier;
- st = TranStringToSoldierType(sname);
- sel.st = st;
- curSSL.Add(ssl);
- }
- }
- sel.ssl = curSSL;
- allSoldierEXPLists.Add(sel);
- }
- //士兵当前的加成
- public void ReadSoldierBuff(SoldierType st, SingleSoldierLevel ssl)
- {
- for(int i = 0; i < 3; i++)
- {
- if (seb[i].st == st)
- {
- seb[i].summonAttack = ssl.SummonAttack;
- seb[i].marchAttack = ssl.MarchAttack;
- seb[i].hp = ssl.HP;
- seb[i].armor = ssl.Armor;
- seb[i].mp = ssl.MP;
- seb[i].armorPiercing = ssl.ArmorPierce;
- seb[i].shootDownDamage = ssl.ShootDownDamage;
- seb[i].shootDownDamageRate = ssl.ShootDownDamageRate;
- break;
- }
- }
- }
- public void SoldierAddLevelBuff(Demonic dem)
- {
- for (int i = 0; i < 3; i++)
- {
- if (seb[i].st == dem.soldierType)
- {
- sb = dem.GetComponent<SoldierBuff>();
- sb.AddSummonAttack(seb[i].summonAttack);
- sb.AddMarchAttack(seb[i].marchAttack);
- sb.AddHP(seb[i].hp);
- sb.AddArmor(seb[i].armor);
- sb.AddShootDownDamage(seb[i].shootDownDamage);
- sb.AddShootDownDamageRate(seb[i].shootDownDamageRate);
- break;
- }
- }
- }
- }
|