mirror of
https://github.com/doublespeakgames/adarkroom.git
synced 2026-05-28 00:01:54 +08:00
Merge #469
This commit is contained in:
+2
-2
@@ -568,7 +568,7 @@ body.noMask #description {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#lootButtons:before {
|
#lootButtons:before {
|
||||||
content: "take:";
|
content: attr(data-legend);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -25px;
|
top: -25px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
@@ -586,7 +586,7 @@ body.noMask #description {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#dropMenu:before {
|
#dropMenu:before {
|
||||||
content: "drop:";
|
content: attr(data-legend);
|
||||||
border-bottom: 1px solid black;
|
border-bottom: 1px solid black;
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
|||||||
@@ -70,6 +70,9 @@ var Button = {
|
|||||||
var cd = btn.data("cooldown");
|
var cd = btn.data("cooldown");
|
||||||
var id = 'cooldown.'+ btn.attr('id');
|
var id = 'cooldown.'+ btn.attr('id');
|
||||||
if(cd > 0) {
|
if(cd > 0) {
|
||||||
|
if(typeof option == 'number') {
|
||||||
|
cd = option;
|
||||||
|
}
|
||||||
// param "start" takes value from cooldown time if not specified
|
// param "start" takes value from cooldown time if not specified
|
||||||
var start, left;
|
var start, left;
|
||||||
switch(option){
|
switch(option){
|
||||||
|
|||||||
+125
-26
@@ -72,11 +72,24 @@ var Events = {
|
|||||||
|
|
||||||
startCombat: function(scene) {
|
startCombat: function(scene) {
|
||||||
Engine.event('game event', 'combat');
|
Engine.event('game event', 'combat');
|
||||||
Events.won = false;
|
Events.fought = false;
|
||||||
var desc = $('#description', Events.eventPanel());
|
var desc = $('#description', Events.eventPanel());
|
||||||
|
|
||||||
$('<div>').text(scene.notification).appendTo(desc);
|
$('<div>').text(scene.notification).appendTo(desc);
|
||||||
|
|
||||||
|
// Draw pause button
|
||||||
|
var pauseBox = $('<div>').attr('id', 'pauseButton').appendTo(desc);
|
||||||
|
var pause = new Button.Button({
|
||||||
|
id: 'pause',
|
||||||
|
text: '',
|
||||||
|
cooldown: Events._PAUSE_COOLDOWN,
|
||||||
|
click: Events.togglePause
|
||||||
|
}).appendTo(pauseBox);
|
||||||
|
$('<span>').addClass('text').insertBefore(pause.children('.cooldown'));
|
||||||
|
$('<div>').addClass('clear').appendTo(pauseBox);
|
||||||
|
Events.setPause(pause, 'set');
|
||||||
|
Events.removePause(pause, 'set');
|
||||||
|
|
||||||
var fightBox = $('<div>').attr('id', 'fight').appendTo(desc);
|
var fightBox = $('<div>').attr('id', 'fight').appendTo(desc);
|
||||||
// Draw the wanderer
|
// Draw the wanderer
|
||||||
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(fightBox);
|
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(fightBox);
|
||||||
@@ -122,7 +135,87 @@ var Events = {
|
|||||||
Events.setHeal(healBtns);
|
Events.setHeal(healBtns);
|
||||||
|
|
||||||
// Set up the enemy attack timer
|
// Set up the enemy attack timer
|
||||||
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
|
Events._enemyAttackTimer = Engine.setInterval(Events.enemyAttack, scene.attackDelay * 1000);
|
||||||
|
},
|
||||||
|
|
||||||
|
setPause: function(btn, state){
|
||||||
|
if(!btn) {
|
||||||
|
btn = $('#pause');
|
||||||
|
}
|
||||||
|
var event = btn.closest('#event');
|
||||||
|
var string, log;
|
||||||
|
if(state == 'set') {
|
||||||
|
string = 'start.';
|
||||||
|
log = 'loaded';
|
||||||
|
} else {
|
||||||
|
string = 'resume.';
|
||||||
|
log = 'paused';
|
||||||
|
}
|
||||||
|
btn.children('.text').first().text( _(string) )
|
||||||
|
Events.paused = (state == 'auto') ? 'auto' : true;
|
||||||
|
event.addClass('paused');
|
||||||
|
Button.clearCooldown(btn);
|
||||||
|
$('#buttons').find('.button').each(function(i){
|
||||||
|
if($(this).data('onCooldown')){
|
||||||
|
$(this).children('.cooldown').stop(true,false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Engine.log('fight '+ log +'.');
|
||||||
|
},
|
||||||
|
|
||||||
|
removePause: function(btn, state){
|
||||||
|
if(!btn) {
|
||||||
|
btn = $('#pause');
|
||||||
|
}
|
||||||
|
var event = btn.closest('#event');
|
||||||
|
var log, time, target;
|
||||||
|
if(state == 'auto' && Events.paused != 'auto') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch(state){
|
||||||
|
case 'set':
|
||||||
|
Button.cooldown(btn, Events._LEAVE_COOLDOWN);
|
||||||
|
log = 'started';
|
||||||
|
time = Events._LEAVE_COOLDOWN * 1000;
|
||||||
|
target = $();
|
||||||
|
break;
|
||||||
|
case 'end':
|
||||||
|
Button.setDisabled(btn, true);
|
||||||
|
log = 'ended';
|
||||||
|
time = Events._FIGHT_SPEED;
|
||||||
|
target = $();
|
||||||
|
break;
|
||||||
|
case 'auto':
|
||||||
|
Button.cooldown(btn);
|
||||||
|
default:
|
||||||
|
log = 'resumed';
|
||||||
|
time = Events._PAUSE_COOLDOWN * 1000;
|
||||||
|
target = $('#buttons').find('.button');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Engine.setTimeout(function(){
|
||||||
|
btn.children('.text').first().text( _('pause.') );
|
||||||
|
Events.paused = false;
|
||||||
|
event.removeClass('paused');
|
||||||
|
target.each(function(i){
|
||||||
|
if($(this).data('onCooldown')){
|
||||||
|
Button.cooldown($(this), 'pause');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Engine.log('Event '+ log);
|
||||||
|
}, time);
|
||||||
|
},
|
||||||
|
|
||||||
|
togglePause: function(btn, auto){
|
||||||
|
if(!btn) {
|
||||||
|
btn = $('#pause');
|
||||||
|
}
|
||||||
|
if((auto) && (document.hasFocus() == !Events.paused)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var f = (Events.paused) ? Events.removePause : Events.setPause;
|
||||||
|
var state = (auto) ? 'auto' : false;
|
||||||
|
f(btn, state);
|
||||||
},
|
},
|
||||||
|
|
||||||
createEatMeatButton: function(cooldown) {
|
createEatMeatButton: function(cooldown) {
|
||||||
@@ -403,6 +496,7 @@ var Events = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
enemyAttack: function() {
|
enemyAttack: function() {
|
||||||
|
Events.togglePause($('#pause'),'auto');
|
||||||
|
|
||||||
var scene = Events.activeEvent().scenes[Events.activeScene];
|
var scene = Events.activeEvent().scenes[Events.activeScene];
|
||||||
|
|
||||||
@@ -426,15 +520,20 @@ var Events = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
|
endFight: function() {
|
||||||
|
Events.fought = true;
|
||||||
|
clearTimeout(Events._enemyAttackTimer);
|
||||||
|
Events.removePause($('#pause'), 'end');
|
||||||
},
|
},
|
||||||
|
|
||||||
winFight: function() {
|
winFight: function() {
|
||||||
Events.won = true;
|
Engine.setTimeout(function() {
|
||||||
clearTimeout(Events._enemyAttackTimer);
|
if(Events.fought) {
|
||||||
$('#enemy').animate({opacity: 0}, 300, 'linear', function() {
|
return;
|
||||||
Engine.setTimeout(function() {
|
}
|
||||||
try {
|
Events.endFight();
|
||||||
|
$('#enemy').animate({opacity: 0}, 300, 'linear', function() {
|
||||||
|
Engine.setTimeout(function() {
|
||||||
var scene = Events.activeEvent().scenes[Events.activeScene];
|
var scene = Events.activeEvent().scenes[Events.activeScene];
|
||||||
var leaveBtn = false;
|
var leaveBtn = false;
|
||||||
var desc = $('#description', Events.eventPanel());
|
var desc = $('#description', Events.eventPanel());
|
||||||
@@ -475,11 +574,15 @@ var Events = {
|
|||||||
$('<div>').addClass('clear').appendTo(exitBtns);
|
$('<div>').addClass('clear').appendTo(exitBtns);
|
||||||
|
|
||||||
Events.allowLeave(takeETbtn, leaveBtn);
|
Events.allowLeave(takeETbtn, leaveBtn);
|
||||||
} catch(e) {
|
}, 1000, true);
|
||||||
// It is possible to die and win if the timing is perfect. Just let it fail.
|
});
|
||||||
}
|
}, Events._FIGHT_SPEED);
|
||||||
}, 1000, true);
|
},
|
||||||
});
|
|
||||||
|
loseFight: function(){
|
||||||
|
Events.endFight();
|
||||||
|
Events.endEvent();
|
||||||
|
World.die();
|
||||||
},
|
},
|
||||||
|
|
||||||
drawDrop:function(btn) {
|
drawDrop:function(btn) {
|
||||||
@@ -590,7 +693,9 @@ var Events = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setTakeAll: function(lootButtons){
|
setTakeAll: function(lootButtons){
|
||||||
var lootButtons = lootButtons || $('#lootButtons');
|
if(!lootButtons) {
|
||||||
|
lootButtons = $('#lootButtons');
|
||||||
|
}
|
||||||
var canTakeSomething = false;
|
var canTakeSomething = false;
|
||||||
var free = Path.getFreeSpace();
|
var free = Path.getFreeSpace();
|
||||||
var takeETbutton = lootButtons.find('#loot_takeEverything');
|
var takeETbutton = lootButtons.find('#loot_takeEverything');
|
||||||
@@ -614,11 +719,7 @@ var Events = {
|
|||||||
takeAll.children('span').first().text(_('all'));
|
takeAll.children('span').first().text(_('all'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(canTakeSomething){
|
Button.setDisabled(takeETbutton, !canTakeSomething);
|
||||||
takeETbutton.removeClass('disabled');
|
|
||||||
} else {
|
|
||||||
takeETbutton.addClass('disabled');
|
|
||||||
}
|
|
||||||
takeETbutton.data('canTakeEverything', (free >= 0) ? true : false);
|
takeETbutton.data('canTakeEverything', (free >= 0) ? true : false);
|
||||||
return takeETbutton;
|
return takeETbutton;
|
||||||
},
|
},
|
||||||
@@ -633,18 +734,16 @@ var Events = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
canLeave: function(btn){
|
canLeave: function(btn){
|
||||||
var basetext = _('take everything');
|
var basetext = (btn.data('canTakeEverything')) ? _('take everything') : _('take all you can');
|
||||||
var textbox = btn.children('span');
|
var textbox = btn.children('span');
|
||||||
var takeAndLeave = (btn.data('leaveBtn')) ? btn.data('canTakeEverything') : false;
|
var takeAndLeave = (btn.data('leaveBtn')) ? btn.data('canTakeEverything') : false;
|
||||||
|
var text = _(basetext);
|
||||||
if(takeAndLeave){
|
if(takeAndLeave){
|
||||||
var verb = btn.data('leaveBtn').text() || _('leave');
|
|
||||||
textbox.text( basetext + _(' and ') + verb);
|
|
||||||
btn.data('canLeave', true);
|
|
||||||
Button.cooldown(btn);
|
Button.cooldown(btn);
|
||||||
} else {
|
text += _(' and ') + btn.data('leaveBtn').text();
|
||||||
textbox.text( basetext );
|
|
||||||
btn.data('canLeave', false)
|
|
||||||
}
|
}
|
||||||
|
textbox.text( text );
|
||||||
|
btn.data('canLeave', takeAndLeave);
|
||||||
},
|
},
|
||||||
|
|
||||||
dropStuff: function(e) {
|
dropStuff: function(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user