Example #1
0
        public ServerMasterController InstantiatePlayer(int hero)
        {
            ServerMasterController serverMasterController = Instantiate(serverInstancePlayer, Vector3.zero, Quaternion.identity).GetComponent <ServerMasterController>();
            Hero serverInstanceHero = Instantiate(Resources.Load("Characters/" + ((EnumData.Heroes)hero).ToString() + "/ServerInstance-" + ((EnumData.Heroes)hero).ToString()) as GameObject, serverMasterController.transform, false).GetComponentInChildren <Hero>();

            serverMasterController.serverInstanceHero      = serverInstanceHero;
            serverMasterController.serverInstanceHero.hero = hero;
            serverMasterController.serverInstanceHero.inCharacterSelectionScreen = (currentGameState == EnumData.GameState.CharacterSelection);
            serverMasterController.serverInstanceHero.inGame = (currentGameState == EnumData.GameState.Gameplay);
            return(serverMasterController);
        }
    public void Disconnect()
    {
        Debug.Log(tcp.socket.Client.RemoteEndPoint + " has diconnected");

        //This is done because this function is not called form the main thread so we need to make sure that the destroy of the object occurs in the main thread
        ThreadManager.ExecuteOnMainThread(() =>
        {
            UnityEngine.Object.Destroy(serverMasterController.gameObject);
            serverMasterController = null;
        });


        tcp.Disconnect();
        udp.Disconnect();

        ServerSend.PlayerDisconnected(id);
    }
Example #3
0
        public static void SpawnPlayer(int toClient, ServerMasterController serverMasterController)
        {
            using (Packet packet = new Packet((int)ServerPackets.spawnPlayer))
            {
                packet.Write(serverMasterController.id);
                packet.Write(serverMasterController.connectionID);
                packet.Write(serverMasterController.username);
                packet.Write((int)serverMasterController.serverInstanceHero.hero);
                packet.Write(serverMasterController.serverInstanceHero.actorTransform.position);
                packet.Write(serverMasterController.serverInstanceHero.currentMovePointCellPosition);
                packet.Write(serverMasterController.serverInstanceHero.previousMovePointCellPosition);
                packet.Write((int)serverMasterController.serverInstanceHero.Facing);
                packet.Write((int)serverMasterController.serverInstanceHero.PreviousFacingDirection);
                packet.Write(serverMasterController.serverInstanceHero.isFiringPrimaryProjectile);
                packet.Write(serverMasterController.serverInstanceHero.isFiringItemEyeLaser);
                packet.Write(serverMasterController.serverInstanceHero.isFiringItemFireball);
                packet.Write(serverMasterController.serverInstanceHero.isFiringItemStarShower);
                packet.Write(serverMasterController.serverInstanceHero.isFiringItemCentaurBow);
                packet.Write(serverMasterController.serverInstanceHero.isWalking);
                packet.Write(serverMasterController.serverInstanceHero.isFlying);
                packet.Write(serverMasterController.serverInstanceHero.isUsingPrimaryMove);
                packet.Write(serverMasterController.serverInstanceHero.isPetrified);
                packet.Write(serverMasterController.serverInstanceHero.isPushed);
                packet.Write(serverMasterController.serverInstanceHero.isPhysicsControlled);
                packet.Write(serverMasterController.serverInstanceHero.isInputFreezed);
                packet.Write(serverMasterController.serverInstanceHero.isMovementFreezed);
                packet.Write(serverMasterController.serverInstanceHero.isInvincible);
                packet.Write(serverMasterController.serverInstanceHero.isRespawnningPlayer);
                packet.Write(serverMasterController.serverInstanceHero.inCharacterSelectionScreen);
                packet.Write(serverMasterController.serverInstanceHero.inGame);
                packet.Write(serverMasterController.serverInstanceHero.currentHP);
                packet.Write(serverMasterController.serverInstanceHero.currentStockLives);

                packet.Write(serverMasterController.serverInstanceHero.flyingTickCountTemp);

                packet.Write((int)serverMasterController.serverInstanceHero.itemToCast.castableItemType);
                packet.Write((int)serverMasterController.serverInstanceHero.itemToCast.usableItemType);
                packet.Write(serverMasterController.serverInstanceHero.itemToCast.itemCount);

                packet.Write(serverMasterController.playerSequenceNumberProcessed);
                packet.Write(serverMasterController.serverLocalSequenceNumber);

                SendTCPData(toClient, packet);
            }
        }
