private void CreateLocalCoPlayer() { var c = new CoPlayer { Identity = new SharedClass1.RemoteEvents.UserPlayerAdvertiseArguments { name = MyIdentity.Value.name, user = MyIdentity.Value.user } }.AddTo(CoPlayers); LocalCoPlayer = c; LocalCoPlayer.WeaponIdentity = Map.EgoWeaponIdentity; CreateLocalCoPlayerGuard(); this.Map.Sync_Suicide += delegate { if (this.LocalCoPlayer.Guard != null) { this.LocalCoPlayer.Guard.TakeDamage(this.LocalCoPlayer.Guard.Health, this.Map.EgoWeaponIdentity); } }; }
private void PlayerAdvertise(SharedClass1.RemoteEvents.UserPlayerAdvertiseArguments e) { CoPlayer c = CoPlayers.SingleOrDefault(k => k.Identity.user == e.user); #region does that coplayer already exist? if (c == null) { // the player has just joined c = new CoPlayer { Identity = e }.AddTo(CoPlayers); //c.WalkToTeleported += // delegate // { // this.Map.WriteLine(c.Identity.name + " has teleported"); // }; //c.WalkToDone += // delegate // { // this.Map.WriteLine(c.Identity.name + " has stopped"); // }; //c.WalkToStart += // delegate // { // this.Map.WriteLine(c.Identity.name + " started walking"); // }; } #endregion if (c.Guard == null) { Map.WriteLine("coplayer " + e.name + " spawned as a new guard"); c.Guard = this.Map.CreateGuard().AddTo(this.Map.EgoView.BlockingSprites); c.Guard.MinimapZIndex = SpriteInfoExtended.MinimapZIndex_OnTop; c.Guard.MinimapColor = 0xff0000ff; c.Guard.MinimapInactiveColor = 0x80000080; c.Guard.TakeDamage += (damage, DamageOwner) => { // we will broadcast damage by our weapons if (DamageOwner != Map.EgoWeaponIdentity) return; // we should not mirror remoted damage if (DisableAddDamageToCoPlayer) return; // we have been shot Messages.AddDamageToCoPlayer(c.Identity.user, damage); }; c.Guard.TakeDamageDone += (damage, DamageOwner) => { if (c.Guard.Health <= 0) { c.Guard.MinimapColor = 0xff00007f; c.Guard = null; Map.WriteLine("coplayer " + e.name + " died and left a corpse"); if (DamageOwner == Map.EgoWeaponIdentity) { // ego killed a coplayer // killing a coplayer will result in revealing end level if (this.Map.HalfOfTheTreasureCollected != null) this.Map.HalfOfTheTreasureCollected(); } else { // coplayer killed a coplayer } } }; this.Map.EgoView.UpdatePOV(true); } var MemoryStream_UInt8 = e.vector.Select(i => (byte)i).ToArray(); var ms = new MemoryStream(MemoryStream_UInt8); var mr = new BinaryReader(ms); c.Guard.Health = mr.ReadDouble(); c.Kills = mr.ReadInt32(); c.Score = mr.ReadInt32(); c.Guard.Direction = mr.ReadDouble(); c.Guard.Position = new Point(mr.ReadDouble(), mr.ReadDouble()); //this.Map.WriteLine("present: " + e.name); }
private void CreateLocalCoPlayer() { var c = new CoPlayer { Identity = new SharedClass1.RemoteEvents.UserPlayerAdvertiseArguments { name = MyIdentity.Value.name, user = MyIdentity.Value.user } }.AddTo(CoPlayers); LocalCoPlayer = c; LocalCoPlayer.WeaponIdentity = Map.EgoWeaponIdentity; CreateLocalCoPlayerGuard(); this.Map.Sync_Suicide += delegate { if (this.LocalCoPlayer.Guard != null) this.LocalCoPlayer.Guard.TakeDamage(this.LocalCoPlayer.Guard.Health, this.Map.EgoWeaponIdentity); }; }
private void PlayerAdvertise(SharedClass1.RemoteEvents.UserPlayerAdvertiseArguments e) { CoPlayer c = CoPlayers.SingleOrDefault(k => k.Identity.user == e.user); #region does that coplayer already exist? if (c == null) { // the player has just joined c = new CoPlayer { Identity = e }.AddTo(CoPlayers); //c.WalkToTeleported += // delegate // { // this.Map.WriteLine(c.Identity.name + " has teleported"); // }; //c.WalkToDone += // delegate // { // this.Map.WriteLine(c.Identity.name + " has stopped"); // }; //c.WalkToStart += // delegate // { // this.Map.WriteLine(c.Identity.name + " started walking"); // }; } #endregion if (c.Guard == null) { Map.WriteLine("coplayer " + e.name + " spawned as a new guard"); c.Guard = this.Map.CreateGuard().AddTo(this.Map.EgoView.BlockingSprites); c.Guard.MinimapZIndex = SpriteInfoExtended.MinimapZIndex_OnTop; c.Guard.MinimapColor = 0xff0000ff; c.Guard.MinimapInactiveColor = 0x80000080; c.Guard.TakeDamage += (damage, DamageOwner) => { // we will broadcast damage by our weapons if (DamageOwner != Map.EgoWeaponIdentity) { return; } // we should not mirror remoted damage if (DisableAddDamageToCoPlayer) { return; } // we have been shot Messages.AddDamageToCoPlayer(c.Identity.user, damage); }; c.Guard.TakeDamageDone += (damage, DamageOwner) => { if (c.Guard.Health <= 0) { c.Guard.MinimapColor = 0xff00007f; c.Guard = null; Map.WriteLine("coplayer " + e.name + " died and left a corpse"); if (DamageOwner == Map.EgoWeaponIdentity) { // ego killed a coplayer // killing a coplayer will result in revealing end level if (this.Map.HalfOfTheTreasureCollected != null) { this.Map.HalfOfTheTreasureCollected(); } } else { // coplayer killed a coplayer } } }; this.Map.EgoView.UpdatePOV(true); } var MemoryStream_UInt8 = e.vector.Select(i => (byte)i).ToArray(); var ms = new MemoryStream(MemoryStream_UInt8); var mr = new BinaryReader(ms); c.Guard.Health = mr.ReadDouble(); c.Kills = mr.ReadInt32(); c.Score = mr.ReadInt32(); c.Guard.Direction = mr.ReadDouble(); c.Guard.Position = new Point(mr.ReadDouble(), mr.ReadDouble()); //this.Map.WriteLine("present: " + e.name); }