/**********************************************************************
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)
***********************************************************************/
#error
#ifndef CRITICAL_GRAPH_HH
#define CRITICAL_GRAPH_HH
#include "g1_limits.hh"
#include "math/num_type.hh"
#include "saver.hh"
typedef w8 g1_graph_node;
class g1_critical_graph_class
{
friend class g1_critical_map_maker_class;
public:
enum { MAX_CRITICALS=256, MAX_CONNECTIONS=100 };
class connection_class
{
public:
g1_graph_node ref;
i4_float dist;
w8 size[G1_GRADE_LEVELS];
};
class critical_point_class
{
public:
i4_float x,y;
connection_class *connection;
w8 connections;
w8 selected;
};
protected:
connection_class *pool;
w32 pool_connections;
public:
critical_point_class critical[MAX_CRITICALS];
// note critical point 0 is used to mark the null
w16 criticals;
g1_critical_graph_class() : criticals(1), pool(0) {}
g1_critical_graph_class(g1_loader_class *f) : pool(0) { load_points(f); }
~g1_critical_graph_class();
void clear_critical_graph();
void compact_critical_graph();
void expand_critical_graph();
i4_bool add_critical_point(float x, float y);
void save_points(g1_saver_class *f);
void save_graph(g1_saver_class *f);
void load_points(g1_loader_class *f);
void load_graph(g1_loader_class *f);
};
#endif
//{{{ Emacs Locals
// Local Variables:
// folded-file: t
// End:
//}}}