Add glib, control structures
This commit is contained in:
parent
fd3652089f
commit
b955e4ea9d
@ -1,6 +1,73 @@
|
|||||||
#ifndef _CONTROL_H
|
#ifndef _CONTROL_H
|
||||||
#define _CONTROL_H
|
#define _CONTROL_H
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
typedef enum { ACCELERATING, ROLLING, BRAKING } accel_t;
|
||||||
|
typedef enum { TURN_HARD_LEFT, TURN_LEFT, TURN_STRAIGT, TURN_RIGHT, TURN_HARD_RIGHT } turn_t;
|
||||||
|
|
||||||
|
typedef enum { BOLDER, CRATER, MARTIAN } object_t;
|
||||||
|
|
||||||
|
struct object;
|
||||||
|
typedef struct object object;
|
||||||
|
|
||||||
|
struct vehicle;
|
||||||
|
typedef struct vehicle vehicle;
|
||||||
|
|
||||||
|
struct telemetry;
|
||||||
|
typedef struct telemetry telemetry;
|
||||||
|
|
||||||
|
struct map;
|
||||||
|
typedef struct map map;
|
||||||
|
|
||||||
|
struct trial;
|
||||||
|
typedef struct trial trial;
|
||||||
|
|
||||||
|
typedef unsigned int timestamp;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct object {
|
||||||
|
object_t type;
|
||||||
|
double x, y, rad;
|
||||||
|
double dir, speed;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct vehicle {
|
||||||
|
accel_t accel;
|
||||||
|
turn_t turn;
|
||||||
|
double x, y;
|
||||||
|
double dir, speed;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct telemetry {
|
||||||
|
timestamp ts;
|
||||||
|
vehicle vehicle;
|
||||||
|
GArray objects;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct map {
|
||||||
|
float dx, dy;
|
||||||
|
timestamp limit;
|
||||||
|
float min_sensor, max_sensor;
|
||||||
|
float max_speed, max_turn, max_turn_hard;
|
||||||
|
|
||||||
|
GList solid_objects;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct trial {
|
||||||
|
map map;
|
||||||
|
timestamp last_ts;
|
||||||
|
GList telemetry_data;
|
||||||
|
vehicle vehicle; /* our view */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* trial */
|
||||||
|
trial *trial_new();
|
||||||
|
void trial_reset_run(trial *trial);
|
||||||
|
void trial_wait_for_start(trial *trial);
|
||||||
|
void trial_check_input(trial *trial);
|
||||||
|
void trial_wait_for_input(trial *trial);
|
||||||
|
void trial_free(trial *trial);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,4 +13,4 @@ def build(bld):
|
|||||||
main.name = 'icfp08'
|
main.name = 'icfp08'
|
||||||
main.source = main_source
|
main.source = main_source
|
||||||
main.target = 'icfp08'
|
main.target = 'icfp08'
|
||||||
main.uselib += ''
|
main.uselib += 'glib'
|
||||||
|
57
wscript
57
wscript
@ -9,6 +9,57 @@ APPNAME='icfp08'
|
|||||||
srcdir = '.'
|
srcdir = '.'
|
||||||
blddir = 'build'
|
blddir = 'build'
|
||||||
|
|
||||||
|
###########################
|
||||||
|
import types
|
||||||
|
|
||||||
|
def tolist(x):
|
||||||
|
if type(x) is types.ListType:
|
||||||
|
return x
|
||||||
|
return [x]
|
||||||
|
|
||||||
|
def env_mod(conf, use):
|
||||||
|
types = [ 'LIB', 'STATICLIB', 'LIBPATH', 'CPPPATH', 'CXXDEFINES', 'CCFLAGS', 'CXXFLAGS', 'LINKFLAGS' ]
|
||||||
|
bak = {}
|
||||||
|
for t in types:
|
||||||
|
bak[t] = conf.env[t]
|
||||||
|
for u in use:
|
||||||
|
conf.env[t] = tolist(conf.env[t]) + tolist(conf.env['%s_%s' % (t, u)])
|
||||||
|
return bak
|
||||||
|
|
||||||
|
def env_mod_revert(conf, bak):
|
||||||
|
for (k,v) in bak.items():
|
||||||
|
conf.env[k] = v
|
||||||
|
|
||||||
|
def CHECK_INCLUDE_FILES(conf, header, define, uselib = '', path = None, mandatory = 0, use = []):
|
||||||
|
envbak = env_mod(conf, use)
|
||||||
|
hconf = conf.create_header_configurator()
|
||||||
|
hconf.mandatory = mandatory
|
||||||
|
hconf.name = header
|
||||||
|
hconf.uselib_store = uselib
|
||||||
|
hconf.define = define
|
||||||
|
if path: hconf.path += path
|
||||||
|
res = hconf.run()
|
||||||
|
env_mod_revert(conf, envbak)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def PKGCONFIG(conf, name, uselib = None, define = '', version = '', mandatory = 0):
|
||||||
|
if not uselib: uselib = name
|
||||||
|
hconf = conf.create_pkgconfig_configurator()
|
||||||
|
hconf.name = name
|
||||||
|
hconf.version = version
|
||||||
|
hconf.uselib_store = uselib
|
||||||
|
hconf.define = define
|
||||||
|
hconf.mandatory = mandatory
|
||||||
|
res = hconf.run()
|
||||||
|
return res
|
||||||
|
|
||||||
|
###########################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def set_options(opt):
|
def set_options(opt):
|
||||||
opt.tool_options('compiler_cc')
|
opt.tool_options('compiler_cc')
|
||||||
opt.tool_options('ragel', tdir = '.')
|
opt.tool_options('ragel', tdir = '.')
|
||||||
@ -23,5 +74,11 @@ def configure(conf):
|
|||||||
]
|
]
|
||||||
conf.env['CCFLAGS'] += common_ccflags
|
conf.env['CCFLAGS'] += common_ccflags
|
||||||
|
|
||||||
|
PKGCONFIG(conf, "glib-2.0", uselib = 'glib', mandatory = 1)
|
||||||
|
incdir = conf.env['CPPPATH_glib'][0]
|
||||||
|
conf.env['CPPPATH_glib'] += [ incdir+'/glib-2.0/', incdir + '/glib-2.0/include/' ]
|
||||||
|
CHECK_INCLUDE_FILES(conf, "glib.h", "HAVE_GLIB_H", uselib = 'glib', use = ['glib'], mandatory = 1)
|
||||||
|
|
||||||
|
|
||||||
def build(bld):
|
def build(bld):
|
||||||
bld.add_subdirs('src')
|
bld.add_subdirs('src')
|
||||||
|
Loading…
Reference in New Issue
Block a user