using LinePutScript; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VPet_Simulator.Core { /// /// 游戏存档 /// public class Save { /// /// 金钱 /// public double Money; /// /// 经验值 /// public int Exp; /// /// 等级 /// public int Level => (int)(Math.Sqrt(Exp) / 5) + 1; /// /// 升级所需经验值 /// /// public int LevelUpNeed() => (int)(Math.Pow((Level - 1) * 5, 2)); /// /// 体力 0-100 /// public double Strength { get => strength; set => strength = Math.Min(100, Math.Max(0, value)); } private double strength; /// /// 饱腹度 /// public double StrengthFood { get => strengthFood; set => strengthFood = Math.Min(100, Math.Max(0, value)); } private double strengthFood; /// /// 口渴度 /// public double StrengthDrink { get => strengthDrink; set => strengthDrink = Math.Min(100, Math.Max(0, value)); } private double strengthDrink; /// /// 心情 /// public double Feeling { get => feeling; set => feeling = Math.Min(100, Math.Max(0, value)); } private double feeling; /// /// 健康(生病)(隐藏) /// public double Health { get => health; set => health = Math.Min(100, Math.Max(0, value)); } private double health; /// /// 好感度(隐藏)(累加值) /// public double Likability { get => likability; set => likability = Math.Min(90 + Level * 10, Math.Max(0, value)); } private double likability; /// /// 宠物状态模式 /// public enum ModeType { /// /// 高兴 /// Happy, /// /// 普通 /// Nomal, /// /// 状态不佳 /// PoorCondition, /// /// 生病(躺床) /// Ill } public ModeType Mode = ModeType.Nomal; /// /// 计算宠物当前状态 /// public void CalMode() { int realhel = 60 - (Feeling >= 80 ? 20 : 0) - (Likability >= 80 ? 20 : (Likability >= 40 ? 10 : 0)); //先从最次的开始 if (Health <= realhel) { //可以确认从状态不佳和生病二选一 if (Health <= realhel / 2) {//生病 Mode = ModeType.Ill; } else { Mode = ModeType.PoorCondition; } } //然后判断是高兴还是普通 else if (Feeling >= 80 - (Likability >= 80 ? 20 : (Likability >= 40 ? 10 : 0))) { Mode = ModeType.Happy; } else { Mode = ModeType.Nomal; } } /// /// 新游戏 /// public Save() { Money = 100; Exp = 0; Strength = 100; StrengthFood = 100; StrengthDrink = 100; Feeling = 60; Health = 100; Likability = 0; CalMode(); } /// /// 读档 /// public Save(Line line) { Money = line.GetFloat("money"); Exp = line.GetInt("exp"); Strength = line.GetFloat("strength"); StrengthDrink = line.GetFloat("strengthdrink"); StrengthFood = line.GetFloat("strengthfood"); Feeling = line.GetFloat("feeling"); Health = line.GetFloat("health"); Likability = line.GetFloat("likability"); CalMode(); } /// /// 存档 /// /// 存档行 public Line ToLine() { Line save = new Line("vpet", ""); save.SetFloat("money", Money); save.SetInt("exp", Exp); save.SetFloat("strength", Strength); save.SetFloat("strengthdrink", StrengthDrink); save.SetFloat("strengthfood", StrengthFood); save.SetFloat("feeling", Feeling); save.SetFloat("health", Health); save.SetFloat("Likability", Likability); return save; } } }