#ifndef __DEV_HPP_ #define __DEV_HPP_ #include "game.hpp" #include "light.hpp" #include "console.hpp" #include "timing.hpp" extern int scale_mult,scale_div; extern char level_file[100]; extern image *small_render; void dev_init(int argc, char **argv); void dev_cleanup(); void toggle_edit_mode(); char *symbol_str(char *name); class pal_win { long scale,w,h,x,y,last_selected; unsigned short *pat; void draw(); public : jwindow *me; void close_window(); void open_window(); char *name; void handle_event(event &ev); pal_win(void *args); void resize(int xa, int ya); int get_pat(int x, int y) { return pat[y*w+x]; } int width() { return w; } int height() { return h; } void save(FILE *fp); ~pal_win(); } ; enum dev_state { DEV_CREATE_OBJECT, DEV_MOVE_OBJECT, DEV_SELECT, DEV_MOUSE_RELEASE, DEV_MOVE_LIGHT, DEV_CREATE_LIGHT, DEV_DRAG_AREA_TOP, DEV_DRAG_AREA_BOTTOM }; extern char backw_on,forew_on,show_menu_on,ledit_on,pmenu_on,omenu_on,commandw_on,tbw_on,searchw_on, small_render_on,interpolate_draw,disable_autolight,fps_on,profile_on,show_names,fg_reversed, raise_all; class dev_controll { game_object *edit_object,*selected_object,*ai_object,*search_object, *link_object; light_source *edit_light,*selected_light; pal_win **pal_wins; char **pwin_list; int total_pals; dev_state state; int area_x1,area_y1,area_x2,area_y2; area_controller *current_area; time_marker last_area_click; void event_move_object(event &ev); void event_move_light(event &ev); void event_drag_area_bottom(event &ev); void event_drag_area_top(event &ev); void event_select(event &ev); void event_close_window(event &ev); void event_key(event &ev); void event_oedit_copy(event &ev); void event_ledit_ok(event &ev); void event_ledit_del(event &ev); public : jwindow *backw,*forew,*commandw,*modew,*omenu,*oedit,*ledit, *music_window,*pmenu,*show_menu,*lightw,*aiw,*ambw,*tbw,*area_win, *search_window,*memprof; int fg_w,bg_w,fg_scale,bg_scale,yellow; void save(); void fg_fill(int color, int x, int y, pal_win *p); void add_palette(void *args); void toggle_memprof(); void search_forward(); void search_backward(); void toggle_toolbar(); void toggle_fgw(); void toggle_bgw(); void toggle_omenu(); void toggle_music_window(); void toggle_pmenu(); void toggle_show_menu(); void toggle_light_window(); void toggle_search_window(); void show_char_mem(char *name); void close_oedit_window(); void show_mem(); dev_controll(); void handle_event(event &ev); void do_command(char *st, event &ev); int is_pal_win(jwindow *win); void dev_draw(view *v); void load_stuff(); int repeat_key_mode(); int need_plus_minus(); int need_arrows(); void make_ai_window(game_object *o); void close_ai_window(); void make_ambient(); int ok_to_scroll(); long snap_x(long x); long snap_y(long y); void area_handle_input(event &ev); void pick_handle_input(event &ev); void close_area_win(int read_values); void notify_deleted_object(game_object *o); void notify_deleted_light(light_source *l); void set_state(int new_state); void update_memprof(); ~dev_controll(); } ; class dev_term : public shell_term { dev_controll *dv; public : dev_term(int width, int height, dev_controll *dev) : shell_term(eh,console_font,width,height,"dev") { dv=dev; } virtual void execute(char *st); } ; extern dev_term *dev_console; extern dev_controll *dev_cont; #endif