blobwarsAttrition/src/defs.h

448 lines
7.1 KiB
C

/*
Copyright (C) 2018-2019 Parallel Realities
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef REVISION
#define REVISION 0
#endif
#ifndef DATA_DIR
#define DATA_DIR ""
#endif
#define _(string) getTranslatedString(string)
#define PI 3.14159265358979323846
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))
#define CAROLINE(a,b) MIN(a,b)
#define STRNCPY(dest, src, n) strncpy(dest, src, n); dest[n - 1] = '\0'
#define TO_RAIDANS(angleDegrees) (angleDegrees * PI / 180.0)
#define TO_DEGREES(angleRadians) (angleRadians * 180.0 / PI)
#define SAVE_FILENAME "game.save"
#define CONFIG_FILENAME "config.json"
#define UI_WIDTH 1280
#define UI_HEIGHT 720
#define SCREEN_WIDTH 1280
#define SCREEN_HEIGHT 720
#define MAX_KEYBOARD_KEYS 350
#define MAX_MOUSE_BUTTONS 6
#define FPS 60
#define LOGIC_RATE (1000.0 / FPS)
#define MAX_FONTS 64
#define NUM_TEXT_BUCKETS 64
#define NUM_GLYPH_BUCKETS 128
#define MAX_NAME_LENGTH 32
#define MAX_DESCRIPTION_LENGTH 512
#define MAX_LINE_LENGTH 1024
#define MAX_FILENAME_LENGTH 1024
#define NUM_TEXTURE_BUCKETS 32
#define NUM_ATLAS_BUCKETS 64
#define MAP_WIDTH 200
#define MAP_HEIGHT 200
#define MAP_TILE_SIZE 64
#define MAP_TILE_AIR 0
#define MAP_TILE_WATER 1
#define MAP_TILE_SLIME 2
#define MAP_TILE_LAVA 3
#define MAP_TILE_SOLID 4
#define MAP_TILE_NON_SOLID 200
#define MAP_TILE_ANIMATED_WATER 240
#define MAP_TILE_ANIMATED_SLIME 245
#define MAP_TILE_ANIMATED_LAVA 250
#define MAP_TILE_OUTSIDE 255
#define MAP_TILE_MAX 256
/* for mirroring */
#define MAP_PIXEL_WIDTH (MAP_WIDTH * MAP_TILE_SIZE)
#define JUMP_POWER -12
#define MAX_OXYGEN (FPS * 10)
#define MAX_KEY_TYPES 8
#define MAX_ITEMS 14
#define MAX_CHECKPOINTS 15
#define MAX_ENTS_TO_OBSERVE 12
#define MAX_SND_CHANNELS 64
#define MAX_SAVE_SLOTS 5
enum
{
ET_NONE,
ET_EFFECT,
ET_TRAP,
ET_BOB,
ET_ENEMY,
ET_TEEKA,
ET_BOSS,
ET_HEART,
ET_CELL,
ET_KEY,
ET_ITEM,
ET_CONSUMABLE,
ET_MIA,
ET_DECORATION,
ET_DOOR,
ET_LIFT,
ET_PUSHBLOCK,
ET_DESTRUCTABLE,
ET_POWER_POINT,
ET_CARD_READER,
ET_PRESSURE_PLATE,
ET_TELEPORTER,
ET_ITEM_PAD,
ET_POOL,
ET_EXIT,
ET_INFO_POINT
};
#define EF_NONE 0
#define EF_WEIGHTLESS (2 << 0)
#define EF_BOUNCES (2 << 1)
#define EF_TELEPORTING (2 << 2)
#define EF_NO_ENVIRONMENT (2 << 3)
#define EF_SWIMS (2 << 4)
#define EF_HALT_AT_EDGE (2 << 5)
#define EF_NO_CLIP (2 << 6)
#define EF_EXPLODES (2 << 7)
#define EF_IGNORE_BULLETS (2 << 8)
#define EF_FLICKER (2 << 9)
#define EF_FRICTIONLESS (2 << 10)
#define EF_WATER_BREATHING (2 << 11)
#define EF_IMMUNE (2 << 12)
#define EF_BOMB_SHIELD (2 << 13)
#define EF_GONE (2 << 14)
#define EF_KILL_OFFSCREEN (2 << 15)
#define EF_ALWAYS_PROCESS (2 << 16)
#define EF_NO_TELEPORT (2 << 17)
#define EF_NO_OBSERVE (2 << 18)
#define EF_BULLET_HIT (2 << 19)
#define EF_CRUSHABLE (2 << 20)
#define EF_MIRROR (2 << 21)
#define GRAVITY_POWER 0.5f
#define FRICTION 0.75f
enum
{
JOYPAD_AXIS_X,
JOYPAD_AXIS_Y,
JOYPAD_AXIS_MAX
};
enum
{
FACING_RIGHT,
FACING_LEFT,
FACING_DIE
};
enum
{
DOOR_OPEN,
DOOR_CLOSED
};
enum
{
LIFT_GOTO_FINISH,
LIFT_GOTO_START
};
enum
{
WPN_PISTOL,
WPN_PLASMA,
WPN_SPREAD,
WPN_LASER,
WPN_GRENADES,
WPN_ANY,
WPN_AIMED_PISTOL,
WPN_MACHINE_GUN,
WPN_SHOTGUN,
WPN_MISSILE
};
enum
{
ALIVE_ALIVE,
ALIVE_DYING,
ALIVE_DEAD
};
enum
{
CONTROL_LEFT,
CONTROL_RIGHT,
CONTROL_UP,
CONTROL_DOWN,
CONTROL_FIRE,
CONTROL_JUMP,
CONTROL_JETPACK,
CONTROL_PAUSE,
CONTROL_MAP,
CONTROL_MAX
};
enum
{
TA_LEFT,
TA_RIGHT,
TA_CENTER
};
enum
{
MS_LOCKED,
MS_INCOMPLETE,
MS_PARTIAL,
MS_MISSING_HEART_CELL,
MS_COMPLETE
};
enum
{
MT_NORMAL,
MT_TRAINING,
MT_OUTPOST,
MT_BOSS
};
enum
{
WS_START,
WS_IN_PROGRESS,
WS_PAUSED,
WS_GAME_COMPLETE,
WS_OBSERVING,
WS_COMPLETE,
WS_MISSION_COMPLETE,
WS_GAME_OVER,
WS_QUIT
};
enum
{
PLANE_BACKGROUND,
PLANE_FOREGROUND
};
enum
{
ENV_AIR,
ENV_WATER,
ENV_SLIME,
ENV_LAVA
};
enum
{
PT_LINE,
PT_POINT,
PT_TEXTURED
};
enum
{
MSG_STANDARD,
MSG_GAMEPLAY,
MSG_PROGRESS,
MSG_OBJECTIVE
};
enum
{
SND_MENU_SELECT,
SND_MENU_BACK,
SND_MENU_NAV,
SND_PISTOL,
SND_MACHINE_GUN,
SND_PLASMA,
SND_THROW,
SND_SPREAD,
SND_SHOTGUN,
SND_LASER,
SND_MISSILE,
SND_RICO_1,
SND_RICO_2,
SND_GRENADE_BOUNCE,
SND_EXPLOSION,
SND_FLESH_HIT,
SND_METAL_HIT,
SND_DEATH_1,
SND_DEATH_2,
SND_DEATH_3,
SND_SPLAT,
SND_DROID_DIE_1,
SND_DROID_DIE_2,
SND_PRESSURE_PLATE,
SND_DOOR_START,
SND_DOOR_FINISH,
SND_CHERRY,
SND_ITEM,
SND_KEY,
SND_WEAPON,
SND_TELEPORT,
SND_APPEAR,
SND_MIA,
SND_WATER_IN,
SND_WATER_OUT,
SND_SLIME,
SND_DROWN,
SND_DENIED,
SND_CONFIRMED,
SND_MISSION_COMPLETE,
SND_HEART_CELL,
SND_TROPHY,
SND_ELECTRIC_HIT,
SND_ITEM_PAD,
SND_POWER_POOL,
SND_POP,
SND_MAX
};
enum
{
WT_BUTTON,
WT_SLIDER,
WT_SPINNER,
WT_INPUT
};
enum
{
TROPHY_UNEARNED,
TROPHY_BRONZE,
TROPHY_SILVER,
TROPHY_GOLD,
TROPHY_PLATINUM,
TROPHY_MAX
};
enum
{
STAT_MISSIONS_COMPLETE,
STAT_KEYS_FOUND,
STAT_CELLS_FOUND,
STAT_HEARTS_FOUND,
STAT_TARGETS_DEFEATED,
STAT_MIAS_RESCUED,
STAT_DEATHS,
STAT_SHOTS_FIRED,
STAT_SHOTS_HIT,
STAT_SHOT_ACCURACY,
STAT_EYE_DROID_EXPLOSION_KILLS,
STAT_GRENADE_COMBO,
STAT_FLY_TIME,
STAT_SWIM_TIME,
STAT_CHERRIES_PICKED_UP,
STAT_BATTERIES_PICKED_UP,
STAT_WEAPONS_PICKED_UP,
STAT_ENEMIES_KILLED,
STAT_MISSIONS_PLAYED,
STAT_PERCENT_COMPLETE,
STAT_TIME_PLAYED,
STAT_MAX
};
enum
{
ST_MISSION_COMPLETE,
ST_OBJECTIVES,
ST_INCOMPLETE,
ST_COMPLETE,
ST_PRESS_FIRE,
ST_OPTIONS,
ST_CONTROLS,
ST_TROPHIES,
ST_PAGE,
ST_HIDDEN,
ST_WEAPON,
ST_CELL,
ST_HEART,
ST_TELEPORTER,
ST_LASERS,
ST_POWER_POINT,
ST_LIFT,
ST_EXIT,
ST_LOCKED,
ST_OPENED,
ST_GOT_GRENADES,
ST_PICKED_UP,
ST_REMOVED,
ST_REQUIRED,
ST_CANNOT_CARRY_KEYS,
ST_CANNOT_CARRY_ITEMS,
ST_RESCUED,
ST_JETPACK_POWER,
ST_AQUALUNG_POWER,
ST_QUIT_HUB,
ST_QUIT_TUTORIAL,
ST_QUIT_SAVE,
ST_QUIT_FREE_PLAY,
ST_QUIT_LOSE,
ST_MIAS,
ST_ITEMS,
ST_TARGETS,
ST_OBJECTIVE_COMPLETE,
ST_CHERRY_BUNCH,
ST_CHERRY_PAIR,
ST_CHERRY_SMALL,
ST_BATTERY_FULL,
ST_BATTERY,
ST_USED_BATTERY,
ST_WEAK_BATTERY,
ST_CHOOSE_SAVE,
ST_LOAD,
ST_OVERWRITE_1,
ST_OVERWRITE_2,
ST_FREEPLAY,
ST_HEART_CELL,
ST_HUB_MISSIONS,
ST_HUB_MIAS,
ST_HUB_TARGETS,
ST_HUB_KEYS,
ST_HUB_HEARTS,
ST_HUB_CELLS,
ST_CORRUPT_SAVE,
ST_EMPTY_SAVE,
ST_MISSION_CONFIG,
ST_MAX
};
#define PLUS_NONE 0
#define PLUS_NO_DOORS (2 << 0)
#define PLUS_STRONGER (2 << 1)
#define PLUS_RANDOM (2 << 2)
#define PLUS_KILL_ALL (2 << 3)
#define PLUS_MIRROR (2 << 4)