1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-02 02:53:32 +02:00
VVVVVV/desktop_version/src/Entity.h

240 lines
4.3 KiB
C
Raw Normal View History

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>
#define rn( rx, ry) ((rx) + ((ry) * 100))
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);
}
void setblockcolour(int t, std::string col);
int swncolour(int t );
void swnenemiescol(int t);
void gravcreate(int ypos, int dir, int xoff = 0, int yoff = 0);
2020-01-01 21:29:24 +01: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);
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);
void setenemyroom(int t, int rx, int ry);
void setenemy(int t, int r);
void settreadmillcolour(int t, int rx, int ry);
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 );
bool updateentities(int i);
2020-01-01 21:29:24 +01:00
void animateentities(int i);
2020-01-01 21:29:24 +01:00
bool gettype(int t);
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();
bool checktowerspikes(int t);
2020-01-01 21:29:24 +01: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-01-01 21:29:24 +01:00
bool entitywarphlinecollide(int t, int l);
bool entitywarpvlinecollide(int t, int l);
void customwarplinecheck(int i);
float entitycollideplatformroof(int t);
2020-01-01 21:29:24 +01:00
float entitycollideplatformfloor(int t);
2020-01-01 21:29:24 +01:00
bool entitycollidefloor(int t);
2020-01-01 21:29:24 +01:00
bool entitycollideroof(int t);
2020-01-01 21:29:24 +01:00
bool testwallsx(int t, int tx, int ty);
2020-01-01 21:29:24 +01: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);
void cleanup();
void updateentitylogic(int t);
2020-01-01 21:29:24 +01:00
void entitymapcollision(int t);
2020-01-01 21:29:24 +01:00
void movingplatformfix(int t);
2020-01-01 21:29:24 +01:00
void scmmovingplatformfix(int t);
2020-01-01 21:29:24 +01:00
void hormovingplatformfix(int t);
2020-01-01 21:29:24 +01:00
void entitycollisioncheck();
2020-01-01 21:29:24 +01:00
std::vector<entclass> entities;
int nentity;
std::vector<entclass> linecrosskludge;
int nlinecrosskludge;
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;
int nblocks;
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];
};
extern entityclass obj;
2020-01-01 21:29:24 +01:00
#endif /* ENTITY_H */