From 5323d1b2b283882dc29115bc316fea29b4fb6fc4 Mon Sep 17 00:00:00 2001 From: Steve Date: Sat, 27 Jan 2018 11:26:14 +0000 Subject: [PATCH] Pushblock. --- common.mk | 2 +- src/world/entities/structures/pushBlock.c | 49 +++++++++++++++++++++++ src/world/entities/structures/pushBlock.h | 29 ++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 src/world/entities/structures/pushBlock.c create mode 100644 src/world/entities/structures/pushBlock.h diff --git a/common.mk b/common.mk index 8ccac9c..f43b26c 100644 --- a/common.mk +++ b/common.mk @@ -37,7 +37,7 @@ OBJS += key.o keycard.o OBJS += lift.o lookup.o OBJS += main.o map.o maths.o mia.o OBJS += objectives.o -OBJS += particles.o player.o powerPoint.o powerPool.o pressurePlate.o +OBJS += particles.o player.o powerPoint.o powerPool.o pressurePlate.o pushBlock.o OBJS += quadtree.o OBJS += sound.o sprites.o OBJS += tankCommander.o tankTrack.o teeka.o text.o textures.o title.o triggers.o diff --git a/src/world/entities/structures/pushBlock.c b/src/world/entities/structures/pushBlock.c new file mode 100644 index 0000000..2517410 --- /dev/null +++ b/src/world/entities/structures/pushBlock.c @@ -0,0 +1,49 @@ +/* +Copyright (C) 2018 Parallel Realities + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "pushBlock.h" + +static void activate(int active); + +void initPushBlock(Entity *e) +{ + initEntity(e); + + e->isSolid = 1; + + e->startX = e->startY = -1; + + e->flags |= EF_EXPLODES | EF_ALWAYS_PROCESS; + + e->activate = activate; +} + +static void activate(int active) +{ + if (self->active) + { + addTeleportStars(self); + self->x = self->startX; + self->y = self->startY; + self->dx = self->dy = 0; + addTeleportStars(self); + playSound(SND_APPEAR, CH_ANY); + } +} diff --git a/src/world/entities/structures/pushBlock.h b/src/world/entities/structures/pushBlock.h new file mode 100644 index 0000000..cbd550b --- /dev/null +++ b/src/world/entities/structures/pushBlock.h @@ -0,0 +1,29 @@ +/* +Copyright (C) 2018 Parallel Realities + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#include "../../../common.h" + +extern void initEntity(Entity *e); +extern int getSpriteIndex(char *name); +extern void activateEntities(char *names, int activate); +extern void playSound(int snd, int ch); +extern void addTeleportStars(Entity *e); + +extern Entity *self;