-
Notifications
You must be signed in to change notification settings - Fork 0
/
Player.as
113 lines (85 loc) · 2.75 KB
/
Player.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package actors
{
import flash.geom.Point;
import net.flashpunk.Entity;
import net.flashpunk.FP;
import net.flashpunk.Graphic;
import net.flashpunk.Mask;
import net.flashpunk.graphics.Spritemap;
import net.flashpunk.utils.Input;
import net.flashpunk.utils.Key;
import system.Actors;
import system.GC;
public class Player extends Entity
{
public var playerSprite:Spritemap = new Spritemap(Actors.PLAYER, GC.AD_PLAYERSPRITEWIDTH, GC.AD_PLAYERSPRITEHEIGHT);
public var currentAnim:String = GC.AD_PLAYERDEFAULTANIM;
public var speed:int = GC.AD_PLAYERDEFAULTSPEED;
public function Player(position:Point) {
setupSprite();
type = "player";
// playerSprite = _playerSprite;
graphic = playerSprite;
playerSprite.play(currentAnim);
x = position.x;
y = position.y;
// Temporary until I can think of a way to make this dynamic.
setHitbox(32,32,0,-16);
}
public function colliding(position:Point):Boolean {
// Check for collision against any of the existing tile types.
if (collide("tile_collision", position.x, position.y) ||
collide("npc", position.x, position.y)) {
return true;
} else {
return false;
}
}
override public function update():void {
layer = -y;
// FP.log(layer.toString());
playerSprite.play(currentAnim);
if (Input.check("walk_right")) {
if (!colliding(new Point(x + speed, y))) {
currentAnim = "walk_right";
x += speed;
}
} else if (Input.check("walk_left")) {
if (!colliding(new Point(x - speed, y))) {
currentAnim = "walk_left";
x -= speed;
}
} else if (Input.check("walk_down")) {
if (!colliding(new Point(x, y + speed))) {
currentAnim = "walk_down";
y += speed;
}
} else if (Input.check("walk_up")) {
if (!colliding(new Point(x, y - speed))) {
currentAnim = "walk_up";
y -= speed;
}
}
// CHeck if the buttons have been released.
if (Input.released("walk_right")) {
currentAnim = "stand_right";
} else if (Input.released("walk_left")) {
currentAnim = "stand_left";
} else if (Input.released("walk_down")) {
currentAnim = "stand_down";
} else if (Input.released("walk_up")) {
currentAnim = "stand_up";
}
}
public function setupSprite():void {
playerSprite.add("walk_down", [0, 1, 2, 3], 8, true);
playerSprite.add("walk_left", [4, 5, 6, 7], 8, true);
playerSprite.add("walk_right", [8, 9, 10, 11], 8, true);
playerSprite.add("walk_up", [12, 13, 14, 15], 8, true);
playerSprite.add("stand_down", [0], 0, false);
playerSprite.add("stand_left", [4], 0, false);
playerSprite.add("stand_right", [8], 0, false);
playerSprite.add("stand_up", [12], 0, false);
}
}
}