public HeroData(HeroBaseData _data) { baseData = _data; heroID = _data.id; heroName = _data.name; heroGrade = _data.grade; heroImageName = _data.image; assetBundle = _data.assetBundle; prefab = _data.prefab; string _id = _data.id; if (_id.Contains("Territory")) { heroType = HeroData.HeroType.NonBattle; } else { //전투 전용 heroType = HeroData.HeroType.Battle; } heroBattleType = _data.type; trainingTypeID = _data.trainingTypeID; InitStats(); }
/// <summary> 세팅부 </summary> public IEnumerator GetHero(string heroID, System.Action <GameObject> result) { HeroBaseData baseData = HeroManager.heroBaseDataDic[heroID]; string prefabName = baseData.prefab; GameObject go = SelectHero(prefabName); if (!go) { yield return(AssetLoader.Instance.InstantiateGameObjectAsync(baseData.assetBundle, baseData.prefab + "_Empty", x => go = x)); go.transform.SetParent(transform); go.name = prefabName; UpdateHeroPool(prefabName, go); } if (!go) { result(null); } else { result(go); } }
public void InitSlot(HeroBaseData heroData = null, int monstarCount = 0) { heroSlotPanel.SetActive(heroData != null); if (heroData != null) { AssetLoader.AssignImage(imageHero, "sprite/hero", "Atlas_HeroImage", heroData.image); monsterCountPanel.SetActive(false); if (monstarCount > 0) { monsterCountPanel.SetActive(true); textMonsterCount.text = "X " + monstarCount.ToString(); } Sprite frame = null; for (int i = 0; i < gradeSpriteList.Count; i++) { frame = gradeSpriteList[i]; if (i == (heroData.grade - 1)) { break; } } if (frame != null) { gradeFrame.sprite = frame; } } }
HeroData CreateHeroData() { HeroBaseData baseData = GameDataManager.heroBaseDataDic[heroID]; HeroData data = new HeroData(baseData); return(data); }
void InitializeData() { heroDatabase = HeroDatabase.Instance; heroDatabase.InitializeHeroDatabase(); itemDatabase = ItemDatabase.Instance; itemDatabase.InitializeItemDatabase(); buildingDatabase = BuildingDatabase.Instance; buildingDatabase.InitializeBuildingDatabase(); unitDatabase = UnitDatabase.Instance; unitDatabase.InitializeUnitDatabase(); Id = ""; heroData = new HeroBaseData(); resource = 0; heroState = 0; castleState = 0; equipment = new int[equipNum]; inventoryId = new int[invenNum]; inventoryNum = new int[invenNum]; skill = new int[skillNum]; unit = new Unit[unitNum]; createUnit = new Unit(); attackUnit = new Unit[unitNum]; building = new int[buildingNum]; upgrade = new int[unitNum]; buildBuilding = buildingNum; }
public HeroBaseData(HeroBaseData newBaseData) { Id = newBaseData.Id; attackRange = newBaseData.attackRange; colliderSize = newBaseData.colliderSize; levelData = new List <HeroLevelData>(); }
IEnumerator HeroAdd() { for (int i = 0; i < heroBaseDataDic.Count; i++) { HeroBaseData baseData = null; baseData = heroBaseDataDic[listHeroID[i]]; //이런 히어로 우리게임에 없음. if (baseData == null) { Debug.LogError(listHeroID[i] + " 없음"); } HeroData heroData = new HeroData(baseData); if (listHeroID[i].Contains("Territory")) { heroData.heroType = HeroData.HeroType.NonBattle; } else { heroData.heroType = HeroData.HeroType.Battle; } HeroDictionaryData heroDictionaryData = new HeroDictionaryData(); heroDictionaryData.heroData = heroData; heroDictionaryDataDic.Add(listHeroID[i], heroDictionaryData); //heroDataDic.Add(listHeroID[i], heroData); yield return(null); } }
public void SetHeroData(HeroData newHeroData) { HeroBaseData baseData = heroDatabase.GetHeroData(newHeroData.Id); HeroLevelData levelData = baseData.GetLevelData(newHeroData.level); heroData = new HeroBaseData(heroDatabase.GetHeroData(newHeroData.Id)); heroData.Leveldata.Add(levelData); }
public bool AddBaseData(HeroBaseData newHeroData) { try { heroData.Add(newHeroData); return(true); } catch (Exception e) { Debug.Log("HeroDatabase::AddBaseData 에러 - " + e.Message); return(false); } }
void SetHeroData(JsonData serverJsonData) { string invenID = JsonParser.ToString(serverJsonData["id"]); string heroID = JsonParser.ToString(serverJsonData["heroID"]); HeroBaseData baseData = null; if (heroBaseDataDic.ContainsKey(heroID)) { baseData = heroBaseDataDic[heroID]; } //이런 히어로 우리게임에 없음. if (baseData == null) { Debug.LogError(heroID + " 없음"); } //아니면 인벤토리에 추가 //-------------------------------------------------- HeroData heroData = null; if (heroDataDic.ContainsKey(invenID)) { heroData = heroDataDic[invenID]; } if (heroData == null) { heroData = new HeroData(baseData); } heroData.InitServerData(serverJsonData); //인벤토리에 담음 if (heroDataDic.ContainsKey(heroData.id)) { heroDataDic[heroData.id] = heroData; } else { if (isInitialized) { heroData.isChecked = false; } heroDataDic.Add(heroData.id, heroData); } }
IEnumerator Start() { isInitialization = false; while (!HeroManager.Instance) { yield return(null); } heroBaseDataList = HeroManager.heroBaseDataDic.Values.ToList().FindAll(x => x.useForMonster); monsterKeyList = new List <string>(); bosskeyList = new List <string>(); for (int i = 0; i < heroBaseDataList.Count; i++) { HeroBaseData data = heroBaseDataList[i]; if (data.grade == 1) { monsterIDListGrade1.Add(data.id); } else if (data.grade == 2) { monsterIDListGrade2.Add(data.id); } else if (data.grade == 3) { monsterIDListGrade3.Add(data.id); } //if (!data.useForMonster) // continue; //if(keyList[i].EndsWith("_Mon")) { if (data.grade < 3) { monsterKeyList.Add(data.id); // 잡몹 } else { bosskeyList.Add(data.id); // 보스 } } } isInitialization = true; }
IEnumerator InitHeroBaseData() { JsonData clientJsonData = null; string bundle = "data/hero"; string assetName = "Hero"; yield return(StartCoroutine(AssetLoader.LoadJsonData(bundle, assetName, x => clientJsonData = x))); heroBaseDataDic = new Dictionary <string, HeroBaseData>(); for (int i = 0; i < clientJsonData.Count; i++) { HeroBaseData heroBaseData = new HeroBaseData(clientJsonData[i]); heroBaseDataDic.Add(heroBaseData.id, heroBaseData); } }
public static void InitBlueTeam() { blueTeamDataList.Clear(); string key = UIDayDungeonLobby.Instance.currentTapDay.ToString() + "_" + UIDayDungeonLobby.Instance.dungeonLevel; if (GameDataManager.dayDungeonBaseDataDic.ContainsKey(key)) { DayDungeonBaseData data = GameDataManager.dayDungeonBaseDataDic[key]; for (int i = 0; i < data.monsterList.Count; i++) { DayDungeonMonsterData monster = data.monsterList[i]; for (int j = 0; j < monster.amount; j++) { if (GameDataManager.heroBaseDataDic.ContainsKey(monster.id)) { HeroBaseData heroBaseData = GameDataManager.heroBaseDataDic[monster.id]; HeroData hero = new HeroData(heroBaseData); hero.InitTestData(heroBaseData.id, monster.maxHp, monster.attackPower, monster.defensePower); blueTeamDataList.Add(hero); } else { Debug.LogError(monster.id + " - 이런 아이디 없음"); } } } if (data.bossData != null) { DayDungeonMonsterData boss = data.bossData; if (GameDataManager.heroBaseDataDic.ContainsKey(boss.id)) { HeroBaseData heroBaseData = GameDataManager.heroBaseDataDic[boss.id]; HeroData hero = new HeroData(heroBaseData); hero.InitTestData(heroBaseData.id, boss.maxHp, boss.attackPower, boss.defensePower); blueTeamDataList.Add(hero); } else { Debug.LogError(boss.id + " - 이런 아이디 없음"); } } } }
/// <summary> 속성 표시 </summary> void ShowElemental() { objectElementalFire.SetActive(false); objectElementalWater.SetActive(false); objectElementalEarth.SetActive(false); objectElementalLight.SetActive(false); objectElementalDark.SetActive(false); objectElementalNotDefined.SetActive(false); //일단 현재 시점에서 중요한 정보가 아닌 것 같아서 하이드 시킴 (2018-02-20. 화중) return; HeroBaseData data = battleHero.heroData.baseData; objectElementalFire.SetActive(data.elementalType == ElementalType.Fire); objectElementalWater.SetActive(data.elementalType == ElementalType.Water); objectElementalEarth.SetActive(data.elementalType == ElementalType.Earth); objectElementalLight.SetActive(data.elementalType == ElementalType.Light); objectElementalDark.SetActive(data.elementalType == ElementalType.Dark); objectElementalNotDefined.SetActive(false); }
/// <summary> 몬스터 세팅부 </summary> public IEnumerator GetActor(string monsterID, System.Action <BattleHero> result) { HeroBaseData baseData = HeroManager.heroBaseDataDic[monsterID]; string monsterObjName = baseData.prefab; //풀링 안되어 있으면 함. GameObject obj = Battle.GetObjectInPool(monsterObjName); if (!obj) { yield return(AssetLoader.Instance.InstantiateGameObjectAsync(baseData.assetBundle, baseData.prefab, x => obj = x)); //obj = AssetLoader.InstantiateGameObject(baseData.assetBundle, baseData.prefab); obj.name = monsterObjName; Battle.AddObjectToPool(obj); } if (!obj) { result(null); } //return null; obj.transform.SetParent(actorPool.Instance.transform); BattleHero battleHero = obj.GetComponent <BattleHero>(); if (!battleHero) { Debug.LogWarning("Cannot get hero from pool. id: " + monsterID); } result(battleHero); //return battleHero; }
HeroData InitHeroData(JsonData serverJsonData) { string heroID = serverJsonData["heroID"].ToStringJ(); HeroBaseData baseData = null; if (HeroManager.heroBaseDataDic.ContainsKey(heroID)) { baseData = HeroManager.heroBaseDataDic[heroID]; } //이런 히어로 우리게임에 없음. if (baseData == null) { Debug.LogError(heroID + " 없음"); return(null); } HeroData heroData = new HeroData(baseData); heroData.InitServerData(serverJsonData); return(heroData); }
/// <summary> 미리 생성해 놓은 몬스터 풀에서 출전 몬스터 세팅하기 </summary> IEnumerator InitMonster() { int monsterCount = 15; List <HeroData> monsterList = new List <HeroData>(); for (int i = 0; i < monsterCount; i++) { int monsterIndex = UnityEngine.Random.Range(0, actorPool.Instance.monsterKeyList.Count); string monsterKey = actorPool.Instance.monsterKeyList[monsterIndex]; if (string.IsNullOrEmpty(monsterKey)) { continue; } HeroBaseData baseData = HeroManager.heroBaseDataDic[monsterKey]; HeroData heroData = new HeroData(baseData); monsterList.Add(heroData); } yield return(StartCoroutine(battleTeamList[1].InitCoroutine(this, BattleUnit.Team.Blue, monsterList))); }
IEnumerator ShowCoroutine() { string key = currentTapDay.ToString() + "_" + dungeonLevel; //Debug.Log(key); if (GameDataManager.dayDungeonBaseDataDic.ContainsKey(key)) { DayDungeonBaseData data = GameDataManager.dayDungeonBaseDataDic[key]; textDungeonName.text = data.name; if (string.IsNullOrEmpty(data.bossData.id) == false) { if (bossObj != null) { bossObj.SetActive(false); bossObj.transform.SetParent(CharacterEmptyPool.Instance.transform); } GameObject go = null; yield return(StartCoroutine(CharacterEmptyPool.Instance.GetHero(data.bossData.id, x => go = x))); bossObj = go; bossObj.transform.position = pivot.position; bossObj.transform.SetParent(pivot); bossObj.transform.localScale = Vector3.one; //bossObj.SetActive(true); } for (int i = 0; i < monsterSlotList.Count; i++) { monsterSlotList[i].InitSlot(); } for (int i = 0; i < data.monsterList.Count; i++) { string monsterID = data.monsterList[i].id; int amount = data.monsterList[i].amount; if (GameDataManager.heroBaseDataDic.ContainsKey(monsterID)) { HeroBaseData heroBaseData = GameDataManager.heroBaseDataDic[monsterID]; monsterSlotList[i].InitSlot(heroBaseData, amount); } } battleStartButton.interactable = currentTapDay == BattleDayDungeonManager.today && dungeonLevel <= topLevel; if (GameDataManager.moneyBaseDataDic.ContainsKey(data.rewardID)) { MoneyBaseData moneyBase = GameDataManager.moneyBaseDataDic[data.rewardID]; AssetLoader.AssignImage(imageReward, "sptire/material", "Atlas_Material", moneyBase.spriteName); textRewardName.text = moneyBase.name; textRewardAmount.text = data.rewardAmont.ToStringABC(); } } if (bossObj != null) { bossObj.SetActive(true); } dayDungeonCanvas.enabled = true; lightPanel.SetActive(true); dayDungeonPanel.SetActive(true); showCoroutine = null; }