public void BroadcastChatMessageFromServer(string text, PlayerPresence playerPresence) { bool isHost = playerPresence.networkView.owner == networkView.owner; string sigil = isHost ? "+ " : ""; BroadcastMessageFromServer(sigil + playerPresence.Name + " : " + text, ChatMessageType); }
public void DoDamageOwner( int damage, Vector3 point, PlayerPresence instigator) { ScreenSpaceDebug.AddMessage("DAMAGE", point, Color.red); if ( !dead ) { if (invulnerable) return; Shield -= damage; timeUntilShieldRegen = shieldRegenTime; if(Shield < 0) { Health += Shield; Shield = 0; } if(Health <= 0) { Health = 0; dead = true; PlayDeathPrefab(); GetComponent<PlayerScript>().RequestedToDieByOwner(instigator); Camera.main.GetComponent<WeaponIndicatorScript>().CooldownStep = 0; } } }
private void PresenceListenerWantsRespawnFor(PlayerPresence presence) { if (IsMapLoaded && IsRoundInProgress) { presence.SpawnCharacter(RespawnZone.GetRespawnPoint()); } }
private void ReceivePlayerDied(PlayerScript deadPlayerScript, PlayerPresence instigator) { if (instigator != null) { if (deadPlayerScript.Possessor == instigator) { Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " committed suicide"); instigator.ReceiveScorePoints(-1); } else { Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " was destroyed by " + instigator.Name); instigator.ReceiveScorePoints(1); if (!AnnouncedFirstKill) { Server.BroadcastMessageFromServer(instigator.Name + " draws first blood", Server.BannerMessageWithSoundType); AnnouncedFirstKill = true; } } } else { Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " was destroyed"); } deadPlayerScript.PerformDestroy(); }
public void StartRound() { IsRoundInProgress = true; Server.IsGameActive = true; PeakScoreThisRound = 0; LastLeader = null; AnnouncedFirstKill = false; foreach (var presence in Server.Combatants) { presence.SpawnCharacter(RespawnZone.GetRespawnPoint()); presence.SetScorePoints(0); } //Server.BroadcastMessageFromServer("Round start."); var sb = new StringBuilder(); sb.AppendLine("Deathmatch"); if (ScoreLimit > 0) { sb.Append("First to " + ScoreLimit); } else { sb.Append("No limit"); } Server.StatusMessage = sb.ToString().ToUpper(); Server.BroadcastMessageFromServer(sb.ToString(), Server.BannerMessageType); }
public void DoDamageOwner( int damage, Vector3 point, PlayerPresence instigator) { ScreenSpaceDebug.AddMessage("DAMAGE", point, Color.red); if ( !dead ) { if (invulnerable) return; Shield -= damage; timeUntilShieldRegen = shieldRegenTime; if(Shield < 0) { Health += Shield; Shield = 0; } if(Health <= 0) { Health = 0; dead = true; PlayDeathPrefab(); GetComponent<PlayerScript>().RequestedToDieByOwner(instigator); Camera.main.GetComponent<WeaponIndicatorScript>().CooldownStep = 0; } } }
// ReSharper disable once UnusedMember.Local protected void OthersReceiveHit(int damage, Vector3 point, uLink.NetworkViewID instigatorPresenceViewID) { EffectsScript.ExplosionHit( point, Quaternion.LookRotation( Vector3.up ) ); if (networkView.isMine) { DoDamageOwner(damage, point, PlayerPresence.TryGetPlayerPresenceFromNetworkViewID(instigatorPresenceViewID)); } }
private void ReceivePresenceAdded(PlayerPresence newPlayerPresence) { SetupPresenceListener(newPlayerPresence); //if (IsMapLoaded) //{ // newPlayerPresence.SpawnCharacter(RespawnZone.GetRespawnPoint()); //} newPlayerPresence.SetScorePoints(0); }
public void ReadFromStream(SerializationReader r) { OsuVersion = r.ReadInt32(); int amount = r.ReadInt32(); for (int i = 0; i < amount; i++) { Players.Add(PlayerPresence.ReadFromReader(r)); } }
public void RequestedToDieByOwner(PlayerPresence instigator) { if (uLink.Network.isServer) { OnPlayerScriptDied(this, instigator); } else { networkView.RPC("ServerRequestedToDie", uLink.RPCMode.Server, instigator.networkView.viewID); } }
private void ReceivePresenceRemoved(PlayerPresence removedPlayerPresence) { for (int i = PresenceListeners.Count - 1; i >= 0; i--) { if (PresenceListeners[i].Presence == removedPlayerPresence) { PresenceListeners[i].OnDestroy(); PresenceListeners.RemoveAt(i); break; } } }
private void ReceivePlayerPresenceAdd(PlayerPresence newPlayerPresence) { newPlayerPresence.Server = this; if (newPlayerPresence.HasBeenNamed) { ReceivePlayerPresenceIdentified(newPlayerPresence); } else { newPlayerPresence.OnBecameNamed += () => ReceivePlayerPresenceIdentified(newPlayerPresence); } }
private void SetupPresenceListener(PlayerPresence presence) { PresenceListeners.Add(new PresenceListener(this, presence)); }
private void ReceivePresenceRemoved(PlayerPresence removedPlayerPresence) { for (int i = PresenceListeners.Count - 1; i >= 0; i--) { if (PresenceListeners[i].Presence == removedPlayerPresence) { PresenceListeners[i].OnDestroy(); PresenceListeners.RemoveAt(i); break; } } }
private void ReceiveEnemyRemoved(PlayerScript enemy, PlayerPresence instigator) { TryRemoveEnemyLockingOnToUs(enemy); }
public void BroadcastChatMessageFromServer(string text, PlayerPresence playerPresence) { bool isHost = playerPresence.networkView.owner == networkView.owner; string sigil = isHost ? "+ " : ""; BroadcastMessageFromServer(sigil + playerPresence.Name + " : " + text, ChatMessageType); }
private void PresenceListenerWantsRespawnFor(PlayerPresence presence) { if (IsMapLoaded && IsRoundInProgress) presence.SpawnCharacter(RespawnZone.GetRespawnPoint()); }
public void DeclareHitToOthers(int damage, Vector3 point, PlayerPresence instigator) { networkView.RPC("OthersReceiveHit", uLink.RPCMode.Others, damage, point, instigator.networkView.viewID); }
private void ReceivePlayerPresenceIdentified(PlayerPresence playerPresence) { BroadcastMessageFromServer(playerPresence.Name + " has joined"); }
private void ReceivePlayerDied(PlayerScript deadPlayerScript, PlayerPresence instigator) { if (instigator != null) { if (deadPlayerScript.Possessor == instigator) { Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " committed suicide"); instigator.ReceiveScorePoints(-1); } else { Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " was destroyed by " + instigator.Name); instigator.ReceiveScorePoints(1); if (!AnnouncedFirstKill) { Server.BroadcastMessageFromServer(instigator.Name + " draws first blood", Server.BannerMessageWithSoundType); AnnouncedFirstKill = true; } } } else Server.BroadcastMessageFromServer(deadPlayerScript.Possessor.Name + " was destroyed"); deadPlayerScript.PerformDestroy(); }
public override void Update() { base.Update(); if (IsRoundInProgress) { var leader = Leader; if (leader != null) { for (int i = 0; i < PlayerScript.UnsafeAllEnabledPlayerScripts.Count; i++) { var character = PlayerScript.UnsafeAllEnabledPlayerScripts[i]; if (character.Possessor == null) continue; bool flagVisible = character.Possessor == leader; character.HasFlagVisible = flagVisible; } // End round if someone over score limit if (ScoreLimit > 0 && leader.Score >= ScoreLimit && AnnouncedFirstKill) EndRoundNow(); // Else announce score remaining if needed else if (leader.Score > PeakScoreThisRound && AnnouncedFirstKill) { int prevScore = PeakScoreThisRound; PeakScoreThisRound = leader.Score; int pointsThatWereLeft = ScoreLimit - prevScore; int pointsLeft = ScoreLimit - PeakScoreThisRound; for (int i = ScoreAnnouncementValues.Length - 1; i >= 0; i--) { int value = ScoreAnnouncementValues[i]; if (pointsThatWereLeft > value && pointsLeft <= value) { Server.BroadcastMessageFromServer(pointsLeft + " points remaining", Server.BannerMessageWithSoundType); break; } } } } else { for (int i = 0; i < PlayerScript.UnsafeAllEnabledPlayerScripts.Count; i++) { var character = PlayerScript.UnsafeAllEnabledPlayerScripts[i]; character.HasFlagVisible = false; } } if (leader != LastLeader && leader != null) { // Only start caring once we've got a kill if (AnnouncedFirstKill) { string message = LastLeader != null ? leader.Name + " has taken the lead from " + LastLeader.Name : leader.Name + " has taken the lead"; Server.BroadcastMessageFromServer(message, Server.BannerMessageWithSoundType); LastLeader = leader; } } } }
private void ReceivePlayerPresenceRemove(PlayerPresence removedPlayerPresence) { BroadcastMessageFromServer(removedPlayerPresence.Name + " has left"); }
private void ReceiveEnemyRemoved(PlayerScript enemy, PlayerPresence instigator) { TryRemoveEnemyLockingOnToUs(enemy); }
public void RequestedToDieByOwner(PlayerPresence instigator) { if (uLink.Network.isServer) OnPlayerScriptDied(this, instigator); else networkView.RPC("ServerRequestedToDie", uLink.RPCMode.Server, instigator.networkView.viewID); }
public void DeclareHitToOthers(int damage, Vector3 point, PlayerPresence instigator) { networkView.RPC("OthersReceiveHit", uLink.RPCMode.Others, damage, point, instigator.networkView.viewID); }
private void ReceivePresenceAdded(PlayerPresence newPlayerPresence) { SetupPresenceListener(newPlayerPresence); //if (IsMapLoaded) //{ // newPlayerPresence.SpawnCharacter(RespawnZone.GetRespawnPoint()); //} newPlayerPresence.SetScorePoints(0); }
public PresenceListener(Deathmatch parent, PlayerPresence handledPresence) { Deathmatch = parent; Presence = handledPresence; Presence.OnPlayerPresenceWantsRespawn += ReceivePresenceWantsRespawn; }
private void SetupPresenceListener(PlayerPresence presence) { PresenceListeners.Add(new PresenceListener(this, presence)); }
private void ReceivePlayerPresenceAdd(PlayerPresence newPlayerPresence) { newPlayerPresence.Server = this; if (newPlayerPresence.HasBeenNamed) ReceivePlayerPresenceIdentified(newPlayerPresence); else newPlayerPresence.OnBecameNamed += () => ReceivePlayerPresenceIdentified(newPlayerPresence); }
public PresenceListener(Deathmatch parent, PlayerPresence handledPresence) { Deathmatch = parent; Presence = handledPresence; Presence.OnPlayerPresenceWantsRespawn += ReceivePresenceWantsRespawn; }
private void ReceivePlayerPresenceRemove(PlayerPresence removedPlayerPresence) { BroadcastMessageFromServer(removedPlayerPresence.Name + " has left"); }
public override void Update() { base.Update(); if (IsRoundInProgress) { var leader = Leader; if (leader != null) { for (int i = 0; i < PlayerScript.UnsafeAllEnabledPlayerScripts.Count; i++) { var character = PlayerScript.UnsafeAllEnabledPlayerScripts[i]; if (character.Possessor == null) { continue; } bool flagVisible = character.Possessor == leader; character.HasFlagVisible = flagVisible; } // End round if someone over score limit if (ScoreLimit > 0 && leader.Score >= ScoreLimit && AnnouncedFirstKill) { EndRoundNow(); } // Else announce score remaining if needed else if (leader.Score > PeakScoreThisRound && AnnouncedFirstKill) { int prevScore = PeakScoreThisRound; PeakScoreThisRound = leader.Score; int pointsThatWereLeft = ScoreLimit - prevScore; int pointsLeft = ScoreLimit - PeakScoreThisRound; for (int i = ScoreAnnouncementValues.Length - 1; i >= 0; i--) { int value = ScoreAnnouncementValues[i]; if (pointsThatWereLeft > value && pointsLeft <= value) { Server.BroadcastMessageFromServer(pointsLeft + " points remaining", Server.BannerMessageWithSoundType); break; } } } } else { for (int i = 0; i < PlayerScript.UnsafeAllEnabledPlayerScripts.Count; i++) { var character = PlayerScript.UnsafeAllEnabledPlayerScripts[i]; character.HasFlagVisible = false; } } if (leader != LastLeader && leader != null) { // Only start caring once we've got a kill if (AnnouncedFirstKill) { string message = LastLeader != null ? leader.Name + " has taken the lead from " + LastLeader.Name : leader.Name + " has taken the lead"; Server.BroadcastMessageFromServer(message, Server.BannerMessageWithSoundType); LastLeader = leader; } } } }
private void ReceivePlayerPresenceIdentified(PlayerPresence playerPresence) { BroadcastMessageFromServer(playerPresence.Name + " has joined"); }
public void StartRound() { IsRoundInProgress = true; Server.IsGameActive = true; PeakScoreThisRound = 0; LastLeader = null; AnnouncedFirstKill = false; foreach (var presence in Server.Combatants) { presence.SpawnCharacter(RespawnZone.GetRespawnPoint()); presence.SetScorePoints(0); } //Server.BroadcastMessageFromServer("Round start."); var sb = new StringBuilder(); sb.AppendLine("Deathmatch"); if (ScoreLimit > 0) sb.Append("First to " + ScoreLimit); else sb.Append("No limit"); Server.StatusMessage = sb.ToString().ToUpper(); Server.BroadcastMessageFromServer(sb.ToString(), Server.BannerMessageType); }
// ReSharper disable once UnusedMember.Local protected void ServerRequestedToDie(uLink.NetworkViewID instigatorPresenceViewID) { OnPlayerScriptDied(this, PlayerPresence.TryGetPlayerPresenceFromNetworkViewID(instigatorPresenceViewID)); }