Example #1
0
        public CCGame InitializeGame(Rooms playerRoom, CCPlayer RequestingPlayer)
        {
            // Get info for the other player
            CCPlayer player2 = playerRoom.Players.First(x => x.PlayerName != RequestingPlayer.PlayerName);

            //Intialize the armies
            List <Army> playerArmies = new List <Army>();
            Army        army1        = new Army(RequestingPlayer.PlayerName, 0, 0, null);
            Army        army2        = new Army(player2.PlayerName, 0, 0, null);

            playerArmies.Add(army1);
            playerArmies.Add(army2);

            // Create the game
            CCGame playerGame = new CCGame(1, "Unit Selection", playerArmies, playerRoom, "");

            //playerGame.Room.Players.Where(x => x.PlayerName == RequestingPlayer.PlayerName).Select(x => { x.Ready = false; return x; });
            //playerGame.Room.Players.Where(x => x.PlayerName == player2.PlayerName).Select(x => { x.Ready = false; return x; });

            foreach (CCPlayer player in playerGame.Room.Players)
            {
                player.Ready = false;
            }
            return(playerGame);
        }
Example #2
0
        public async Task SubmitUnitsToGroup(string playerGameToJson)
        {
            CCGame playerGame = new CCGame(0, null, null, null, "");

            playerGame = JsonConvert.DeserializeAnonymousType(playerGameToJson, playerGame);

            CCPlayer RequestingPlayer = playerGame.Room.Players.First(x => x.ConnectionId == Context.ConnectionId);
            Army     RequestingArmy   = playerGame.Armies.First(x => x.PlayerName == RequestingPlayer.PlayerName);

            foreach (CCPlayer player in playerGame.Room.Players)
            {
                if (player.PlayerName == RequestingPlayer.PlayerName)
                {
                    player.AvailableInf   -= RequestingArmy.Infantry;
                    player.AvailableTanks -= RequestingArmy.Tanks;
                }
            }

            foreach (CCPlayer player in playerGame.Room.Players)
            {
                Console.WriteLine("Submitted units " + player.PlayerName + " : " + player.Ready.ToString());
            }
            if (playerGame.Room.Players.All(x => x.Ready == true))
            {
                playerGame.Phase = "Card Selection";
                foreach (CCPlayer player in playerGame.Room.Players)
                {
                    player.Ready = false;
                }
            }

            await Clients.Group(playerGame.Room.RoomName).SendAsync("Units Submitted To Group", JsonConvert.SerializeObject(playerGame));
        }
        // Called before AI is run
        public override bool PreAI(Projectile projectile)
        {
            // Disable tombstones
            if (CrowdControlMod._server != null && ((Main.netMode != Terraria.ID.NetmodeID.Server && CCServer._disableTombstones) || Main.netMode == Terraria.ID.NetmodeID.Server) && m_graves.Contains(projectile.type))
            {
                if (Main.netMode == Terraria.ID.NetmodeID.Server)
                {
                    try
                    {
                        CCPlayer player = Main.player[projectile.owner].GetModPlayer <CCPlayer>();
                        if (player.m_servDisableTombstones)
                        {
                            projectile.active = false;
                            NetMessage.SendData(Terraria.ID.MessageID.SyncNPC, -1, player.player.whoAmI, null, projectile.whoAmI);
                            TDebug.WriteDebug("Server disabled " + player.player.name + "'s tombstone", Color.Yellow);
                            return(false);
                        }
                    }
                    catch { }
                }
                else
                {
                    projectile.active = false;
                    TDebug.WriteDebug("Client disabled tombstone", Color.Yellow);
                    return(false);
                }
            }

            return(base.PreAI(projectile));
        }
Example #4
0
 public async Task CreateOrJoinRoom(string roomName)
 {
     if (!String.IsNullOrEmpty(roomName))
     {
         JoinRoom(roomName);
     }
     CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);
     await Clients.Caller.SendAsync("Room Joined", JsonConvert.SerializeObject(playerList), JsonConvert.SerializeObject(RequestingPlayer), JsonConvert.SerializeObject(roomList));
 }
Example #5
0
        private static readonly float m_paintMaxSpeed = 6f;                     // Maximum speed of paint projectiles

        // Override the spawn rate for every NPC
        public override void EditSpawnRate(Player player, ref int spawnRate, ref int maxSpawns)
        {
            // Increase spawnrate per player
            CCPlayer ccPlayer = player.GetModPlayer <CCPlayer>();

            if (ccPlayer != null)
            {
                spawnRate = (int)(spawnRate / ccPlayer.m_spawnRate);
                maxSpawns = (int)(maxSpawns * ccPlayer.m_spawnRate);
            }
        }
Example #6
0
 private void Awake()
 {
     if (main == null)
     {
         main = this;
     }
     else
     {
         Destroy(main);
         main = this;
     }
     transform.position = transform.position.withY(1.8f);
     ResetAcceleration();
 }
