Beispiel #1
0
        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);
        }
Beispiel #2
0
        // 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);
                }
            }
        }