Also render UI at chosen resolution.
This commit is contained in:
parent
3739ef4a42
commit
975ece4796
|
@ -2,8 +2,10 @@ Changelog
|
|||
|
||||
1.5
|
||||
|
||||
* Game now renders at chosen resolution instead of scaling up from 1280 x 720
|
||||
* Added command line switch -size to allow for custom window sizes.
|
||||
- For example: -size 900x600 for a width and height of 900 x 600.
|
||||
* Minimum resolution is now 1280 x 720
|
||||
* Graphics and fonts now use texture atlases to help with performance.
|
||||
* Misc. bug fixes.
|
||||
|
||||
|
|
|
@ -276,12 +276,12 @@ static void drawMenu(void)
|
|||
|
||||
if (app.modalDialog.type == MD_NONE)
|
||||
{
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 400;
|
||||
r.h = 400;
|
||||
|
|
|
@ -56,8 +56,6 @@ void initMissionInfo(void)
|
|||
|
||||
void drawMissionInfo(void)
|
||||
{
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
setAtlasColor(255, 255, 255, 255);
|
||||
|
||||
switch (battle.status)
|
||||
|
@ -111,6 +109,8 @@ static void drawMissionSummary(AtlasImage *header)
|
|||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
blit(header, UI_WIDTH / 2, 150, 1);
|
||||
|
||||
if (!game.currentMission->challengeData.isChallenge)
|
||||
|
|
|
@ -100,13 +100,13 @@ void drawFighterDatabase(void)
|
|||
Entity *fighter;
|
||||
int i, y, numCannons;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 700;
|
||||
r.h = 650;
|
||||
r.x = (UI_WIDTH / 2) - r.w / 2;
|
||||
|
|
|
@ -91,12 +91,12 @@ static void drawMain(void)
|
|||
{
|
||||
SDL_Rect r;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 500;
|
||||
r.h = 600;
|
||||
|
@ -157,6 +157,11 @@ static void controls(void)
|
|||
static void changeWindowSize(char *value)
|
||||
{
|
||||
sscanf(value, "%d x %d", &app.winWidth, &app.winHeight);
|
||||
|
||||
SDL_SetWindowSize(app.window, app.winWidth, app.winHeight);
|
||||
|
||||
app.uiOffset.x = (app.winWidth / 2) - (UI_WIDTH / 2);
|
||||
app.uiOffset.y = (app.winHeight / 2) - (UI_HEIGHT / 2);
|
||||
}
|
||||
|
||||
static void changeSoundVolume(char *value)
|
||||
|
|
|
@ -131,13 +131,13 @@ void drawStats(void)
|
|||
int i, y, startIndex;
|
||||
SDL_Rect r;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 500;
|
||||
r.h = 600;
|
||||
r.x = (UI_WIDTH / 2) - r.w / 2;
|
||||
|
|
|
@ -133,13 +133,13 @@ void drawTrophies(void)
|
|||
SDL_Rect r;
|
||||
int start, end, i, x, y;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = boxWidth;
|
||||
r.h = 650;
|
||||
r.x = (UI_WIDTH / 2) - r.w / 2;
|
||||
|
|
|
@ -498,8 +498,7 @@ typedef struct {
|
|||
int saveGame;
|
||||
int winWidth;
|
||||
int winHeight;
|
||||
PointF scale;
|
||||
PointF uiScale;
|
||||
SDL_Point uiOffset;
|
||||
int fullscreen;
|
||||
int musicVolume;
|
||||
int soundVolume;
|
||||
|
|
|
@ -152,12 +152,12 @@ void drawControls(void)
|
|||
int i;
|
||||
SDL_Rect r;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 800;
|
||||
r.h = 650;
|
||||
|
|
|
@ -73,6 +73,13 @@ void prepareScene(void)
|
|||
|
||||
void presentScene(void)
|
||||
{
|
||||
SDL_Rect uiDest;
|
||||
|
||||
uiDest.w = UI_WIDTH;
|
||||
uiDest.h = UI_HEIGHT;
|
||||
uiDest.x = (app.winWidth / 2) - (UI_WIDTH / 2);
|
||||
uiDest.y = (app.winHeight / 2) - (UI_HEIGHT / 2);
|
||||
|
||||
if (dev.debug)
|
||||
{
|
||||
drawText(5, app.winHeight - 25, 14, TA_LEFT, colors.white, "DEBUG MODE");
|
||||
|
@ -85,7 +92,7 @@ void presentScene(void)
|
|||
|
||||
SDL_SetRenderTarget(app.renderer, NULL);
|
||||
SDL_RenderCopy(app.renderer, app.backBuffer, NULL, NULL);
|
||||
SDL_RenderCopy(app.renderer, app.uiBuffer, NULL, NULL);
|
||||
SDL_RenderCopy(app.renderer, app.uiBuffer, NULL, &uiDest);
|
||||
if (!app.hideMouse)
|
||||
{
|
||||
drawMouse();
|
||||
|
|
|
@ -113,19 +113,13 @@ void initSDL(int argc, char *argv[])
|
|||
|
||||
app.backBuffer = SDL_CreateTexture(app.renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, app.winWidth, app.winHeight);
|
||||
|
||||
app.scale.x = app.scale.y = 1;
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Game scale factor: %.2f,%.2f\n", app.scale.x, app.scale.y);
|
||||
|
||||
app.uiBuffer = SDL_CreateTexture(app.renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, UI_WIDTH, UI_HEIGHT);
|
||||
SDL_SetTextureBlendMode(app.uiBuffer, SDL_BLENDMODE_BLEND);
|
||||
|
||||
app.uiScale.x = UI_WIDTH;
|
||||
app.uiScale.x /= app.winWidth;
|
||||
app.uiScale.y = UI_HEIGHT;
|
||||
app.uiScale.y /= app.winHeight;
|
||||
app.uiOffset.x = (app.winWidth / 2) - (UI_WIDTH / 2);
|
||||
app.uiOffset.y = (app.winHeight / 2) - (UI_HEIGHT / 2);
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "UI scale factor: %.2f,%.2f\n", app.uiScale.x, app.uiScale.y);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "UI offset: %d,%d\n", app.uiOffset.x, app.uiOffset.y);
|
||||
}
|
||||
|
||||
void initGameSystem(void)
|
||||
|
|
|
@ -165,12 +165,12 @@ void doInput(void)
|
|||
}
|
||||
|
||||
SDL_GetMouseState(&x, &y);
|
||||
|
||||
app.mouse.x = x * app.scale.x;
|
||||
app.mouse.y = y * app.scale.y;
|
||||
|
||||
app.uiMouse.x = x * app.uiScale.x;
|
||||
app.uiMouse.y = y * app.uiScale.y;
|
||||
app.mouse.x = x;
|
||||
app.mouse.y = y;
|
||||
|
||||
app.uiMouse.x = x - app.uiOffset.x;
|
||||
app.uiMouse.y = y - app.uiOffset.y;
|
||||
}
|
||||
|
||||
void clearInput(void)
|
||||
|
|
|
@ -101,13 +101,13 @@ void drawModalDialog(void)
|
|||
{
|
||||
SDL_Rect r;
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
app.textWidth = 700;
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 96);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
|
||||
SDL_SetRenderTarget(app.renderer, app.uiBuffer);
|
||||
|
||||
r.w = 800;
|
||||
r.h = getWrappedTextHeight(app.modalDialog.message, 24) + 100;
|
||||
|
|
Loading…
Reference in New Issue