Files
thepool/source/actor.h
Raimon Zamora 2f1ae09676 - Augmentat el nom dels actor a 16 caràcters
- Augmentat els flags dels actors a 16 bits
- Afegit flag NOEDITOR per a ocultar les portes del editor
- Per ara eixim amb ESC, mes fàcil
2023-09-21 07:58:34 +02:00

93 lines
1.8 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "misc.h"
#include "jdraw.h"
#define FLAG_NONE 0
#define FLAG_HERO 1
#define FLAG_PUSHABLE 2
#define FLAG_REACTIVE 4
#define FLAG_MOVING 8
#define FLAG_ANIMATED 16
#define FLAG_ORIENTABLE 32
#define FLAG_DEADLY 64
#define FLAG_GRAVITY 128
#define FLAG_NOEDITOR 256
#define PUSH_NONE 0
#define PUSH_XP 1
#define PUSH_XN 2
#define PUSH_YP 4
#define PUSH_YN 8
#define PUSH_ZP 16
#define PUSH_ZN 32
#define MOV_NONE 0
#define MOV_X 1
#define MOV_Y 2
#define MOV_Z 3
#define MOV_CW 4
#define MOV_CCW 5
#define MOV_RAND 6
#define MOV_HUNT 7
namespace actor
{
struct actor_t
{
char name[16];
draw::surface *surface;
SDL_Rect bmp_rect;
SDL_Point bmp_offset;
vec3_t pos;
vec3_t size;
uint8_t orient;
uint8_t anim_cycle;
uint8_t anim_frame;
uint8_t anim_wait;
uint8_t anim_wait_count;
uint16_t flags;
uint8_t push;
uint8_t react_mask;
uint8_t react_push;
uint8_t movement;
uint8_t mov_push;
actor_t *below;
actor_t *above;
actor_t *prev;
actor_t *next;
};
actor_t *getFirst();
actor_t *getSelected();
actor_t *create(const char *name, vec3_t p, vec3_t s, const char *bmp, SDL_Rect r, SDL_Point o);
void setDirty(actor_t *act, const bool force=false);
void select(actor_t *act);
void reorder();
void update(actor_t *act, const bool update_all=true);
void draw(actor_t *act, const bool draw_all=true);
actor_t *find(const char *name);
actor_t *find_at(const int x, const int y, const int z);
actor_t *get_collision(actor_t *act);
const bool check_collision(actor_t *obj1, actor_t *obj2);
void clear();
}