Example #1
0
        public static void DoHandle(NetDataRequest data, ClientController client, string networkID)
        {
            List <ClientController> clients = new List <ClientController>(Server.ClientControllers);

            clients.RemoveAll(x => !x.Actualy);

            string id = (string)data.Values["id"].ObjectValue;

            Vector3K playerPos = client.CurrentPlayer.Object.Position;
            Vector3K playerRot = client.CurrentPlayer.Object.EulerAngles;

            Vector3K pos = new Vector3K(1.3F, -0.55F, 0).RotateVector2(playerRot.z);
            Vector3K rot = new Vector3K(0f, 0f, playerRot.z - 0.067F);

            pos.x += playerPos.x;
            pos.y += playerPos.y;

            BulletObject bullet = new BulletObject(pos, new Vector3K(0f, 0f, 0f), new Vector3K(0.28f, 0.09f, 0f), rot);

            client.MissionController.AddDynamicObject(ObjectFactory.GetObject(bullet));

            NetDataRequest allResponse = new NetDataRequest(RequestTypes.Shoot, new Dictionary <string, ObjectWrapper>()
            {
                { "id", new ObjectWrapper <string>(id) }
            });

            Server.SendResponse(clients, Utils.ToBytesJSON(allResponse), networkID);
        }
Example #2
0
        public void Update(float deltaTime)
        {
            if (!waveStarted)
            {
                if (spawnedSkeletons.Exists(x => ((x as IHuman) != null && (x as IHuman).IsLive)))
                {
                    return;
                }

                waveWaitDown += deltaTime;

                if (waveWaitDown >= WAVE_WAIT)
                {
                    WaveNumber++;
                    waveStarted = true;

                    waveWaitDown = 0f;
                }
            }
            else
            {
                waveDown += deltaTime;

                if (waveDown >= WaveDuration)
                {
                    waveStarted = false;
                    waveDown    = 0f;
                }
                else
                {
                    spawnDown += deltaTime;

                    if (spawnDown >= SpawnInterval)
                    {
                        System.Random rnd = new System.Random();

                        int r = rnd.Next(0, 3);

                        Vector3K position = new Vector3K(-15f, 15f, 0f);
                        switch (r)
                        {
                        case 1: position = new Vector3K(15f, 15f, 0f); break;

                        case 2: position = new Vector3K(15f, -15f, 0f); break;

                        case 3: position = new Vector3K(-15f, -15f, 0f); break;
                        }

                        SkeletonObject           skeleton           = new SkeletonObject(position, new Vector3K(0f, 0f, 0f), new Vector3K(2f, 2f, 2f), new Vector3K(0f, 0f, 0f));
                        SkeletonObjectController skeletonController = ObjectFactory.GetObject(skeleton) as SkeletonObjectController;

                        MissionController.AddDynamicObject(skeletonController);
                        spawnedSkeletons.Add(skeletonController);

                        spawnDown = 0f;
                    }
                }
            }
        }
Example #3
0
 public static Vector3K RotateVector2(this Vector3K vector, float angle)
 {
     return(new Vector3K(
                vector.x * Mathf.Cos(angle * Mathf.Deg2Rad) - vector.y * Mathf.Sin(angle * Mathf.Deg2Rad),
                vector.x * Mathf.Sin(angle * Mathf.Deg2Rad) + vector.y * Mathf.Cos(angle * Mathf.Deg2Rad),
                0
                ));
 }
        public BaseMissionObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles)
        {
            ID = Guid.NewGuid().ToString();

            Position    = position;
            Center      = center;
            Size        = size;
            EulerAngles = eulerAngles;
        }
Example #5
0
        public void SetTransformModel(BaseMissionObjectController model, Vector3K position, Vector3K eulerAngles)
        {
            model.Object.Position    = position;
            model.Object.EulerAngles = eulerAngles;

            if (Math.Abs(model.Object.Position.x) > 1000 || Math.Abs(model.Object.Position.y) > 1000)
            {
                model.Destroy();
                return;
            }
        }
