Example #1
0
        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);
				};
		}
Example #4
0
        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);
        }