Exemple #1
0
        public async Task <ActionResult <RoleGame> > PostRoleGame(RoleGame roleGame)
        {
            _context.RoleGames.Add(roleGame);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetRoleGame", new { id = roleGame.Id }, roleGame));
        }
Exemple #2
0
        public async Task <IActionResult> PutRoleGame(int id, RoleGameDTO roleGamedto)
        {
            RoleGame roleGame = roleGamedto.Update(_context.RoleGames.Find(id), _context);

            if (id != roleGame?.Id)
            {
                return(BadRequest());
            }

            var oldPlayings = _context.Playings.Where(x => x.RoleGameId == id).ToList();

            _context.RemoveRange(oldPlayings);
            _context.Entry(roleGame).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RoleGameExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            roleGamedto.Id = roleGame.Id;
            return(Ok(roleGamedto));
        }
Exemple #3
0
        public async Task <IActionResult> PutRoleGame(int id, RoleGame roleGame)
        {
            if (id != roleGame.Id)
            {
                return(BadRequest());
            }

            _context.Entry(roleGame).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RoleGameExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #4
0
        public RoleGame Update(RoleGame rg, RoleContext context)
        {
            RoleGame newrg = this.Convert(context);

            rg.Players       = newrg.Players;
            rg.DungeonMaster = newrg.DungeonMaster;
            rg.Game          = newrg.Game;
            rg.Name          = newrg.Name;
            rg.Dificultty    = newrg.Dificultty;
            return(rg);
        }
Exemple #5
0
        public async Task <ActionResult <RoleGameDTO> > PostRoleGame(RoleGameDTO roleGamedto)
        {
            RoleGame roleGame = roleGamedto.Convert(_context);

            _context.RoleGames.Add(roleGame);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception)
            {
                return(BadRequest());
            }
            roleGamedto.Id = roleGame.Id;
            return(Ok(roleGamedto));
        }
Exemple #6
0
        public RoleGameDTO(RoleGame game, RoleContext context)
        {
            Id            = game.Id;
            Name          = game.Name;
            Dificultty    = game.Dificultty;
            Game          = game.Game;
            DungeonMaster = context.Players
                            .Find(game.DungeonMasterId).Name;
            var own = context.RoleGames
                      .Where(x => x.Id == game.Id);

            if (own.Count() > 0)
            {
                Players = own
                          .Include(x => x.Players)
                          .ThenInclude(xn => xn.Player).FirstOrDefault()
                          .Players.Select(x => x.Player.Name).ToList();
            }
        }
Exemple #7
0
        public RoleGame Convert(RoleContext context)
        {
            RoleGame rg = new RoleGame();

            rg.Id            = this.Id;
            rg.Name          = this.Name;
            rg.Dificultty    = this.Dificultty;
            rg.Game          = this.Game;
            rg.DungeonMaster = context.Players
                               .Where(x => x.Name.ToUpper() == this.DungeonMaster.ToUpper()).First();
            rg.Players = this.Players
                         .SelectMany(x =>
                                     context.Players.Where(y => y.Name.ToUpper() == x.ToUpper()))
                         .Select(x => new Playing()
            {
                Player = x, RoleGame = rg
            })
                         .ToList();

            return(rg);
        }
Exemple #8
0
        private void InitGame()
        {
            if (NetworkClient != null)
            {
                var pkt = NetworkClient.Receive();
                Trace.Assert(pkt is ConnectionResponse);
                if ((pkt as ConnectionResponse).Settings.GameType == GameType.Pk1v1)
                {
                    _game = new Pk1v1Game();
                }
                if ((pkt as ConnectionResponse).Settings.GameType == GameType.RoleGame)
                {
                    _game = new RoleGame();
                }

                if (pkt is ConnectionResponse)
                {
                    _game.Settings       = ((ConnectionResponse)pkt).Settings;
                    NetworkClient.SelfId = ((ConnectionResponse)pkt).SelfId;
                }
                else
                {
                    return;
                }
            }
            if (hasSeed != null)
            {
                _game.RandomGenerator = new Random((int)hasSeed);
                _game.IsPanorama      = true;
            }
            Game.CurrentGameOverride = _game;
            if (_networkClient == null)
            {
                _game.Settings                   = new GameSettings();
                _game.Settings.Accounts          = new List <Account>();
                _game.Settings.NumberOfDefectors = 1;
                _game.Settings.NumHeroPicks      = 3;
                _game.Settings.DualHeroMode      = false;
                _game.Settings.TotalPlayers      = 8;
                _game.Settings.TimeOutSeconds    = 15;
                for (int i = 0; i < 8; i++)
                {
                    _game.Settings.Accounts.Add(new Account()
                    {
                        UserName = "******" + i
                    });
                }
            }

            ClientNetworkProxy activeClientProxy = null;

            if (NetworkClient != null)
            {
                for (int i = 0; i < _game.Settings.TotalPlayers; i++)
                {
                    Player player = new Player();
                    player.Id = i;
                    _game.Players.Add(player);
                }
            }
            else
            {
                for (int i = 0; i < 8; i++)
                {
                    Player player = new Player();
                    player.Id = i;
                    _game.Players.Add(player);
                }
            }

            if (NetworkClient != null)
            {
                _game.GameClient = NetworkClient;
            }
            else
            {
                _game.GlobalProxy = new GlobalDummyProxy();
            }
            GameViewModel gameModel = new GameViewModel();

            gameModel.Game = _game;
            if (NetworkClient != null)
            {
                gameModel.MainPlayerSeatNumber = NetworkClient.SelfId >= _game.Players.Count ? 0 : NetworkClient.SelfId;
            }
            else
            {
                gameModel.MainPlayerSeatNumber = 0;
            }

            _game.NotificationProxy = gameView;
            List <ClientNetworkProxy> inactive = new List <ClientNetworkProxy>();

            for (int i = 0; i < _game.Players.Count; i++)
            {
                var player = gameModel.PlayerModels[i].Player;
                if (NetworkClient != null)
                {
                    var proxy = new ClientNetworkProxy(
                        new AsyncProxyAdapter(gameModel.PlayerModels[i]), NetworkClient);
                    proxy.HostPlayer     = player;
                    proxy.TimeOutSeconds = _game.Settings.TimeOutSeconds;
                    if (i == 0)
                    {
                        activeClientProxy = proxy;
                    }
                    else
                    {
                        inactive.Add(proxy);
                    }
                    _game.UiProxies.Add(player, proxy);
                }
                else
                {
                    var proxy = new AsyncProxyAdapter(gameModel.PlayerModels[i]);
                    _game.UiProxies.Add(player, proxy);
                }
            }
            if (NetworkClient != null)
            {
                _game.ActiveClientProxy = activeClientProxy;
                _game.GlobalProxy       = new GlobalClientProxy(_game, activeClientProxy, inactive);
                _game.UpdateUiAttachStatus();
            }
            Application.Current.Dispatcher.Invoke((ThreadStart) delegate()
            {
                gameView.DataContext = gameModel;
                if (BackwardNavigationService != null && !ViewModelBase.IsDetached)
                {
                    BackwardNavigationService.Navigate(this);
                    BackwardNavigationService = null;
                }
            });
            _game.Run();
        }