Add item pad.
This commit is contained in:
parent
3e23d83f3a
commit
b3ed2b1762
|
@ -86,6 +86,7 @@ void initEntityFactory(void)
|
|||
addEntityDef("HorizontalLaserTrap", initHorizontalLaserTrap);
|
||||
addEntityDef("Exit", initExit);
|
||||
addEntityDef("Destructable", initDestructable);
|
||||
addEntityDef("ItemPad", initItemPad);
|
||||
}
|
||||
|
||||
Entity *createEntity(char *name)
|
||||
|
|
|
@ -65,8 +65,8 @@ extern Entity *initSpreadGunDroid(void);
|
|||
extern Entity *initPlasmaDroid(void);
|
||||
extern Entity *initPlasmaBlob(void);
|
||||
extern Entity *initTeeka(void);
|
||||
extern Entity *initExit(void);
|
||||
extern Entity *initDestructable(void);
|
||||
extern Entity *initCannon(void);
|
||||
extern Entity *initItemPad(void);
|
||||
|
||||
extern World world;
|
||||
|
|
|
@ -20,32 +20,45 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "itemPad.h"
|
||||
|
||||
static void init(void);
|
||||
static void tick(void);
|
||||
static void touch(Entity *other);
|
||||
static void load(cJSON *root);
|
||||
static void save(cJSON *root);
|
||||
|
||||
void initItemPad(Entity *e)
|
||||
Entity *initItemPad(void)
|
||||
{
|
||||
initEntity(e);
|
||||
Structure *s;
|
||||
|
||||
e->type = ET_ITEM_PAD;
|
||||
s = createStructure();
|
||||
|
||||
e->flags |= EF_WEIGHTLESS | EF_NO_CLIP | EF_NO_ENVIRONMENT | EF_IGNORE_BULLETS;
|
||||
s->type = ET_ITEM_PAD;
|
||||
|
||||
s->flags |= EF_WEIGHTLESS | EF_NO_CLIP | EF_NO_ENVIRONMENT | EF_IGNORE_BULLETS;
|
||||
|
||||
e->plane = PLANE_FOREGROUND;
|
||||
s->plane = PLANE_FOREGROUND;
|
||||
|
||||
e->isStatic = 1;
|
||||
s->isStatic = 1;
|
||||
|
||||
if (!e->active)
|
||||
s->init = init;
|
||||
s->tick = tick;
|
||||
s->touch = touch;
|
||||
s->load = load;
|
||||
s->save = save;
|
||||
|
||||
return (Entity*)s;
|
||||
}
|
||||
|
||||
static void init(void)
|
||||
{
|
||||
if (self->active)
|
||||
{
|
||||
e->sprite[FACING_LEFT] = e->sprite[FACING_RIGHT] = e->sprite[FACING_DIE] = getSprite("ItemPadActive");
|
||||
self->sprite[FACING_LEFT] = self->sprite[FACING_RIGHT] = self->sprite[FACING_DIE] = getSprite("ItemPadActive");
|
||||
}
|
||||
else
|
||||
{
|
||||
e->sprite[FACING_LEFT] = e->sprite[FACING_RIGHT] = e->sprite[FACING_DIE] = getSprite("ItemPadInactive");
|
||||
self->sprite[FACING_LEFT] = self->sprite[FACING_RIGHT] = self->sprite[FACING_DIE] = getSprite("ItemPadInactive");
|
||||
}
|
||||
|
||||
e->tick = tick;
|
||||
e->touch = touch;
|
||||
}
|
||||
|
||||
static void tick(void)
|
||||
|
@ -97,3 +110,27 @@ static void touch(Entity *other)
|
|||
s->bobTouching = 2;
|
||||
}
|
||||
}
|
||||
|
||||
static void load(cJSON *root)
|
||||
{
|
||||
Structure *s;
|
||||
|
||||
s = (Structure*)self;
|
||||
|
||||
if (cJSON_GetObjectItem(root, "active"))
|
||||
{
|
||||
s->active = cJSON_GetObjectItem(root, "active")->valueint;
|
||||
}
|
||||
STRNCPY(s->requiredItem, cJSON_GetObjectItem(root, "requiredItem")->valuestring, MAX_NAME_LENGTH);
|
||||
}
|
||||
|
||||
static void save(cJSON *root)
|
||||
{
|
||||
Structure *s;
|
||||
|
||||
s = (Structure*)self;
|
||||
|
||||
cJSON_AddStringToObject(root, "type", "ItemPad");
|
||||
cJSON_AddNumberToObject(root, "active", s->active);
|
||||
cJSON_AddStringToObject(root, "requiredItem", s->requiredItem);
|
||||
}
|
||||
|
|
|
@ -19,8 +19,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
*/
|
||||
|
||||
#include "../../common.h"
|
||||
#include "../../json/cJSON.h"
|
||||
|
||||
extern void initEntity(Entity *e);
|
||||
extern Structure *createStructure(void);
|
||||
extern Sprite *getSprite(char *name);
|
||||
extern void updateObjective(char *targetName);
|
||||
extern void setGameplayMessage(int type, char *format, ...);
|
||||
|
|
Loading…
Reference in New Issue