358 lines
9.6 KiB
C++
358 lines
9.6 KiB
C++
#pragma once
|
|
#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)"
|
|
|
|
// 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
|
|
#define BLOCK 8
|
|
#define HALF_BLOCK BLOCK / 2
|
|
|
|
// 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
|
|
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
|
|
const int PLAY_AREA_TOP = (0 * BLOCK);
|
|
const int PLAY_AREA_BOTTOM = SCREEN_HEIGHT - (4 * BLOCK);
|
|
const int PLAY_AREA_LEFT = (0 * BLOCK);
|
|
const int PLAY_AREA_RIGHT = SCREEN_WIDTH - (0 * BLOCK);
|
|
const int PLAY_AREA_WIDTH = PLAY_AREA_RIGHT - PLAY_AREA_LEFT;
|
|
const int PLAY_AREA_HEIGHT = PLAY_AREA_BOTTOM - PLAY_AREA_TOP;
|
|
const int PLAY_AREA_CENTER_X = PLAY_AREA_LEFT + (PLAY_AREA_WIDTH / 2);
|
|
const int PLAY_AREA_CENTER_FIRST_QUARTER_X = (PLAY_AREA_WIDTH / 4);
|
|
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
|
|
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;
|
|
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_LEFT 0
|
|
#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
|
|
|
|
// Variables del jugador
|
|
#define PLAYER_INVULNERABLE_COUNTER 200
|
|
#define PLAYER_POWERUP_COUNTER 1500
|
|
|
|
// 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
|
|
#define GAME_SECTION_PLAY_1P 0
|
|
#define GAME_SECTION_PLAY_2P 1
|
|
#define GAME_SECTION_PAUSE 2
|
|
#define GAME_SECTION_GAMEOVER 3
|
|
#define TITLE_SECTION_1 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
|
|
#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
|
|
#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 5
|
|
|
|
// 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
|
|
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_BILINEAL 0
|
|
#define FILTER_LINEAL 1
|
|
|
|
#endif |