Integrate a new resource manager which should have better performance

This commit is contained in:
2020-01-26 11:53:19 -05:00
parent 29ef8b9c1e
commit 542c037342
47 changed files with 753 additions and 644 deletions

View File

@@ -70,7 +70,7 @@ void cButton::draw(){
to_rect.right = to_rect.left + 14;
to_rect.bottom = to_rect.top + 10;
}
rect_draw_some_item(*ResMgr::get<ImageRsrc>(buttons[btnGW[type]]),from_rect,*inWindow,to_rect,sf::BlendAlpha);
rect_draw_some_item(*ResMgr::graphics.get(buttons[btnGW[type]]),from_rect,*inWindow,to_rect,sf::BlendAlpha);
style.colour = sf::Color::Black;
style.lineHeight = 8;
eTextMode textMode = eTextMode::CENTRE;
@@ -376,7 +376,7 @@ void cLed::draw(){
to_rect = frame;
to_rect.right = to_rect.left + 14;
to_rect.bottom = to_rect.top + 10;
rect_draw_some_item(*ResMgr::get<ImageRsrc>(buttons[btnGW[BTN_LED]]),from_rect,*inWindow,to_rect);
rect_draw_some_item(*ResMgr::graphics.get(buttons[btnGW[BTN_LED]]),from_rect,*inWindow,to_rect);
style.colour = textClr;
to_rect.right = frame.right;
to_rect.left = frame.left + 18; // Possibly could be 20

View File

@@ -632,7 +632,7 @@ void cPict::recalcRect() {
setBounds(bounds);
}
std::shared_ptr<sf::Texture> cPict::getSheet(eSheetType type, size_t n) {
const sf::Texture* cPict::getSheet(eSheetType type, size_t n) {
std::ostringstream sout;
switch(type) {
case NUM_SHEET_TYPES:
@@ -716,7 +716,7 @@ std::shared_ptr<sf::Texture> cPict::getSheet(eSheetType type, size_t n) {
sout << "sheet" << n;
}
}
return ResMgr::get<ImageRsrc>(sout.str());
return &ResMgr::graphics.get(sout.str());
}
void cPict::draw(){
@@ -734,7 +734,7 @@ void cPict::draw(){
}
void cPict::drawPresetTer(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_TER, num / 50);
const sf::Texture* from_gw = getSheet(SHEET_TER, num / 50);
if(!from_gw) return;
num = num % 50;
rectangle from_rect = calc_rect(num % 10, num / 10);
@@ -745,7 +745,7 @@ void cPict::drawPresetTer(short num, rectangle to_rect){
void cPict::drawPresetTerAnim(short num, rectangle to_rect){
rectangle from_rect = calc_rect(4 * (num / 5) + animFrame % 4, num % 5);
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_TER_ANIM);
const sf::Texture* from_gw = getSheet(SHEET_TER_ANIM);
if(to_rect.right - to_rect.left > 28) {
to_rect.inset(4,0);
to_rect.right = to_rect.left + 28;
@@ -771,7 +771,7 @@ static rectangle calcDefMonstRect(short i, short animFrame){
void cPict::drawPresetMonstSm(short num, rectangle to_rect){
short m_start_pic = m_pic_index[num].i;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
const sf::Texture* from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
if(!from_gw) return;
m_start_pic = m_start_pic % 20;
rectangle from_rect = calcDefMonstRect(m_start_pic, animFrame);
@@ -787,7 +787,7 @@ void cPict::drawPresetMonstWide(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
short m_start_pic = m_pic_index[num].i;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
const sf::Texture* from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
if(!from_gw) return;
rectangle from_rect = calcDefMonstRect(m_start_pic % 20, animFrame);
small_monst_rect.offset(to_rect.left,to_rect.top + 7);
@@ -808,7 +808,7 @@ void cPict::drawPresetMonstTall(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
short m_start_pic = m_pic_index[num].i;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
const sf::Texture* from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
if(!from_gw) return;
rectangle from_rect = calcDefMonstRect(m_start_pic % 20, animFrame);
small_monst_rect.offset(to_rect.left + 7,to_rect.top);
@@ -829,7 +829,7 @@ void cPict::drawPresetMonstLg(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
short m_start_pic = m_pic_index[num].i;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
const sf::Texture* from_gw = getSheet(SHEET_MONST, m_start_pic / 20);
if(!from_gw) return;
rectangle from_rect = calcDefMonstRect(m_start_pic % 20, animFrame);
small_monst_rect.offset(to_rect.left,to_rect.top);
@@ -860,7 +860,7 @@ void cPict::drawPresetMonstLg(short num, rectangle to_rect){
void cPict::drawPresetDlog(short num, rectangle to_rect){
to_rect.right = to_rect.left + 36;
to_rect.bottom = to_rect.top + 36;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_DLOG);
const sf::Texture* from_gw = getSheet(SHEET_DLOG);
rectangle from_rect = {0,0,36,36};
from_rect.offset(36 * (num % 4),36 * (num / 4));
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect);
@@ -869,7 +869,7 @@ void cPict::drawPresetDlog(short num, rectangle to_rect){
void cPict::drawPresetDlogLg(short num, rectangle to_rect){
to_rect.right = to_rect.left + (drawScaled ? getBounds().width() : 72);
to_rect.bottom = to_rect.top + (drawScaled ? getBounds().height() : 72);
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_DLOG);
const sf::Texture* from_gw = getSheet(SHEET_DLOG);
rectangle from_rect = {0,0,72,72};
from_rect.offset(36 * (num % 4),36 * (num / 4));
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect);
@@ -878,14 +878,14 @@ void cPict::drawPresetDlogLg(short num, rectangle to_rect){
void cPict::drawPresetTalk(short num, rectangle to_rect){
to_rect.right = to_rect.left + 32;
to_rect.bottom = to_rect.top + 32;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_TALK);
const sf::Texture* from_gw = getSheet(SHEET_TALK);
rectangle from_rect = {0,0,32,32};
from_rect.offset(32 * (num % 10),32 * (num / 10));
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect);
}
void cPict::drawPresetScen(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_SCEN);
const sf::Texture* from_gw = getSheet(SHEET_SCEN);
rectangle from_rect = {0,0,32,32};
from_rect.offset(32 * (num % 5),32 * (num / 5));
to_rect.right = to_rect.left + 32;
@@ -894,7 +894,7 @@ void cPict::drawPresetScen(short num, rectangle to_rect){
}
void cPict::drawPresetScenLg(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_SCEN_LG);
const sf::Texture* from_gw = getSheet(SHEET_SCEN_LG);
to_rect.right = to_rect.left + (drawScaled ? getBounds().width() : 64);
to_rect.bottom = to_rect.top + (drawScaled ? getBounds().height() : 64);
rectangle from_rect = {0,0,64,64};
@@ -906,7 +906,7 @@ void cPict::drawPresetItem(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
fill_rect(*inWindow, to_rect, sf::Color::Black);
std::shared_ptr<sf::Texture> from_gw;
const sf::Texture* from_gw;
rectangle from_rect = {0,0,18,18};
if(num < 55) {
from_gw = getSheet(SHEET_ITEM);
@@ -923,7 +923,7 @@ void cPict::drawPresetTinyItem(short num, rectangle to_rect){
to_rect.right = to_rect.left + 18;
to_rect.bottom = to_rect.top + 18;
fill_rect(*inWindow, to_rect, sf::Color::Black);
std::shared_ptr<sf::Texture> from_gw;
const sf::Texture* from_gw;
rectangle from_rect = {0,0,18,18};
from_gw = getSheet(SHEET_TINY_ITEM);
from_rect.offset(18 * (num % 10), 18 * (num / 10));
@@ -931,7 +931,7 @@ void cPict::drawPresetTinyItem(short num, rectangle to_rect){
}
void cPict::drawPresetPc(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_PC);
const sf::Texture* from_gw = getSheet(SHEET_PC);
rectangle from_rect = calc_rect(2 * (num / 8), num % 8);
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
@@ -940,7 +940,7 @@ void cPict::drawPresetPc(short num, rectangle to_rect){
}
void cPict::drawPresetField(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_FIELD);
const sf::Texture* from_gw = getSheet(SHEET_FIELD);
rectangle from_rect = calc_rect(num % 8, num / 8);
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
@@ -949,7 +949,7 @@ void cPict::drawPresetField(short num, rectangle to_rect){
}
void cPict::drawPresetBoom(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_BOOM);
const sf::Texture* from_gw = getSheet(SHEET_BOOM);
if(num >= 8)
num = 8 * (num - 7) + animFrame % 8;
rectangle from_rect = calc_rect(num % 8, num / 8);
@@ -962,7 +962,7 @@ void cPict::drawPresetBoom(short num, rectangle to_rect){
void cPict::drawFullSheet(short num, rectangle to_rect){
rectangle from_rect;
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_FULL, num);
const sf::Texture* from_gw = getSheet(SHEET_FULL, num);
from_rect = rectangle(*from_gw);
if(!drawScaled) {
to_rect.right = to_rect.left + (from_rect.right - from_rect.left);
@@ -973,7 +973,7 @@ void cPict::drawFullSheet(short num, rectangle to_rect){
void cPict::drawPresetMissile(short num, rectangle to_rect){
rectangle from_rect = {0,0,18,18};
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_MISSILE);
const sf::Texture* from_gw = getSheet(SHEET_MISSILE);
to_rect.right = to_rect.left + 18;
to_rect.bottom = to_rect.top + 18;
fill_rect(*inWindow, to_rect, sf::Color::Black);
@@ -984,7 +984,7 @@ void cPict::drawPresetMissile(short num, rectangle to_rect){
void cPict::drawPresetTerMap(short num, rectangle to_rect){
rectangle from_rect = {0,0,12,12};
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_TER_MAP);
const sf::Texture* from_gw = getSheet(SHEET_TER_MAP);
// TODO: Should probably fill black somewhere in here...?
to_rect.right = to_rect.left + 24;
to_rect.bottom = to_rect.top + 24;
@@ -996,7 +996,7 @@ void cPict::drawPresetTerMap(short num, rectangle to_rect){
void cPict::drawStatusIcon(short num, rectangle to_rect){
rectangle from_rect = {0,0,12,12};
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_STATUS);
const sf::Texture* from_gw = getSheet(SHEET_STATUS);
to_rect.right = to_rect.left + 12;
to_rect.bottom = to_rect.top + 12;
from_rect.offset(12 * (num % 3), 12 * (num / 3));
@@ -1012,7 +1012,7 @@ void cPict::drawCustomTer(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect);
}
@@ -1022,7 +1022,7 @@ void cPict::drawCustomTerAnim(short num, rectangle to_rect){
to_rect.bottom = to_rect.top + 36;
num += animFrame % 4;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect);
}
@@ -1035,7 +1035,7 @@ void cPict::drawCustomMonstSm(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect, sf::BlendAlpha);
}
@@ -1049,7 +1049,7 @@ void cPict::drawCustomMonstWide(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
small_monst_rect.offset(to_rect.left,to_rect.top + 7);
rect_draw_some_item(*from_gw, from_rect, *inWindow, small_monst_rect, sf::BlendAlpha);
@@ -1068,7 +1068,7 @@ void cPict::drawCustomMonstTall(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
small_monst_rect.offset(to_rect.left + 7,to_rect.top);
rect_draw_some_item(*from_gw, from_rect, *inWindow, small_monst_rect, sf::BlendAlpha);
@@ -1087,7 +1087,7 @@ void cPict::drawCustomMonstLg(short num, rectangle to_rect){
fill_rect(*inWindow, to_rect, sf::Color::Black);
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
small_monst_rect.offset(to_rect.left,to_rect.top);
rect_draw_some_item(*from_gw, from_rect, *inWindow, small_monst_rect, sf::BlendAlpha);
@@ -1110,7 +1110,7 @@ static int dlog_to_w = 18, dlog_to_h = 36;
void cPict::drawCustomDlog(short num, rectangle to_rect){
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
to_rect.right = to_rect.left + dlog_to_w;
to_rect.bottom = to_rect.top + dlog_to_h;
@@ -1145,7 +1145,7 @@ void cPict::drawCustomDlogLg(short num, rectangle to_rect){
void cPict::drawCustomTalk(short num, rectangle to_rect){
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
to_rect.right = to_rect.left + 16;
to_rect.bottom = to_rect.top + 32;
@@ -1164,7 +1164,7 @@ void cPict::drawCustomItem(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
fill_rect(*inWindow, to_rect, sf::Color::Black);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect, sf::BlendAlpha);
@@ -1174,7 +1174,7 @@ void cPict::drawCustomTinyItem(short num, rectangle to_rect){
to_rect.right = to_rect.left + 18;
to_rect.bottom = to_rect.top + 18;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
fill_rect(*inWindow, to_rect, sf::Color::Black);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect, sf::BlendAlpha);
@@ -1184,7 +1184,7 @@ void cPict::drawCustomBoom(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num + animFrame % 8);
fill_rect(*inWindow, to_rect, sf::Color::Black);
rect_draw_some_item(*from_gw, from_rect, *inWindow, to_rect, sf::BlendAlpha);
@@ -1193,7 +1193,7 @@ void cPict::drawCustomBoom(short num, rectangle to_rect){
void cPict::drawCustomMissile(short num, rectangle to_rect){
num += animFrame % 8;
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num);
from_rect.right = from_rect.left + 18;
from_rect.bottom = from_rect.top + 18;
@@ -1205,7 +1205,7 @@ void cPict::drawCustomMissile(short num, rectangle to_rect){
void cPict::drawCustomTerMap(short num, rectangle to_rect){
rectangle from_rect;
sf::Texture* from_gw;
const sf::Texture* from_gw;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num % 1000);
from_rect.right = from_rect.left + 12;
from_rect.bottom = from_rect.top + 12;
@@ -1219,7 +1219,7 @@ void cPict::drawCustomTerMap(short num, rectangle to_rect){
void cPict::drawPartyMonstSm(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);
@@ -1232,7 +1232,7 @@ void cPict::drawPartyMonstWide(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
fill_rect(*inWindow, to_rect, sf::Color::Black);
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);
@@ -1249,7 +1249,7 @@ void cPict::drawPartyMonstTall(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
fill_rect(*inWindow, to_rect, sf::Color::Black);
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);
@@ -1266,7 +1266,7 @@ void cPict::drawPartyMonstLg(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
fill_rect(*inWindow, to_rect, sf::Color::Black);
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);
@@ -1287,7 +1287,7 @@ void cPict::drawPartyMonstLg(short num, rectangle to_rect){
}
void cPict::drawPartyScen(short num, rectangle to_rect){
std::shared_ptr<sf::Texture> from_gw = getSheet(SHEET_HEADER);
const sf::Texture* from_gw = getSheet(SHEET_HEADER);
rectangle from_rect = {0,0,32,32};
from_rect.offset(32 * (num % 5),32 * (num / 5));
to_rect.right = to_rect.left + 32;
@@ -1298,7 +1298,7 @@ void cPict::drawPartyScen(short num, rectangle to_rect){
void cPict::drawPartyItem(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);
@@ -1309,7 +1309,7 @@ void cPict::drawPartyItem(short num, rectangle to_rect){
void cPict::drawPartyPc(short num, rectangle to_rect){
to_rect.right = to_rect.left + 28;
to_rect.bottom = to_rect.top + 36;
sf::Texture* from_gw;
const sf::Texture* from_gw;
rectangle from_rect;
graf_pos_ref(from_gw, from_rect) = spec_scen_g.find_graphic(num, true);

View File

@@ -89,7 +89,7 @@ public:
cPict& operator=(cPict& other) = delete;
cPict(cPict& other) = delete;
private:
static std::shared_ptr<sf::Texture> getSheet(eSheetType type, size_t n = 0);
static const sf::Texture* getSheet(eSheetType type, size_t n = 0);
static short animFrame;
pic_num_t picNum;
ePicType picType;

View File

@@ -207,7 +207,7 @@ void cScrollbar::draw_horizontal() {
draw_rect.width() = btn_size;
if(depressed && pressedPart == PART_UP)
from_rect = up_rect[style][HORZ_PRESSED];
sf::Texture scroll_gw = *ResMgr::get<ImageRsrc>(scroll_textures[style]);
sf::Texture scroll_gw = *ResMgr::graphics.get(scroll_textures[style]);
rect_draw_some_item(scroll_gw, from_rect, *inWindow, draw_rect);
if(pos > 0) {
from_rect = bar_rect[style][HORZ];
@@ -270,7 +270,7 @@ void cScrollbar::draw_vertical() {
draw_rect.height() = btn_size;
if(depressed && pressedPart == PART_UP)
from_rect = up_rect[style][VERT_PRESSED];
sf::Texture scroll_gw = *ResMgr::get<ImageRsrc>(scroll_textures[style]);
sf::Texture scroll_gw = *ResMgr::graphics.get(scroll_textures[style]);
rect_draw_some_item(scroll_gw, from_rect, *inWindow, draw_rect);
if(pos > 0) {
from_rect = bar_rect[style][VERT];