-/*
+/*
* Copyright (C) 2003 Robert Kooima
*
* NEVERBALL is free software; you can redistribute it and/or modify
#ifndef SOL_H
#define SOL_H
-#include <SDL.h>
#include "glext.h"
#include "base_config.h"
* the variable.
*
* The Xs are as documented by struct s_file:
- *
+ *
* f File (struct s_file)
* m Material (struct s_mtrl)
* v Vertex (struct s_vert)
* n Node (struct s_node)
* p Path (struct s_path)
* b Body (struct s_body)
- * c Coin (struct s_coin)
+ * h Item (struct s_item)
* z Goal (struct s_goal)
* j Jump (struct s_jump)
* x Switch (struct s_swch)
* lumps. "ei" and "ej" are edge indices into some "ev" edge vector.
* An edge is defined by two vertices, so an edge structure consists
* of "vi" and "vj". And so on.
- *
+ *
* Those members that do not conform to this convention are explicitly
* documented with a comment.
*
- * These prefixes are still available: h k o q y.
+ * These prefixes are still available: c k o q y.
*/
/*---------------------------------------------------------------------------*/
#define L_DETAIL 1
+/* Item types. */
+
+#define ITEM_NONE 0
+#define ITEM_COIN 1
+#define ITEM_GROW 2
+#define ITEM_SHRINK 3
+
/*---------------------------------------------------------------------------*/
struct s_mtrl
int gc;
};
-struct s_coin
+struct s_item
{
float p[3]; /* position */
+ int t; /* type */
int n; /* value */
};
{
float p[3]; /* position */
float r; /* radius */
+ int s; /* levels skiped */
+ int c; /* special coloration? */
};
struct s_swch
{
float p[3]; /* position */
float r; /* radius */
- int pi;
+ int pi; /* the linked path */
float t0; /* default timer */
float t; /* current timer */
int f0; /* default state */
int f; /* current state */
+ int i; /* is invisible? */
+ int e; /* is a ball inside it? */
};
struct s_bill
int nc;
int pc;
int bc;
- int cc;
+ int hc;
int zc;
int jc;
int xc;
struct s_node *nv;
struct s_path *pv;
struct s_body *bv;
- struct s_coin *cv;
+ struct s_item *hv;
struct s_goal *zv;
struct s_jump *jv;
struct s_swch *xv;
/*---------------------------------------------------------------------------*/
-int sol_load(struct s_file *, const char *, int, int);
+void sol_body_p(float p[3], const struct s_file *, const struct s_body *);
+
+/*---------------------------------------------------------------------------*/
+
+int sol_load_only_file(struct s_file *, const char *);
+int sol_load_only_head(struct s_file *, const char *);
int sol_stor(struct s_file *, const char *);
void sol_free(struct s_file *);
-void sol_back(const struct s_file *, float, float, float);
-void sol_refl(const struct s_file *);
-void sol_draw(const struct s_file *);
-void sol_shad(const struct s_file *);
-
float sol_step(struct s_file *, const float *, float, int, int *);
-int sol_coin_test(struct s_file *, float *, float);
-int sol_goal_test(struct s_file *, float *, int);
int sol_jump_test(struct s_file *, float *, int);
-int sol_swch_test(struct s_file *, int, int);
+int sol_swch_test(struct s_file *, int);
+
+struct s_goal *sol_goal_test(struct s_file *, float *, int);
+struct s_item *sol_item_test(struct s_file *, float *, float);
/*---------------------------------------------------------------------------*/