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); }
// プレイ後のデータ更新 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(); }
AnimalJson FindAnimalJsonByKind(AnimalKind kind) { AnimalJson returnJson = new AnimalJson(); foreach (AnimalJson item in normalAnimals) { if (kind.ToString() == item.Kind) { returnJson = item; } } return(returnJson); }
// アニマル解放 // 戻り値 true 解放した public bool RegistAnimal(AnimalKind kind) { if (CanUseAnimal(kind)) { return(false); } var key = kind.ToString(); this.ReleasedAnimals.Add(key); PlayerDataManager.DoUpdate(); return(true); }
// 解放済アニマルカーか? public bool CanUseAnimal(AnimalKind kind) { var key = kind.ToString(); return(this.ReleasedAnimals.Contains(key)); }
// 選択中のアニマルカーを変更 public void ChangeSelectedAnimalCar(AnimalKind kind) { this.LastSelectedAnimalId = kind.ToString(); PlayerDataManager.DoUpdate(); }