1
- var canvasWidth = 900 ;
2
- var canvasHeight = 600 ;
3
- var tileWidth = 60 ;
4
- var tileHeight = 60 ;
5
- var numHorizontalTiles = canvasWidth / tileWidth ;
6
- var numVerticalTiles = canvasHeight / tileHeight ;
7
- var exitLoc = { x : - 1 , y : - 1 } ;
1
+ var canvasWidth = 1024
2
+ var canvasHeight = 768
3
+ var tileWidth = 64
4
+ var tileHeight = 64
5
+ var numHorizontalTiles = canvasWidth / tileWidth
6
+ var numVerticalTiles = canvasHeight / tileHeight
7
+ var exitLoc = { x : 5 , y : 5 }
8
+ var player
8
9
9
10
Game = {
10
11
start : function ( ) {
11
-
12
12
Crafty . init ( canvasWidth , canvasHeight ) ;
13
13
14
+ //scene transition function
15
+ function load_scene ( scene , duration ) {
16
+ Crafty . e ( "2D, DOM, Tween, Color" )
17
+ . attr ( { alpha :0.0 , x :0 , y :0 , z : 5 , w :canvasWidth , h :canvasHeight } )
18
+ . color ( "#000" )
19
+ . tween ( { alpha : 1.0 } , duration )
20
+ . bind ( "TweenEnd" , function ( ) {
21
+ Crafty . scene ( scene ) ;
22
+ Crafty . e ( "2D, DOM, Tween, Color" )
23
+ . attr ( { alpha :1.0 , x :0 , y :0 , z : 5 , w :canvasWidth , h :canvasHeight } )
24
+ . color ( "#000" )
25
+ . tween ( { alpha : 0.0 } , duration * 2 ) ;
26
+ } ) ;
27
+ }
28
+
14
29
//loading scene
15
30
Crafty . scene ( "loading" , function ( ) {
16
31
17
- Crafty . load ( [ "assets/images/crafty-sprite .png" ,
18
- "assets/images/titleScreen .png" ,
32
+ Crafty . load ( [ "assets/images/titleScreen .png" ,
33
+ "assets/images/title .png" ,
19
34
"assets/images/newGame.png" ,
20
35
"assets/images/newGameHover.png" ,
21
36
"assets/images/loadGame.png" ,
22
37
"assets/images/loadGameHover.png" ,
38
+ "assets/images/crafty-sprite.png" ,
39
+ "assets/images/doorwaySprite.png" ,
23
40
"assets/sounds/doorSound.mp3" ,
24
- "assets/sounds/doorSound.wav" ,
25
41
"assets/sounds/doorSound.ogg" ,
26
42
"assets/sounds/background.mp3" ,
27
- "assets/sounds/background.wav" ,
28
43
"assets/sounds/background.ogg" ] ,
29
44
function ( ) {
30
- Crafty . sprite ( 60 , "assets/images/crafty-sprite.png" , {
45
+ Crafty . sprite ( tileWidth , "assets/images/sprites /crafty-sprite.png" , {
31
46
grass1 : [ 0 , 0 ] ,
32
47
grass2 : [ 1 , 0 ] ,
33
48
grass3 : [ 2 , 0 ] ,
@@ -37,65 +52,112 @@ Game = {
37
52
bush2 : [ 1 , 2 ] ,
38
53
player : [ 0 , 3 ]
39
54
} ) ;
40
- Crafty . sprite ( 60 , "assets/images/doorwaySprite.png" , {
55
+ Crafty . sprite ( tileWidth , "assets/images/sprites /doorwaySprite.png" , {
41
56
doorway : [ 0 , 0 ]
42
57
} ) ;
43
58
Crafty . audio . add ( {
44
59
background : [ "assets/sounds/background.mp3" ,
45
- "assets/sounds/background.wav" ,
46
60
"assets/sounds/background.ogg" ] ,
47
61
doorSound : [ "assets/sounds/doorSound.mp3" ,
48
- "assets/sounds/doorSound.wav" ,
49
62
"assets/sounds/doorSound.ogg" ]
50
63
} ) ;
51
- Crafty . audio . play ( "background" , - 1 ) ;
52
- Crafty . scene ( "titleScreen" ) ;
64
+ Crafty . audio . play ( "background" , - 1 )
65
+ load_scene ( "titleScreen" , 40 )
53
66
} ) ;
54
67
55
68
Crafty . background ( "#000" ) ;
56
69
Crafty . e ( "2D, DOM, Text" )
57
- . attr ( { w : 100 , h : 20 , x : 350 , y : 290 } ) //x=(canvasWidth-this._w)/2, y=(canvasHeight-this._h)/2
70
+ . attr ( { w : 100 , h : 20 , x : 400 , y : 290 } ) //x=(canvasWidth-this._w)/2, y=(canvasHeight-this._h)/2
58
71
. text ( "Loading" )
59
72
. css ( { "text-align" : "center" } ) ;
60
73
} ) ;
61
74
62
75
// titleScreen scene
63
76
Crafty . scene ( "titleScreen" , function ( ) {
64
- Crafty . e ( "2D, DOM, Image" ) . image ( " assets/images/titleScreen.png" )
77
+ Crafty . background ( "url(' assets/images/titleScreen/background .png')" )
65
78
66
- var title = Crafty . e ( "2D, DOM, Image, Tween" )
67
- . image ( "assets/images/title.png" )
68
- . attr ( { alpha : 0.0 , x : 108 , y : 50 } ) //x=(canvasWidth-this._w)/2
69
- . tween ( { alpha : 1.0 } , 100 ) ;
79
+ var title = Crafty . e ( "2D, DOM, Image" )
80
+ . image ( "assets/images/titleScreen/title.png" )
81
+ . attr ( { x : 180 , y : 150 } ) //x=(canvasWidth-this._w)/2
70
82
71
- var newGame = Crafty . e ( "2D, DOM, Mouse, Image, Tween" )
72
- . image ( "assets/images/newGame.png" )
73
- . attr ( { alpha : 0.0 , x : 277 , y : 400 } ) // x=(canvasWidth-this._w)/2
74
- . tween ( { alpha : 1.0 } , 100 )
83
+ var newGame = Crafty . e ( "2D, DOM, Mouse, Image" )
84
+ . image ( "assets/images/titleScreen/newGame.png" )
85
+ . attr ( { x : 350 , y : 500 } ) // x=(canvasWidth-this._w)/2
75
86
. bind ( "MouseOver" , function ( ) {
76
- newGame . image ( "assets/images/newGameHover.png" ) ;
87
+ newGame . image ( "assets/images/titleScreen/ newGameHover.png" ) ;
77
88
} )
78
89
. bind ( "MouseOut" , function ( ) {
79
- newGame . image ( "assets/images/newGame.png" ) ;
90
+ newGame . image ( "assets/images/titleScreen/ newGame.png" ) ;
80
91
} )
81
92
. bind ( "Click" , function ( ) {
82
- Crafty . scene ( "main" ) ;
93
+ load_scene ( "main" , 40 ) ;
83
94
} )
84
95
85
- var loadGame = Crafty . e ( "2D, DOM, Mouse, Image, Tween" )
86
- . image ( "assets/images/loadGame.png" )
87
- . attr ( { alpha : 0.0 , x : 277 , y : 500 } ) // x=(canvasWidth-this._w)/2
88
- . tween ( { alpha : 1.0 } , 100 )
96
+ var loadGame = Crafty . e ( "2D, DOM, Mouse, Image" )
97
+ . image ( "assets/images/titleScreen/loadGame.png" )
98
+ . attr ( { x : 350 , y : 600 } ) // x=(canvasWidth-this._w)/2
89
99
. bind ( "MouseOver" , function ( ) {
90
- loadGame . image ( "assets/images/loadGameHover.png" ) ;
100
+ loadGame . image ( "assets/images/titleScreen/ loadGameHover.png" ) ;
91
101
} )
92
102
. bind ( "MouseOut" , function ( ) {
93
- loadGame . image ( "assets/images/loadGame.png" ) ;
103
+ loadGame . image ( "assets/images/titleScreen/ loadGame.png" ) ;
94
104
} )
95
105
. bind ( "Click" , function ( ) {
96
- alert ( "load game scene" ) ;
106
+ load_scene ( 'loadGameScreen' , 40 )
97
107
} )
98
108
} ) ;
109
+
110
+ Crafty . scene ( "loadGameScreen" , function ( ) {
111
+ // Load game window image
112
+ Crafty . e ( "2D, DOM, Image" ) . image ( "assets/images/loadGameScreen/scroll.png" )
113
+ . attr ( { x : 250 , y : 25 , w : 20 , h : 20 } )
114
+ // text on load window game
115
+ Crafty . e ( "2D, DOM, Text" )
116
+ . attr ( { x : 410 , y : 200 , w : 500 } )
117
+ . text ( "Load Game" )
118
+ . textFont ( { size : "45px" , weight : "bold" } )
119
+ . textColor ( "#7B4A12" , 0.9 )
120
+ . unselectable ( )
121
+ // Memory Slot 1
122
+ var slot1 = Crafty . e ( "2D, DOM, Image, Mouse, Tween" )
123
+ . image ( "assets/images/loadGameScreen/slot1.png" )
124
+ . attr ( { x : 355 , y : 350 } )
125
+ . bind ( "MouseOver" , function ( ) {
126
+ slot1 . image ( "assets/images/loadGameScreen/slot1select.png" )
127
+ } )
128
+ . bind ( "MouseOut" , function ( ) {
129
+ slot1 . image ( "assets/images/loadGameScreen/slot1.png" )
130
+ } )
131
+ . bind ( "Click" , function ( ) {
132
+ Crafty . storage . load ( "slot1" )
133
+ } )
134
+ // Memory Slot 2
135
+ var slot2 = Crafty . e ( "2D, DOM, Image, Mouse" )
136
+ . image ( "assets/images/loadGameScreen/slot2.png" )
137
+ . attr ( { x : 355 , y : 450 } )
138
+ . bind ( "MouseOver" , function ( ) {
139
+ slot2 . image ( "assets/images/loadGameScreen/slot2select.png" )
140
+ } )
141
+ . bind ( "MouseOut" , function ( ) {
142
+ slot2 . image ( "assets/images/loadGameScreen/slot2.png" )
143
+ } )
144
+ . bind ( "Click" , function ( ) {
145
+ Crafty . storage . load ( "slot1" )
146
+ } )
147
+ // Back to Main Menu Button
148
+ var backToMain = Crafty . e ( "2D, DOM, Image, Mouse" )
149
+ . image ( "assets/images/loadGameScreen/backToMain.png" )
150
+ . attr ( { x : 10 , y : 10 } )
151
+ . bind ( "MouseOver" , function ( ) {
152
+ backToMain . image ( "assets/images/loadGameScreen/backToMainSelect.png" )
153
+ } )
154
+ . bind ( "MouseOut" , function ( ) {
155
+ backToMain . image ( "assets/images/loadGameScreen/backToMain.png" )
156
+ } )
157
+ . bind ( "Click" , function ( ) {
158
+ load_scene ( "titleScreen" , 40 )
159
+ } )
160
+ } ) ;
99
161
100
162
Crafty . c ( 'Grid' , {
101
163
init : function ( ) {
@@ -135,6 +197,7 @@ Game = {
135
197
} ,
136
198
setID : function ( ID ) {
137
199
this . ID = ID ;
200
+ return this ;
138
201
}
139
202
} ) ;
140
203
@@ -147,10 +210,11 @@ Game = {
147
210
148
211
Crafty . c ( 'PlayerCharacter' , {
149
212
init : function ( ) {
150
- this . requires ( 'Actor, Fourway, player, SpriteAnimation, Collision' )
213
+ this . requires ( 'Actor, Fourway, player, SpriteAnimation, Collision, Persist ' )
151
214
. fourway ( 3 )
152
215
. stopOnSolids ( )
153
216
. exitOnDoors ( )
217
+ . attr ( { z : 3 } )
154
218
. animate ( 'PlayerMovingUp' , 3 , 3 , 5 )
155
219
. animate ( 'PlayerMovingRight' , 9 , 3 , 11 )
156
220
. animate ( 'PlayerMovingDown' , 0 , 3 , 2 )
@@ -178,10 +242,8 @@ Game = {
178
242
179
243
stopMovement : function ( ent ) {
180
244
if ( this . _movement ) {
181
-
182
245
for ( var i = 0 ; i < ent . length ; i ++ ) {
183
246
var obj = ent [ i ] . obj ;
184
-
185
247
var up = ( ! obj . contains ( this . _x , this . _y , 2 , 0 ) ) && ( ! obj . contains ( this . _x + this . _w - 2 , this . _y , 2 , 0 ) ) ;
186
248
var down = ( ! obj . contains ( this . _x , this . _y + this . _h , 2 , 0 ) ) && ( ! obj . contains ( this . _x + this . _w - 2 , this . _y + this . _h , 2 , 0 ) ) ;
187
249
var left = ( ! obj . contains ( this . _x , this . _y , 0 , 2 ) ) && ( ! obj . contains ( this . _x , this . _y + this . _h - 2 , 0 , 2 ) ) ;
@@ -197,15 +259,15 @@ Game = {
197
259
} ,
198
260
199
261
exitOnDoors : function ( ) {
200
- this . onHit ( 'Door' , this . exit ) ;
262
+ this . onHit ( 'Door' , function ( ent ) {
263
+ var door = ent [ 0 ] . obj ;
264
+ if ( door . contains ( this . _x + ( this . _w / 2 ) - 5 , this . _y + ( this . _h / 2 ) - 5 , 10 , 10 ) ) {
265
+ Crafty . audio . play ( "doorSound" ) ;
266
+ exitLoc = door . at ( ) ;
267
+ load_scene ( door . ID , 40 ) ;
268
+ }
269
+ } ) ;
201
270
return this ;
202
- } ,
203
-
204
- exit : function ( ent ) {
205
- Crafty . audio . play ( "doorSound" ) ;
206
- var door = ent [ 0 ] . obj ;
207
- doorLoc = door . at ( ) ;
208
- Crafty . scene ( door . ID ) ;
209
271
}
210
272
} ) ;
211
273
@@ -220,12 +282,11 @@ Game = {
220
282
}
221
283
Change: OCCUPIED
222
284
*/
223
- //generate the grass along the x-axis
285
+ Crafty . background ( "url('assets/images/sprites/grassField.png')" )
286
+
224
287
for ( var i = 0 ; i < numHorizontalTiles ; i ++ ) {
225
288
for ( var j = 0 ; j < numVerticalTiles ; j ++ ) {
226
- Crafty . e ( "Actor, grass" + Crafty . math . randomInt ( 1 , 4 ) ) . at ( i , j )
227
-
228
- if ( i > 0 && i < ( numHorizontalTiles - 1 ) && j > 0 && j < ( numVerticalTiles - 1 ) && Crafty . math . randomInt ( 0 , 50 ) > 49 ) {
289
+ if ( i > 0 && i < ( numHorizontalTiles - 1 ) && j > 0 && j < ( numVerticalTiles - 1 ) && Crafty . math . randomInt ( 0 , 50 ) > 49 ) {
229
290
Crafty . e ( "Flower" ) . at ( i , j ) ;
230
291
}
231
292
}
@@ -253,14 +314,17 @@ Game = {
253
314
//main scene
254
315
Crafty . scene ( "main" , function ( ) {
255
316
generateWorld ( ) ; //this.occupied = generateWorld(); Change: OCCUPIED
256
- Crafty . e ( "PlayerCharacter" ) . at ( 5 , 5 )
317
+ if ( ! player )
318
+ player = Crafty . e ( "PlayerCharacter" ) . at ( 5 , 5 ) ;
319
+ else
320
+ player . at ( exitLoc . x , exitLoc . y ) ;
257
321
Crafty . e ( "Door" ) . at ( 7 , 2 ) . setID ( "nextRoom" ) ;
258
322
Crafty . e ( "Door" ) . at ( 2 , 8 ) . setID ( "nextRoom" ) ;
259
323
} ) ;
260
324
261
325
Crafty . scene ( "nextRoom" , function ( ) {
262
326
generateWorld ( ) ; //this.occupied = generateWorld(); Change: OCCUPIED
263
- Crafty . e ( "PlayerCharacter" ) . at ( doorLoc . x , doorLoc . y ) ;
327
+ player . at ( exitLoc . x , exitLoc . y ) ;
264
328
Crafty . e ( "Door" ) . at ( 5 , 5 ) . setID ( "main" ) ;
265
329
Crafty . e ( "Door" ) . at ( 3 , 2 ) . setID ( "main" ) ;
266
330
} ) ;
0 commit comments