generated from sigonasr2/CPlusPlusProjectTemplate
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.4 KiB
90 lines
2.4 KiB
#ifndef TRIGGER_H
|
|
#define TRIGGER_H
|
|
#include "cutscene.h"
|
|
#include "pixelGameEngine.h"
|
|
#include "flags.h"
|
|
#include "SeasonI.h"
|
|
|
|
using namespace olc;
|
|
|
|
namespace TriggerName{
|
|
//When adding new triggers to the list, you will have to add a new line to trigger.cpp to get it to appear in the editor.
|
|
enum Trigger{
|
|
NONE,
|
|
START_CUTSCENE_1,
|
|
GOTO_MAP,
|
|
};
|
|
}
|
|
|
|
extern void DisplayMessageBox(std::string targetT);
|
|
extern SeasonI*GAME;
|
|
extern std::map<CutsceneName::Cutscene,Cutscene*> CUTSCENES;
|
|
extern Map*CURRENT_MAP;
|
|
extern vi2d HIGHLIGHTED_TILE;
|
|
|
|
class Trigger{
|
|
vi2d pos;
|
|
vi2d size;
|
|
TriggerName::Trigger id;
|
|
vi2d extraCoords;
|
|
Map*mapChoice;
|
|
public:
|
|
Trigger(vi2d pos,vi2d size,TriggerName::Trigger id,vi2d extraCoords={0,0},Map*mapChoice=nullptr)
|
|
:pos(pos),size(size),id(id),extraCoords(extraCoords),mapChoice(mapChoice){}
|
|
bool IsInside(vd2d point) {
|
|
return point.x>pos.x&&point.x<pos.x+size.x&&point.y>pos.y&&point.y<pos.y+size.y;
|
|
}
|
|
void Interact() {
|
|
switch (id) {
|
|
case TriggerName::START_CUTSCENE_1:{
|
|
if (!GAME->GetGameFlag(Flag::TEST_FLAG1)) {
|
|
DisplayMessageBox("You have triggered this scene.");
|
|
GAME->SetGameFlag(Flag::TEST_FLAG1,true);
|
|
}
|
|
}break;
|
|
case TriggerName::GOTO_MAP:{
|
|
MapTransitionCutscene*scene=(MapTransitionCutscene*)CUTSCENES[CutsceneName::TRANSFER_MAP_CUTSCENE];
|
|
std::vector<CutsceneAction*>actions=scene->GetActions();
|
|
LoadMap*mapLoadAction=(LoadMap*)actions[1];
|
|
mapLoadAction->SetTargetMap(mapChoice);
|
|
MovePlayerObjects*playerMoveAction=(MovePlayerObjects*)actions[2];
|
|
playerMoveAction->SetTargetPos(extraCoords);
|
|
GAME->StartCutscene(scene);
|
|
}break;
|
|
}
|
|
}
|
|
vi2d GetPos() {
|
|
return pos;
|
|
}
|
|
vi2d GetSize() {
|
|
return size;
|
|
}
|
|
int GetPosX() {
|
|
return pos.x;
|
|
}
|
|
int GetPosY() {
|
|
return pos.y;
|
|
}
|
|
int GetSizeX() {
|
|
return size.x;
|
|
}
|
|
int GetSizeY() {
|
|
return size.y;
|
|
}
|
|
int GetID() {
|
|
return id;
|
|
}
|
|
Map*GetMapPtr(){
|
|
return mapChoice;
|
|
}
|
|
vd2d GetAdditionalCoordData(){
|
|
return extraCoords;
|
|
}
|
|
void SetExtraCoords(vd2d coords) {
|
|
extraCoords=coords;
|
|
}
|
|
void SetMap(Map*map) {
|
|
mapChoice=map;
|
|
}
|
|
};
|
|
#endif |