aboutsummaryrefslogtreecommitdiff
path: root/engines/sludge/people.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sludge/people.h')
-rw-r--r--engines/sludge/people.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/engines/sludge/people.h b/engines/sludge/people.h
new file mode 100644
index 0000000000..fbc8fd7902
--- /dev/null
+++ b/engines/sludge/people.h
@@ -0,0 +1,134 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+#ifndef SLUDGE_PEOPLE_H
+#define SLUDGE_PEOPLE_H
+
+struct animFrame {
+ int frameNum, howMany;
+ int noise;
+};
+
+#define EXTRA_FRONT 1
+#define EXTRA_FIXEDSIZE 2
+#define EXTRA_NOSCALE 2 // Alternative name
+#define EXTRA_NOZB 4
+#define EXTRA_FIXTOSCREEN 8
+#define EXTRA_NOLITE 16
+#define EXTRA_NOREMOVE 32
+#define EXTRA_RECTANGULAR 64
+
+struct personaAnimation {
+ struct loadedSpriteBank *theSprites;
+ animFrame *frames;
+ int numFrames;
+};
+
+struct persona {
+ personaAnimation * *animation;
+ int numDirections;
+};
+
+struct onScreenPerson {
+ float x, y;
+ int height, floaty, walkSpeed;
+ float scale;
+ onScreenPerson *next;
+ int walkToX, walkToY, thisStepX, thisStepY, inPoly, walkToPoly;
+ bool walking, spinning;
+ struct loadedFunction *continueAfterWalking;
+ personaAnimation *myAnim;
+ personaAnimation *lastUsedAnim;
+ persona *myPersona;
+ int frameNum, frameTick, angle, wantAngle, angleOffset;
+ bool show;
+ int direction, directionWhenDoneWalking;
+ struct objectType *thisType;
+ int extra, spinSpeed;
+ unsigned char r, g, b, colourmix, transparency;
+};
+
+// Initialisation and creation
+
+bool initPeople();
+bool addPerson(int x, int y, int objNum, persona *p);
+
+// Draw to screen and to backdrop
+
+void drawPeople();
+void freezePeople(int, int);
+
+// Removalisationisms
+
+void killAllPeople();
+void killMostPeople();
+void removeOneCharacter(int i);
+
+// Things which affect or use all characters
+
+onScreenPerson *findPerson(int v);
+void setScale(short int h, short int d);
+
+// Things which affect one character
+
+void makeTalker(onScreenPerson &me);
+void makeSilent(onScreenPerson &me);
+void setShown(bool h, int ob);
+void setDrawMode(int h, int ob);
+void setPersonTransparency(int ob, unsigned char x);
+void setPersonColourise(int ob, unsigned char r, unsigned char g, unsigned char b, unsigned char colourmix);
+
+// Moving 'em
+
+void movePerson(int x, int y, int objNum);
+bool makeWalkingPerson(int x, int y, int objNum, struct loadedFunction *func, int di);
+bool forceWalkingPerson(int x, int y, int objNum, struct loadedFunction *func, int di);
+void jumpPerson(int x, int y, int objNum);
+void walkAllPeople();
+bool turnPersonToFace(int thisNum, int direc);
+bool stopPerson(int o);
+bool floatCharacter(int f, int objNum);
+bool setCharacterWalkSpeed(int f, int objNum);
+
+// Animating 'em
+
+void animatePerson(int obj, personaAnimation *);
+void animatePerson(int obj, persona *per);
+personaAnimation *createPersonaAnim(int num, struct variableStack *&stacky);
+inline void setBankFile(personaAnimation *newP, loadedSpriteBank *sB) {
+ newP -> theSprites = sB;
+}
+bool setPersonExtra(int f, int newSetting);
+int timeForAnim(personaAnimation *fram);
+personaAnimation *copyAnim(personaAnimation *orig);
+personaAnimation *makeNullAnim();
+void deleteAnim(personaAnimation *orig);
+
+// Loading and saving
+#if ALLOW_FILE
+bool saveAnim(personaAnimation *p, FILE *fp);
+bool loadAnim(personaAnimation *p, FILE *fp);
+bool savePeople(FILE *fp);
+bool loadPeople(FILE *fp);
+bool saveCostume(persona *cossy, FILE *fp);
+bool loadCostume(persona *cossy, FILE *fp);
+#endif
+#endif