Include text entry mode for editing the encounters

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 2141cb88db
commit c102ef41a0
  1. BIN
      C++ProjectTemplate
  2. 23
      assets/maps/map0
  3. 44
      main.cpp

Binary file not shown.

@ -65,8 +65,23 @@ OBJECT313.000000;136.000000;11
OBJECT313.000000;141.000000;12 OBJECT313.000000;141.000000;12
OBJECT288.000000;160.000000;9 OBJECT288.000000;160.000000;9
OBJECT224.000000;160.000000;9 OBJECT224.000000;160.000000;9
OBJECT160.000000;192.000000;8
OBJECT256.000000;192.000000;8
OBJECT288.000000;192.000000;8
OBJECT224.000000;192.000000;8
OBJECT192.000000;192.000000;7
OBJECT192.000000;224.000000;8
OBJECT160.000000;224.000000;8
OBJECT288.000000;224.000000;8
OBJECT224.000000;224.000000;8
OBJECT256.000000;224.000000;7
OBJECT288.000000;256.000000;8
OBJECT256.000000;256.000000;8
OBJECT224.000000;256.000000;8
OBJECT192.000000;256.000000;8
OBJECT160.000000;256.000000;8
ENCOUNTER64.000000;512.000000;90;2 ENCOUNTER64.000000;512.000000;90;2
ENCOUNTER320.000000;288.000000;25;1 ENCOUNTER64.000000;64.000000;35;1
ENCOUNTER64.000000;64.000000;25;1 ENCOUNTER64.000000;256.000000;100;1
ENCOUNTER64.000000;256.000000;25;1 ENCOUNTER192.000000;352.000000;25;1
ENCOUNTER192.000000;352.000000;25;1 ENCOUNTER320.000000;288.000000;25;2

