Skip to content
This repository was archived by the owner on Dec 5, 2020. It is now read-only.

Commit f8c63b5

Browse files
committed
New build
1 parent 83c504b commit f8c63b5

File tree

2 files changed

+93
-15
lines changed

2 files changed

+93
-15
lines changed

build-demo.js

Lines changed: 81 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ function createAndRenderMap(o){
99
mapOptions:{},
1010
// Min room size on cleaning.
1111
minRoomSize:50,
12+
cleanSmallRooms:true,
1213
createEnemies:true,
1314
enemiesPercent:10,
1415
createBoss:true,
@@ -37,20 +38,24 @@ function createAndRenderMap(o){
3738
map.createMap();
3839
//map.createMapFromSample(samples[2]);
3940
map.createRooms();
40-
if(o.minRoomSize>0){map.removeSmallRooms(o.minRoomSize);}
41+
if(o.minRoomSize>0 && o.cleanSmallRooms){map.removeSmallRooms(o.minRoomSize);}
4142

4243
// At this point we can consider the map geography won't change, so we can
4344
// generate some data about it
4445
var walkableCells=map._getWalkableCells(false);
4546
var walkableSafeCells=map._getWalkableCells(true);
4647

48+
// Reset ennemies and items
49+
dead_things={};
50+
living_things={player: basePlayer};
51+
4752
/*
4853
"game" specific "mechanisms" here. This is not included in the class
4954
(beside of map.addItem())
5055
*/
5156

5257
// 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);}
5459
if(o.createBoss){createEnemies('boss', living_things.player.level, null, 1);}
5560
// Adding to the map
5661
if(o.placeLivingThings){map.addItems(living_things, true);}
@@ -60,13 +65,15 @@ function createAndRenderMap(o){
6065
if(o.createStrenghtTokens){createSimpleItem('token_strength', walkableSafeCells.length, o.strenghtTokenMapPercent);}
6166
if(o.createDamageTokens){createSimpleItem('token_damage', walkableSafeCells.length, o.damageTokenMapPercent);}
6267
// Adding them to the map.
63-
if(o.placeDeadThings){map.addItems(dead_things, !o.placeObjectsOnDamagingCells);}
6468

69+
if(o.placeDeadThings){map.addItems(dead_things, !o.placeObjectsOnDamagingCells);}
6570
// Debug
6671
//map.outlineRooms();
6772
if(o.drawPathes){map._findPaths();}
6873

6974
// Render the map
75+
// Reset the output
76+
$('#grid').html('<div id="rooms"></div>');
7077
map.jQueryRender('#grid');
7178

7279
/***************************************************************************
@@ -108,6 +115,33 @@ function createAndRenderMap(o){
108115
ctx.closePath();
109116
ctx.stroke();
110117
}
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+
});
111145
}
112146

113147
/**
@@ -165,14 +199,15 @@ var Item=function(options){
165199
@param string type - The type of enemy (enemy/boss)
166200
@param int playerLevel - Player level, to generate enemy stats
167201
@param int walkableCells - Number of walkable cells to base enemies number
202+
@param float enemiesPercent - Percentage
168203
@param int number - Forces the enemy number
169204
*/
170-
function createEnemies(type, playerLevel, walkableCells, number){
205+
function createEnemies(type, playerLevel, walkableCells, enemiesPercent, number){
171206
var nb=0;
172207
if(number!=undefined){
173208
nb=number;
174209
}else{
175-
nb=Math.floor(5*walkableCells/100);
210+
nb=Math.floor(enemiesPercent*walkableCells/100);
176211
}
177212
// Number of enemies to generate:
178213
var enemies={};
@@ -208,14 +243,15 @@ function createEnemies(type, playerLevel, walkableCells, number){
208243
enemyStats.giveXp=enemyStats.level*40;
209244
}
210245

211-
living_things[type+'_'+i]=new Item({
246+
living_things[type+'_'+i]=new Item({
212247
name:enemy.name,
213248
description:enemy.description+' <a href="'+enemy.more+'" target="_blank">More...</a>',
214249
canMove:true,
215250
stats: itemStats(enemyStats),
216251
className: (number===1?'boss': 'enemy'),
217252
})
218253
}
254+
console.log("Created "+nb+' "'+type+'"')
219255
}
220256

221257
/**
@@ -235,6 +271,7 @@ function createSimpleItem(name, walkableCells, percent, number){
235271
for(i=0; i<nb; i++){
236272
dead_things[name+'_'+i]=new Item(availableItems[name]);
237273
}
274+
console.log('Created '+nb+' "'+name+'"');
238275
}
239276

240277

@@ -266,6 +303,42 @@ function displayData(json){
266303
content+='</ul>'
267304
return content;
268305
}
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+
}
269342
/*
270343
271344
OBJECTS CONFIGURATION
@@ -297,13 +370,9 @@ var enemyNames=[
297370

298371
// Base player stats
299372
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'});
300374

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={}
307376
var dead_things={};
308377

309378
// Pickable items

build.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ MapGen.prototype.CellType.prototype.addClass=function(newClass){
144144
@param y int - Current col
145145
*/
146146
MapGen.prototype._getCellType=function(x, y){
147-
if(x>=0 && y>=0 && x<this.grid.length && y<this.grid.length){
147+
if(x>=0 && y>=0 && x<this.grid[0].length && y<this.grid.length){
148148
return this.cells[x+':'+y].type.name;//grid[x][y];
149149
}else{
150150
return this.WALL; // Outside the map, so it's a wall.
@@ -274,9 +274,18 @@ MapGen.prototype._getWalkableCellsAround=function (x,y){
274274
let newX=inside[i][0];
275275
let newY=inside[i][1];
276276
if(newX>=0 && newY>=0){
277-
if(this.cells[newX+':'+newY].type.isWalkable === true){
278-
results.push(inside[i]);
277+
try {
278+
if(this.cells[newX+':'+newY].type.isWalkable === true){
279+
results.push(inside[i]);
280+
}
281+
} catch (e) {
282+
console.log(e);
283+
console.log({x:x,y:y, newX:newX, newY:newY, type:type})
284+
console.log(this.cells);
285+
} finally {
286+
279287
}
288+
280289
}
281290
}
282291
return results;

0 commit comments

Comments
 (0)