Beispiel #1
0
 public CreateSessionViewModel(ClientViewModel frame, LoggedClient loggedClient,
                               LoginSessionClient loginSessionNetworkClient)
 {
     _frame        = frame;
     _loggedClient = loggedClient;
     _loginSessionNetworkClient = loginSessionNetworkClient;
     BackCommand           = new RelayCommand(BackAction);
     CreateSessionCommand  = new RelayCommand(CreateSessionAction);
     AvailableCountPlayers = new List <string>()
     {
         "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"
     };
     AvailableMapSizes = new List <string>()
     {
         "Small",
         "Medium",
         "High",
         "Very High"
     };
     GameSessionForm = new GameSessionForm()
     {
         MapSize    = AvailableMapSizes[1],
         MaxPlayers = AvailableCountPlayers[5],
     };
 }
Beispiel #2
0
 public ConnectPage(ClientViewModel frame, Window parentWindow, LoggedClient loggedClient,
                    LoginSessionClient loginSessionNetworkClient, Character character)
 {
     InitializeComponent();
     ViewModel   = new ConnectViewModel(frame, parentWindow, loggedClient, loginSessionNetworkClient, character);
     DataContext = ViewModel;
 }
Beispiel #3
0
        public SessionViewModel(GameSession selectedSession,
                                Character selectedCharacter,
                                Window parentWindow,
                                Window currentWindow,
                                LoggedClient loggedClient)
        {
            _gameSession              = selectedSession;
            _sessionWindow            = currentWindow;
            _parentWindow             = parentWindow;
            _loggedClient             = loggedClient;
            _gameSessionNetworkClient = new GameSessionsClient(new System.ServiceModel.InstanceContext(this));
            _player = _gameSessionNetworkClient.Connect(_gameSession.Id, selectedCharacter, _loggedClient);
            // default moving up state convention
            _playerLastState = PlayerState.MovingUp;
            _camera          = new Camera(_player, CanvasWidth, CanvasHeight);

            ChatMessages = new ObservableCollection <string>();
            ChatMessages.CollectionChanged += (sender, e) =>
                                              OnPropertyChanged(nameof(ChatMessages));

            GameObjectsView = new ObservableCollection <Ellipse>();
            ScoreTable      = new ObservableCollection <PlayerScore>();

            KeyWCommand        = new RelayCommand(KeyWAction);
            KeyACommand        = new RelayCommand(KeyAAction);
            KeySCommand        = new RelayCommand(KeySAction);
            KeyDCommand        = new RelayCommand(KeyDAction);
            KeyEnterCommand    = new RelayCommand(KeyEnterAction);
            SendMessageCommand = new RelayCommand(SendMessageAction);
        }
Beispiel #4
0
        public Player GeneratePlayer(LoggedClient loggedClient, Character character, OperationContext operationContext)
        {
            try
            {
                var freeInd = int.MaxValue;
                for (var i = 0; i < GameSessionClients.Length; i++)
                {
                    if (GameSessionClients[i] != null)
                    {
                        continue;
                    }
                    freeInd = i;
                    break;
                }

                lock (SyncRootToPlayers)
                {
                    var player = new Player(freeInd, _random.Next(_maxGlobalX), _random.Next(_maxGlobalY),
                                            6, 4.5, character);
                    Players[freeInd]            = player;
                    GameSessionClients[freeInd] = new GameSessionClient()
                    {
                        Player           = player,
                        OperationContext = operationContext,
                        LoggedClient     = loggedClient
                    };
                    GameSessionManager.GameSessions[_currentSession.Id].NumberPlayers++;
                    return(player);
                }
            }
            catch
            {
                return(null);
            }
        }
Beispiel #5
0
 private void HandleSession(IClient info)
 {
     if (this.InvokeRequired)
     {
         Utils.ControlInvoke(this, () => HandleSession(info));
         return;
     }
     if (info.IsLogged)
     {
         IClient client = new LoggedClient(info.Nickname, info.RealName, info.Address, info.Port);
         UsersViewModel.Instance.LoggedUsers.Add(client);
         UserList.Items.Add(new ListViewItem(client.Nickname));
     }
     else
     {
         foreach (ListViewItem item in UserList.Items)
         {
             if (item.Text.StartsWith(info.RealName))
             {
                 UserList.Items.Remove(item);
                 break;
             }
         }
     }
 }