Example #6
0
        public SkeletonObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles) : base(position, center, size, eulerAngles)
        {
            ID = Guid.NewGuid().ToString();

            Position    = position;
            Center      = center;
            Size        = size;
            EulerAngles = eulerAngles;

            CanBreaked = false;

            Name   = "Skeleton";
            NameID = "Skeleton";
        }
Example #7
0
        public TestObject(Vector3K position, Vector3K center, Vector3K size, Vector3K eulerAngles) : base(position, center, size, eulerAngles)
        {
            ID = Guid.NewGuid().ToString();

            Position    = position;
            Center      = center;
            Size        = size;
            EulerAngles = eulerAngles;

            Name   = "Test Object";
            NameID = "TestObject";

            IsStatic = true;
        }
Example #8
0
        public void SetTransform(Vector3K position, Vector3K eulerAngles)
        {
            Object.Position    = position;
            Object.EulerAngles = eulerAngles;

            if (Mathf.Abs(Object.Position.x) > 1000 || Mathf.Abs(Object.Position.y) > 1000)
            {
                Destroy();
                return;
            }

            if (body != null)
            {
                body.SetXForm(new Box2DX.Common.Vec2(position.x, position.y), Object.EulerAngles.z * Mathf.Deg2Rad);
            }
        }
        public override void Update(float deltaTime)
        {
            CheckHealth();

            List <BaseMissionObjectController> players = MissionController.DynamicObjects.Values.Where(x => x.GetType() == typeof(PlayerObjectController) && (x.Object as PlayerObject).IsLive).ToList();

            PlayerObjectController targetPlayer = null;

            float distance = float.MaxValue;

            foreach (BaseMissionObjectController pl in players)
            {
                if (distance > Vector3K.Distance(pl.Object.Position, Object.Position))
                {
                    targetPlayer = pl as PlayerObjectController;
                    distance     = Vector3K.Distance(pl.Object.Position, Object.Position);
                }
            }

            if (targetPlayer == null)
            {
                return;
            }

            float dist = Vector3K.Distance(targetPlayer.Object.Position, Object.Position);

            if (dist > 2f)
            {
                if (dist > 4f)
                {
                    hitTimeDown = 0f;
                }

                Object.EulerAngles.z = (float)(Mathf.Rad2Deg * (Math.Atan2(targetPlayer.Object.Position.y - Object.Position.y, targetPlayer.Object.Position.x - Object.Position.x)));

                Object.Position.x += Mathf.Cos(Object.EulerAngles.z * Mathf.Deg2Rad) * (Object as SkeletonObject).MoveSpeed * deltaTime;
                Object.Position.y += Mathf.Sin(Object.EulerAngles.z * Mathf.Deg2Rad) * (Object as SkeletonObject).MoveSpeed * deltaTime;

                body.SetXForm(new Box2DX.Common.Vec2(Object.Position.x, Object.Position.y), Object.EulerAngles.z * Mathf.Deg2Rad);
            }
            else
            {
                hitTimeDown -= deltaTime;
                CheckHit(targetPlayer);
            }
        }
Example #10
0
        public static void DoHandle(NetDataRequest data, ClientController client, string networkID)
        {
            List <ClientController> clients = new List <ClientController>(Server.ClientControllers);

            clients.RemoveAll(x => !x.Actualy);

            string id = (string)data.Values["id"].ObjectValue;

            if (!client.MissionController.DynamicObjects.ContainsKey(id))
            {
                return;
            }
            if (client.CurrentPlayer == null)
            {
                return;
            }

            Vector3K position    = (Vector3K)data.Values["position"].ObjectValue;
            Vector3K eulerAngles = (Vector3K)data.Values["eulerAngles"].ObjectValue;

            client.CurrentPlayer.SetTransform(position, eulerAngles);
        }
Example #11
0
 public static Vector3 FromServerVector3(this Vector3K vector)
 {
     return(new Vector3(vector.x, vector.y, vector.z));
 }