예제 #1
0
    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)]);
    }
예제 #2
0
        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;
        }
예제 #3
0
    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();
    }