public void OpenPackageCreature(int index) { if (package == null) { package = Instantiate(packagePrefab); package.transform.parent = gameObject.transform; package.transform.localScale = Vector3.one; package.GetComponent <RectTransform>().position = new Vector3(Screen.width * 3 / 2, 0, 0); } CreatureFightData roomData = GameRoot.GetInstance().gameDataManager.GetInRoomConstructure(currRoomId); PackageUI packageUI = package.GetComponentInChildren <PackageUI>(); if (roomData == null) { return; } switch (roomData.con_type) { case 0: packageUI.Init(PackageType.IdleCreature, 1); package.transform.DOMoveX(Screen.width / 2, 0.3f); currIndex = index; packageUI.SelectAction += ChangeCreature; break; case 2: packageUI.Init(PackageType.IdlePartTool, 1); package.transform.DOMoveX(Screen.width / 2, 0.3f); currIndex = index; packageUI.SelectAction += ChangeCreature; break; } }
public void GetNewPartTool(CreatureFightData partTool) { partTool.uid = unitUid; partTool.init_room = 0; ++unitUid; partTools.Add(partTool); }
public void InjectData(CreatureFightData data) { _data = data; isAnim = false; switch (data.type) { case 0: unitCard.SetActive(true); skillCard.SetActive(false); constructureCard.SetActive(false); unitName.text = StrUtil.GetText(data.CreatureName); unitSprite.sprite = GameRoot.GetInstance().BattleField.assetManager.GetCards(data.icon); for (int i = 0; i < stars.Length; ++i) { stars[i].color = i < data.star ? new Color(1, 1, 1) : new Color(0.3f, 0.3f, 0.3f); } level.text = "Lv." + data.level; exp.text = data.exp + "/" + data.expMax; expSlider.value = (float)data.exp / (float)data.expMax; hp.text = Mathf.FloorToInt(data.hp).ToString(); attack.text = Mathf.FloorToInt(data.attack).ToString(); baseAttackFrame.text = StrUtil.GetText(GetAttackRateString(data.base_attack_interval)); attackRange.text = Mathf.FloorToInt(data.attack_range).ToString(); defence.text = Mathf.FloorToInt(data.defence).ToString(); reduce.text = data.defence >= 0?(data.defence * 2f / (100f + data.defence * 2f) * 100f).ToString("F2") + "%":"-" + ((1 - Mathf.Pow((100f - 2f) / 100f, -data.defence)) * 100f).ToString("F2") + "%"; speed.text = StrUtil.GetText(GetSpeedString(data.speed)); notify.SetActive(true); isNotify = true; notifyState = -1; notify.GetComponent <Text>().text = StrUtil.GetText("点击翻转查看能力"); //skill data int[] skills = data.skills; int num = skills.Length; for (int i = 0; i < skillIcons.Length; ++i) { skillIcons[i].gameObject.SetActive(false); } for (int i = 0; i < num; ++i) { skillIcons[i].gameObject.SetActive(true); skillIcons[i].InjectData(GameRoot.GetInstance().BattleField.assetManager.GetSkillData(skills[i])); } break; case 1: unitCard.SetActive(false); skillCard.SetActive(false); constructureCard.SetActive(true); constructureName.text = StrUtil.GetText(data.CreatureName); constructureIcon.sprite = GameRoot.GetInstance().BattleField.assetManager.GetIcon(data.icon); notify.SetActive(false); isNotify = false; break; case 2: break; } }
public int GetNewConstructure(CreatureFightData constructure) { constructure.uid = unitUid; constructure.init_room = 0; ++unitUid; constructures.Add(constructure); return(constructure.uid); }
public static UnitData GetUnitData(int id) { AssetManager mng; mng = GameRoot.GetInstance().BattleField.assetManager; CreatureFightData data = new CreatureFightData(); data.LoadData(mng.GetCreatureData(id)); return(AssetManager.PackCreatureData(data)); }
//create new data public CreatureFightData CreateNewCreature(int id, int level) { AssetManager assetManager = GameRoot.GetInstance().BattleField.assetManager; CreatureFightData temp = new CreatureFightData(); temp.LoadData(assetManager.GetCreatureData(id)); temp.level = level; temp.hp = temp.hp + (level - 1) * temp.hp_up; temp.attack = temp.attack + (level - 1) * temp.attack_up; temp.expMax = level * 20; temp.exp = level == 1 ? 0 : UnityEngine.Random.Range(0, temp.expMax); return(temp); }
public void ChangeBoss(int id) { HeroData data = GameRoot.GetInstance().BattleField.assetManager.GetHeroData(id); CreatureFightData boss_data = HeroData.PackHeroData(data); boss_data.type = -1; boss_data.uid = 0; boss_data.init_room = 23; boss = boss_data; GameRoot.GetInstance().Bridge.RemoveEntity(0); GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(boss_data)); }
public BattleData GetBattleData() { BattleData battleData = new BattleData(); List <UnitData> allStructures = GetBattleConstructures(); List <UnitData> allCreatures = GetBattleCreatures(); int num = allStructures.Count + allCreatures.Count; battleData.units = new UnitData[num]; battleData.roomCol = roomCol; battleData.roomRow = roomRow; for (int i = 0; i < allStructures.Count; ++i) { battleData.units[i] = allStructures[i]; } for (int i = 0; i < allCreatures.Count; ++i) { battleData.units[allStructures.Count + i] = allCreatures[i]; } battleData.enemys = new UnitData[25]; for (int i = 0; i < 24; ++i) { CreatureFightData temp = new CreatureFightData(); temp.LoadData(GameRoot.GetInstance().BattleField.assetManager.GetCreatureData(109)); if (UnityEngine.Random.Range(0f, 1f) < 0.1f) { temp.enemy_level = 1; } battleData.enemys[i] = AssetManager.PackCreatureData(temp, 2); battleData.enemys[i].init_room = -1; } CreatureFightData e_boss = new CreatureFightData(); e_boss.LoadData(GameRoot.GetInstance().BattleField.assetManager.GetCreatureData(110)); e_boss.enemy_level = 2; battleData.enemys[24] = AssetManager.PackCreatureData(e_boss, 2); battleData.enemys[24].init_room = -1; battleData.boss = GetHeroData(); return(battleData); }
private void CleanInRoomData(int roomId, bool rawData = false) { CreatureFightData roomData = GetInRoomConstructure(roomId); List <CreatureFightData> subDatas = GetInRoomSubData(roomId); if (roomData != null) { int remainNum = roomData.contain_num; int conType = roomData.con_type; for (int i = subDatas.Count - 1; i >= 0; --i) { if (subDatas[i].type != conType) { subDatas[i].init_room = 0; if (subDatas[i].type != 2 && rawData == false) { GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid); } subDatas.RemoveAt(i); } } for (int i = subDatas.Count - 1; i >= 0; --i) { if (i > remainNum) { subDatas[i].init_room = 0; if (subDatas[i].type != 2 && rawData == false) { GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid); } subDatas.RemoveAt(i); } } } else { for (int i = subDatas.Count - 1; i >= 0; --i) { subDatas[i].init_room = 0; if (subDatas[i].type != 2 && rawData == false) { GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid); } subDatas.RemoveAt(i); } } }
public int LoadData() { GameData data; if (File.Exists(Application.persistentDataPath + "/gamesave.save")) { BinaryFormatter formatter = new BinaryFormatter(); FileStream file = File.Open(Application.persistentDataPath + "/gamesave.save", FileMode.Open); data = (GameData)formatter.Deserialize(file); file.Close(); //load data unitUid = data.unitUid; roomRow = data.roomRow; roomCol = data.roomCol; boss = new CreatureFightData(); creatures = new List <CreatureFightData>(); constructures = new List <CreatureFightData>(); partTools = new List <CreatureFightData>(); rooms = new Dictionary <int, List <CreatureFightData> >(); boss = data.boss; int creatureNum = data.creatures.Count; for (int i = 0; i < creatureNum; ++i) { creatures.Add(data.creatures[i]); if (data.creatures[i].init_room != 0) { if (!rooms.ContainsKey(data.creatures[i].init_room)) { rooms.Add(data.creatures[i].init_room, new List <CreatureFightData>()); } rooms[data.creatures[i].init_room].Add(data.creatures[i]); } } int constructureNum = data.constructures.Count; for (int i = 0; i < constructureNum; ++i) { constructures.Add(data.constructures[i]); } return(1); } return(-1); }
public void InjectData(CreatureFightData data) { //init star for (int i = 0; i < stars.Length; ++i) { if (i < data.star) { stars[i].SetActive(true); } else { stars[i].SetActive(false); } } //init lvl level.text = "Lv." + data.level; //init icon icon.sprite = GameRoot.GetInstance().BattleField.assetManager.GetIcon(data.icon); //reset color if (data.type == 1) { if (data.con_type == 0) { bound.color = new Color(0.347f, 0.67f, 0.8f); back.color = new Color(0.3f, 0.38f, 0.4f); } else { bound.color = new Color(0.75f, 0.4f, 0.47f); back.color = new Color(0.36f, 0.24f, 0.27f); } } else if (data.type == 0) { bound.color = new Color(0.69f, 0.53f, 0.73f); back.color = new Color(0.41f, 0.33f, 0.44f); } else if (data.type == 2) { bound.color = new Color(0.82f, 0.74f, 0.46f); back.color = new Color(0.62f, 0.54f, 0.26f); } creatureData = data; }
public static CreatureFightData PackHeroData(HeroData _data) { CreatureFightData data = new CreatureFightData { id = _data.id, uid = _data.uid, type = _data.type, con_type = _data.con_type, contain_num = _data.contain_num, genus = _data.genus, CreatureName = _data.CreatureName, star = _data.ini_star, hp = _data.hp, hp_up = _data.hp_up, attack = _data.attack, attack_up = _data.attack_up, base_attack_interval = _data.base_attack_interval, attack_rate = _data.attack_rate, defence = _data.defence, magic_resist = _data.magic_resist, crit = _data.crit, crit_value = _data.crit_value, hit_rate = _data.hit_rate, dodge = _data.dodge, speed = _data.speed, base_speed = _data.base_speed, physic_suck = _data.physic_suck, magic_suck = _data.magic_suck, coold_reduce = _data.coold_reduce, radius = _data.radius, block_num = _data.block_num, attack_range = _data.attack_range, channal = _data.channal, ready_time = _data.ready_time, cost = _data.cost, init_room = _data.init_room, live_time = _data.live_time, prefab = _data.prefab, icon = _data.icon, }; data.skills = new int[0]; return(data); }
public void InitGameData() { //inject boss data int boss_id = boss.id; HeroData heroData = GameRoot.GetInstance().BattleField.assetManager.GetHeroData(boss_id); boss = HeroData.PackHeroData(heroData); boss.uid = 0; boss.init_room = 23; boss.type = -1; foreach (int key in heroData.talents) { SkillData skillData = GameRoot.GetInstance().BattleField.assetManager.GetSkillData(key); if (skillData.needExp <= bossExp[boss_id - 1001]) { InjectBossSkill(key); } } }
public void OpenCreatureCard(CreatureFightData data, Vector3 location) { if (cardPrefab == null) { cardPrefab = Instantiate(creatureCardPrefab); cardPrefab.transform.parent = GameRoot.GetInstance().InfoUI.transform; cardPrefab.transform.position = new Vector3(Screen.width / 2, Screen.height / 2); } cardPrefab.SetActive(true); GameRoot.GetInstance().InfoUI.SetActive(true); cardPrefab.transform.position = location; cardPrefab.transform.localScale = Vector3.one * 0.2f; cardPrefab.GetComponent <CreatureCardUI>().InjectData(data); cardPrefab.transform.DOMove(new Vector3(Screen.width / 2, Screen.height / 2, 0), 0.3f); cardPrefab.transform.DOScale(Vector3.one * 1.05f, 0.3f).onComplete += () => { cardPrefab.transform.DOScale(Vector3.one, 0.05f); }; }
public void ChangeRoomSubData(int roomId, int index, int uid, bool rawData = false) { List <CreatureFightData> subDatas = GetInRoomSubData(roomId); CreatureFightData newData = GetCreatureFightDataByUid(uid); if (index < subDatas.Count) { CreatureFightData oldData = subDatas[index]; if (oldData != null) { oldData.init_room = 0; if (oldData.type != 2 && rawData == false) { GameRoot.GetInstance().Bridge.RemoveEntity(oldData.uid); } subDatas.RemoveAt(index); } if (newData != null) { newData.init_room = roomId; if (newData.type != 2 && rawData == false) { GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData)); } subDatas.Insert(index, newData); } } else { if (newData != null) { newData.init_room = roomId; if (newData.type != 2 && rawData == false && newData.init_room != 0) { GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData)); } subDatas.Add(newData); } } CleanInRoomData(roomId, rawData); }
public static UnitData PackCreatureData(CreatureFightData data, int _side = 1) { UnitData pack = new UnitData { id = data.id, level = data.level, uid = data.uid, type = data.type, con_type = data.con_type, enemy_level = data.enemy_level, side = _side, genus = data.genus, name = data.CreatureName, hp = data.hp, attack = data.attack, base_attack_interval = data.base_attack_interval, attack_rate = data.attack_rate, defence = data.defence, magic_resist = data.magic_resist, crit = data.crit, crit_value = data.crit_value, hit_rate = data.hit_rate, dodge = data.dodge, speed = data.speed, physic_suck = data.physic_suck, magic_suck = data.magic_suck, coold_reduce = data.coold_reduce, radius = data.radius, block_num = data.block_num, attack_range = data.attack_range, channal = data.channal, ready_time = data.ready_time, live_time = data.live_time, skills = data.skills, init_room = data.init_room, }; return(pack); }
public void ChangeRoomConstructure(int roomId, int uid, bool rawData = false) { CreatureFightData oldData = GetInRoomConstructure(roomId); if (oldData != null) { oldData.init_room = 0; if (rawData == false) { GameRoot.GetInstance().Bridge.RemoveEntity(oldData.uid); } } CreatureFightData newData = GetCreatureFightDataByUid(uid); if (newData != null) { newData.init_room = roomId; if (rawData == false) { GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData)); } } CleanInRoomData(roomId, rawData); }
public void RefreshInfo() { CreatureFightData data = GameRoot.GetInstance().gameDataManager.GetInRoomConstructure(currRoomId); int num = 0; if (data == null) { constructureIcon.SetActive(false); } else { constructureIcon.GetComponent <CreatureIconUI>().InjectData(data); constructureIcon.SetActive(true); } List <CreatureFightData> datas = GameRoot.GetInstance().gameDataManager.GetInRoomSubData(currRoomId); if (data != null) { num = data.contain_num; } foreach (var obj in PartContainer) { obj.SetActive(false); } float start_x = 0; switch (num) { case 1: start_x = 0; break; case 2: start_x = -80; break; case 3: start_x = -150; break; case 4: start_x = -235; break; } for (int i = 0; i < num; ++i) { PartContainer[i].SetActive(true); PartContainer[i].transform.localPosition = new Vector3(start_x + i * 150, PartContainer[i].transform.localPosition.y, PartContainer[i].transform.localPosition.z); if (i < datas.Count) { partIcons[i].GetComponent <CreatureIconUI>().InjectData(datas[i]); partIcons[i].SetActive(true); } else { partIcons[i].SetActive(false); } } CloseDungeonBtn(); }