Пример #1
0
        public void Update(GameTime time)
        {
            KeyboardState keyboard_state = Keyboard.GetState();

            if (keyboard_state.IsKeyDown(Key.A))
            {
                camera.Move(new Vector2(-2, 0));
            }
            if (keyboard_state.IsKeyDown(Key.W))
            {
                camera.Move(new Vector2(0, -2));
            }
            if (keyboard_state.IsKeyDown(Key.D))
            {
                camera.Move(new Vector2(2, 0));
            }
            if (keyboard_state.IsKeyDown(Key.S))
            {
                camera.Move(new Vector2(0, 2));
            }

            //Pathfinding debug test
            if (keyboard_state.IsKeyUp(Key.Enter) && old_keyboard.IsKeyDown(Key.Enter))
            {
                DateTime start = DateTime.Now;
                Node     n     = AStar.FindPath(map, new Point(0, 0), new Point(2, 0));
                DateTime end   = DateTime.Now;

                Console.WriteLine("Time to path: {0}", (end - start).TotalMilliseconds);
                if (n == null)
                {
                    Console.WriteLine("Goal is unreachable.");
                }
                else
                {
                    while (n.Parent != null)
                    {
                        Console.Write("{0}->", n.location.ToString());
                        n = n.Parent;
                    }

                    Console.WriteLine("{0}", n.location.ToString());
                }
            }

            if (keyboard_state.IsKeyUp(Key.ShiftRight) && old_keyboard.IsKeyDown(Key.ShiftRight))
            {
                Mob m = new Mob(path, spawn)
                {
                    Speed = 1
                };
                mobs.Add(m);
            }

            old_keyboard = keyboard_state;

            map.Update(time);
            for (int i = mobs.Count - 1; i >= 0; i--)
            {
                Mob m = mobs[i];
                if (m.Dead)
                {
                    mobs.Remove(m);
                }
                else
                {
                    m.Update(time);
                }
            }
        }