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.
VirusAttack/olcCodeJam2023Entry/Scenario.h

51 lines
1.1 KiB

#pragma once
#include "VirusAttack.h"
#include "olcUTIL_Camera2D.h"
class Scenario{
public:
Scenario(VirusAttack*game);
virtual void Start();
void _Update();
virtual void Update()=0;
void _Draw();
virtual void Draw()=0;
void DisplayDialog(std::string dialogText,bool spooky=false);
void SetObjective(std::string objective);
void SetupCameraTarget(vf2d pos);
void MoveCamera();
virtual bool MissionCompleted()=0;
virtual void NextLevel();
protected:
VirusAttack*game;
int state=0;
Textbox dialog;
float initialWaitTimer=3;
utils::Camera2D camera;
vf2d cameraTargetPos={};
bool missionCompleted=false;
float waitToContinueTimer=0;
float missionCompletedTimer=0;
};
#define SetupStage(StageClass) \
class StageClass:public Scenario{ \
public: \
StageClass(VirusAttack*game); \
void Start()override; \
void Update()override; \
bool MissionCompleted()override; \
void Draw()override; \
void NextLevel()override; \
};
SetupStage(Stage1)
SetupStage(Stage2)
SetupStage(Stage3)
SetupStage(Stage4)
SetupStage(Stage5)
SetupStage(Stage6)
SetupStage(Stage7)
SetupStage(Stage8)