Limpieza de código. Modificada la fuente nokiabig2. Puestas ayudas para los dos jugadores. Cambiado el tamaño del mensaje de juego completado

This commit is contained in:
2021-09-10 20:46:24 +02:00
parent 09421a093d
commit bdf092d46e
35 changed files with 377 additions and 655 deletions

View File

@@ -2,86 +2,23 @@
#include "ifdefs.h"
#include "utils.h"
#include "lang.h"
#include <string>
#ifndef CONST_H
#define CONST_H
// Textos
#define WINDOW_CAPTION "Coffee Crisis"
#define TEXT_COPYRIGHT "@2020,2021 JailDesigner (v2.0.2)"
// Recursos
//#define BINFILE_SCORE 0
//#define BINFILE_DEMO 1
//#define BINFILE_CONFIG 2
//
//#define TOTAL_BINFILE 3
//
//#define MUSIC_INTRO 0
//#define MUSIC_PLAYING 1
//#define MUSIC_TITLE 2
//
//#define TOTAL_MUSIC 3
//
//#define SOUND_BALLOON 0
//#define SOUND_BUBBLE1 1
//#define SOUND_BUBBLE2 2
//#define SOUND_BUBBLE3 3
//#define SOUND_BUBBLE4 4
//#define SOUND_BULLET 5
//#define SOUND_COFFEE_OUT 6
//#define SOUND_HISCORE 7
//#define SOUND_ITEM_DROP 8
//#define SOUND_ITEM_PICKUP 9
//#define SOUND_MENU_CANCEL 10
//#define SOUND_MENU_MOVE 11
//#define SOUND_MENU_SELECT 12
//#define SOUND_PLAYER_COLLISION 13
//#define SOUND_STAGE_CHANGE 14
//#define SOUND_TITLE 15
//#define SOUND_CLOCK 16
//#define SOUND_POWERBALL 17
//
//#define TOTAL_SOUND 18
//
//#define TEXTURE_BALLOON 0
//#define TEXTURE_BULLET 1
//#define TEXTURE_FONT_BLACK 2
//#define TEXTURE_FONT_BLACK_X2 3
//#define TEXTURE_FONT_NOKIA 4
//#define TEXTURE_FONT_WHITE 5
//#define TEXTURE_FONT_WHITE_X2 6
//#define TEXTURE_GAME_BG 7
//#define TEXTURE_GAME_TEXT 8
//#define TEXTURE_INTRO 9
//#define TEXTURE_ITEMS 10
//#define TEXTURE_LOGO 11
//#define TEXTURE_MENU 12
//#define TEXTURE_PLAYER_BODY 13
//#define TEXTURE_PLAYER_DEATH 14
//#define TEXTURE_PLAYER_LEGS 15
//#define TEXTURE_TITLE 16
//
//#define TOTAL_TEXTURE 17
//
//// Tamaño de bloque
// Tamaño de bloque
#define BLOCK 8
#define HALF_BLOCK BLOCK / 2
//
//// Tamaño de la pantalla real
// Tamaño de la pantalla real
#define SCREEN_WIDTH 256
const int SCREEN_HEIGHT = SCREEN_WIDTH * 3 / 4;
//
//// Tamaño de la pantalla que se muestra
#define SCREEN_HEIGHT 192
// Tamaño de la pantalla que se muestra
const int VIEW_WIDTH = SCREEN_WIDTH * 3;
const int VIEW_HEIGHT = SCREEN_HEIGHT * 3;
//
//// Cantidad de enteros a escribir en los ficheros de datos
#define TOTAL_SCORE_DATA 3
#define TOTAL_DEMO_DATA 2000
//// Zona de juego
// Zona de juego
const int PLAY_AREA_TOP = (0 * BLOCK);
const int PLAY_AREA_BOTTOM = SCREEN_HEIGHT - (4 * BLOCK);
const int PLAY_AREA_LEFT = (0 * BLOCK);
@@ -94,8 +31,8 @@ const int PLAY_AREA_CENTER_THIRD_QUARTER_X = (PLAY_AREA_WIDTH / 4) * 3;
const int PLAY_AREA_CENTER_Y = PLAY_AREA_TOP + (PLAY_AREA_HEIGHT / 2);
const int PLAY_AREA_FIRST_QUARTER_Y = PLAY_AREA_HEIGHT / 4;
const int PLAY_AREA_THIRD_QUARTER_Y = (PLAY_AREA_HEIGHT / 4) * 3;
//
//// Anclajes de pantalla
// Anclajes de pantalla
const int SCREEN_CENTER_X = SCREEN_WIDTH / 2;
const int SCREEN_FIRST_QUARTER_X = SCREEN_WIDTH / 4;
const int SCREEN_THIRD_QUARTER_X = (SCREEN_WIDTH / 4) * 3;
@@ -103,56 +40,14 @@ const int SCREEN_CENTER_Y = SCREEN_HEIGHT / 2;
const int SCREEN_FIRST_QUARTER_Y = SCREEN_HEIGHT / 4;
const int SCREEN_THIRD_QUARTER_Y = (SCREEN_HEIGHT / 4) * 3;
//// Opciones de menu
#define MENU_NO_OPTION -1
//#define MENU_OPTION_START 0
//#define MENU_OPTION_QUIT 1
//#define MENU_OPTION_TOTAL 2
//
//// Tipos de fondos para el menu
#define MENU_BACKGROUND_TRANSPARENT 0
#define MENU_BACKGROUND_SOLID 1
//// Estados del jugador
#define PLAYER_STATUS_WALKING_LEFT 0
#define PLAYER_STATUS_WALKING_RIGHT 1
#define PLAYER_STATUS_WALKING_STOP 2
#define PLAYER_STATUS_FIRING_UP 0
#define PLAYER_STATUS_FIRING_LEFT 1
#define PLAYER_STATUS_FIRING_RIGHT 2
#define PLAYER_STATUS_FIRING_NO 3
#define PLAYER_ANIMATION_LEGS_WALKING_RIGHT 1
#define PLAYER_ANIMATION_LEGS_WALKING_STOP 2
#define PLAYER_ANIMATION_BODY_WALKING_LEFT 0
#define PLAYER_ANIMATION_BODY_FIRING_LEFT 1
#define PLAYER_ANIMATION_BODY_WALKING_RIGHT 2
#define PLAYER_ANIMATION_BODY_FIRING_RIGHT 3
#define PLAYER_ANIMATION_BODY_WALKING_STOP 4
#define PLAYER_ANIMATION_BODY_FIRING_UP 5
#define PLAYER_ANIMATION_HEAD_WALKING_LEFT 0
#define PLAYER_ANIMATION_HEAD_FIRING_LEFT 1
#define PLAYER_ANIMATION_HEAD_WALKING_RIGHT 2
#define PLAYER_ANIMATION_HEAD_FIRING_RIGHT 3
#define PLAYER_ANIMATION_HEAD_WALKING_STOP 4
#define PLAYER_ANIMATION_HEAD_FIRING_UP 5
#define PLAYER_ANIMATION_LEGS_WALKING_LEFT 0
//// Variables del jugador
//#define PLAYER_INVULNERABLE_COUNTER 200
//#define PLAYER_POWERUP_COUNTER 1500
//
//// Secciones del programa
// Secciones del programa
#define PROG_SECTION_LOGO 0
#define PROG_SECTION_INTRO 1
#define PROG_SECTION_TITLE 2
#define PROG_SECTION_GAME 3
#define PROG_SECTION_QUIT 4
//
//// Subsecciones
// Subsecciones
#define GAME_SECTION_PLAY_1P 0
#define GAME_SECTION_PLAY_2P 1
#define GAME_SECTION_PAUSE 2
@@ -161,198 +56,18 @@ const int SCREEN_THIRD_QUARTER_Y = (SCREEN_HEIGHT / 4) * 3;
#define TITLE_SECTION_2 4
#define TITLE_SECTION_3 5
#define TITLE_SECTION_INSTRUCTIONS 6
//
//// Modo para las instrucciones
#define INSTRUCTIONS_MODE_MANUAL 0
#define INSTRUCTIONS_MODE_AUTO 1
//
//// Estados de cada elemento que pertenece a un evento
// Estados de cada elemento que pertenece a un evento
#define EVENT_WAITING 1
#define EVENT_RUNNING 2
#define EVENT_COMPLETED 3
//// Cantidad de eventos de la intro
#define INTRO_TOTAL_BITMAPS 6
#define INTRO_TOTAL_TEXTS 9
const int INTRO_TOTAL_EVENTS = INTRO_TOTAL_BITMAPS + INTRO_TOTAL_TEXTS;
//
//// Cantidad de eventos de la pantalla de titulo
//#define TITLE_TOTAL_EVENTS 2
//
//// Relaciones de Id con nomnbres
#define BITMAP0 0
#define BITMAP1 1
#define BITMAP2 2
#define BITMAP3 3
#define BITMAP4 4
#define BITMAP5 5
#define TEXT0 6
#define TEXT1 7
#define TEXT2 8
#define TEXT3 9
#define TEXT4 10
#define TEXT5 11
#define TEXT6 12
#define TEXT7 13
#define TEXT8 14
//// Anclajes para el marcador de puntos
//const int SCORE_WORD_X = (SCREEN_WIDTH / 4) - ((5 * BLOCK) / 2);
//const int SCORE_WORD_Y = SCREEN_HEIGHT - (3 * BLOCK) + 2;
//const int SCORE_NUMBER_X = (SCREEN_WIDTH / 4) - ((6 * BLOCK) / 2);
//const int SCORE_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2;
//
//const int HISCORE_WORD_X = ((SCREEN_WIDTH / 4) * 3) - ((8 * BLOCK) / 2);
//const int HISCORE_WORD_Y = SCREEN_HEIGHT - (3 * BLOCK) + 2;
//const int HISCORE_NUMBER_X = ((SCREEN_WIDTH / 4) * 3) - ((6 * BLOCK) / 2);
//const int HISCORE_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2;
//
//const int MULTIPLIER_WORD_X = (SCREEN_WIDTH / 2) - ((4 * BLOCK) / 2);
//const int MULTIPLIER_WORD_Y = SCREEN_HEIGHT - (3 * BLOCK) + 2;
//const int MULTIPLIER_NUMBER_X = (SCREEN_WIDTH / 2) - ((3 * BLOCK) / 2);
//const int MULTIPLIER_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2;
//
//// Ningun tipo
// Ningun tipo
#define NO_KIND 0
//
//// Tipos de globo
#define BALLOON_1 1
#define BALLOON_2 2
#define BALLOON_3 3
#define BALLOON_4 4
#define HEXAGON_1 5
#define HEXAGON_2 6
#define HEXAGON_3 7
#define HEXAGON_4 8
#define POWER_BALL 9
//
//// Puntos de globo
#define BALLOON_SCORE_1 50
#define BALLOON_SCORE_2 100
#define BALLOON_SCORE_3 200
#define BALLOON_SCORE_4 400
//
//// Tamaños de globo
#define BALLOON_SIZE_1 1
#define BALLOON_SIZE_2 2
#define BALLOON_SIZE_3 3
#define BALLOON_SIZE_4 4
//
//// Clases de globo
#define BALLOON_CLASS 0
#define HEXAGON_CLASS 1
//
//// Velocidad del globo
#define BALLOON_VELX_POSITIVE 0.7f
#define BALLOON_VELX_NEGATIVE -0.7f
//// Indice para las animaciones de los globos
#define BALLOON_MOVING_ANIMATION 0
#define BALLOON_POP_ANIMATION 1
#define BALLOON_BORN_ANIMATION 2
//
//// Cantidad posible de globos
#define MAX_BALLOONS 100
//
//// Velocidades a las que se mueven los enemigos
#define BALLOON_SPEED_1 0.60f
#define BALLOON_SPEED_2 0.70f
#define BALLOON_SPEED_3 0.80f
#define BALLOON_SPEED_4 0.90f
#define BALLOON_SPEED_5 1.00f
//// Tamaño de los globos
#define BALLOON_WIDTH_1 8
#define BALLOON_WIDTH_2 13
#define BALLOON_WIDTH_3 21
#define BALLOON_WIDTH_4 37
//
//// PowerBall
#define POWERBALL_SCREENPOWER_MINIMUM 10
#define POWERBALL_COUNTER 8
//
//// Tipos de bala
#define BULLET_UP 1
#define BULLET_LEFT 2
#define BULLET_RIGHT 3
//
//// Cantidad posible de globos
#define MAX_BULLETS 50
//
//// Tipos de objetos
#define ITEM_POINTS_1_DISK 1
#define ITEM_POINTS_2_GAVINA 2
#define ITEM_POINTS_3_PACMAR 3
#define ITEM_CLOCK 4
#define ITEM_COFFEE 5
#define ITEM_POWER_BALL 6
#define ITEM_COFFEE_MACHINE 7
//// Porcentaje de aparición de los objetos
#define ITEM_POINTS_1_DISK_ODDS 10
#define ITEM_POINTS_2_GAVINA_ODDS 6
#define ITEM_POINTS_3_PACMAR_ODDS 3
#define ITEM_CLOCK_ODDS 5
#define ITEM_COFFEE_ODDS 5
#define ITEM_POWER_BALL_ODDS 0
#define ITEM_COFFEE_MACHINE_ODDS 4
//// Cantidad de objetos simultaneos
#define MAX_ITEMS 10
//
//// Valores para las variables asociadas a los objetos
#define REMAINING_EXPLOSIONS 3
#define REMAINING_EXPLOSIONS_COUNTER 50
#define TIME_STOPPED_COUNTER 300
//
//// Estados de entrada
#define NO_INPUT 0
#define INPUT_FIRE_LEFT 7
#define INPUT_FIRE_UP 8
#define INPUT_FIRE_RIGHT 9
//#define INPUT_PAUSE 10
//
//// Zona muerta del mando analógico
//#define JOYSTICK_DEAD_ZONE 8000
//
//// Tipos de mensajes para el retorno de las funciones
#define MSG_OK 0
#define MSG_BULLET_OUT 1
//
//// Tipos de texto
//#define TEXT_FIXED 0
//#define TEXT_VARIABLE 1
//
//// Cantidad de elementos del vector de SmartSprites
#define MAX_SMART_SPRITES 10
//
//// Cantidad máxima de gotas de café
//#define MAX_COFFEE_DROPS 100
//
//// Contadores
//#define TITLE_COUNTER 800
#define STAGE_COUNTER 200
#define INSTRUCTIONS_COUNTER 600
#define DEATH_COUNTER 350
#define SHAKE_COUNTER 10
#define HELP_COUNTER 1000
//
//// Colores
// Colores
const color_t bgColor = {0x27, 0x27, 0x36};
const color_t noColor = {0xFF, 0xFF, 0xFF};
const color_t shdwTxtColor = {0x43, 0x43, 0x4F};
//// Formaciones enemigas
#define NUMBER_OF_ENEMY_FORMATIONS 100
#define MAX_NUMBER_OF_ENEMIES_IN_A_FORMATION 50
//
//// Dificultad del juego
#define DIFFICULTY_EASY 0
#define DIFFICULTY_NORMAL 1
#define DIFFICULTY_HARD 2
//
//// Tipo de filtro
#define FILTER_NEAREST 0
#define FILTER_LINEAL 1
#endif