@@ -9,6 +9,7 @@ function createAndRenderMap(o){
9
9
mapOptions :{ } ,
10
10
// Min room size on cleaning.
11
11
minRoomSize :50 ,
12
+ cleanSmallRooms :true ,
12
13
createEnemies :true ,
13
14
enemiesPercent :10 ,
14
15
createBoss :true ,
@@ -37,20 +38,24 @@ function createAndRenderMap(o){
37
38
map . createMap ( ) ;
38
39
//map.createMapFromSample(samples[2]);
39
40
map . createRooms ( ) ;
40
- if ( o . minRoomSize > 0 ) { map . removeSmallRooms ( o . minRoomSize ) ; }
41
+ if ( o . minRoomSize > 0 && o . cleanSmallRooms ) { map . removeSmallRooms ( o . minRoomSize ) ; }
41
42
42
43
// At this point we can consider the map geography won't change, so we can
43
44
// generate some data about it
44
45
var walkableCells = map . _getWalkableCells ( false ) ;
45
46
var walkableSafeCells = map . _getWalkableCells ( true ) ;
46
47
48
+ // Reset ennemies and items
49
+ dead_things = { } ;
50
+ living_things = { player : basePlayer } ;
51
+
47
52
/*
48
53
"game" specific "mechanisms" here. This is not included in the class
49
54
(beside of map.addItem())
50
55
*/
51
56
52
57
// Creating enemies, taking size of the map in account
53
- if ( o . createEnemies ) { ( 'enemy' , living_things . player . level , walkableSafeCells . length ) ; }
58
+ if ( o . createEnemies ) { createEnemies ( 'enemy' , living_things . player . level , walkableSafeCells . length , o . enemiesPercent ) ; }
54
59
if ( o . createBoss ) { createEnemies ( 'boss' , living_things . player . level , null , 1 ) ; }
55
60
// Adding to the map
56
61
if ( o . placeLivingThings ) { map . addItems ( living_things , true ) ; }
@@ -60,13 +65,15 @@ function createAndRenderMap(o){
60
65
if ( o . createStrenghtTokens ) { createSimpleItem ( 'token_strength' , walkableSafeCells . length , o . strenghtTokenMapPercent ) ; }
61
66
if ( o . createDamageTokens ) { createSimpleItem ( 'token_damage' , walkableSafeCells . length , o . damageTokenMapPercent ) ; }
62
67
// Adding them to the map.
63
- if ( o . placeDeadThings ) { map . addItems ( dead_things , ! o . placeObjectsOnDamagingCells ) ; }
64
68
69
+ if ( o . placeDeadThings ) { map . addItems ( dead_things , ! o . placeObjectsOnDamagingCells ) ; }
65
70
// Debug
66
71
//map.outlineRooms();
67
72
if ( o . drawPathes ) { map . _findPaths ( ) ; }
68
73
69
74
// Render the map
75
+ // Reset the output
76
+ $ ( '#grid' ) . html ( '<div id="rooms"></div>' ) ;
70
77
map . jQueryRender ( '#grid' ) ;
71
78
72
79
/***************************************************************************
@@ -108,6 +115,33 @@ function createAndRenderMap(o){
108
115
ctx . closePath ( ) ;
109
116
ctx . stroke ( ) ;
110
117
}
118
+
119
+ /********************
120
+ jQuery bindings
121
+ */
122
+
123
+ $ ( '#rooms' ) . hide ( ) ;
124
+ $ ( '#map-pathes' ) . hide ( ) ;
125
+ // Re bind
126
+ $ ( '.map-cell' ) . hover ( function ( a ) {
127
+ $ ( '#position' ) . text ( $ ( this ) . attr ( 'class' ) )
128
+ } ) ;
129
+
130
+ // Tooltips. (base from http://www.alessioatzeni.com/blog/simple-tooltip-with-jquery-only-text/)
131
+ $ ( '.map-cell' ) . hover ( function ( ) {
132
+ // Hover over code
133
+ var cellId = $ ( this ) . attr ( 'title' ) ;
134
+ var content = 'Cell :' + displayData ( map . cells [ cellId ] ) + 'Content:' + displayData ( map . items [ map . getCellContent ( cellId ) ] ) ;
135
+ $ ( this ) . data ( 'tipText' , cellId ) . removeAttr ( 'title' ) ;
136
+ $ ( '<p class="tooltip"></p>' ) . html ( content ) . appendTo ( 'body' ) . fadeIn ( 'slow' ) ; } , function ( ) {
137
+ // Hover out code
138
+ $ ( this ) . attr ( 'title' , $ ( this ) . data ( 'tipText' ) ) ;
139
+ $ ( '.tooltip' ) . remove ( ) ;
140
+ } ) . mousemove ( function ( e ) {
141
+ var mousex = e . pageX + 20 ; //Get X coordinates
142
+ var mousey = e . pageY + 10 ; //Get Y coordinates
143
+ $ ( '.tooltip' ) . css ( { top : mousey , left : mousex } ) ;
144
+ } ) ;
111
145
}
112
146
113
147
/**
@@ -165,14 +199,15 @@ var Item=function(options){
165
199
@param string type - The type of enemy (enemy/boss)
166
200
@param int playerLevel - Player level, to generate enemy stats
167
201
@param int walkableCells - Number of walkable cells to base enemies number
202
+ @param float enemiesPercent - Percentage
168
203
@param int number - Forces the enemy number
169
204
*/
170
- function createEnemies ( type , playerLevel , walkableCells , number ) {
205
+ function createEnemies ( type , playerLevel , walkableCells , enemiesPercent , number ) {
171
206
var nb = 0 ;
172
207
if ( number != undefined ) {
173
208
nb = number ;
174
209
} else {
175
- nb = Math . floor ( 5 * walkableCells / 100 ) ;
210
+ nb = Math . floor ( enemiesPercent * walkableCells / 100 ) ;
176
211
}
177
212
// Number of enemies to generate:
178
213
var enemies = { } ;
@@ -208,14 +243,15 @@ function createEnemies(type, playerLevel, walkableCells, number){
208
243
enemyStats . giveXp = enemyStats . level * 40 ;
209
244
}
210
245
211
- living_things [ type + '_' + i ] = new Item ( {
246
+ living_things [ type + '_' + i ] = new Item ( {
212
247
name :enemy . name ,
213
248
description :enemy . description + ' <a href="' + enemy . more + '" target="_blank">More...</a>' ,
214
249
canMove :true ,
215
250
stats : itemStats ( enemyStats ) ,
216
251
className : ( number === 1 ?'boss' : 'enemy' ) ,
217
252
} )
218
253
}
254
+ console . log ( "Created " + nb + ' "' + type + '"' )
219
255
}
220
256
221
257
/**
@@ -235,6 +271,7 @@ function createSimpleItem(name, walkableCells, percent, number){
235
271
for ( i = 0 ; i < nb ; i ++ ) {
236
272
dead_things [ name + '_' + i ] = new Item ( availableItems [ name ] ) ;
237
273
}
274
+ console . log ( 'Created ' + nb + ' "' + name + '"' ) ;
238
275
}
239
276
240
277
@@ -266,6 +303,42 @@ function displayData(json){
266
303
content += '</ul>'
267
304
return content ;
268
305
}
306
+
307
+ function getOptions ( ) {
308
+ var options = {
309
+ mapOptions :{
310
+ x :Number ( $ ( '#oOptionsX' ) . val ( ) ) ,
311
+ y :Number ( $ ( '#oOptionsY' ) . val ( ) ) ,
312
+ passes :Number ( $ ( '#oOptionsPasses' ) . val ( ) ) ,
313
+ cleanLevel :Number ( $ ( '#oOptionsCleanLevel' ) . val ( ) ) ,
314
+ wallPercent :Number ( $ ( '#oOptionsWallPercent' ) . val ( ) ) ,
315
+ sameSubCellPercent :Number ( $ ( '#oOptionsSameSubCellPercent' ) . val ( ) ) ,
316
+ cssPrefix :'map-' ,
317
+ cellTypes :cellTypes ,
318
+ } ,
319
+ minRoomSize :Number ( $ ( '#oMinRoomSize' ) . val ( ) ) ,
320
+ cleanSmallRooms :$ ( '#oCleanSmallRooms' ) . is ( ':checked' ) ,
321
+ createEnemies :$ ( '#oCreateEnemies' ) . is ( ':checked' ) ,
322
+ enemiesPercent :Number ( $ ( '#oEnemiesPercent' ) . val ( ) ) ,
323
+ createBoss :$ ( '#oCreateBoss' ) . is ( ':checked' ) ,
324
+ createLifePotions :$ ( '#oCreateLifePotions' ) . is ( ':checked' ) ,
325
+ lifePotionsMapPercent :Number ( $ ( '#oLifePotionsMapPercent' ) . val ( ) ) ,
326
+ createStrenghtTokens :$ ( '#oCreateStrenghtTokens' ) . is ( ':checked' ) ,
327
+ createDamageTokens :$ ( '#oCreateDamageTokens' ) . is ( ':checked' ) ,
328
+ strenghtTokenMapPercent :Number ( $ ( '#oStrenghtTokenMapPercent' ) . val ( ) ) ,
329
+ damageTokenMapPercent :Number ( $ ( '#oDamageTokenMapPercent' ) . val ( ) ) ,
330
+ placeLivingThings :$ ( '#oPlaceLivingThings' ) . is ( ':checked' ) ,
331
+ placeDeadThings :$ ( '#oPlaceDeadThings' ) . is ( ':checked' ) ,
332
+ drawRooms :$ ( '#oDrawRooms' ) . is ( ':checked' ) ,
333
+ drawPathes :$ ( '#oDrawPathes' ) . is ( ':checked' ) ,
334
+ useSample :$ ( '#oUseSample' ) . is ( ':checked' ) ,
335
+ placeObjectsOnDamagingCells :$ ( '#oPlaceObjectsOnDamagingCells' ) . is ( ':checked' ) ,
336
+ sample :[ ] ,
337
+ }
338
+ console . log ( options ) ;
339
+ return options ;
340
+
341
+ }
269
342
/*
270
343
271
344
OBJECTS CONFIGURATION
@@ -297,13 +370,9 @@ var enemyNames=[
297
370
298
371
// Base player stats
299
372
var basePlayerStats = { life :50 , damage :10 , strenght :1 , level :1 } ;
373
+ var basePlayer = new Item ( { name :'Leukocyt' , description : 'You, a white globule' , canMove :true , stats : itemStats ( basePlayerStats ) , className :'player' } ) ;
300
374
301
- // Player
302
- // For enemies and bosses, this should be filled after map generation, as the createEnemies function
303
- // needs infos baout the map.
304
- var living_things = {
305
- player : new Item ( { name :'Leukocyt' , description : 'You, a white globule' , canMove :true , stats : itemStats ( basePlayerStats ) , className :'player' } ) ,
306
- }
375
+ var living_things = { }
307
376
var dead_things = { } ;
308
377
309
378
// Pickable items
0 commit comments