Loading files menu transitions to game after loading

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 61f57f5fd8
commit c9be7c5c6a
  1. BIN
      C++ProjectTemplate
  2. 2
      SeasonI.h
  3. 36
      cutscene.h
  4. 6
      defines.h
  5. 20
      main.cpp

Binary file not shown.

@ -5,7 +5,6 @@
#include "soundwaveEngine.h" #include "soundwaveEngine.h"
#include "defines.h" #include "defines.h"
#include "flags.h" #include "flags.h"
#include "cutscene.h"
using namespace olc; using namespace olc;
@ -17,6 +16,7 @@ class Object;
enum class ActionType; enum class ActionType;
class Entity; class Entity;
class Effect; class Effect;
class Cutscene;
namespace Battle{ namespace Battle{
class Move; class Move;
} }

@ -3,22 +3,18 @@
#include "pixelGameEngine.h" #include "pixelGameEngine.h"
#include "defines.h" #include "defines.h"
#include "flags.h" #include "flags.h"
#include "object.h"
#define CAMERA_MOVESPD 5 #define CAMERA_MOVESPD 5
#define BATTLE_CAMERA_MOVESPD 2.5 #define BATTLE_CAMERA_MOVESPD 2.5
using namespace olc; using namespace olc;
enum PriorityDirection{
HORZ_FIRST,
VERT_FIRST,
BOTH
};
namespace CutsceneName{ namespace CutsceneName{
enum Cutscene{ enum Cutscene{
TEST_CUTSCENE, TEST_CUTSCENE,
TRANSFER_MAP_CUTSCENE, TRANSFER_MAP_CUTSCENE,
LOAD_FILE_CUTSCENE,
}; };
} }
@ -38,6 +34,7 @@ enum class ActionType{
MODIFY_OBJECT, MODIFY_OBJECT,
LOAD_MAP, LOAD_MAP,
MOVE_PLAYER_OBJS, MOVE_PLAYER_OBJS,
LOAD_FILE,
}; };
class CutsceneAction{ class CutsceneAction{
@ -290,6 +287,18 @@ class MovePlayerObjects:public CutsceneAction{
} }
}; };
class LoadGame:public CutsceneAction{
protected:
int saveslot;
public:
LoadGame(int saveslot)
:saveslot(saveslot) {}
ActionType GetActionType() override{return ActionType::LOAD_FILE;}
int GetSaveFileSlot(){
return saveslot;
}
};
/* /*
To use this class, specify multiple actions back-to-back, filling their appropriate arguments. To use this class, specify multiple actions back-to-back, filling their appropriate arguments.
@ -383,4 +392,19 @@ class MapTransitionCutscene:public Cutscene{
return actions; return actions;
} }
}; };
extern std::array<NPC_Obj*,4> PARTY_MEMBER_OBJ;
class LoadFileCutscene:public Cutscene{
public:
LoadFileCutscene()
:Cutscene({
Fade(),
LoadGame(0),
Fade(true),
}){}
std::vector<CutsceneAction*>GetActions(){
return actions;
}
};
#endif #endif

@ -68,6 +68,12 @@ enum class Direction{
NORTHWEST, NORTHWEST,
}; };
enum PriorityDirection{
HORZ_FIRST,
VERT_FIRST,
BOTH
};
extern vd2d cameraPos; extern vd2d cameraPos;
#endif #endif

@ -176,6 +176,7 @@ Map* ORIGINATING_MAP=nullptr;
std::array<std::string,7> PARTY_MEMBER_NAMES={"PLAYER","NESS","PAULA","JEFF","ANNA","KING","POO"}; std::array<std::string,7> PARTY_MEMBER_NAMES={"PLAYER","NESS","PAULA","JEFF","ANNA","KING","POO"};
std::array<SaveFileData,3> SAVE_FILE_DATA={{}}; std::array<SaveFileData,3> SAVE_FILE_DATA={{}};
int CHAPTER_NUMBER=0; int CHAPTER_NUMBER=0;
int SAVE_FILE_CURSOR=0;
/* /*
[Choice1,Choice2,Choice3] [Choice1,Choice2,Choice3]
@ -1378,7 +1379,7 @@ void SeasonI::updateGame(){
} }
if (moved) { if (moved) {
const vi2d cameraOffset={WIDTH/2,HEIGHT/2}; const vi2d cameraOffset={WIDTH/2,HEIGHT/2};
cameraPos=PARTY_MEMBER_OBJ[0]->GetPos()-cameraOffset; cameraPos=PARTY_MEMBER_OBJ[0]->GetPos()+PARTY_MEMBER_OBJ[0]->originPoint/2-cameraOffset;
} }
if (moved&&BATTLE_ENCOUNTER==nullptr) { if (moved&&BATTLE_ENCOUNTER==nullptr) {
for (int i=0;i<CURRENT_MAP->encounters.size();i++) { for (int i=0;i<CURRENT_MAP->encounters.size();i++) {
@ -1957,6 +1958,12 @@ void SeasonI::keyUpdates() {
} }
switch (GAME_STATE) { switch (GAME_STATE) {
case GameState::FILE_LOAD_SELECT:{
CursorControl(SAVE_FILE_CURSOR,3);
if (ACTIONKEYPRESSED) {
StartCutscene(CUTSCENES[CutsceneName::LOAD_FILE_CUTSCENE]);
}
}break;
case GameState::TILE_SELECT:{ case GameState::TILE_SELECT:{
if (UpPressed()) { if (UpPressed()) {
SELECTED_TILE.y=SELECTED_TILE.y-1; SELECTED_TILE.y=SELECTED_TILE.y-1;
@ -2755,8 +2762,9 @@ void SeasonI::drawGame(){
case GameState::FILE_LOAD_SELECT:{ case GameState::FILE_LOAD_SELECT:{
DrawDialogBox({4,4},{(int)(WIDTH-8),HEIGHT/4},Pixel(70, 33, 105,220),Pixel(62, 54, 69,220),Pixel(185, 148, 255,220)); DrawDialogBox({4,4},{(int)(WIDTH-8),HEIGHT/4},Pixel(70, 33, 105,220),Pixel(62, 54, 69,220),Pixel(185, 148, 255,220));
for (int i=0;i<3;i++) { for (int i=0;i<3;i++) {
DrawStringDecal({8.f,(float)(8+i*12)},SAVE_FILE_DATA[i].playerName+" Chapter "+std::to_string(SAVE_FILE_DATA[i].chapterNumber)+" "+SAVE_FILE_DATA[i].playTime); DrawStringDecal({16.f,(float)(12+i*16)},SAVE_FILE_DATA[i].playerName+" Chapter "+std::to_string(SAVE_FILE_DATA[i].chapterNumber)+" "+SAVE_FILE_DATA[i].playTime);
} }
DrawRotatedDecal({10.F,(float)16+SAVE_FILE_CURSOR*16},SPRITES["cursor.png"],0,{4,4});
}break; }break;
case GameState::GAME_WORLD: case GameState::GAME_WORLD:
case GameState::OVERWORLD_MENU: case GameState::OVERWORLD_MENU:
@ -3925,6 +3933,13 @@ void SeasonI::HandleCutscenes() {
cameraPos=PARTY_MEMBER_OBJ[0]->GetPos()-cameraOffset; cameraPos=PARTY_MEMBER_OBJ[0]->GetPos()-cameraOffset;
CurrentCutscene->AdvanceAction(); CurrentCutscene->AdvanceAction();
}break; }break;
case ActionType::LOAD_FILE:{
LoadGameSaveData(SAVE_FILE_CURSOR);
const vi2d cameraOffset={WIDTH/2,HEIGHT/2};
cameraPos=PARTY_MEMBER_OBJ[0]->GetPos()+PARTY_MEMBER_OBJ[0]->originPoint/2-cameraOffset;
GAME_STATE=GameState::GAME_WORLD;
CurrentCutscene->AdvanceAction();
}break;
} }
for (int i=0;i<CUTSCENE_QUEUE.size();i++) { for (int i=0;i<CUTSCENE_QUEUE.size();i++) {
@ -5237,6 +5252,7 @@ void SeasonI::SetupCutscenes(){
ModifyObject(0,ANIMATIONS["player.png"],{5,5},MAGENTA), ModifyObject(0,ANIMATIONS["player.png"],{5,5},MAGENTA),
MoveCutsceneObject(1,{320,64},1),})}, MoveCutsceneObject(1,{320,64},1),})},
{CutsceneName::TRANSFER_MAP_CUTSCENE,new MapTransitionCutscene()}, {CutsceneName::TRANSFER_MAP_CUTSCENE,new MapTransitionCutscene()},
{CutsceneName::LOAD_FILE_CUTSCENE,new LoadFileCutscene()},
}; };
} }

Loading…
Cancel
Save