Example #4
0
        public void SendIntoGame(string connectionID, string playerName)
        {
            Vector3 spawnPos = ServerSideGameManager.instance.spawnPositions[(count++) % ServerSideGameManager.instance.spawnPositions.Count];

            serverMasterController = ServerSideGameManager.instance.InstantiatePlayer((int)EnumData.Heroes.Medusa);
            serverMasterController.Initialise(id, connectionID, playerName, spawnPos);


            //This will send all other players information to our new player
            foreach (ServerSideClient client in Server.clients.Values)
            {
                if (client.serverMasterController != null)
                {
                    if (client.id != id)
                    {
                        ServerSend.SpawnPlayer(id, client.serverMasterController);
                    }
                }
            }


            //This will send new player information to all other players and themselves
            foreach (ServerSideClient client in Server.clients.Values)
            {
                if (client.serverMasterController != null)
                {
                    ServerSend.SpawnPlayer(client.id, serverMasterController);
                }
            }

            List <WorldGridItem> worldGridItemList = new List <WorldGridItem>();

            for (int i = 0; i < ServerSideGameManager.instance.toNetworkTileType.Count; i++)
            {
                List <Vector3Int> positionsOfTile = GridManager.instance.GetAllPositionForTileMap(ServerSideGameManager.instance.toNetworkTileType[i]);
                WorldGridItem     worldGridItem   = new WorldGridItem((int)ServerSideGameManager.instance.toNetworkTileType[i], positionsOfTile);
                worldGridItemList.Add(worldGridItem);
            }

            WorldUpdate worldUpdate = new WorldUpdate(ServerSideGameManager.instance.serverWorldSequenceNumber, worldGridItemList.ToArray(), new GameData((int)ServerSideGameManager.instance.currentGameState, ServerSideGameManager.instance.timeToStartMatch), ServerSideGameManager.projectilesDic, ServerSideGameManager.enemiesDic, ServerSideGameManager.animatingStaticTileDic, GridManager.instance.portalTracker.portalEntranceDic);

            ServerSend.SpawnGridWorld(id, worldUpdate);
        }
    public void SendIntoGame(string playerName)
    {
        serverMasterController = ServerSideGameManager.instance.InstantiatePlayer();
        serverMasterController.Initialise(id, playerName, new Vector3(0.5f, 0.5f, 0f));


        //This will send all other players information to our new player
        foreach (ServerSideClient client in Server.clients.Values)
        {
            if (client.serverMasterController != null)
            {
                if (client.id != id)
                {
                    ServerSend.SpawnPlayer(id, client.serverMasterController);
                }
            }
        }


        //This will send new player information to all other players and themselves
        foreach (ServerSideClient client in Server.clients.Values)
        {
            if (client.serverMasterController != null)
            {
                ServerSend.SpawnPlayer(client.id, serverMasterController);
            }
        }



        List <WorldGridItem> worldGridItemList = new List <WorldGridItem>();

        for (int i = 0; i < ServerSideGameManager.instance.toNetworkTileType.Count; i++)
        {
            List <Vector3Int> positionsOfTile = GridManager.instance.GetAllPositionForTileMap(GridManager.instance.gameStateDependentTileArray[(int)ServerSideGameManager.instance.toNetworkTileType[i] - 1].tileMap);
            WorldGridItem     worldGridItem   = new WorldGridItem((int)ServerSideGameManager.instance.toNetworkTileType[i], positionsOfTile);
            worldGridItemList.Add(worldGridItem);
        }
        WorldUpdate worldUpdate = new WorldUpdate(ServerSideGameManager.instance.serverWorldSequenceNumber, worldGridItemList.ToArray());

        ServerSend.SpawnGridWorld(id, worldUpdate);
    }
Example #6
0
    public static void SpawnPlayer(int toClient, ServerMasterController serverMasterController)
    {
        using (Packet packet = new Packet((int)ServerPackets.spawnPlayer))
        {
            packet.Write(serverMasterController.id);
            packet.Write(serverMasterController.username);
            packet.Write(serverMasterController.serverInstanceHero.actorTransform.position);
            packet.Write(serverMasterController.serverInstanceHero.currentMovePointCellPosition);
            packet.Write(serverMasterController.serverInstanceHero.previousMovePointCellPosition);
            packet.Write(serverMasterController.serverInstanceHero.isFiringPrimaryProjectile);
            packet.Write(serverMasterController.serverInstanceHero.primaryMoveUseAnimationAction.isBeingUsed);
            packet.Write(serverMasterController.serverInstanceHero.isPlacingBoulderAnimationPlayed);
            packet.Write(serverMasterController.serverInstanceHero.isPetrified);
            packet.Write(serverMasterController.serverInstanceHero.isPushed);
            packet.Write((int)serverMasterController.serverInstanceHero.Facing);
            packet.Write((int)serverMasterController.serverInstanceHero.PreviousFacingDirection);
            packet.Write(serverMasterController.playerSequenceNumberProcessed);
            packet.Write(serverMasterController.serverLocalSequenceNumber);

            SendTCPData(toClient, packet);
        }
    }
Example #7
0
 public void InitialiseServerActor(ServerMasterController serverMasterController, int ownerId)
 {
     this.serverMasterController = serverMasterController;
     this.ownerId = ownerId;
 }