Object reordering and layering

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 29fb6c2a0a
commit a0f5e2efd6
  1. BIN
      C++ProjectTemplate
  2. 47
      assets/maps/map0
  3. 2
      assets/maps/map0_2
  4. 2
      assets/maps/map0_3
  5. 2
      assets/maps/map0_4
  6. 2
      assets/maps/map0_5
  7. 117
      main.cpp

Binary file not shown.

@ -48,20 +48,33 @@
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? OBJECT256.000000;128.000000;2
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? OBJECT224.000000;128.000000;2
OBJECT313.000000;126.000000;0 OBJECT160.000000;128.000000;2
OBJECT160.000000;32.000000;40 OBJECT192.000000;128.000000;2
OBJECT256.000000;64.000000;40 OBJECT288.000000;128.000000;2
OBJECT256.000000;128.000000;40 OBJECT212.000000;228.000000;0
OBJECT384.000000;96.000000;40 OBJECT192.000000;160.000000;2
OBJECT352.000000;64.000000;40 OBJECT160.000000;160.000000;2
OBJECT448.000000;96.000000;40 OBJECT192.000000;192.000000;2
OBJECT416.000000;224.000000;41 OBJECT160.000000;192.000000;2
OBJECT352.000000;192.000000;41 OBJECT192.000000;224.000000;2
OBJECT256.000000;224.000000;41 OBJECT160.000000;224.000000;2
OBJECT288.000000;192.000000;41 OBJECT313.000000;131.000000;4
OBJECT320.000000;224.000000;58 OBJECT288.000000;160.000000;3
OBJECT384.000000;96.000000;58 OBJECT224.000000;160.000000;3
OBJECT480.000000;96.000000;58 OBJECT256.000000;160.000000;2
OBJECT544.000000;96.000000;58 OBJECT313.000000;136.000000;5
OBJECT313.000000;141.000000;6
OBJECT313.000000;151.000000;8
OBJECT256.000000;192.000000;2
OBJECT288.000000;192.000000;2
OBJECT224.000000;192.000000;2
OBJECT288.000000;224.000000;2
OBJECT256.000000;224.000000;2
OBJECT224.000000;224.000000;2
OBJECT288.000000;256.000000;2
OBJECT256.000000;256.000000;2
OBJECT224.000000;256.000000;2
OBJECT192.000000;256.000000;2
OBJECT160.000000;256.000000;2

@ -47,6 +47,4 @@
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

@ -47,6 +47,4 @@
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

@ -47,6 +47,4 @@
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

@ -47,6 +47,4 @@
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

