//Network Events public GameObject SendCreep(string poolName) //sent from local client to network { var objToSpawn = PoolManager.Instance.SpawnFromPool(poolName, CreepSpawnPoint.position, CreepSpawnPoint.rotation); if (!PlayerMatchData.CanAfford(objToSpawn.GetComponent <Creep>().CreepCost)) { if (PlayerMatchData.DebugLogNetworkEvents) { Debug.Log(NetworkOwner.PlayerName + " does not have enough gold!"); } PoolManager.Instance.ReturnToPool(objToSpawn); return(null); } SetCreepInfo(objToSpawn, NetworkOwner.photonView.ViewID, NetworkOwner); InterfaceInfo(objToSpawn); PlayerMatchData.IncreasePlayerIncome_Event(objToSpawn.GetComponent <Creep>().Income); PlayerMatchData.DeductPlayerGold_Event(objToSpawn.GetComponent <Creep>().CreepCost); object[] sendCreepData = new object[] { NetworkOwner.photonView.ViewID, poolName, CreepSpawnPoint.position, CreepSpawnPoint.rotation }; RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.DoNotCache, Receivers = ReceiverGroup.Others }; PhotonNetwork.RaiseEvent((byte)EventIdHandler.EVENT_IDs.SEND_CREEP_EVENT, sendCreepData, options, SendOptions.SendUnreliable); return(objToSpawn); }
//Network Events public GameObject PlaceTower(string tag, Vector3 pos, Quaternion rot)//sent from local client to network { var node = SelectionManager.Instance.CurrentlySelectedObject.GetComponent <Node>(); if (tag == null) { Debug.LogWarning(tag + " is not found!"); } if (node.IsOccupied) { Debug.Log(node + " is occupied."); return(null); } var objToSpawn = PoolManager.Instance.SpawnFromPool(tag, pos, rot); var turret = objToSpawn.GetComponent <Turret>(); turret.NetworkOwner = NetworkOwner; turret.PlayerMatchData = PlayerMatchData; if (!PlayerMatchData.CanAfford(objToSpawn.GetComponent <Turret>().TowerCost)) { if (PlayerMatchData.DebugLogNetworkEvents) { Debug.Log(NetworkOwner.PlayerName + " does not have enough gold!"); } PoolManager.Instance.ReturnToPool(objToSpawn); return(null); } PlayerMatchData.DeductPlayerGold_Event(turret.TowerCost); node.IsOccupied = true; object[] towerPlaceData = new object[] { NetworkOwner.photonView.ViewID, tag, pos, rot }; RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.DoNotCache, Receivers = ReceiverGroup.Others }; PhotonNetwork.RaiseEvent((byte)EventIdHandler.EVENT_IDs.PLACE_TOWER_EVENT, towerPlaceData, options, SendOptions.SendReliable); return(objToSpawn); }