public static void Submit(Schemes.SubmitPayload payload) { var data = new Shared.Schemes.UiLobbyCreatorSubmit { FirstName = payload.FirstName, LastName = payload.LastName, Sex = Sex.Current, BlendData = BlendData.Current, Hair = Hair.Values[Hair.Current], EyeColor = EyeColor.Values[EyeColor.Current], FaceFeatures = new List <Shared.Schemes.FaceFeature>(), HeadOverlays = new List <Shared.Schemes.HeadOverlay>(), Color = Color.Values[Color.Current] }; foreach (var item in FaceFeatures.GetType().GetFields()) { var faceFeature = (Schemes.FaceFeature)item.GetValue(FaceFeatures); data.FaceFeatures.Add(new Shared.Schemes.FaceFeature { Index = faceFeature.Index, Value = faceFeature.Current }); } foreach (var item in HeadOverlays.GetType().GetFields()) { var headOverlay = (Schemes.HeadOverlay)item.GetValue(HeadOverlays); data.HeadOverlays.Add(new Shared.Schemes.HeadOverlay { Index = headOverlay.Index, Value = headOverlay.Values.ElementAt(headOverlay.Current) }); } Bus.TriggerServer(Shared.Events.LOBBY_CREATOR_SUBMIT, data); }
// TODO пройти валидацию // TODO вернуть ответ // TODO если у игрока 1 персонаж, то пропустить выбор персонажа в лобби public static void CreateCharacter(Client player, Shared.Schemes.UiLobbyCreatorSubmit payload) { using (var db = new Database()) { Account.Attachment accountAttachment = player.GetData(Account.Resources.ATTACHMENT_KEY); string fullName = $"{payload.FirstName} {payload.LastName}"; var character = db.Characters.SingleOrDefault( v => $"{v.FirstName} {v.LastName}".ToLower() == fullName.ToLower() ); if (character is Character.Entity) { // TODO notify Console.WriteLine($"{fullName} already existing"); return; } character = new Character.Entity(payload.FirstName, payload.LastName, payload.Sex, payload); character.Account = accountAttachment.Entity; accountAttachment.Entity.Characters.Add(character); db.Accounts.Update(accountAttachment.Entity); db.SaveChanges(); Bus.TriggerUi(player, Shared.Events.LOBBY_CREATOR_SHOW, false); if (Character.Service.GetCharactersCount(accountAttachment.Entity) > 1) { Lobby.Service.Start(player); } else { Lobby.Selector.Service.Play(player, character); } } }