private GameObject GetHero(HeroRank rank) { int start = -1; int end = -1; switch (rank) { case HeroRank.VILLIGER: start = (int)HeroKind.VILLIGER_WARRIOR; end = (int)HeroKind.VILLIGER_ARCHER; break; case HeroRank.ADVENTURER: start = (int)HeroKind.ADVENTURER_WARRIOR; end = (int)HeroKind.ADVENTURER_ARCHER; break; } return(_HeroPrefabs[Random.Range(start, end + 1)]); }
public void Update(HeroRank listing, int RankIndex) { HRank = listing; RankLabel.Text = RankIndex.ToString(); LevelLabel.Text = HRank.Level.ToString(); ClassLabel.Text = HRank.HeroesClass.ToString(); NameLabel.Text = listing.Name; Index = listing.Owner; if (RankLabel.Text == "1") { RankLabel.ForeColour = Color.Gold; NameLabel.ForeColour = Color.Gold; LevelLabel.ForeColour = Color.Gold; ClassLabel.ForeColour = Color.Gold; } if (RankLabel.Text == "2") { RankLabel.ForeColour = Color.Silver; NameLabel.ForeColour = Color.Silver; LevelLabel.ForeColour = Color.Silver; ClassLabel.ForeColour = Color.Silver; } if (RankLabel.Text == "3") { RankLabel.ForeColour = Color.RosyBrown; NameLabel.ForeColour = Color.RosyBrown; LevelLabel.ForeColour = Color.RosyBrown; ClassLabel.ForeColour = Color.RosyBrown; } else if (NameLabel.Text == GameScene.User.Name) { RankLabel.ForeColour = Color.Green; NameLabel.ForeColour = Color.Green; LevelLabel.ForeColour = Color.Green; ClassLabel.ForeColour = Color.Green; } else if (Convert.ToInt32(RankLabel.Text) > 3) { RankLabel.ForeColour = Color.White; NameLabel.ForeColour = Color.White; LevelLabel.ForeColour = Color.White; ClassLabel.ForeColour = Color.White; } Visible = true; }
public void Pop() { HeroSpawnDescription description = _heroSpawnDescriptions[DungeonMaster.Stage]; List <GameObject> spawnList = new List <GameObject>(); int margin = description.Population; while (margin > 0) // 0. 인구수 맞춰질때까지 반복 // 0-1. 내 랭크 내에서 무작위로 뽑을 랭크 선정 { HeroRank rank = description.Ranks[Random.Range(0, description.Ranks.Length)]; // 0-2. 그 랭크에 맞는 영웅 리스트에 추가 GameObject hero = GetHero(rank); spawnList.Add(hero); // 0-3. 남은 인구수 파악 : 인구수 1 → 빌리지, 2 → 모험가 margin -= (int)rank + 1; } // 1. 초과된 인구수 구하기 margin *= -1; // 2. 앞에서부터 영웅 가져와서 인구수 비교, 영웅 인구수가 더 적을 경우 리스트에서 제외하고 초과된 인구수 다시 연산 while (margin > 0) { for (int i = 0; i < spawnList.Count; ++i) { int population = (int)spawnList[i].GetComponentInChildren <Hero>()._Rank + 1; if (population <= margin) { spawnList.RemoveAt(i); margin -= population; break; } } } // 3. 스폰 Spawn(spawnList); PartyMatching(); SetLeader(); SetPartyName(); }