Inheritance: uLink.MonoBehaviour
Beispiel #1
0
    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);
 }
Beispiel #9
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));
            }
        }
Beispiel #10
0
 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;
         }
     }
 }
Beispiel #12
0
 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;
         }
     }
 }
Beispiel #15
0
 private void ReceiveEnemyRemoved(PlayerScript enemy, PlayerPresence instigator)
 {
     TryRemoveEnemyLockingOnToUs(enemy);
 }
Beispiel #16
0
 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);
 }
Beispiel #19
0
 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;
                }
            }
        }
    }
Beispiel #22
0
 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));
 }
Beispiel #29
0
 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;
 }
Beispiel #31
0
 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;
                }
            }
        }
    }
Beispiel #33
0
 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);
    }
Beispiel #35
0
// ReSharper disable once UnusedMember.Local
    protected void ServerRequestedToDie(uLink.NetworkViewID instigatorPresenceViewID)
    {
        OnPlayerScriptDied(this, PlayerPresence.TryGetPlayerPresenceFromNetworkViewID(instigatorPresenceViewID));
    }