control the actor by mouse-clicks

This commit is contained in:
Gwenhael Le Moine 2011-07-12 17:31:09 +02:00
parent 7b77ed6a09
commit e106f42fc3

View file

@ -211,7 +211,54 @@ function start_loop( state, elt ) {
display_level( state, options.dom_place );
$(document).focus( );
$(document).keydown( function( e ) {
$(document).click(
function( e ) {
var bpos = $("#blackboard").offset();
var bdim = {};
bdim.width = $("#blackboard").width();
bdim.height = $("#blackboard").height();
var celldim = {};
celldim.width = bdim.width / LEVEL_WIDTH;
celldim.height = bdim.height / LEVEL_HEIGHT;
var click = {};
click.x = Math.floor( ( e.pageX - bpos.left ) / celldim.width );
click.y = Math.floor( ( e.pageY - bpos.top ) / celldim.height );
if ( ( 0 <= click.x && click.x < bdim.width )
&& ( 0 <= click.y && click.y < bdim.height ) ) {
var ballpos = get_pos( state, cell.BALL );
var cubepos = get_pos( state, cell.CUBE );
if ( click.x == ballpos[0] && click.y == ballpos[1] ) {
state.moving = cell.BALL;
} else {
if ( click.x == cubepos[0] && click.y == cubepos[1] ) {
state.moving = cell.CUBE;
} else {
var movingpos = ( state.moving == cell.BALL ) ? ballpos : cubepos;
if ( click.x == movingpos[0] ) {
if ( click.y > movingpos[1] ) {
state = make_a_move( state, direction.DOWN );
} else {
state = make_a_move( state, direction.UP );
}
} else {
if ( click.y == movingpos[1] ) {
if ( click.x > movingpos[0] ) {
state = make_a_move( state, direction.RIGHT );
} else {
state = make_a_move( state, direction.LEFT );
}
}
}
}
}
display_level( state, options.dom_place );
}
});
$(document).keydown(
function( e ) {
switch( e.keyCode ) {
case 38: // UP
state = make_a_move( state, direction.UP );