1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// one big bad include file for the whole engine... nasty!
#import <ObjFW/ObjFW.h>
#define gamma gamma__
#include <SDL2/SDL.h>
#undef gamma
#include "tools.h"
#define _MAXDEFSTR 260
@class DynamicEntity;
@interface Cube: OFObject <OFApplicationDelegate>
@property (class, readonly, nonatomic) Cube *sharedInstance;
@property (readonly, nonatomic) SDL_Window *window;
@property (readonly, nonatomic) OFIRI *gameDataIRI, *userDataIRI;
@property (nonatomic) bool repeatsKeys;
|
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
// one big bad include file for the whole engine... nasty!
#import <ObjFW/ObjFW.h>
#define gamma gamma__
#include <SDL2/SDL.h>
#undef gamma
#include "tools.h"
#define _MAXDEFSTR 260
@class Entity;
@class DynamicEntity;
@interface Cube: OFObject <OFApplicationDelegate>
@property (class, readonly, nonatomic) Cube *sharedInstance;
@property (readonly, nonatomic) SDL_Window *window;
@property (readonly, nonatomic) OFIRI *gameDataIRI, *userDataIRI;
@property (nonatomic) bool repeatsKeys;
|
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
MAPMODEL, // attr1 = angle, attr2 = idx
MONSTER, // attr1 = angle, attr2 = monstertype
CARROT, // attr1 = tag, attr2 = type
JUMPPAD, // attr1 = zpush, attr2 = ypush, attr3 = xpush
MAXENTTYPES
};
// map entity
struct persistent_entity {
short x, y, z; // cube aligned position
short attr1;
uchar type; // type is one of the above
uchar attr2, attr3, attr4;
};
struct entity: public persistent_entity {
bool spawned; // the only dynamic state of a map entity
};
#define MAPVERSION 5 // bump if map format changes, see worldio.cpp
// map file format header
struct header {
char head[4]; // "CUBE"
int version; // any >8bit quantity is a little indian
int headersize; // sizeof(header)
|
<
<
<
<
<
<
<
<
<
<
<
<
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
MAPMODEL, // attr1 = angle, attr2 = idx
MONSTER, // attr1 = angle, attr2 = monstertype
CARROT, // attr1 = tag, attr2 = type
JUMPPAD, // attr1 = zpush, attr2 = ypush, attr3 = xpush
MAXENTTYPES
};
#define MAPVERSION 5 // bump if map format changes, see worldio.cpp
// map file format header
struct header {
char head[4]; // "CUBE"
int version; // any >8bit quantity is a little indian
int headersize; // sizeof(header)
|
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
|
extern int sfactor, ssize; // ssize = 2^sfactor
extern int cubicsize, mipsize; // cubicsize = ssize^2
// special client ent that receives input and acts as camera
extern DynamicEntity *player1;
// all the other clients (in multiplayer)
extern OFMutableArray *players;
extern bool editmode;
extern vector<entity> ents; // map entities
extern OFVector3D worldpos; // current target of the crosshair in the world
extern int lastmillis; // last time
extern int curtime; // current frame time
extern int gamemode, nextmode;
extern int xtraverts;
extern bool demoplayback;
|
|
|
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
|
extern int sfactor, ssize; // ssize = 2^sfactor
extern int cubicsize, mipsize; // cubicsize = ssize^2
// special client ent that receives input and acts as camera
extern DynamicEntity *player1;
// all the other clients (in multiplayer)
extern OFMutableArray *players;
extern bool editmode;
extern OFMutableArray<Entity *> *ents; // map entities
extern OFVector3D worldpos; // current target of the crosshair in the world
extern int lastmillis; // last time
extern int curtime; // current frame time
extern int gamemode, nextmode;
extern int xtraverts;
extern bool demoplayback;
|