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); }
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); } }
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); }
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); } }
public void InitialiseServerActor(ServerMasterController serverMasterController, int ownerId) { this.serverMasterController = serverMasterController; this.ownerId = ownerId; }