@ -8,6 +8,7 @@
#include "references.h" #include "references.h"
#include "states.h" #include "states.h"
#include "flags.h" #include "flags.h"
#include <assert.h>
#define WIDTH 256 #define WIDTH 256
#define HEIGHT 224 #define HEIGHT 224
@ -76,16 +77,20 @@ class Object{
bool drawn=false; bool drawn=false;
int disableFlag; int disableFlag;
int enableFlag; int enableFlag;
int objArrElement; //Which element in the object array this object is located in. For sorting purposes.
//animationSpd is how long to wait before switching frames. //animationSpd is how long to wait before switching frames.
Object(int id,std::string name,vd2d pos,Animation*spr,vd2d scale={1,1},Pixel color=WHITE,int animationSpd=1) { Object(int id,std::string name,vd2d pos,Animation*spr,vd2d scale={1,1},Pixel color=WHITE,int animationSpd=1) {
this->spr=spr; this->spr=spr;
this->pos=pos; this->pos=pos;
this->id=id; this->id=id;
this->name=name; this->name=name;
this->scale=scale;
this->color=color; this->color=color;
this->animationSpd=animationSpd; this->animationSpd=animationSpd;
this->originPoint={spr->width/2,spr->spr->sprite->height-4}; SetScale(scale);
}
void SetScale(vd2d scale) {
this->scale=scale;
this->originPoint={spr->width/2*scale.x,(spr->spr->sprite->height-4)*scale.y};
} }
}; };
@ -114,6 +119,7 @@ public:
int SELECTED_OBJ_ID = PLAYER; int SELECTED_OBJ_ID = PLAYER;
int OBJ_DISPLAY_OFFSET = 0; int OBJ_DISPLAY_OFFSET = 0;
bool GAME_FLAGS[128]={}; bool GAME_FLAGS[128]={};
Object* PLAYER_OBJ;
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.
@ -122,8 +128,8 @@ public:
std::vector<std::vector<TILE*>> MAP3; std::vector<std::vector<TILE*>> MAP3;
std::vector<std::vector<TILE*>> MAP4; std::vector<std::vector<TILE*>> MAP4;
std::vector<std::vector<TILE*>> MAP5; //Collision Layer std::vector<std::vector<TILE*>> MAP5; //Collision Layer
std::map<Reference,Decal*> SPRITES; std::map<std::string,Decal*> SPRITES;
std::map<Reference,Animation*> ANIMATIONS; std::map<std::string,Animation*> ANIMATIONS;
std::map<int,Object*> OBJ_INFO; std::map<int,Object*> OBJ_INFO;
std::vector<Object*> OBJECTS; std::vector<Object*> OBJECTS;
@ -146,7 +152,7 @@ public:
GAME_FLAGS[Flag::TEST_FLAG2]=false; GAME_FLAGS[Flag::TEST_FLAG2]=false;
GAME_FLAGS[Flag::TEST_FLAG3]=true; GAME_FLAGS[Flag::TEST_FLAG3]=true;
MAP_ONETT=new Map("map0","map0_2","map0_3","map0_4","map0_5",SPRITES[TILESET1]); MAP_ONETT=new Map("map0","map0_2","map0_3","map0_4","map0_5",SPRITES["terrainmap.png"]);
CURRENT_MAP=MAP_ONETT; CURRENT_MAP=MAP_ONETT;
//OBJ_INFO["PLAYER"]=PLAYER_ANIMATION; //OBJ_INFO["PLAYER"]=PLAYER_ANIMATION;
@ -213,23 +219,23 @@ public:
} }
if (OBJECTS.size()>0) { if (OBJECTS.size()>0) {
if (GetKey(I).bHeld) { if (GetKey(I).bHeld) {
if (!Collision({OBJECTS[0]->pos.x+OBJECTS[0]->originPoint.x,OBJECTS[0]->pos.y-1+OBJECTS[0]->originPoint.y})) { if (!Collision({PLAYER_OBJ->pos.x+PLAYER_OBJ->originPoint.x,PLAYER_OBJ->pos.y-1+PLAYER_OBJ->originPoint.y})) {
OBJECTS[0]->pos.y-=1; Move(PLAYER_OBJ,{0,-1});
} }
} }
if (GetKey(K).bHeld) { if (GetKey(K).bHeld) {
if (!Collision({OBJECTS[0]->pos.x+OBJECTS[0]->originPoint.x,OBJECTS[0]->pos.y+1+OBJECTS[0]->originPoint.y})) { if (!Collision({PLAYER_OBJ->pos.x+PLAYER_OBJ->originPoint.x,PLAYER_OBJ->pos.y+1+PLAYER_OBJ->originPoint.y})) {
OBJECTS[0]->pos.y+=1; Move(PLAYER_OBJ,{0,1});
} }
} }
if (GetKey(J).bHeld) { if (GetKey(J).bHeld) {
if (!Collision({OBJECTS[0]->pos.x-1+OBJECTS[0]->originPoint.x,OBJECTS[0]->pos.y+OBJECTS[0]->originPoint.y})) { if (!Collision({PLAYER_OBJ->pos.x-1+PLAYER_OBJ->originPoint.x,PLAYER_OBJ->pos.y+PLAYER_OBJ->originPoint.y})) {
OBJECTS[0]->pos.x-=1; Move(PLAYER_OBJ,{-1,0});
} }
} }
if (GetKey(L).bHeld) { if (GetKey(L).bHeld) {
if (!Collision({OBJECTS[0]->pos.x+1+OBJECTS[0]->originPoint.x,OBJECTS[0]->pos.y+OBJECTS[0]->originPoint.y})) { if (!Collision({PLAYER_OBJ->pos.x+1+PLAYER_OBJ->originPoint.x,PLAYER_OBJ->pos.y+PLAYER_OBJ->originPoint.y})) {
OBJECTS[0]->pos.x+=1; Move(PLAYER_OBJ,{1,0});
} }
} }
} }
@ -378,7 +384,7 @@ public:
GAME_STATE=GameState::OBJ_SELECT; GAME_STATE=GameState::OBJ_SELECT;
} }
if (EDITING_LAYER==layer::OBJECT&&GetMouse(0).bPressed) { if (EDITING_LAYER==layer::OBJECT&&GetMouse(0).bPressed) {
OBJECTS.push_back(CreateObject(SELECTED_OBJ_ID,HIGHLIGHTED_TILE*32)); AddObjectToWorld(CreateObject(SELECTED_OBJ_ID,HIGHLIGHTED_TILE*32));
} else } else
if (EDITING_LAYER==layer::OBJECT&&GetMouse(1).bReleased) { if (EDITING_LAYER==layer::OBJECT&&GetMouse(1).bReleased) {
for (int i=0;i<OBJECTS.size();i++) { for (int i=0;i<OBJECTS.size();i++) {
@ -412,7 +418,7 @@ public:
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->pos.y+obj->originPoint.y*obj->scale.y>(y+yTileOffset)*32&&obj->pos.y+obj->originPoint.y*obj->scale.y<=(y+yTileOffset+1)*32) { if (!obj->drawn&&obj->pos.y+obj->originPoint.y>(y+yTileOffset)*32&&obj->pos.y+obj->originPoint.y<=(y+yTileOffset+1)*32) {
obj->drawn=true; obj->drawn=true;
SetDrawTarget(layer::DYNAMIC); SetDrawTarget(layer::DYNAMIC);
DrawPartialDecal(obj->pos-cameraPos,obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->scale,obj->color); DrawPartialDecal(obj->pos-cameraPos,obj->spr->spr,{(obj->frameIndex%obj->spr->frames)*obj->spr->width,0},{obj->spr->width,obj->spr->spr->sprite->height},obj->scale,obj->color);
@ -423,23 +429,23 @@ public:
if (x+xTileOffset>=0&&x+xTileOffset<MAP_WIDTH&&y+yTileOffset>=0&&y+yTileOffset<MAP_HEIGHT) { if (x+xTileOffset>=0&&x+xTileOffset<MAP_WIDTH&&y+yTileOffset>=0&&y+yTileOffset<MAP_HEIGHT) {
if(MAP5[y+yTileOffset][x+xTileOffset]->tileX*MAP5[y+yTileOffset][x+xTileOffset]->tileY!=225) { if(MAP5[y+yTileOffset][x+xTileOffset]->tileX*MAP5[y+yTileOffset][x+xTileOffset]->tileY!=225) {
SetDrawTarget(layer::COLLISION); SetDrawTarget(layer::COLLISION);
DrawPartialSprite({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES[TILESET1]->sprite,{MAP5[y+yTileOffset][x+xTileOffset]->tileX*32,MAP5[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32}); DrawPartialSprite({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES["terrainmap.png"]->sprite,{MAP5[y+yTileOffset][x+xTileOffset]->tileX*32,MAP5[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32});
} }
if(MAP4[y+yTileOffset][x+xTileOffset]->tileX*MAP4[y+yTileOffset][x+xTileOffset]->tileY!=225) { if(MAP4[y+yTileOffset][x+xTileOffset]->tileX*MAP4[y+yTileOffset][x+xTileOffset]->tileY!=225) {
SetDrawTarget(layer::BACKGROUND); SetDrawTarget(layer::BACKGROUND);
DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES[TILESET1],{MAP4[y+yTileOffset][x+xTileOffset]->tileX*32,MAP4[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32}); DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES["terrainmap.png"],{MAP4[y+yTileOffset][x+xTileOffset]->tileX*32,MAP4[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32});
} }
if(MAP3[y+yTileOffset][x+xTileOffset]->tileX*MAP3[y+yTileOffset][x+xTileOffset]->tileY!=225) { if(MAP3[y+yTileOffset][x+xTileOffset]->tileX*MAP3[y+yTileOffset][x+xTileOffset]->tileY!=225) {
SetDrawTarget(layer::GROUND); SetDrawTarget(layer::GROUND);
DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES[TILESET1],{MAP3[y+yTileOffset][x+xTileOffset]->tileX*32,MAP3[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32}); DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES["terrainmap.png"],{MAP3[y+yTileOffset][x+xTileOffset]->tileX*32,MAP3[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32});
} }
if(MAP2[y+yTileOffset][x+xTileOffset]->tileX*MAP2[y+yTileOffset][x+xTileOffset]->tileY!=225) { if(MAP2[y+yTileOffset][x+xTileOffset]->tileX*MAP2[y+yTileOffset][x+xTileOffset]->tileY!=225) {
SetDrawTarget(layer::DYNAMIC); SetDrawTarget(layer::DYNAMIC);
DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES[TILESET1],{MAP2[y+yTileOffset][x+xTileOffset]->tileX*32,MAP2[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32}); DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES["terrainmap.png"],{MAP2[y+yTileOffset][x+xTileOffset]->tileX*32,MAP2[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32});
} }
if(MAP[y+yTileOffset][x+xTileOffset]->tileX*MAP[y+yTileOffset][x+xTileOffset]->tileY!=225) { if(MAP[y+yTileOffset][x+xTileOffset]->tileX*MAP[y+yTileOffset][x+xTileOffset]->tileY!=225) {
SetDrawTarget(layer::HIGH); SetDrawTarget(layer::HIGH);
DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES[TILESET1],{MAP[y+yTileOffset][x+xTileOffset]->tileX*32,MAP[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32}); DrawPartialDecal({x*32-fmod(cameraPos.x,32),y*32-fmod(cameraPos.y,32)},SPRITES["terrainmap.png"],{MAP[y+yTileOffset][x+xTileOffset]->tileX*32,MAP[y+yTileOffset][x+xTileOffset]->tileY*32},{32,32});
} }
} }
} }
@ -454,7 +460,7 @@ public:
}break; }break;
case GameState::TILE_SELECT:{ case GameState::TILE_SELECT:{
//14x14 pixels per tile. //14x14 pixels per tile.
DrawDecal({0,0},SPRITES[TILESET1],{TILEMAP_EDITOR_DRAW_MULT,TILEMAP_EDITOR_DRAW_MULT}); DrawDecal({0,0},SPRITES["terrainmap.png"],{TILEMAP_EDITOR_DRAW_MULT,TILEMAP_EDITOR_DRAW_MULT});
DrawRectDecal(SELECTED_TILE*(TILEMAP_EDITOR_TILESIZE),{TILEMAP_EDITOR_TILESIZE,TILEMAP_EDITOR_TILESIZE},RED); DrawRectDecal(SELECTED_TILE*(TILEMAP_EDITOR_TILESIZE),{TILEMAP_EDITOR_TILESIZE,TILEMAP_EDITOR_TILESIZE},RED);
}break; }break;
case GameState::OBJ_SELECT:{ case GameState::OBJ_SELECT:{
@ -570,7 +576,7 @@ public:
} }
} }
if (enabled) { if (enabled) {
OBJECTS.push_back(CreateObject(id,{x,y})); AddObjectToWorld(CreateObject(id,{x,y}));
} }
printf("Object %s Loaded.\n",OBJ_INFO[id]->name.c_str()); printf("Object %s Loaded.\n",OBJ_INFO[id]->name.c_str());
} else { } else {
@ -679,7 +685,8 @@ public:
} }
Decal*CreateSprite(std::string spriteName) { Decal*CreateSprite(std::string spriteName) {
return new Decal(new Sprite("assets/"+spriteName)); SPRITES[spriteName] = new Decal(new Sprite("assets/"+spriteName));
return SPRITES[spriteName];
} }
Object*CreateObject(int id,vd2d pos) { Object*CreateObject(int id,vd2d pos) {
@ -687,8 +694,10 @@ public:
} }
Object*CreateObjectInfo(Reference ref,std::string name,vd2d pos,std::string spriteFileName,int sprWidth,vd2d scale={1,1},Pixel tint=WHITE,int enableFlag=Flag::NONE,int disableFlag=Flag::NONE,int animationDelay=1) { Object*CreateObjectInfo(Reference ref,std::string name,vd2d pos,std::string spriteFileName,int sprWidth,vd2d scale={1,1},Pixel tint=WHITE,int enableFlag=Flag::NONE,int disableFlag=Flag::NONE,int animationDelay=1) {
ANIMATIONS[ref] = new Animation(SPRITES[ref]=CreateSprite("player.png"),32); if (!ANIMATIONS.count(spriteFileName)) {
Object*newObj = new Object(ref,name,pos,ANIMATIONS[ref],scale,tint,animationDelay); ANIMATIONS[spriteFileName] = new Animation(SPRITES[spriteFileName]=CreateSprite(spriteFileName),32);
}
Object*newObj = new Object(ref,name,pos,ANIMATIONS[spriteFileName],scale,tint,animationDelay);
newObj->disableFlag=disableFlag; newObj->disableFlag=disableFlag;
newObj->enableFlag=enableFlag; newObj->enableFlag=enableFlag;
OBJ_INFO[ref]=newObj; OBJ_INFO[ref]=newObj;
@ -697,7 +706,7 @@ public:
void SetupAnimations() { void SetupAnimations() {
SPRITES[TILESET1] = CreateSprite("terrainmap.png"); CreateSprite("terrainmap.png");
} }
void SetupObjectInfo() { void SetupObjectInfo() {
@ -870,6 +879,62 @@ public:
return collisionData!=MAGENTA; return collisionData!=MAGENTA;
} }
void Move(Object*obj,vd2d move) {
if (move.y==0) {
obj->pos+=move;
return;
} else {
if (move.y<0) {
if (obj->objArrElement>0&&OBJECTS[obj->objArrElement-1]->pos.y+OBJECTS[obj->objArrElement-1]->originPoint.y>obj->pos.y+obj->originPoint.y+move.y) {
OBJECTS[obj->objArrElement]=OBJECTS[obj->objArrElement-1];
OBJECTS[obj->objArrElement-1]=obj;
OBJECTS[obj->objArrElement]->objArrElement=obj->objArrElement;
obj->objArrElement--;
}
} else {
if (obj->objArrElement<OBJECTS.size()-1&&OBJECTS[obj->objArrElement+1]->pos.y+OBJECTS[obj->objArrElement+1]->originPoint.y<obj->pos.y+obj->originPoint.y+move.y) {
OBJECTS[obj->objArrElement]=OBJECTS[obj->objArrElement+1];
OBJECTS[obj->objArrElement+1]=obj;
OBJECTS[obj->objArrElement]->objArrElement=obj->objArrElement;
obj->objArrElement++;
}
}
obj->pos+=move;
}
}
void AddObjectToWorld(Object*obj) {
std::vector<Object*>::const_iterator it = OBJECTS.begin();
if (obj->id==PLAYER) {
PLAYER_OBJ=obj;
}
bool inserted=false;
for (int i=0;i<OBJECTS.size();i++) {
if (!inserted&&OBJECTS[i]->pos.y+OBJECTS[i]->originPoint.y>obj->pos.y+obj->originPoint.y) {
OBJECTS.insert(it,obj);
obj->objArrElement=i;
inserted=true;
break;
}
it++;
}
if (!inserted) {
obj->objArrElement=OBJECTS.size();
OBJECTS.push_back(obj);
} else {
for (int i=0;i<OBJECTS.size();i++) {
OBJECTS[i]->objArrElement=i;
}
}
printf("OBJECTS (%d):\n",OBJECTS.size());
for (int i=0;i<OBJECTS.size();i++) {
printf("%d :: Object %s - %d (%lf,%lf)\n",i,OBJECTS[i]->name.c_str(),OBJECTS[i]->objArrElement,OBJECTS[i]->pos.x,OBJECTS[i]->pos.y);
assert(i==OBJECTS[i]->objArrElement);
}
printf("\n");
}
bool TabHeld(){ bool TabHeld(){
return GetKey(TAB).bHeld; return GetKey(TAB).bHeld;

Loading…
Cancel
Save