Beispiel #1
0
        public bool UserInGame(int gameID)
        {
            string     userID = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
            JoinedGame jg     = _context.JoinedGame.Where(x => x.GameID == gameID && x.UserID == userID).FirstOrDefault();

            return(jg != null);
        }
Beispiel #2
0
        private void OnUpdate(float obj)
        {
            Service();

            if (!(_createdRoom || _joinedRoom))
            {
                return;
            }

            Debug.Log(CurrentRoom);

            if (!_gameActive && CurrentRoom != null && CurrentRoom.PlayerCount == 2)
            {
                _gameActive = true;
                if (_createdRoom)
                {
                    CreatedGame.Dispatch();
                }
                if (_joinedRoom)
                {
                    JoinedGame.Dispatch();
                }
            }
            if (_gameActive && (CurrentRoom == null || CurrentRoom.PlayerCount < 2))
            {
                Disconnected.Dispatch();
            }
        }
Beispiel #3
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,GameID,UserID")] JoinedGame joinedGame)
        {
            if (id != joinedGame.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(joinedGame);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!JoinedGameExists(joinedGame.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(joinedGame));
        }
Beispiel #4
0
        public async Task <IActionResult> Create([Bind("ID,GameID,UserID")] JoinedGame joinedGame)
        {
            if (ModelState.IsValid)
            {
                _context.Add(joinedGame);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(joinedGame));
        }
Beispiel #5
0
            public async Task EnactCommand(MarcoPoloPlayerWhoIsNotIt player, JoinGame command)
            {
                var joinedGame = new JoinedGame
                {
                    IdOfPlayerWhoIsIt = command.IdOfPlayerWhoIsIt
                };

                player.RecordEvent(joinedGame);

                await gameScheduler.Schedule(command.IdOfPlayerWhoIsIt, new MarcoPoloPlayerWhoIsIt.AddPlayer
                {
                    PlayerId = player.Id
                }, deliveryDependsOn : joinedGame);
            }
Beispiel #6
0
        public ActionResult LeaveGame(int gameID)
        {
            string     userID     = GetCurrentUserID();
            JoinedGame jg         = _context.JoinedGame.Where(x => x.GameID == gameID && x.UserID == userID).FirstOrDefault();
            Game       gameEntity = _context.Game.Find(gameID);

            if (jg != null)
            {
                _context.Remove(jg);
                gameEntity.CurrentPlayers--;
                _context.SaveChanges();
            }
            return(RedirectToAction("Index"));
        }
Beispiel #7
0
 public ActionResult JoinGame(int gameID, string view)
 {
     if (!UserInGame(gameID))
     {
         string     userID = GetCurrentUserID();
         JoinedGame tmp    = new JoinedGame();
         tmp.GameID   = gameID;
         tmp.UserID   = userID;
         tmp.Username = _context.Users.Find(userID).UserName;
         _context.JoinedGame.Add(tmp);
         Game gameEntity = _context.Game.Find(gameID);
         gameEntity.CurrentPlayers++;
         _context.SaveChanges();
     }
     return(RedirectToAction("Index"));
 }
Beispiel #8
0
        private static void HandleToClient(string source, MessageReader packet)
        {
            var messageType = (MessageType)packet.Tag;

            Console.ForegroundColor = ConsoleColor.Cyan;
            //Console.WriteLine($"{source,-15} Client received: {packet.Tag,-2} {messageType}");

            try
            {
                var reader = packet.GetHazelReader();
                var body   = reader.PeekToEnd();
                if (SaveMessages)
                {
                    File.WriteAllBytes(Path.Combine(MessageFolder, $"recv_{packet.Tag}_{allId++}.bin"), body);
                }

                switch (messageType)
                {
                case MessageType.ReselectServer:
                    var reselect = ReselectServer.Deserialize(reader);
                    DumpToConsole(reselect);
                    break;

                case MessageType.Redirect:
                    var redirect = Redirect.Deserialize(reader);
                    DumpToConsole(redirect);
                    break;

                case MessageType.HostGame:
                    var host = HostGameResponse.Deserialize(reader);
                    DumpToConsole(host);
                    break;

                case MessageType.JoinGame:
                    var join = JoinGameResponse.Deserialize(reader);
                    DumpToConsole(join);
                    break;

                case MessageType.GameData:
                    var gamedata = GameData.Deserialize(reader);
                    foreach (var item in gamedata)
                    {
                        HandleGameData(item, false);
                    }

                    //Directory.CreateDirectory("gamedata");
                    //File.WriteAllBytes(Path.Combine("gamedata", $"recv_data_{gamedataId++}.bin"), body);
                    break;

                case MessageType.GameDataTo:
                    var gamedatato = GameDataTo.Deserialize(reader);
                    foreach (var item in gamedatato)
                    {
                        HandleGameDataTo(item, false);
                    }
                    break;

                case MessageType.JoinedGame:
                    var joined = JoinedGame.Deserialize(reader);
                    DumpToConsole(joined);
                    break;

                case MessageType.AlterGame:
                    var alter = AlterGameResponse.Deserialize(reader);
                    DumpToConsole(alter);
                    break;

                case MessageType.GetGameListV2:
                    var gamelist = GetGameListV2Response.Deserialize(reader);
                    DumpToConsole(gamelist);
                    break;

                case MessageType.RemovePlayer:
                    var removeplayer = RemovePlayerResponse.Deserialize(reader);
                    DumpToConsole(removeplayer);
                    break;

                case MessageType.StartGame:
                    var start = StartGame.Deserialize(reader);
                    DumpToConsole(start);
                    if (BreakOnGameStart)
                    {
                        Console.WriteLine("Press any key to continue...");
                        Console.ReadKey();
                    }
                    break;

                case MessageType.EndGame:
                    var end = EndGame.Deserialize(reader);
                    DumpToConsole(end);
                    if (BreakOnGameEnd)
                    {
                        Console.WriteLine("Press any key to continue...");
                        Console.ReadKey();
                    }

                    //Clear Entities to prevent collisions
                    EntityTracker.entities.Clear();
                    break;

                default:
                    Console.WriteLine($"Unhandled Message: {messageType} size: {body.Length}");
                    return;
                }

                if (reader.GetBytesLeft() > 0 && LogNotConsumed)
                {
                    Console.WriteLine($"[{messageType}]{reader.GetBytesLeft()} bytes not cunsumed");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error handling ToClient: " + ex.Message);
            }
        }