Example #7
0
 private void Awake()
 {
     if (main == null)
     {
         main = this;
     }
     else
     {
         Destroy(main);
         main = this;
     }
     transform.position  = transform.position.withY(1.8f);
     characterController = GetComponent <CharacterController>();
     ResetAcceleration();
 }
Example #8
0
        public async Task CreatePlayerName(string playername)
        {
            bool     userNameTaken    = playerList.Any(x => x.PlayerName == playername);
            CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);

            if (!userNameTaken)
            {
                RequestingPlayer.PlayerName = playername;
            }
            else if (userNameTaken)
            {
                RequestingPlayer.PlayerName = "";
            }

            await Clients.Caller.SendAsync("Player Name Added", JsonConvert.SerializeObject(playerList), JsonConvert.SerializeObject(RequestingPlayer), JsonConvert.SerializeObject(roomList));
        }
Example #9
0
        public CCGame WinnerOfBattle(CCGame playerGame)
        {
            Console.WriteLine("Chosing a winning player");
            CCPlayer RequestingPlayer = playerGame.Room.Players.First(x => x.ConnectionId == Context.ConnectionId);

            Army RequestingPlayerArmy = playerGame.Armies.First(x => x.PlayerName == RequestingPlayer.PlayerName);
            Army OtherPlayerArmy      = playerGame.Armies.First(x => x.PlayerName != RequestingPlayer.PlayerName);

            int RequestingPlayerTotalPower = (RequestingPlayerArmy.Tanks * 2) + RequestingPlayerArmy.Infantry + RequestingPlayerArmy.PlayerCard.Power;
            int OtherPlayerTotalPower      = (OtherPlayerArmy.Tanks * 2) + OtherPlayerArmy.Infantry + OtherPlayerArmy.PlayerCard.Power;

            if (RequestingPlayerTotalPower > OtherPlayerTotalPower)
            {
                playerGame.WinningPlayer = RequestingPlayerArmy.PlayerName;
            }
            else if (RequestingPlayerTotalPower == OtherPlayerTotalPower)
            {
                if (RequestingPlayerArmy.PlayerCard.Power > OtherPlayerArmy.PlayerCard.Power)
                {
                    playerGame.WinningPlayer = RequestingPlayerArmy.PlayerName;
                }
                else if (RequestingPlayerArmy.PlayerCard.Power < OtherPlayerArmy.PlayerCard.Power)
                {
                    playerGame.WinningPlayer = OtherPlayerArmy.PlayerName;
                }
                else if (RequestingPlayerArmy.PlayerCard.Power == OtherPlayerArmy.PlayerCard.Power)
                {
                    if (RequestingPlayerArmy.Infantry > OtherPlayerArmy.Infantry)
                    {
                        playerGame.WinningPlayer = RequestingPlayerArmy.PlayerName;
                    }
                    else if (RequestingPlayerArmy.Infantry < OtherPlayerArmy.Infantry)
                    {
                        playerGame.WinningPlayer = OtherPlayerArmy.PlayerName;
                    }
                    else if (RequestingPlayerArmy.Infantry == OtherPlayerArmy.Infantry)
                    {
                        playerGame.WinningPlayer = "tie";
                    }
                }
            }
            else if (RequestingPlayerTotalPower < OtherPlayerTotalPower)
            {
                playerGame.WinningPlayer = OtherPlayerArmy.PlayerName;
            }
            return(playerGame);
        }
Example #10
0
        public CCGame ResolveAttackDefense(CCGame playerGame)
        {
            Console.WriteLine("resolving attack / defense");
            if (playerGame.WinningPlayer != "tie")
            {
                CCPlayer WinningPlayer = playerGame.Room.Players.First(x => x.PlayerName == playerGame.WinningPlayer);
                CCPlayer LosingPlayer  = playerGame.Room.Players.First(x => x.PlayerName != playerGame.WinningPlayer);

                Army WinningArmy = playerGame.Armies.First(x => x.PlayerName == playerGame.WinningPlayer);
                Army LosingArmy  = playerGame.Armies.First(x => x.PlayerName != playerGame.WinningPlayer);

                if (WinningArmy.PlayerCard.AttackValue > 0)
                {
                    int TotalDamage = WinningArmy.PlayerCard.AttackValue - LosingArmy.PlayerCard.DefenseValue;
                    if (TotalDamage > 0)
                    {
                        //remove tanks first
                        LosingArmy.Tanks -= TotalDamage;
                        if (LosingArmy.Tanks < 0)
                        {
                            TotalDamage      = Math.Abs(LosingArmy.Tanks);
                            LosingArmy.Tanks = 0;
                        }
                        else
                        {
                            TotalDamage = 0;
                        }
                        LosingArmy.Infantry -= TotalDamage;
                        if (LosingArmy.Infantry < 0)
                        {
                            LosingArmy.Infantry = 0;
                        }

                        foreach (Army army in playerGame.Armies)
                        {
                            if (army.PlayerName == LosingPlayer.PlayerName)
                            {
                                army.Tanks    = LosingArmy.Tanks;
                                army.Infantry = LosingArmy.Infantry;
                            }
                        }
                    }
                }
            }
            return(playerGame);
        }
