public string Execute(List <string> message, Lobby lobby) { var type = message[1]; var id = Int32.Parse(message[2]); var userGarage = _api.Garage.GetGarageFromId(lobby.User.UserId); if (type == "h") { var hull = HullHelper.GetHelper().GetHullFromId(id); if (hull is null) { return("error;Указан неверный Id корпуса;"); } if (!(userGarage.Hulls.Any(h => h.Id == hull.Id && h.Level == hull.Level))) { return("error;У вас нет в гараже этого корпуса;"); } userGarage.CurrentHull = hull; } else if (type == "t") { var turret = TurretHelper.GetHelper().GetTurretFromId(id); if (turret is null) { return("error;Указан неверный Id башни;"); } if (!(userGarage.Turrets.Any(t => t.Id == turret.Id && t.Level == turret.Level))) { return("error;У вас нет в гараже этой башни;"); } userGarage.CurrentTurret = turret; } else if (type == "c") { IColormap color; try { color = ColormapHelper.GetHelper().Colormaps[id]; }catch (Exception e) { return("error;Указан неизвесный Id краски;"); } if (!(userGarage.Colormaps.Any(c => c.Id == color.Id))) { return("error;У вас нет краски в гараже."); } userGarage.CurrentColormap = ColormapHelper.GetHelper().Colormaps[id]; } _api.Garage.SetGarage(userGarage); return($"sett;{lobby.User.Nickname};{lobby.Garage.Crystalls};{HullHelper.GetHelper().GetCurrentHull(userGarage.CurrentHull)};{TurretHelper.GetHelper().GetCurrentTurret(userGarage.CurrentTurret)};{userGarage.CurrentColormap.Id};"); //throw new NotImplementedException(); }
public void Start() { Console.WriteLine("Old Tanks Server 2019 by Fooxboy"); Logger.Info("Запуск сервера..."); HullHelper.GetHelper().InitHulls(); TurretHelper.GetHelper().InitTurrets(); ColormapHelper.GetHelper().InitColormaps(); NumericHelper.GetHelper().InitNumerics(); var listener = new SocketConnectListener(_ip, _port, Logger); listener.NewConnectEvent += NewConnect; }
public string Execute(List <string> message, Lobby lobby) { var type = message[1]; var itemId = Int32.Parse(message[2]); var count = type == "n"? Int32.Parse(message[3]): 0; var userRank = RankHelper.GetHelper().GetRankFromScore(lobby.Garage.Score); var garage = lobby.Garage; if (type == "h") { var hull = HullHelper.GetHelper().GetHullFromId(itemId); if (hull.Prices[Convert.ToInt32(hull.Level.Value)] > lobby.Garage.Crystalls) { return("error;У вас недостаточно кристалов;"); } if (hull.Ranks[Convert.ToInt32(hull.Level.Value)] > userRank) { return("error;У вас слишком маленькое звание."); } if (garage.Hulls.Any(h => h.Id == hull.Id && h.Level == hull.Level)) { return("error;У вас уже куплен этот корпус"); } if (garage.Hulls.Any(h => h.Id == hull.Id)) { var hullBuy = garage.Hulls.Single(h => h.Id == hull.Id); garage.Hulls.Remove(hullBuy); } garage.Hulls.Add(hull); garage.Crystalls -= hull.Prices[(Convert.ToInt32(hull.Level.Value))]; } else if (type == "t") { var turret = TurretHelper.GetHelper().GetTurretFromId(itemId); if (turret.Prices[Convert.ToInt32(turret.Level.Value)] > garage.Crystalls) { return("error;У вас недостаточно кристалов;"); } if (turret.Ranks[Convert.ToInt32(turret.Level.Value)] > userRank) { return("error;У вас слишком маленькое звание."); } if (garage.Turrets.Any(t => t.Id == turret.Id && t.Level == turret.Level)) { return("error;У вас уже куплена эта башня"); } if (garage.Turrets.Any(t => t.Id == turret.Id)) { var turretBuy = garage.Turrets.Single(t => t.Id == turret.Id); garage.Turrets.Remove(turretBuy); } garage.Turrets.Add(turret); garage.Crystalls -= turret.Prices[(Convert.ToInt32(turret.Level.Value))]; } else if (type == "c") { var colormap = ColormapHelper.GetHelper().Colormaps[itemId]; if (colormap.Price > garage.Crystalls) { return("error;У вас недостаточно кристалов;"); } if (colormap.Rank > userRank) { return("error;У вас слишком маленькое звание."); } if (garage.Colormaps.Any(c => c.Id == colormap.Id)) { return("error;У вас уже куплен эта краска"); } garage.Colormaps.Add(colormap); garage.Crystalls -= colormap.Price; } else if (type == "n") { if (itemId > NumericHelper.GetHelper().Numerics.Count - 1) { return("error;id слишком большое;"); } var numeric = NumericHelper.GetHelper().Numerics[itemId]; var price = numeric.Price * count; if (garage.Crystalls < price) { return("error;У Вас недостатточно кристаллов.;"); } if (userRank < numeric.Rank) { return("error;У вас слишком маленькое звание;"); } for (var i = 0; i > count; i++) { garage.Numerics.Add(numeric); } } _api.Garage.SetGarage(garage); var garStr = GarageHelper.GetHelper().GetGarageString(lobby.Garage); lobby.Send(garStr); return($"sett;{lobby.User.Nickname};{garage.Crystalls};{garage.Score};{HullHelper.GetHelper().GetCurrentHull(garage.CurrentHull)};{TurretHelper.GetHelper().GetCurrentTurret(garage.CurrentTurret)};{garage.CurrentColormap.Id};"); }