@ -79,6 +79,7 @@ class Object{
int objArrElement; //Which element in the object array this object is located in. For sorting purposes. int objArrElement; //Which element in the object array this object is located in. For sorting purposes.
bool temp=false; //If set to true, it's marked for deletion after cutscene handling. bool temp=false; //If set to true, it's marked for deletion after cutscene handling.
bool enc=false; //If set to true, it's not included in the main list of entities for map saving because it's from an encounter. bool enc=false; //If set to true, it's not included in the main list of entities for map saving because it's from an encounter.
bool dead=false; //If set to true, this object was properly part of an Entity and got declared as dead.
//animationSpd is how long to wait before switching frames. //animationSpd is how long to wait before switching frames.
bool Collision(vd2d pos) { bool Collision(vd2d pos) {
GAME->SetDrawTarget(layer::COLLISION); GAME->SetDrawTarget(layer::COLLISION);
@ -367,6 +368,7 @@ public:
int ENCOUNTER_SELECTED = 0; int ENCOUNTER_SELECTED = 0;
int ENCOUNTER_OFFSET = 0; int ENCOUNTER_OFFSET = 0;
std::vector<Encounter*>ENCOUNTER_LIST; std::vector<Encounter*>ENCOUNTER_LIST;
Encounter*EDITING_ENCOUNTER=nullptr;
bool MOUSE_PRESSED_DOWN=false,MOUSE_DOWN=false,MOUSE_RELEASED=false; //TODO Implement Mouse things. bool MOUSE_PRESSED_DOWN=false,MOUSE_DOWN=false,MOUSE_RELEASED=false; //TODO Implement Mouse things.
@ -665,6 +667,9 @@ goes on a very long time, I hope you can understand this is only for testing pur
} }
}break; }break;
case GameState::EDITOR:{ case GameState::EDITOR:{
if (IsTextEntryEnabled()) {
return;
}
if (TabHeld()) { if (TabHeld()) {
GAME_STATE=GameState::TILE_SELECT; GAME_STATE=GameState::TILE_SELECT;
} }
@ -814,9 +819,19 @@ goes on a very long time, I hope you can understand this is only for testing pur
}break; }break;
} }
} }
void OnTextEntryComplete(const std::string&text) override{
if (EDITING_LAYER==layer::ENCOUNTER&&EDITING_ENCOUNTER!=nullptr) {
int numb=0;
for (int i=0;i<text.size();i++) {
numb*=10;
numb+=text[i]-'0';
}
EDITING_ENCOUNTER->chance=numb;
}
}
void keyUpdates() { void keyUpdates() {
if (GetKey(F1).bPressed) { if (GetKey(F1).bPressed) {
ConsoleShow(F1,false); ConsoleShow(F1,false);
} }
@ -848,6 +863,9 @@ goes on a very long time, I hope you can understand this is only for testing pur
} }
}break; }break;
case GameState::EDITOR:{ case GameState::EDITOR:{
if (IsTextEntryEnabled()) {
return;
}
if (GetKey(F2).bPressed) { if (GetKey(F2).bPressed) {
SaveMap(CURRENT_MAP); SaveMap(CURRENT_MAP);
printf("Map Saved\n"); printf("Map Saved\n");
@ -899,6 +917,15 @@ goes on a very long time, I hope you can understand this is only for testing pur
} }
} }
} else } else
if (EDITING_LAYER==layer::ENCOUNTER&&GetMouse(2).bPressed) {
for (int i=0;i<CURRENT_MAP->encounters.size();i++) {
if(CURRENT_MAP->encounters[i]->pos==HIGHLIGHTED_TILE*32) {
EDITING_ENCOUNTER=CURRENT_MAP->encounters[i];
TextEntryEnable(true);
break;
}
}
} else
if (EDITING_LAYER==layer::OBJECT&&GetMouse(0).bPressed) { if (EDITING_LAYER==layer::OBJECT&&GetMouse(0).bPressed) {
AddObjectToWorld(CreateObject(SELECTED_OBJ_ID,HIGHLIGHTED_TILE*32)); AddObjectToWorld(CreateObject(SELECTED_OBJ_ID,HIGHLIGHTED_TILE*32));
} else } else
@ -940,10 +967,16 @@ goes on a very long time, I hope you can understand this is only for testing pur
SetDrawTarget(nullptr); SetDrawTarget(nullptr);
DrawRectDecal((HIGHLIGHTED_TILE)*32-cameraPos,{32,32},YELLOW); DrawRectDecal((HIGHLIGHTED_TILE)*32-cameraPos,{32,32},YELLOW);
if (EDITING_LAYER==layer::ENCOUNTER) { if (EDITING_LAYER==layer::ENCOUNTER) {
DrawStringPropDecal({2,2},"Editing Encounters"); if (IsTextEntryEnabled()) {
DrawStringPropDecal({2,2},"Input Chance: "+TextEntryGetString()+"%",YELLOW);
} else {
DrawStringPropDecal({2,2},"Editing Encounters");
}
for (auto&enc:CURRENT_MAP->encounters) { for (auto&enc:CURRENT_MAP->encounters) {
FillRectDecal(enc->pos-cameraPos,{WIDTH,HEIGHT},Pixel(255,0,0,64)); FillRectDecal(enc->pos-cameraPos,{WIDTH,HEIGHT},Pixel(255,0,0,64));
DrawRectDecal(enc->pos-cameraPos,{WIDTH,HEIGHT},YELLOW); DrawRectDecal(enc->pos-cameraPos,{WIDTH,HEIGHT},YELLOW);
vi2d textOffset={2,2};
DrawStringDecal(enc->pos-cameraPos+textOffset,std::to_string(enc->chance)+"%");
} }
} else } else
if (EDITING_LAYER==layer::OBJECT) { if (EDITING_LAYER==layer::OBJECT) {
@ -976,6 +1009,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
GetMousePos().y<drawpos.y+24) { GetMousePos().y<drawpos.y+24) {
SELECTED_OBJ_ID=obj->id; SELECTED_OBJ_ID=obj->id;
EDITING_LAYER=layer::OBJECT; EDITING_LAYER=layer::OBJECT;
EnableLayer(layer::COLLISION,false);
} }
FillRectDecal(drawpos,{16,24},VERY_DARK_GREY); FillRectDecal(drawpos,{16,24},VERY_DARK_GREY);
DrawPartialDecal({drawpos.x,drawpos.y+8},{16,16},obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->color); DrawPartialDecal({drawpos.x,drawpos.y+8},{16,16},obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->color);
@ -1010,6 +1044,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
GetMousePos().y<drawpos.y+24) { GetMousePos().y<drawpos.y+24) {
ENCOUNTER_SELECTED=enc->id; ENCOUNTER_SELECTED=enc->id;
EDITING_LAYER=layer::ENCOUNTER; EDITING_LAYER=layer::ENCOUNTER;
EnableLayer(layer::COLLISION,false);
} }
FillRectDecal(drawpos,{16,24},VERY_DARK_GREY); FillRectDecal(drawpos,{16,24},VERY_DARK_GREY);
for (int i=0;i<enc->objs.size();i+=2) { for (int i=0;i<enc->objs.size();i+=2) {
@ -1044,7 +1079,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
for (int y=-1;y<HEIGHT/32+2;y++) { for (int y=-1;y<HEIGHT/32+2;y++) {
int yTileOffset = cameraPos.y/32; int yTileOffset = cameraPos.y/32;
for (auto&obj:OBJECTS) { for (auto&obj:OBJECTS) {
if (!obj->drawn&&obj->GetPos().y+obj->originPoint.y>(y+yTileOffset)*32&&obj->GetPos().y+obj->originPoint.y<=(y+yTileOffset+1)*32) { if (!obj->drawn&&(!obj->dead||EDITING_LAYER==layer::ENCOUNTER)&&obj->GetPos().y+obj->originPoint.y>(y+yTileOffset)*32&&obj->GetPos().y+obj->originPoint.y<=(y+yTileOffset+1)*32) {
obj->drawn=true; obj->drawn=true;
SetDrawTarget(layer::DYNAMIC); SetDrawTarget(layer::DYNAMIC);
DrawPartialDecal(obj->GetPos()-cameraPos,obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->GetScale(),obj->color); DrawPartialDecal(obj->GetPos()-cameraPos,obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->GetScale(),obj->color);
@ -1681,7 +1716,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
} }
bool PlayerCanMove(){ bool PlayerCanMove(){
return !messageBoxVisible&&PARTY_MEMBER_OBJ[0]!=nullptr; return !IsTextEntryEnabled()&&!messageBoxVisible&&PARTY_MEMBER_OBJ[0]!=nullptr;
} }
void DisplayMessageBox(std::string targetText) { void DisplayMessageBox(std::string targetText) {
@ -1825,6 +1860,7 @@ goes on a very long time, I hope you can understand this is only for testing pur
data->objs[i]->obj->enc=true; data->objs[i]->obj->enc=true;
if (!successful) { if (!successful) {
data->objs[i]->HP=0; data->objs[i]->HP=0;
data->objs[i]->obj->dead=true;
} }
} }
map->encounters.push_back(data); map->encounters.push_back(data);

Loading…
Cancel
Save