[Server] public void RequestAvatar(DC_Player player) { Debug.Log("Avatar Request from " + player.playerName); if (!player.avatarSpawn || player.avatar) { return; } if (!player.avatarSpawn.lockedIn) { return; } GameObject avatarO = Instantiate(avatarPrefab); DC_Avatar avatar = avatarO.GetComponent <DC_Avatar>(); avatar.playerO = player.gameObject; if (NetworkServer.SpawnWithClientAuthority(avatarO, player.gameObject)) { player.avatar = avatar; // Only on Server player.avatarO = avatarO; player.RpcSetAvatar(avatarO); player.avatarSpawn.PositionAvatar(avatar); } else { NetworkServer.Destroy(avatarO); } }
[Server] public void RequestAvatarSpawn(DC_Player player) { Debug.Log("AvatarSpawn Request from " + player.playerName); if (player.avatarSpawnO) { return; } GameObject avatarSpawnO = Instantiate(avatarSpawnPrefab); DC_Avatar_Spawn avatarSpawn = avatarSpawnO.GetComponent <DC_Avatar_Spawn>(); avatarSpawn.playerO = player.gameObject; if (NetworkServer.SpawnWithClientAuthority(avatarSpawnO, player.gameObject)) { player.avatarSpawn = avatarSpawn; // Only on Server player.avatarSpawnO = avatarSpawnO; player.RpcSetAvatarSpawn(avatarSpawnO); } else { NetworkServer.Destroy(avatarSpawnO); } }
// Server-Side Commands // Client-Side Commands [ClientRpc] public void RpcSetAvatar(GameObject aO) { DC_Avatar avatar = aO.GetComponent <DC_Avatar>(); DC_Player player = avatar.playerO.GetComponent <DC_Player>(); this.avatar = avatar; this.player = player; }
[Server] public void RemPlayer(DC_Player player) { // Player gridCell is auto-cleared by handy - dandy unity null referencing gamePlayerCount--; RpcPlayerLeft(player.gameObject); gameGrid.UpdateAllClients(); }
void Update() { ServerUpdate(); ClientUpdate(); if (playerO && !player) { player = playerO.GetComponent <DC_Player>(); } }
[Server] public void AddPlayer(GameObject playerO) { if (!gameGrid) { preStartPlayers.Add(playerO); return; } DC_Player player = playerO.GetComponent <DC_Player>(); player.RpcGameSetup(gameObject); if (player.connectionToClient.address == "localClient") { gameOwnerPlayerObj = player.gameObject; } // Whhooooh, Lad. bool breaker = false; for (int x = 1; x <= 3; x++) { for (int y = 1; y <= 3; y++) { if (gameGrid.CheckPosition(x, y)) { breaker = gameGrid.SetPlayerToPosition(player.gameObject, x, y); } else { Debug.Log("Bad X pos: " + x); Debug.Log("Bad Y pos: " + y); } if (breaker) { break; } } if (breaker) { break; } } gamePlayerCount++; RpcPlayerJoined(player.gameObject); gameGrid.UpdateAllClients(); }
[Server] public bool SetPlayerToPosition(GameObject playerO, int x, int y) { if (!CheckPosition(x, y)) { return(false); } DC_Player player = playerO.GetComponent <DC_Player>(); if (player.gameGridX > 0) { int oldPos = GetPosInt(player.gameGridX, player.gameGridY); // var oldCell = cells[oldPos]; var oldCell = gridCells[oldPos]; oldCell.player = null; // cells[oldPos] = oldCell; // cells.Dirty(oldPos); gridCells[oldPos] = oldCell; RpcSetCell(oldPos, oldCell); } player.gameGridX = x; player.gameGridY = y; int newPos = GetPosInt(x, y); // GCell cell = cells[newPos]; GCell cell = gridCells[newPos]; cell.player = playerO; // cells[newPos] = cell; // cells.Dirty(newPos); gridCells[newPos] = cell; player.RpcUpdatePosition(cell.cellPos); RpcSetCell(newPos, cell); return(true); }
public void SetRemotePlayer(DC_Player player = null) { remotePlayer = player; gameJoined = !!player; if (player) { player.localPlayer = localPlayer; player.homeRoom = this; player.serverGame = serverGame; player.gameGrid = gameGrid; JoinGame(); } else { LeaveGame(); } }
public override void OnServerDisconnect(NetworkConnection conn) { Debug.Log("Client Left From: " + conn.address); GameObject playerO = conn.playerControllers[0].gameObject; DC_Player player = playerO.GetComponent <DC_Player>(); serverGame.RemPlayer(player); if (player.avatarSpawnO) { NetworkServer.Destroy(player.avatarSpawnO); } if (player.avatarO) { NetworkServer.Destroy(player.avatarO); } NetworkServer.DestroyPlayersForConnection(conn); }
public override void OnJoinGame(DC_Player p) { TogglePlayerActive(true); }
public void SetPlayer(GameObject p) { player = p.GetComponent <DC_Player>(); }
public virtual void OnJoinGame(DC_Player player) { }