Beispiel #6
0
 public MenuViewModel(ClientViewModel frame, LoggedClient loggedClient)
 {
     _frame                        = frame;
     PlayerInfo                    = new PlayerInfo(loggedClient);
     CreateSessionCommand          = new RelayCommand(CreateSessionAction, obj => loggedClient.IsAdmin);
     ConnectCommand                = new RelayCommand(ConnectAction);
     CreateCharacterCommand        = new RelayCommand(CreateCharacterAction);
     CreateSessionButtonVisibility = loggedClient.IsAdmin ? Visibility.Visible : Visibility.Collapsed;
     ExitCommand                   = new RelayCommand(ExitAction);
 }
Beispiel #7
0
 public ClientViewModel(Window window, LoggedClient loggedClient, LoginSessionClient loginSessionNetworkClient)
 {
     _loginSessionNetworkClient = loginSessionNetworkClient;
     _window              = window;
     _loggedClient        = loggedClient;
     _selectCharacterPage = new SelectCharacterPage(this, loggedClient, _loginSessionNetworkClient);
     _createCharacterPage = new CreateCharacterPage(this, loggedClient, _loginSessionNetworkClient);
     _createSessionPage   = new CreateSessionPage(this, loggedClient, _loginSessionNetworkClient);
     _menuPage            = new MenuPage(this, loggedClient);
 }
        public GameClientWindow(LoggedClient loggedClient, LoginSessionClient loginSessionNetworkClient)
        {
            InitializeComponent();

            var viewModel = new ClientViewModel(this, loggedClient, loginSessionNetworkClient);

            DataContext = viewModel;
            viewModel.ShowMenuPage();
            Closing += viewModel.OnWindowClosing;
        }
Beispiel #9
0
        /*
         * Returns false if password doesn't match or an error occurs
         */
        public override bool Logout(string nickname, string password)
        {
            if (!DBController.PasswordMatch(conn, nickname, password))
            {
                return(false);
            }

            IClient client = new LoggedClient(nickname, DBController.GetUserRealName(conn, nickname), null, 0);

            MyHandler?.Invoke(client);
            bool sessionEnded = DBController.EndSession(conn, nickname);

            return(sessionEnded);
        }
Beispiel #10
0
 public Player Connect(int gameSessionId, Character character, LoggedClient loggedClient)
 {
     try
     {
         // if client isn't in client table we throw the exception
         if (ClientTable.Instance.SearchClient(loggedClient.SessionToken) == null)
         {
             throw new Exception();
         }
         return(GameSessionManager.GameMaps[gameSessionId]
                .GeneratePlayer(loggedClient, character, OperationContext.Current));
     }
     catch
     {
         return(null);
     }
 }
Beispiel #11
0
        public SessionWindow(GameSession selectedSession, Character selectedCharacter, Window parentWindow, LoggedClient loggedClient)
        {
            InitializeComponent();
            var viewModel = new SessionViewModel(selectedSession, selectedCharacter, parentWindow, this, loggedClient);

            DataContext = viewModel;
            Closing    += viewModel.OnWindowClosing;
        }
Beispiel #12
0
 public CreateSessionPage(ClientViewModel frame, LoggedClient loggedClient, LoginSessionClient loginSessionNetworkClient)
 {
     InitializeComponent();
     DataContext = new CreateSessionViewModel(frame, loggedClient, loginSessionNetworkClient);
 }
 public SelectCharacterPage(ClientViewModel frame, LoggedClient loggedClient, LoginSessionClient loginSessionNetworkClient)
 {
     InitializeComponent();
     ViewModel   = new SelectCharacterViewModel(frame, loggedClient, loginSessionNetworkClient);
     DataContext = ViewModel;
 }
Beispiel #14
0
 public MenuPage(ClientViewModel frame, LoggedClient loggedClient)
 {
     InitializeComponent();
     DataContext = new MenuViewModel(frame, loggedClient);
 }
Beispiel #15
0
 public PlayerInfo(LoggedClient loggedClient)
 {
     Nickname = loggedClient.Nickname;
 }