source: 2012/27/DenisZ/TheDungeonGame/TheDungeonGame/TheDungeonGame/Player.cs @ 3538

Revision 3538, 3.9 KB checked in by dezhidki, 8 years ago (diff)

Updated camera motion

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Controls;
7using MathHelper;
8using Rooms;
9
10namespace Entity
11{
12    class Player : PhysicsObject
13    {
14        public const double playerWidth = 75;
15        public const double playerHeight = 75;
16       // private PhysicsObject head;
17        public Vector movementVector = Vector.Zero;
18        public bool isMoving = false;
19        private Keyboard keyboard;
20        public double speed = 200;
21        private TheDungeonGame game;
22        public Room currentRoom;
23
24        public Player(TheDungeonGame game, Vector pos)
25            : base(playerWidth, playerHeight)
26        {
27            this.game = game;
28            keyboard = game.Keyboard;
29            CanRotate = false;
30            currentRoom =  game.LevelGen.getRoomAt(game.LevelGen.CenterRoom);
31            setupKeys();
32        }
33
34        private void setupKeys()
35        {
36            keyboard.Listen(Key.W, ButtonState.Down, move, "Move Up", new Vector(0, speed));
37            keyboard.Listen(Key.A, ButtonState.Down, move, "Move Left", new Vector(-speed, 0));
38            keyboard.Listen(Key.S, ButtonState.Down, move, "Move Down", new Vector(0, -speed));
39            keyboard.Listen(Key.D, ButtonState.Down, move, "Move Right", new Vector(speed, 0));
40
41            keyboard.Listen(Key.W, ButtonState.Released, removeMovement, null, new Vector(0, speed));
42            keyboard.Listen(Key.A, ButtonState.Released, removeMovement, null, new Vector(-speed, 0));
43            keyboard.Listen(Key.S, ButtonState.Released, removeMovement, null, new Vector(0, -speed));
44            keyboard.Listen(Key.D, ButtonState.Released, removeMovement, null, new Vector(speed, 0));
45        }
46
47        public void performCollision(PhysicsObject player, PhysicsObject target)
48        {
49            Room room;
50            if (target.Tag.Equals(RoomDirection.North))
51            {
52                room = game.LevelGen.getRoomAt(currentRoom.PosOnGrid + RoomDirection.getOffsetFromDir(RoomDirection.North));
53                game.moveToRoom(room);
54                currentRoom = room;
55            }else
56                if(target.Tag.Equals(RoomDirection.East))
57                {
58                    room = game.LevelGen.getRoomAt(currentRoom.PosOnGrid + RoomDirection.getOffsetFromDir(RoomDirection.East));
59                    game.moveToRoom(room);
60                    currentRoom = room;
61                }
62                else
63                    if(target.Tag.Equals(RoomDirection.South))
64                    {
65                        room = game.LevelGen.getRoomAt(currentRoom.PosOnGrid + RoomDirection.getOffsetFromDir(RoomDirection.South));
66                        game.moveToRoom(room);
67                        currentRoom = room;
68                    }
69                    else 
70                        if(target.Tag.Equals(RoomDirection.West))
71                        {
72                            room = game.LevelGen.getRoomAt(currentRoom.PosOnGrid + RoomDirection.getOffsetFromDir(RoomDirection.West));
73                            game.moveToRoom(room);
74                            currentRoom = room;
75                        }
76        }
77
78        public override void Update(Time time)
79        {
80            if (!isMoving)
81            {
82                movementVector = Vector.Zero;
83                Stop();
84            }
85
86            isMoving = false;
87
88            base.Update(time);
89        }
90
91        public void move(Vector vec)
92        {
93            if (vec.X != 0)
94                movementVector.X = vec.X;
95            if (vec.Y != 0)
96                movementVector.Y = vec.Y;
97
98            Move(movementVector);
99            isMoving = true;
100        }
101
102        public void removeMovement(Vector vec)
103        {
104            movementVector = VecMath.sub(movementVector, vec);
105        }
106    }
107}
Note: See TracBrowser for help on using the repository browser.