/* Eon Aton: a RPG-like game system in JavaScript Copyright (C) 2008-2009 Niels Serup This file is part of Eon Aton. Eon Aton is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Eon Aton is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Eon Aton. If not, see . */ /* This file contains various functions to be used together with the classes. */ function style_bg_img(background) { var cssurl if (background.indexOf(".")!=-1) cssurl=["url(",")"] else cssurl=["",""] return cssurl[0]+background+cssurl[1] } function remove(obj) { if (obj.type="character") take_life(obj) obj.remove() delete obj } function getkeycode(e) { var keycode if (window.event) keycode=window.event.keyCode else if (e) keycode=e.which else keycode=0 return keycode } function START_systems() { key_up=false key_right=false key_down=false key_left=false key_shift=false key_control=false key_order=new Array() for (var i=0;i<4;i++) { key_order[i]=0 } direction=7 character_state=1 document.onkeydown=keydown document.onkeyup=keyup row_num=new Array() col_num=new Array() col_length=new Array() maxwidth=0 maxheight=0 define_pixel_movement(5,10) define_character_distance(-5) direction_changing_speed=3 frame_showing_speed=150 movement_speed=50 frame_showing() movement() } function define_pixel_movement(walk,run) { pixel_movement=[0,walk,run] diagonal_pixel_movement=[0,Math.sqrt(walk*walk/2),Math.sqrt(run*run/2)] } function define_character_distance(dist) { character_distance=dist diagonal_character_distance=Math.sqrt(dist*dist*2) if (dist<0) diagonal_character_distance=-diagonal_character_distance } function show_frame(cha_num,row,col) { characters[cha_num].elem.style.backgroundPosition="-"+(col*(characters[cha_num].width+1)+1)+"px -"+(characters[cha_num].dirs[row][0]*(characters[cha_num].height+1)+1)+"px" } function frame_showing() { for (var i=0;i-1 && x-1 && ycharacters[i].posY) cy-- } characters[i].elem.style.zIndex=cy li=i } if (characters.length>0) { if (characters[0].posX>(current_screen.viswidth-characters[0].width)/2 && characters[0].posX(current_screen.visheight-characters[0].height)/2 && characters[0].posY0) character_state=2 else if (key_shift && key_order[0]>0) character_state=3 } function get_row_num() { for (var i=0;imaxwidth) maxwidth=characters[i].width if (characters[i].height>maxheight) maxheight=characters[i].height } } function find_direction() { if (key_order[0]==1 && key_order[1]!=2 && key_order[1]!=4) direction=1 else if ((key_order[0]==1 && key_order[1]==2) || (key_order[0]==2 && key_order[1]==1)) direction=2 else if (key_order[0]==2 && key_order[1]!=1 && key_order[1]!=3) direction=3 else if ((key_order[0]==2 && key_order[1]==3) || (key_order[0]==3 && key_order[1]==2)) direction=4 else if (key_order[0]==3 && key_order[1]!=2 && key_order[1]!=4) direction=5 else if ((key_order[0]==3 && key_order[1]==4) || (key_order[0]==4 && key_order[1]==3)) direction=6 else if (key_order[0]==4 && key_order[1]!=3 && key_order[1]!=1) direction=7 else if ((key_order[0]==4 && key_order[1]==1) || (key_order[0]==1 && key_order[1]==4)) direction=8 else direction=0 } function keydown(e) { var keycode=getkeycode(e) if (keycode==38 && !key_up) { key_up=true key_order.splice(0,0,1) key_order.splice(3,1) } else if (keycode==39 && !key_right) { key_right=true key_order.splice(0,0,2) key_order.splice(3,1) } else if (keycode==40 && !key_down) { key_down=true key_order.splice(0,0,3) key_order.splice(3,1) } else if (keycode==37 && !key_left) { key_left=true key_order.splice(0,0,4) key_order.splice(3,1) } else if (keycode==16) key_shift=true else if (keycode==17) key_control=true if (keycode==38 || keycode==39 || keycode==40 || keycode==37) find_direction() if (keycode==38 || keycode==39 || keycode==40 || keycode==37 || keycode==16) get_col_length() } function keyup(e) { var keycode=getkeycode(e) if (keycode==38 && key_up) { key_up=false for (var i=0;i<4;i++) { if (key_order[i]==1) key_order.splice(i,1) } key_order.splice(3,0,0) } else if (keycode==39 && key_right) { key_right=false for (var i=0;i<4;i++) { if (key_order[i]==2) key_order.splice(i,1) } key_order.splice(3,0,0) } else if (keycode==40 && key_down) { key_down=false for (var i=0;i<4;i++) { if (key_order[i]==3) key_order.splice(i,1) } key_order.splice(3,0,0) } else if (keycode==37 && key_left) { key_left=false for (var i=0;i<4;i++) { if (key_order[i]==4) key_order.splice(i,1) } key_order.splice(3,0,0) } else if (keycode==16) key_shift=false else if (keycode==17) key_control=false if (key_order[0]>0 && (keycode==38 || keycode==39 || keycode==40 || keycode==37)) find_direction() if (keycode==38 || keycode==39 || keycode==40 || keycode==37 || keycode==16) get_col_length() } function exchange_characters(a,b) { var temp=characters[a] characters[a]=characters[b] characters[b]=temp } function give_life(cha) { col_num[characters.length]=0 cha.visible=true cha.elem.style.display="block" get_col_length() get_maxs() } function take_life(cha) { cha.visible=false cha.elem.style.display="none" get_maxs() }