Example #11
0
        public async Task ReadyUp()
        {
            CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);
            Rooms    playerRoom       = roomList.First(x => x.RoomName == RequestingPlayer.RoomName);

            RequestingPlayer.Ready = true;
            playerRoom.Players.Where(x => x.PlayerName == RequestingPlayer.PlayerName).Select(x => { x.Ready = true; return(x); });
            bool   arePlayersReady = CheckIfPlayersReady();
            CCGame playerGame      = new CCGame(1, "", null, null, "");

            // setup the game if players are all ready
            if (arePlayersReady)
            {
                playerGame = InitializeGame(playerRoom, RequestingPlayer);
            }

            await Clients.Group(RequestingPlayer.RoomName).SendAsync("User Readied", JsonConvert.SerializeObject(playerList), arePlayersReady, JsonConvert.SerializeObject(playerRoom.Players), JsonConvert.SerializeObject(playerGame));
        }
Example #12
0
        public bool CheckIfPlayersReady()
        {
            CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);
            Rooms    playerRoom       = roomList.First(x => x.RoomName == RequestingPlayer.RoomName);

            if (playerRoom.Players.Count == 2)
            {
                if (playerRoom.Players.Any(x => x.Ready == false))
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
Example #13
0
        public void JoinRoom(string roomName)
        {
            bool     roomExist        = roomList.Any(x => x.RoomName == roomName);
            CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);

            if (!roomExist)
            {
                Console.WriteLine("creating new room");
                List <CCPlayer> roomPlayers = new List <CCPlayer>();
                Rooms           newRoom     = new Rooms(roomName, roomPlayers);
                newRoom.Players.Add(RequestingPlayer);
                roomList.Add(newRoom);
                RequestingPlayer.RoomName = roomName;

                /*
                 * Rooms newRoom = roomList.First(x => x.RoomName == roomName);
                 * newRoom.Players.Add(RequestingPlayer);
                 * RequestingPlayer.RoomName = roomName;
                 */
            }
            else
            {
                Console.WriteLine("Joining existing room");
                Rooms roomToJoin = roomList.First(x => x.RoomName == roomName);
                if (roomToJoin.Players.Count < 2)
                {
                    List <CCPlayer> roomPlayers         = (List <CCPlayer>)roomToJoin.Players;
                    bool            playerAlreadyJoined = roomPlayers.Any(x => x.PlayerName == RequestingPlayer.PlayerName);
                    if (!playerAlreadyJoined)
                    {
                        roomToJoin.Players.Add(RequestingPlayer);
                        RequestingPlayer.RoomName = roomName;
                    }
                }
            }
            Groups.AddToGroupAsync(Context.ConnectionId, roomName);
        }
Example #14
0
        public override Task OnDisconnectedAsync(Exception exception)
        {
            // Remove the player from any game rooms
            CCPlayer RequestingPlayer = playerList.First(x => x.ConnectionId == Context.ConnectionId);
            Rooms    roomJoined       = new Rooms(null, null);

            try {
                roomJoined = roomList.First(x => x.RoomName == RequestingPlayer.RoomName);
            }
            catch (Exception e) { }
            if (!String.IsNullOrEmpty(roomJoined.RoomName))
            {
                // git changes..
                //Rooms roomJoined = roomList.First(x => x.RoomName == RequestingPlayer.RoomName);
                CCPlayer playerToRemove = new CCPlayer(null, null, false, null, 0, 0, 0, 0, null, null, 0);
                try
                {
                    playerToRemove = roomJoined.Players.Where(x => x.PlayerName == RequestingPlayer.PlayerName).First();
                }
                catch (Exception e) { }
                roomJoined.Players.Remove(playerToRemove);
                bool isRoomEmpty = IsRoomEmpty(RequestingPlayer.RoomName);
                if (isRoomEmpty)
                {
                    roomList.RemoveAll(x => x.RoomName == RequestingPlayer.RoomName);
                }
                if (!String.IsNullOrEmpty(RequestingPlayer.RoomName))
                {
                    LeaveRoom(RequestingPlayer.RoomName);
                }
            }

            // remove the player from the player list
            playerList.RemoveAll(x => x.ConnectionId == Context.ConnectionId);
            return(base.OnDisconnectedAsync(exception));
        }
Example #15
0
 private void OnDestroy()
 {
     main = null;
     Shader.SetGlobalFloat("_GlobalStretch", 0);
 }