function st_moving() { var mov = 2; c_input(); hspd = lerp(hspd, (right-left)*.05, .4); vspd = lerp(vspd, (down-up)*.05, .4); //if !stop dir = DIR.NONE; if left dir = DIR.LEFT; if down dir = DIR.DOWN; if up dir = DIR.UP; if right dir = DIR.RIGHT; if leftp dir = DIR.LEFT; if downp dir = DIR.DOWN; if upp dir = DIR.UP; if rightp dir = DIR.RIGHT; var remainingmov = mov+1 - ( abs(x+hspd-16-pos.x*ts.x)/ts.x + abs(y+vspd-16-pos.y*ts.y)/ts.y ); //var shitmode = point_distance(x, y, pos.x*ts.x, pos.y*ts.y); //if shitmode > mov*ts.x { if !stop { x += hspd*ts.x; y += vspd*ts.y; } while !remainingmov { hspd = 0; vspd = 0; x = linear_approach(x, pos.x*ts.x+16, 1); y = linear_approach(y, pos.y*ts.y+16, 1); log(x, pos.x*ts.x); log(y, pos.y*ts.y); var remainingmov = mov+1 - ( abs(x+hspd-16-pos.x*ts.x)/ts.x + abs(y+vspd-16-pos.y*ts.y)/ts.y ); //log("oob, " + string(remainingmov)); /*} else { log("not oob!");*/ } prevremainingmov = remainingmov; c_decolor_all(c_red); c_decolor_all(c_green); var guy = c_gettile(x, y, true); c_colortile(guy.x, guy.y, c_green); //log("selecting"); //var rng = [1]; var guy = c_gettile(x, y, true); var hitting = noone; if guy != noone { switch dir { case DIR.LEFT: hitting = c_gettile(guy.x-1, guy.y); c_colortile(guy.x-1, guy.y, c_red); sprite_index = data.down; image_xscale = -1; break; case DIR.DOWN: hitting = c_gettile(guy.x, guy.y+1); c_colortile(guy.x, guy.y+1, c_red); sprite_index = data.down; break; case DIR.UP: hitting = c_gettile(guy.x, guy.y-1); c_colortile(guy.x, guy.y-1, c_red); sprite_index = data.up; break; case DIR.RIGHT: hitting = c_gettile(guy.x+1, guy.y); c_colortile(guy.x+1, guy.y, c_red); sprite_index = data.down; image_xscale = 1; break; default: sprite_index = data.idle; image_xscale = -1; break; } if hitting != noone && select { log("found one"); log(hitting.contents, hitting.x, hitting.y); var i; for (i=0; i (pos.x+mov+1)*ts.x { x = (pos.x+mov+1)*ts.x; } else { x += hspd*ts.x; } if y < (pos.y-mov)*ts.y { y = (pos.y-mov)*ts.y; } else if y > (pos.y+mov+1)*ts.y { y = (pos.y+mov+1)*ts.y; } else { y += vspd*ts.y; }*/ } function st_movingdraw() { /*var mov = 2; draw_set_color(c_cyan); draw_set_alpha(.4); var i, j; for (i=-mov; i<=mov; i++) { for (j=-mov; j<=mov; j++) { if abs(i)+abs(j) <= mov { draw_rectangle( (pos.x+i)*ts.x, (pos.y+j)*ts.y, (pos.x+i+1)*ts.x, (pos.y+j+1)*ts.y, false ); } } } draw_set_alpha(1);*/ } #macro ts global.tilesize enum DIR { NONE, LEFT, DOWN, UP, RIGHT, }