Commit 52cc1b2e authored by mercury233's avatar mercury233

fix

parent 11e039ff
......@@ -750,7 +750,7 @@ void Game::DrawSpec() {
if(showcard) {
switch(showcard) {
case 1: {
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.tMask, ResizeCardMid(574, 150, 574 + (showcarddif > CARD_IMG_WIDTH ? CARD_IMG_WIDTH : showcarddif), 150 + CARD_IMG_HEIGHT, midx, midy),
recti(CARD_IMG_HEIGHT - showcarddif, 0, CARD_IMG_HEIGHT - (showcarddif > CARD_IMG_WIDTH ? showcarddif - CARD_IMG_WIDTH : 0), CARD_IMG_HEIGHT), 0, 0, true);
showcarddif += 15;
......@@ -761,7 +761,7 @@ void Game::DrawSpec() {
break;
}
case 2: {
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.tMask, ResizeCardMid(574 + showcarddif, 150, 574 + CARD_IMG_WIDTH, 150 + CARD_IMG_HEIGHT, midx, midy),
recti(0, 0, CARD_IMG_WIDTH - showcarddif, CARD_IMG_HEIGHT), 0, 0, true);
showcarddif += 15;
......@@ -771,7 +771,7 @@ void Game::DrawSpec() {
break;
}
case 3: {
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.tNegated, ResizeCardMid(536 + showcarddif, 141 + showcarddif, 792 - showcarddif, 397 - showcarddif, midx, midy), recti(0, 0, 128, 128), 0, 0, true);
if(showcarddif < 64)
showcarddif += 4;
......@@ -782,8 +782,8 @@ void Game::DrawSpec() {
matManager.c2d[1] = (showcarddif << 24) | 0xffffff;
matManager.c2d[2] = (showcarddif << 24) | 0xffffff;
matManager.c2d[3] = (showcarddif << 24) | 0xffffff;
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardHint(574, 150, 574 + CARD_IMG_WIDTH, 150 + CARD_IMG_HEIGHT),
ResizeForced(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), 0, matManager.c2d, true);
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardHint(574, 150, 574 + CARD_IMG_WIDTH, 150 + CARD_IMG_HEIGHT),
ResizeFit(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), 0, matManager.c2d, true);
if(showcarddif < 255)
showcarddif += 17;
break;
......@@ -793,14 +793,14 @@ void Game::DrawSpec() {
matManager.c2d[1] = (showcarddif << 25) | 0xffffff;
matManager.c2d[2] = (showcarddif << 25) | 0xffffff;
matManager.c2d[3] = (showcarddif << 25) | 0xffffff;
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardMid(662 - showcarddif * 0.69685f, 277 - showcarddif, 662 + showcarddif * 0.69685f, 277 + showcarddif, midx, midy),
ResizeForced(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), 0, matManager.c2d, true);
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardMid(662 - showcarddif * 0.69685f, 277 - showcarddif, 662 + showcarddif * 0.69685f, 277 + showcarddif, midx, midy),
ResizeFit(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), 0, matManager.c2d, true);
if(showcarddif < 127)
showcarddif += 9;
break;
}
case 6: {
driver->draw2DImage(imageManager.GetTexture(showcardcode, true, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.GetTexture(showcardcode, true), ResizeCardHint(574, 150));
driver->draw2DImage(imageManager.tNumber, ResizeCardMid(536 + showcarddif, 141 + showcarddif, 792 - showcarddif, 397 - showcarddif, midx, midy),
recti((showcardp % 5) * 64, (showcardp / 5) * 64, (showcardp % 5 + 1) * 64, (showcardp / 5 + 1) * 64), 0, 0, true);
if(showcarddif < 64)
......@@ -820,7 +820,7 @@ void Game::DrawSpec() {
corner[1] = core::position2d<s32>(winx2 + (CARD_IMG_HEIGHT * mul - y) * 0.3f, winy - y);
corner[2] = core::position2d<s32>(winx, winy);
corner[3] = core::position2d<s32>(winx2, winy);
irr::gui::Draw2DImageQuad(driver, imageManager.GetTexture(showcardcode, true, true), ResizeForced(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), corner);
irr::gui::Draw2DImageQuad(driver, imageManager.GetTexture(showcardcode, true), ResizeFit(0, 0, CARD_IMG_WIDTH, CARD_IMG_HEIGHT), corner);
showcardp++;
showcarddif += 9;
if(showcarddif >= 90)
......
......@@ -1670,7 +1670,7 @@ position2di Game::ResizeCardMid(s32 x, s32 y, s32 midx, s32 midy) {
y = cy + (y - midy) * mul;
return position2di(x, y);
}
recti Game::ResizeForced(s32 x, s32 y, s32 x2, s32 y2) {
recti Game::ResizeFit(s32 x, s32 y, s32 x2, s32 y2) {
float mul = xScale;
if(xScale > yScale)
mul = yScale;
......
......@@ -160,7 +160,7 @@ public:
position2di ResizeCardHint(s32 x, s32 y);
recti ResizeCardMid(s32 x, s32 y, s32 x2, s32 y2, s32 midx, s32 midy);
position2di ResizeCardMid(s32 x, s32 y, s32 midx, s32 midy);
recti ResizeForced(s32 x, s32 y, s32 x2, s32 y2);
recti ResizeFit(s32 x, s32 y, s32 x2, s32 y2);
void SetWindowsIcon();
void FlashWindow();
......
......@@ -53,17 +53,12 @@ void ImageManager::ClearTexture() {
if(tit->second)
driver->removeTexture(tit->second);
}
for(auto tit = tMap[2].begin(); tit != tMap[2].end(); ++tit) {
if(tit->second)
driver->removeTexture(tit->second);
}
for(auto tit = tThumb.begin(); tit != tThumb.end(); ++tit) {
if(tit->second)
driver->removeTexture(tit->second);
}
tMap[0].clear();
tMap[1].clear();
tMap[2].clear();
tThumb.clear();
}
void ImageManager::RemoveTexture(int code) {
......@@ -79,12 +74,6 @@ void ImageManager::RemoveTexture(int code) {
driver->removeTexture(tit->second);
tMap[1].erase(tit);
}
tit = tMap[2].find(code);
if(tit != tMap[2].end()) {
if(tit->second)
driver->removeTexture(tit->second);
tMap[2].erase(tit);
}
}
// function by Warr1024, from https://github.com/minetest/minetest/issues/2419 , modified
void imageScaleNNAA(irr::video::IImage *src, irr::video::IImage *dest) {
......@@ -179,23 +168,20 @@ irr::video::ITexture* ImageManager::GetTextureFromFile(char* file, s32 width, s3
return driver->getTexture(file);
}
}
irr::video::ITexture* ImageManager::GetTexture(int code, bool fit, bool forced_fit) {
irr::video::ITexture* ImageManager::GetTexture(int code, bool fit) {
if(code == 0)
return tUnknown;
int width = CARD_IMG_WIDTH;
int height = CARD_IMG_HEIGHT;
if(forced_fit) {
if(fit) {
float mul = mainGame->xScale;
if(mainGame->xScale > mainGame->yScale)
mul = mainGame->yScale;
width = width * mul;
height = height * mul;
} else if(fit) {
width = width * mainGame->xScale;
height = height * mainGame->yScale;
}
auto tit = tMap[forced_fit ? 2 : (fit ? 1 : 0)].find(code);
if(tit == tMap[forced_fit ? 2 : (fit ? 1 : 0)].end()) {
auto tit = tMap[fit ? 1 : 0].find(code);
if(tit == tMap[fit ? 1 : 0].end()) {
char file[256];
sprintf(file, "expansions/pics/%d.jpg", code);
irr::video::ITexture* img = GetTextureFromFile(file, width, height);
......@@ -204,10 +190,10 @@ irr::video::ITexture* ImageManager::GetTexture(int code, bool fit, bool forced_f
img = GetTextureFromFile(file, width, height);
}
if(img == NULL && !mainGame->gameConf.use_image_scale) {
tMap[forced_fit ? 2 : (fit ? 1 : 0)][code] = NULL;
tMap[fit ? 1 : 0][code] = NULL;
return GetTextureThumb(code);
}
tMap[forced_fit ? 2 : (fit ? 1 : 0)][code] = img;
tMap[fit ? 1 : 0][code] = img;
return (img == NULL) ? tUnknown : img;
}
if(tit->second)
......
......@@ -14,11 +14,11 @@ public:
void ClearTexture();
void RemoveTexture(int code);
irr::video::ITexture* GetTextureFromFile(char* file, s32 width, s32 height);
irr::video::ITexture* GetTexture(int code, bool fit = false, bool forced_fit = false);
irr::video::ITexture* GetTexture(int code, bool fit = false);
irr::video::ITexture* GetTextureThumb(int code);
irr::video::ITexture* GetTextureField(int code);
std::unordered_map<int, irr::video::ITexture*> tMap[3];
std::unordered_map<int, irr::video::ITexture*> tMap[2];
std::unordered_map<int, irr::video::ITexture*> tThumb;
std::unordered_map<int, irr::video::ITexture*> tFields;
irr::IrrlichtDevice* device;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment