internal void Save(Level Player, DBMS DBMS = Constants.Database) { while (true) { switch (DBMS) { case DBMS.MySQL: { if (Constants.IsMono) { Mysql_Backup.Save(Player); } else { using (MysqlEntities Database = new MysqlEntities()) { var Data = Database.Player.Find(Player.Avatar.UserId); if (Data != null) { Data.Data = JsonConvert.SerializeObject(Player.Avatar, this.Settings) + "#:#:#:#" + Player.SaveToJSON(); Database.SaveChanges(); } } } break; } case DBMS.Redis: { Redis.Players.StringSet(Player.Avatar.UserId.ToString(), JsonConvert.SerializeObject(Player.Avatar, this.Settings) + "#:#:#:#" + Player.SaveToJSON(), TimeSpan.FromHours(4)); break; } case DBMS.Both: { this.Save(Player, DBMS.MySQL); DBMS = DBMS.Redis; continue; } } break; } }
internal Clans() { this.Seed = Mysql_Backup.GetClanSeed() + 1; }
internal Players() { this.Seed = Mysql_Backup.GetPlayerSeed() + 1; }
internal Level Get(long UserId, DBMS DBMS = Constants.Database, bool Store = true) { if (!this.ContainsKey(UserId)) { Level Player = null; switch (DBMS) { case DBMS.MySQL: if (Constants.IsMono) { Player = Mysql_Backup.Get(UserId); } else { using (MysqlEntities Database = new MysqlEntities()) { Player Data = Database.Player.Find(UserId); if (!string.IsNullOrEmpty(Data?.Data)) { string[] _Datas = Data.Data.Split(new string[1] { "#:#:#:#" }, StringSplitOptions.None); if (!string.IsNullOrEmpty(_Datas[0]) && !string.IsNullOrEmpty(_Datas[1])) { Player = new Level { Avatar = JsonConvert.DeserializeObject <Avatar>(_Datas[0], this.Settings) }; Player.LoadFromJSON(_Datas[1]); if (Store) { this.Add(Player); } } } } } break; case DBMS.Redis: string Property = Redis.Players.StringGet(UserId.ToString()).ToString(); if (!string.IsNullOrEmpty(Property)) { string[] _Datas = Property.Split(new string[1] { "#:#:#:#" }, StringSplitOptions.None); if (!string.IsNullOrEmpty(_Datas[0]) && !string.IsNullOrEmpty(_Datas[1])) { Player = new Level { Avatar = JsonConvert.DeserializeObject <Avatar>(_Datas[0], this.Settings) }; Player.LoadFromJSON(_Datas[1]); if (Store) { this.Add(Player); } } } break; case DBMS.Both: Player = this.Get(UserId, DBMS.Redis, Store); if (Player == null) { Player = this.Get(UserId, DBMS.MySQL, Store); if (Player != null) { this.Save(Player, DBMS.Redis); } } break; } if (Store) { this.Add(Player); } return(Player); } return(this[UserId]); }
internal Level New(long UserId = 0, DBMS DBMS = Constants.Database, bool Store = true) { Level Player = null; if (UserId == 0) { lock (this.Gate) { Console.WriteLine(Seed); Player = new Level(this.Seed++); } } else { Player = new Level(UserId); } if (string.IsNullOrEmpty(Player.Avatar.Token)) { for (int i = 0; i < 20; i++) { char Letter = (char)Resources.Random.Next('A', 'Z'); Player.Avatar.Token += Letter; } } if (string.IsNullOrEmpty(Player.Avatar.Password)) { for (int i = 0; i < 6; i++) { char Letter = (char)Resources.Random.Next('A', 'Z'); char Number = (char)Resources.Random.Next('1', '9'); Player.Avatar.Password += Letter; Player.Avatar.Password += Number; } } Player.LoadFromJSON(Files.Home.Starting_Home); while (true) { switch (DBMS) { case DBMS.MySQL: { if (Constants.IsMono) { Mysql_Backup.New(Player); } else { using (MysqlEntities Database = new MysqlEntities()) { Database.Player.Add(new Player { ID = Player.Avatar.UserId, Data = JsonConvert.SerializeObject(Player.Avatar, this.Settings) + "#:#:#:#" + Player.SaveToJSON(), }); Database.SaveChanges(); } } if (Store) { this.Add(Player); } break; } case DBMS.Redis: { this.Save(Player, DBMS); if (Store) { this.Add(Player); } break; } case DBMS.Both: { this.Save(Player, DBMS); DBMS = DBMS.MySQL; if (Store) { this.Add(Player); } continue; } } break; } return(Player); }