Commit 7cb1543f authored by alistert's avatar alistert

Updated Makefiles, merged createFullscreen() and createWindow(), moved scaling...

Updated Makefiles, merged createFullscreen() and createWindow(), moved scaling to a separate sub-menu.
parent 91791324
......@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
OpenJazz: $(objects)
......
......@@ -38,8 +38,9 @@ OBJS = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
CXX = $(PREFIX)/bin/$(TARGET)g++
......
......@@ -14,8 +14,9 @@ objects = src/bonus/bonus.o \
src/menu/menuutil.o src/menu/setupmenu.o \
src/player/bird.o src/player/player.o src/player/playerframe.o \
src/main.o src/movable.o src/planet.o src/scene.o src/util.o \
src/scale2x/getopt.o src/scale2x/pixel.o src/scale2x/scale2x.o \
src/scale2x/scale3x.o src/scale2x/scalebit.o src/scale2x/simple2x.o
src/io/gfx/scale2x/getopt.o src/io/gfx/scale2x/pixel.o \
src/io/gfx/scale2x/scale2x.o src/io/gfx/scale2x/scale3x.o \
src/io/gfx/scale2x/scalebit.o src/io/gfx/scale2x/simple2x.o
CXXFLAGS += -g -Wall -O2 -DUSE_SOCKETS -DSCALE
......
......@@ -63,7 +63,7 @@ SDL_Surface * createSurface (unsigned char * pixels, int width, int height) {
}
void createFullscreen () {
void createScreen () {
#ifdef SCALE
if (canvas != screen) SDL_FreeSurface(canvas);
......@@ -72,7 +72,11 @@ void createFullscreen () {
#if defined(WIZ) || defined(GP2X)
screen = SDL_SetVideoMode(320, 240, 8, V_FULLSCREEN);
#else
#ifdef FULLSCREEN_ONLY
screen = SDL_SetVideoMode(screenW, screenH, 8, V_FULLSCREEN);
#else
screen = SDL_SetVideoMode(screenW, screenH, 8, fullscreen? V_FULLSCREEN: V_WINDOWED);
#endif
#endif
#ifdef SCALE
......@@ -114,47 +118,6 @@ void createFullscreen () {
}
#ifndef FULLSCREEN_ONLY
void createWindow () {
#ifdef SCALE
if (canvas != screen) SDL_FreeSurface(canvas);
#endif
screen = SDL_SetVideoMode(screenW, screenH, 8, V_WINDOWED);
#ifdef SCALE
if (scaleFactor > 1) {
canvasW = screenW / scaleFactor;
canvasH = screenH / scaleFactor;
canvas = createSurface(NULL, canvasW, canvasH);
} else {
#endif
canvasW = screenW;
canvasH = screenH;
canvas = screen;
#ifdef SCALE
}
#endif
SDL_SetPalette(screen, SDL_LOGPAL, logicalPalette, 0, 256);
SDL_SetPalette(screen, SDL_PHYSPAL, currentPalette, 0, 256);
/* Assume that in windowed mode the palette is being emulated.
This is extremely likely. */
// TODO: Find a better way
fakePalette = true;
return;
}
#endif
void usePalette (SDL_Color *palette) {
......
......@@ -39,6 +39,11 @@
#define V_FULLSCREEN (SDL_FULLSCREEN | SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE)
#endif
#ifdef SCALE
#define MIN_SCALE 1
#define MAX_SCALE 4
#endif
// Black palette index
#define BLACK 31
......@@ -68,10 +73,7 @@ EXTERN SDL_Surface *panelAmmo[5];
EXTERN SDL_Surface * createSurface (unsigned char *pixels, int width,
int height);
EXTERN void createFullscreen ();
#ifndef FULLSCREEN_ONLY
EXTERN void createWindow ();
#endif
EXTERN void createScreen ();
EXTERN void usePalette (SDL_Color *palette);
EXTERN void restorePalette (SDL_Surface *surface);
EXTERN void clearScreen (int index);
......
......@@ -266,16 +266,11 @@ int loadMain (int argc, char *argv[]) {
canvas = screen = NULL;
#ifndef FULLSCREEN_ONLY
if (!fullscreen) createWindow();
else {
if (fullscreen)
#endif
SDL_ShowCursor(SDL_DISABLE);
createFullscreen();
#ifndef FULLSCREEN_ONLY
}
#endif
createScreen();
if (!screen) {
......@@ -557,6 +552,9 @@ void freeMain () {
delete firstPath;
SDL_Quit();
return;
}
......@@ -600,17 +598,8 @@ int loop (int type) {
fullscreen = !fullscreen;
if (fullscreen) {
SDL_ShowCursor(SDL_DISABLE);
createFullscreen();
} else {
createWindow();
SDL_ShowCursor(SDL_ENABLE);
}
SDL_ShowCursor(fullscreen? SDL_DISABLE: SDL_ENABLE);
createScreen();
}
#endif
......@@ -650,7 +639,7 @@ int loop (int type) {
screenW = event.resize.w;
screenH = event.resize.h;
createWindow();
createScreen();
break;
......@@ -709,14 +698,12 @@ int loop (int type) {
int main(int argc, char *argv[]) {
Scene *scene = NULL;
int scene_result = E_NONE;
// Initialise SDL
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK |
SDL_INIT_TIMER) < 0) {
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_TIMER) < 0) {
logError("Could not start SDL", SDL_GetError());
......@@ -745,17 +732,23 @@ int main(int argc, char *argv[]) {
} catch (int e) {
freeMain();
SDL_Quit();
return e;
}
scene_result = scene->play();
if (scene->play() == E_QUIT) {
delete scene;
scene = NULL;*/
freeMain();
return 0;
}
delete scene;*/
if (scene_result != E_QUIT) {
// Load the menu
try {
......@@ -764,7 +757,6 @@ int main(int argc, char *argv[]) {
} catch (int e) {
freeMain();
SDL_Quit();
return e;
......@@ -783,7 +775,6 @@ int main(int argc, char *argv[]) {
delete menu;
freeMain();
SDL_Quit();
return e;
......@@ -797,11 +788,7 @@ int main(int argc, char *argv[]) {
}
delete menu;
}
freeMain();
SDL_Quit();
return 0;
......
......@@ -54,6 +54,9 @@ class Menu {
int setupKeyboard ();
int setupJoystick ();
int setupResolution ();
#ifdef SCALE
int setupScaling ();
#endif
public:
SDL_Color palettes[4][256];
......
......@@ -260,20 +260,10 @@ int Menu::setupResolution () {
int heightOptions[] = {200, 240, 300, 384, 400, 480, 576, 600, 720, 768,
800, 864, 900, 960, 1024, 1080, 1200};
SDL_Rect **resolutions;
int dimension, count, maxW, maxH;
int count, maxW, maxH;
bool dimension;
#ifdef SCALE
#define DIMENSIONS 3
#define minS 1
#define maxS 4
if ( scaleFactor < minS || scaleFactor > maxS )
scaleFactor = 1;
#else
#define DIMENSIONS 2
#endif
dimension = 0;
dimension = false;
#ifndef FULLSCREEN_ONLY
if (!fullscreen)
......@@ -325,41 +315,32 @@ int Menu::setupResolution () {
drawRect(0, canvasH - 32, 32, 32, 79);
// X
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
if (!dimension) fontmn2->mapPalette(240, 8, 114, 16);
// Width
if (dimension == 0) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(screenW, (canvasW >> 2) + 32, canvasH >> 1);
if (dimension == 0) fontmn2->restorePalette();
// X
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
if (!dimension) fontmn2->restorePalette();
else fontmn2->mapPalette(240, 8, 114, 16);
// Height
if (dimension == 1) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(screenH, (canvasW >> 2) + 104, canvasH >> 1);
if (dimension == 1) fontmn2->restorePalette();
#ifdef SCALE
// X 2
fontmn2->showString("x", (canvasW >> 2) + 112, canvasH >> 1);
// Scale
if (dimension == 2) fontmn2->mapPalette(240, 8, 114, 16);
fontmn2->showNumber(scaleFactor, (canvasW >> 2) + 150, canvasH >> 1);
if (dimension == 2) fontmn2->restorePalette();
#endif
if (dimension) fontmn2->restorePalette();
count = 0;
if (controls.release(C_LEFT))
dimension = (dimension + DIMENSIONS - 1) % DIMENSIONS;
if (controls.release(C_LEFT)) dimension = !dimension;
if (controls.release(C_RIGHT))
dimension = (dimension + 1) % DIMENSIONS;
if (controls.release(C_RIGHT)) dimension = !dimension;
if (controls.release(C_UP)) {
if ((dimension == 0) && (screenW < maxW)) {
if ((!dimension) && (screenW < maxW)) {
while (screenW >= widthOptions[count]) count++;
......@@ -367,7 +348,7 @@ int Menu::setupResolution () {
}
if ((dimension == 1) && (screenH < maxH)) {
if (dimension && (screenH < maxH)) {
while (screenH >= heightOptions[count]) count++;
......@@ -375,22 +356,11 @@ int Menu::setupResolution () {
}
#ifdef SCALE
if ((dimension == 2) && (scaleFactor < maxS)) {
if ( canvasH*(scaleFactor+1) <= maxH && canvasW*(scaleFactor+1) <= maxW )
{
scaleFactor++;
count = 1;
}
}
#endif
}
if (controls.release(C_DOWN)) {
if ((dimension == 0) && (screenW > 320)) {
if ((!dimension) && (screenW > 320)) {
count = 13;
......@@ -401,7 +371,7 @@ int Menu::setupResolution () {
}
if ((dimension == 1) && (screenH > 200)) {
if (dimension && (screenH > 200)) {
count = 16;
......@@ -412,27 +382,74 @@ int Menu::setupResolution () {
}
#ifdef SCALE
if ((dimension == 2) && (scaleFactor > minS)) {
}
// Check for a resolution change
if (count) {
scaleFactor--;
count = 1;
playSound(S_ORB);
createScreen();
}
#endif
}
// Check for a resolution change
if (count) {
return E_NONE;
playSound(S_ORB);
}
#ifndef FULLSCREEN_ONLY
if (!fullscreen) createWindow();
else
#endif
createFullscreen();
#ifdef SCALE
int Menu::setupScaling () {
int oldScaleFactor;
if ( scaleFactor < MIN_SCALE || scaleFactor > MAX_SCALE )
scaleFactor = 1;
while (true) {
if (loop(NORMAL_LOOP) == E_QUIT) return E_QUIT;
if (controls.release(C_ESCAPE)) return E_NONE;
if (controls.release(C_ENTER)) return E_NONE;
SDL_Delay(T_FRAME);
clearScreen(0);
// Show screen corners
drawRect(0, 0, 32, 32, 79);
drawRect(canvasW - 32, 0, 32, 32, 79);
drawRect(canvasW - 32, canvasH - 32, 32, 32, 79);
drawRect(0, canvasH - 32, 32, 32, 79);
fontmn2->mapPalette(240, 8, 114, 16);
// Scale
fontmn2->showNumber(scaleFactor, (canvasW >> 2) + 32, canvasH >> 1);
// X
fontmn2->showString("x", (canvasW >> 2) + 40, canvasH >> 1);
fontmn2->restorePalette();
oldScaleFactor = scaleFactor;
if ((controls.release(C_DOWN) || controls.release(C_LEFT)) && (scaleFactor > MIN_SCALE)) scaleFactor--;
if ((controls.release(C_UP) || controls.release(C_RIGHT)) && (scaleFactor < MAX_SCALE)) scaleFactor++;
// Check for a scaling change
if (scaleFactor != oldScaleFactor) {
playSound(S_ORB);
createScreen();
}
......@@ -441,11 +458,12 @@ int Menu::setupResolution () {
return E_NONE;
}
#endif
int Menu::setup () {
const char *setupOptions[4] = {"character", "keyboard", "joystick", "resolution"};
const char *setupOptions[5] = {"character", "keyboard", "joystick", "resolution", "scaling"};
const char *setupCharacterOptions[5] = {"name", "fur", "bandana", "gun", "wristband"};
const char *setupCharacterColOptions[8] = {"white", "red", "orange", "yellow", "green", "blue", "animation 1", "animation 2"};
const unsigned char setupCharacterCols[8] = {PC_WHITE, PC_RED, PC_ORANGE,
......@@ -457,7 +475,7 @@ int Menu::setup () {
while (true) {
ret = generic(setupOptions, 4, &option);
ret = generic(setupOptions, 5, &option);
if (ret == E_UNUSED) return E_NONE;
if (ret < 0) return ret;
......@@ -504,9 +522,13 @@ int Menu::setup () {
break;
case 1:
#if !defined(WIZ) && !defined(GP2X)
setupKeyboard();
#else
message("FEATURE NOT AVAILABLE");
#endif
break;
case 2:
......@@ -521,6 +543,16 @@ int Menu::setup () {
break;
case 4:
#ifdef SCALE
setupScaling();
#else
message("FEATURE NOT AVAILABLE");
#endif
break;
}
}
......
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