When creating a new graphics sheet, initialize it with a convenient checkerboard pattern
- Also fix a crash when first creating a graphics sheet in a scenario due to the temporary folder not being in the image search paths
This commit is contained in:
@@ -3378,9 +3378,10 @@ void edit_custom_sheets() {
|
|||||||
spec_scen_g.clear();
|
spec_scen_g.clear();
|
||||||
spec_scen_g.sheets = new sf::Texture[1];
|
spec_scen_g.sheets = new sf::Texture[1];
|
||||||
spec_scen_g.numSheets = 1;
|
spec_scen_g.numSheets = 1;
|
||||||
spec_scen_g.sheets[0].create(280, 360);
|
spec_scen_g.init_sheet(0);
|
||||||
spec_scen_g.sheets[0].copyToImage().saveToFile((pic_dir/"sheet0.png").string().c_str());
|
spec_scen_g.sheets[0].copyToImage().saveToFile((pic_dir/"sheet0.png").string().c_str());
|
||||||
all_pics.insert(all_pics.begin(), 0);
|
all_pics.insert(all_pics.begin(), 0);
|
||||||
|
ResMgr::pushPath<ImageRsrc>(pic_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
set_cursor(watch_curs);
|
set_cursor(watch_curs);
|
||||||
@@ -3468,7 +3469,7 @@ void edit_custom_sheets() {
|
|||||||
sf::Texture* wasSheets = spec_scen_g.sheets;
|
sf::Texture* wasSheets = spec_scen_g.sheets;
|
||||||
spec_scen_g.sheets = new sf::Texture[spec_scen_g.numSheets + 1];
|
spec_scen_g.sheets = new sf::Texture[spec_scen_g.numSheets + 1];
|
||||||
std::copy_n(wasSheets, spec_scen_g.numSheets, spec_scen_g.sheets);
|
std::copy_n(wasSheets, spec_scen_g.numSheets, spec_scen_g.sheets);
|
||||||
spec_scen_g.sheets[newSheet].create(280,360);
|
spec_scen_g.init_sheet(newSheet);
|
||||||
spec_scen_g.sheets[newSheet].copyToImage().saveToFile(sheetPath.string().c_str());
|
spec_scen_g.sheets[newSheet].copyToImage().saveToFile(sheetPath.string().c_str());
|
||||||
spec_scen_g.numSheets++;
|
spec_scen_g.numSheets++;
|
||||||
auto iter = all_pics.insert(std::upper_bound(all_pics.begin(), all_pics.end(), newSheet), newSheet);
|
auto iter = all_pics.insert(std::upper_bound(all_pics.begin(), all_pics.end(), newSheet), newSheet);
|
||||||
|
@@ -535,6 +535,22 @@ void cCustomGraphics::replace_sheet(size_t num, sf::Image& newSheet) {
|
|||||||
ResMgr::free<ImageRsrc>(sheetname);
|
ResMgr::free<ImageRsrc>(sheetname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cCustomGraphics::init_sheet(size_t num) {
|
||||||
|
sheets[num].create(280,360);
|
||||||
|
sf::Image fill1, fill2;
|
||||||
|
fill1.create(28,36,{0xff,0xff,0xc0});
|
||||||
|
fill2.create(28,36,{0xc0,0xff,0xc0});
|
||||||
|
for(int y = 0; y < 10; y++) {
|
||||||
|
for(int x = 0; x < 10; x++) {
|
||||||
|
if(x % 2 == y % 2) {
|
||||||
|
sheets[num].update(fill1.getPixelsPtr(), 28, 36, x * 28, y * 36);
|
||||||
|
} else {
|
||||||
|
sheets[num].update(fill2.getPixelsPtr(), 28, 36, x * 28, y * 36);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: This doesn't belong in this file
|
// TODO: This doesn't belong in this file
|
||||||
std::string get_str(std::string list, short j){
|
std::string get_str(std::string list, short j){
|
||||||
if(j == 0) return list;
|
if(j == 0) return list;
|
||||||
|
@@ -83,6 +83,7 @@ struct cCustomGraphics {
|
|||||||
graf_pos find_graphic(pic_num_t pic, bool party = false);
|
graf_pos find_graphic(pic_num_t pic, bool party = false);
|
||||||
size_t count(bool party = false);
|
size_t count(bool party = false);
|
||||||
void replace_sheet(size_t num, sf::Image& newSheet);
|
void replace_sheet(size_t num, sf::Image& newSheet);
|
||||||
|
void init_sheet(size_t num);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct snippet_t {
|
struct snippet_t {
|
||||||
|
Reference in New Issue
Block a user