Esempio n. 1
0
    public Animal BuildAnimal(AnimalKind kind, int change, int lastNum, Animal mother = null)
    {
        Animal returnAnimal = new Animal();

        if (mother == null)
        {
            //以标准为基准随机生成
            foreach (AnimalJson animal in normalAnimals)
            {
                if (kind.ToString() == animal.Kind)
                {
                    returnAnimal.编码   = (010100 + lastNum + 1).ToString("000000");
                    returnAnimal.种类   = kind;
                    returnAnimal.当前状态 = CurrentState.发育中;
                    returnAnimal.年龄   = 1;

                    float randomHeight = Random.Range(-5.00f, +5.00f);
                    returnAnimal.身高 = animal.Height + randomHeight;

                    float chaZhi = 0;

                    float randomXiong = Random.Range(-5.00f, +5.00f);
                    returnAnimal.胸围 = returnAnimal.身高 * 0.51f + randomXiong;
                    chaZhi         += randomXiong;

                    float randomYao = Random.Range(-5.00f, +5.00f);
                    returnAnimal.腰围 = returnAnimal.身高 * 0.34f + randomYao;
                    chaZhi         += randomYao;

                    float randomTun = Random.Range(-5.00f, +5.00f);
                    returnAnimal.臀围 = returnAnimal.身高 * 0.54f + randomTun;
                    chaZhi         += randomTun;

                    float randomWeight = Random.Range(-5.00f, +5.00f);
                    randomWeight   += chaZhi;
                    returnAnimal.体重 = (returnAnimal.身高 - 70) * 0.6f + randomWeight;

                    returnAnimal.寿命 = animal.Age + (int)chaZhi;

                    int fayuChaZhi = (int)((5 - randomXiong) / 2);
                    returnAnimal.发育期 = animal.FaYu + fayuChaZhi;

                    int renshenChaZhi = (int)((5 - randomTun) / 2);
                    returnAnimal.妊娠期 = animal.RenShen + renshenChaZhi;

                    int feedChaZhi = (int)((5 - randomYao) / 2);
                    returnAnimal.妊娠期 = Mathf.Max(1, animal.RenShen - renshenChaZhi);

                    returnAnimal.魅力值 = Mathf.Max(30, (100 - Mathf.Abs(chaZhi) * 10));

                    returnAnimal.食物种类   = (FeedFood)(System.Enum.Parse(typeof(FeedFood), animal.Food));
                    returnAnimal.消耗食物速度 = Mathf.Max(1, (animal.Feed + (int)randomWeight / 3));
                }
            }
        }

        return(returnAnimal);
    }
Esempio n. 2
0
        // プレイ後のデータ更新
        public void SetResult(string area, float latitude, float longitude, AnimalKind animal, int star, float distance, int score)
        {
            Debug.Log($"Result: Map: {area}  Animal: {animal.ToString()} Star: {star} Dist: {distance} Score: {score}");

            // サイズが10を超えている時は先頭要素を削除
            if (this.ResultHistory.Count > 10)
            {
                this.ResultHistory.RemoveAt(0);
            }

            var result = new Result()
            {
                AreaName  = area,
                Latitude  = latitude,
                Longitude = longitude,
                Animal    = animal.ToString(),
                Star      = star,
                Score     = score,
                Distance  = distance
            };

            // 最後尾に追加
            this.ResultHistory.Add(result);
            // 最後のプレイ状況
            //this.LastSelectedAnimalId = animal.ToString();
            this.LastPlayMapId = area;
            // 所持スター
            this.StarNum += star;
            // 総プレイ回数
            this.TotalPlayCount += 1;
            // 総走行距離
            this.TotalDistance += distance;
            // エリア履歴
            RegistPlayArea(area);

            // ハイスコアを記録したエリア
            // FIXME 同じスコアだった場合の扱い
            if (score > this.HighScoreData.Score)
            {
                this.HighScoreData.Score = score;
                this.HighScoreData.MapId = area;
            }

            PlayerDataManager.DoUpdate();
        }
Esempio n. 3
0
    AnimalJson FindAnimalJsonByKind(AnimalKind kind)
    {
        AnimalJson returnJson = new AnimalJson();

        foreach (AnimalJson item in normalAnimals)
        {
            if (kind.ToString() == item.Kind)
            {
                returnJson = item;
            }
        }
        return(returnJson);
    }
Esempio n. 4
0
        // アニマル解放
        // 戻り値 true 解放した
        public bool RegistAnimal(AnimalKind kind)
        {
            if (CanUseAnimal(kind))
            {
                return(false);
            }

            var key = kind.ToString();

            this.ReleasedAnimals.Add(key);
            PlayerDataManager.DoUpdate();
            return(true);
        }
Esempio n. 5
0
        // 解放済アニマルカーか?
        public bool CanUseAnimal(AnimalKind kind)
        {
            var key = kind.ToString();

            return(this.ReleasedAnimals.Contains(key));
        }
Esempio n. 6
0
 // 選択中のアニマルカーを変更
 public void ChangeSelectedAnimalCar(AnimalKind kind)
 {
     this.LastSelectedAnimalId = kind.ToString();
     PlayerDataManager.DoUpdate();
 }