2020-01-01 21:29:24 +01:00
|
|
|
#ifndef ENTITY_H
|
|
|
|
#define ENTITY_H
|
|
|
|
|
|
|
|
#include "Maths.h"
|
|
|
|
#include "Ent.h"
|
|
|
|
#include "BlockV.h"
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
|
|
|
|
2020-04-03 22:07:04 +02:00
|
|
|
#define removeentity_iter(index) { obj.removeentity(index); index--; }
|
2020-04-04 00:55:04 +02:00
|
|
|
#define removeblock_iter(index) { obj.removeblock(index); index--; }
|
2020-04-03 22:07:04 +02:00
|
|
|
|
2020-01-01 21:29:24 +01:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
BLOCK = 0,
|
|
|
|
TRIGGER = 1,
|
|
|
|
DAMAGE = 2,
|
|
|
|
DIRECTIONAL = 3,
|
|
|
|
SAFE = 4,
|
|
|
|
ACTIVITY = 5
|
|
|
|
};
|
|
|
|
|
|
|
|
class entityclass
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void init();
|
|
|
|
|
|
|
|
void resetallflags();
|
|
|
|
|
|
|
|
void resetflags();
|
|
|
|
|
|
|
|
void confirmflags();
|
|
|
|
|
|
|
|
void changecollect(int t, int s);
|
|
|
|
|
|
|
|
void changecustomcollect(int t, int s);
|
|
|
|
|
|
|
|
void changeflag(int t, int s);
|
|
|
|
|
|
|
|
void fatal_top()
|
|
|
|
{
|
|
|
|
createblock(DAMAGE, -8, -8, 384, 16);
|
|
|
|
}
|
|
|
|
void fatal_bottom()
|
|
|
|
{
|
|
|
|
createblock(DAMAGE, -8, 224, 384, 16);
|
|
|
|
}
|
|
|
|
void fatal_left()
|
|
|
|
{
|
|
|
|
createblock(DAMAGE, -8, -8, 16, 260);
|
|
|
|
}
|
|
|
|
void fatal_right()
|
|
|
|
{
|
|
|
|
createblock(DAMAGE, 312, -8, 16, 260);
|
|
|
|
}
|
|
|
|
|
|
|
|
int swncolour(int t );
|
|
|
|
|
|
|
|
void swnenemiescol(int t);
|
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void gravcreate(int ypos, int dir, int xoff = 0, int yoff = 0);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void generateswnwave(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
void createblock(int t, int xp, int yp, int w, int h, int trig = 0);
|
|
|
|
|
2020-04-03 22:03:02 +02:00
|
|
|
void removeentity(int t);
|
|
|
|
|
2020-01-01 21:29:24 +01:00
|
|
|
void removeallblocks();
|
|
|
|
|
|
|
|
void removeblock(int t);
|
|
|
|
|
|
|
|
void removeblockat(int x, int y);
|
|
|
|
|
|
|
|
void removetrigger(int t);
|
|
|
|
|
|
|
|
void copylinecross(int t);
|
|
|
|
|
|
|
|
void revertlinecross(int t, int s);
|
|
|
|
|
|
|
|
bool gridmatch(int p1, int p2, int p3, int p4, int p11, int p21, int p31, int p41);
|
|
|
|
|
|
|
|
int crewcolour(int t);
|
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void createentity(float xp, float yp, int t, float vx = 0, float vy = 0,
|
2020-01-01 21:29:24 +01:00
|
|
|
int p1 = 0, int p2 = 0, int p3 = 320, int p4 = 240 );
|
|
|
|
|
2020-04-03 23:36:04 +02:00
|
|
|
void updateentities(int i);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void animateentities(int i);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-04-02 00:32:21 +02:00
|
|
|
int getcompanion();
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
int getplayer();
|
|
|
|
|
|
|
|
int getscm();
|
|
|
|
|
|
|
|
int getlineat(int t);
|
|
|
|
|
|
|
|
int getcrewman(int t);
|
|
|
|
int getcustomcrewman(int t);
|
|
|
|
|
|
|
|
int getteleporter();
|
|
|
|
|
|
|
|
void rectset(int xi, int yi, int wi, int hi);
|
|
|
|
|
|
|
|
void rect2set(int xi, int yi, int wi, int hi);
|
|
|
|
|
|
|
|
bool entitycollide(int a, int b);
|
|
|
|
|
|
|
|
bool checkdamage();
|
|
|
|
|
|
|
|
bool scmcheckdamage();
|
|
|
|
|
|
|
|
void settemprect(int t);
|
|
|
|
|
|
|
|
int checktrigger();
|
|
|
|
|
|
|
|
int checkactivity();
|
|
|
|
|
|
|
|
int getgridpoint(int t);
|
|
|
|
|
|
|
|
bool cblocks(int t);
|
|
|
|
|
|
|
|
bool checkplatform();
|
|
|
|
|
|
|
|
bool checkblocks();
|
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
bool checktowerspikes(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
bool checkwall();
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
float hplatformat();
|
|
|
|
|
|
|
|
int yline(int a, int b);
|
|
|
|
|
|
|
|
bool entityhlinecollide(int t, int l);
|
|
|
|
|
|
|
|
bool entityvlinecollide(int t, int l);
|
2020-04-02 21:41:33 +02:00
|
|
|
|
2020-04-02 22:42:50 +02:00
|
|
|
bool entitywarphlinecollide(int t, int l);
|
|
|
|
bool entitywarpvlinecollide(int t, int l);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-04-02 22:42:50 +02:00
|
|
|
void customwarplinecheck(int i);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
float entitycollideplatformroof(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
float entitycollideplatformfloor(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
bool entitycollidefloor(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
bool entitycollideroof(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
bool testwallsx(int t, int tx, int ty);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-04-02 22:42:50 +02:00
|
|
|
bool testwallsy(int t, float tx, float ty);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
void fixfriction(int t, float xfix, float xrate, float yrate);
|
|
|
|
|
|
|
|
void applyfriction(int t, float xrate, float yrate);
|
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void updateentitylogic(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void entitymapcollision(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void movingplatformfix(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void scmmovingplatformfix(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void hormovingplatformfix(int t);
|
2020-01-01 21:29:24 +01:00
|
|
|
|
2020-03-31 02:46:36 +02:00
|
|
|
void entitycollisioncheck();
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
std::vector<entclass> entities;
|
|
|
|
|
|
|
|
std::vector<entclass> linecrosskludge;
|
|
|
|
|
|
|
|
point colpoint1, colpoint2;
|
|
|
|
|
|
|
|
int tempx, tempy, tempw, temph, temp, temp2;
|
|
|
|
//public var tempx:int, tempy:int, tempw:int, temph:int, temp:int, temp2:int;
|
|
|
|
int tpx1, tpy1, tpx2, tpy2;
|
|
|
|
|
|
|
|
SDL_Rect temprect, temprect2;
|
|
|
|
|
|
|
|
int x, k;
|
|
|
|
float dx, dy, dr;
|
|
|
|
|
|
|
|
int px, py, linetemp;
|
|
|
|
int activetrigger;
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<blockclass> blocks;
|
|
|
|
std::vector<int> flags;
|
|
|
|
std::vector<int> collect;
|
|
|
|
std::vector<int> customcollect;
|
|
|
|
|
2020-01-25 02:26:00 +01:00
|
|
|
bool skipblocks, skipdirblocks;
|
2020-01-01 21:29:24 +01:00
|
|
|
|
|
|
|
int platformtile;
|
|
|
|
bool vertplatforms, horplatforms;
|
|
|
|
|
|
|
|
// :(
|
|
|
|
bool nearelephant, upsetmode;
|
|
|
|
int upset;
|
|
|
|
|
|
|
|
//Trophy Text
|
|
|
|
int trophytext, trophytype;
|
|
|
|
|
|
|
|
//Secret lab scripts
|
|
|
|
int altstates;
|
|
|
|
|
|
|
|
//Custom stuff
|
|
|
|
int customenemy;
|
|
|
|
int customplatformtile;
|
|
|
|
bool customwarpmode, customwarpmodevon, customwarpmodehon;
|
|
|
|
std::string customscript;
|
|
|
|
int customcrewmoods[6];
|
|
|
|
};
|
|
|
|
|
2020-02-01 00:53:29 +01:00
|
|
|
extern entityclass obj;
|
|
|
|
|
2020-01-01 21:29:24 +01:00
|
|
|
#endif /* ENTITY_H */
|