/**********************************************************************
This file is part of Crack dot Com's free source code release of
Golgotha.
for
information about compiling & licensing issues visit this URL
If that doesn't help, contact Jonathan Clark at
golgotha_source@usa.net (Subject should have "GOLG" in it)
***********************************************************************/
#ifndef PATH_WIN_HH
#define PATH_WIN_HH
#include "math/num_type.hh"
#include "gui/butbox.hh"
#include "window/window.hh"
#include "image/image32.hh"
class g1_path_tool_window_class : public i4_button_box_class
{
protected:
i4_image_class *grade_icon[4], *size_icon[2];
i4_const_str *grade_help[4], *size_help[2];
public:
g1_path_tool_window_class(i4_graphical_style_class *style, i4_event_handler_class *send_to,
int buttons, i4_image_class **img, i4_const_str **help_names);
char *name() { return "path_tool_win"; }
};
class g1_map_class;
class g1_critical_graph_class;
class g1_critical_map_maker_class;
class g1_astar_map_solver_class;
class g1_breadth_first_graph_solver_class;
class g1_path_window_class : public i4_parent_window_class
{
protected:
i4_image_class *start_icon, *dest_icon, *crit_icon;
int last_x, last_y;
int map_changed;
i4_float point[1024];
w16 points;
public:
enum { CELL_SIZE=3 };
class coord
{
public:
w16 x,y;
coord() : x(0), y(0) {}
} start, dest; // path to solve
int mode; // current lay down mode from tool window
w16 grade;
w8 size;
w8 tofrom;
g1_map_class *map;
g1_critical_graph_class *critical_graph;
g1_critical_map_maker_class *maker;
g1_astar_map_solver_class *solvemap;
g1_breadth_first_graph_solver_class *solvegraph;
i4_image32 *bitmap;
g1_path_window_class(g1_map_class *map, i4_image_class **icons);
~g1_path_window_class();
w32 critical_color(w16 x, w16 y);
void solve();
void changed() { map_changed = 1; request_redraw(); }
void draw_to_bitmap();
void parent_draw(i4_draw_context_class &context);
virtual void receive_event(i4_event *ev);
char *name() { return "path_win"; }
};
#endif