105 lines
3.6 KiB
C
Raw Normal View History

2023-09-03 01:54:07 -05:00
#pragma once
#include "olcUTIL_Camera2D.h"
#include "Textbox.h"
#include "Unit.h"
#include "olcPGEX_AudioSource.h"
#include "olcPGEX_TransformedView.h"
#include "GameFlags.h"
#include "Level.h"
2023-09-03 01:54:07 -05:00
class Scenario{
public:
Scenario(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
virtual~Scenario();
void _Start();
void Draw();
2023-09-03 01:54:07 -05:00
virtual void Start();
void _Update();
bool transitionToNextLevel=false;
LevelName nextLevel=LevelName::STAGE1;
2023-09-03 01:54:07 -05:00
protected:
void DisplayBox(std::string text,bool scaryHoodedFigure=false);
void SetCameraTarget(vf2d pos);
void SetObjective(std::string objective);
virtual bool MissionCompleted();
2023-09-03 01:54:07 -05:00
virtual void Update();
int state=0;
utils::Camera2D camera;
vf2d targetPos;
Textbox box;
float initialWaitTime=3;
bool missionCompleted=false;
float missionFinishWaitTime=3;
float missionCompletedTimer=0;
std::vector<std::shared_ptr<Unit>>&units;
std::vector<std::unique_ptr<Renderable>>&IMAGES;
std::vector<std::unique_ptr<Audio>>&SOUNDS;
GameFlags&flags;
std::string&objective;
TileTransformedView&game;
2023-09-03 01:54:07 -05:00
};
class Stage1:public Scenario{
public:
Stage1(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage2:public Scenario{
public:
Stage2(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage3:public Scenario{
public:
Stage3(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage4:public Scenario{
public:
Stage4(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage5:public Scenario{
public:
Stage5(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage6:public Scenario{
public:
Stage6(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage7:public Scenario{
public:
Stage7(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};
class Stage8:public Scenario{
public:
Stage8(std::vector<std::shared_ptr<Unit>>&units,std::vector<std::unique_ptr<Renderable>>&IMAGES,std::vector<std::unique_ptr<Audio>>&SOUNDS,std::string&objective,TileTransformedView&game,GameFlags&flags);
2023-09-03 01:54:07 -05:00
protected:
void Start();
void Update();
bool MissionCompleted();
2023-09-03 01:54:07 -05:00
};