public DTroop AddNewTroopData(int trooptypeid, int personid1, int personid2, int personid3) { if (dic_TroopType.ContainsKey(trooptypeid)) { DTroop troop = new DTroop(); int id = 1; for (int i = 1; i < 9999; i++) { if (dic_Troop.ContainsKey(i)) { id = i; } } troop.id = id; troop.id_trooptype = trooptypeid; troop.id_person1 = personid1; troop.id_person2 = personid2; troop.id_person3 = personid3; dic_Troop.Add(id, troop); return(troop); } else { LogTool.LogError("can not find typeid" + trooptypeid); return(null); } }
//主要操作的还是Troop //必须先把数据data准备好,然后才是Entity public void AddTroop(int troopTypeid, DCityBuilding dcityfrom, Vector3 bornpos, Vector3 movetopos, int soldiernum, int personid1, int personid2, int personid3) { // step1 设置数据对象 DTroop dtroop = DataMgr.Instacne.AddNewTroopData(troopTypeid, personid1, personid2, personid3); dtroop.origsoldiernum = soldiernum; dtroop.cursoldiernum = soldiernum; //step2 生成gameobject 设置entity对象 GameObject prefab = ResMgr.Instacne.dic_TroopPrefab[troopTypeid]; GameObject go = Instantiate(prefab) as GameObject; go.transform.position = bornpos; go.transform.SetParent(troopEntityParent, true); //这个设置不设置不影响坐标,因为troopEntityParent 本身就在原点 Troop troop = go.GetComponent <Troop>(); //需要建立Data对象 这里先忽略,直接使用prefab数据 troop.Data = dtroop; dic_Troop.Add(troop.ID, troop); go.SetActive(true); HudMgr.Instacne.AddHudTroop(troop.ID); //step3 设置父子关系 //设置city 数据对象的子对象id dcityfrom.idlist_troop.Add(dtroop.id); //子对象设置父对象id dtroop.parentid_city = dcityfrom.id; troop.targetType = ETroopTargetType.MoveToPoint; troop.CommandMoveToPoint(movetopos); }
private void LoadCity(string fold) { string filePath = fold + "/city.csv"; cityFile = new CSVFile(); cityFile.ReadCsv(filePath); dic_City.Clear(); foreach (string[] arr in cityFile.valueLines) { if (arr.Length != 16) { LogTool.LogError("city arr.length" + arr.Length); continue; } DCityBuilding city = new DCityBuilding(); city.id = int.Parse(arr[0]); city.alias = arr[1]; city.shortdesc = arr[2]; city.fulldesc = arr[3]; city.food = int.Parse(arr[4]); city.money = int.Parse(arr[5]); city.population = int.Parse(arr[6]); city.curhp = int.Parse(arr[7]); city.curtotalsoldiernum = int.Parse(arr[8]); city.mingxin = int.Parse(arr[9]); city.zhian = int.Parse(arr[10]); city.id_leadperson = int.Parse(arr[11]); city.idlist_pbuilding = CommonUtil.StringToListInt(arr[12], '#'); city.idlist_troop = CommonUtil.StringToListInt(arr[13], '#'); //只保存一级子类 foreach (int troopid in city.idlist_troop) //子对象的一级父类在这初始化 { if (troopid != -1 && dic_Troop.ContainsKey(troopid)) { DTroop troop = DataMgr.Instacne.dic_Troop[troopid]; troop.parentid_city = city.id; } } city.idlist_person = CommonUtil.StringToListInt(arr[14], '#'); city.idlist_freeperson = CommonUtil.StringToListInt(arr[15], '#'); dic_City.Add(city.id, city); } EntityMgr.Instacne.InitAllCityData(); }