src/common.h
author Tampax86
Thu, 17 Jul 2025 22:03:19 -0400
changeset 0 b2e3aa63e96c
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     1
/*
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     2
Copyright (c) 2023 MCL Software
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     3
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     4
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     5
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     6
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     7
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     8
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     9
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    10
*/
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    11
#ifndef COMMON
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    12
#define COMMON
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    13
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    14
#define TILEMAP_DIMS 16
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    15
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    16
#include <SDL2/SDL.h>
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    17
#include <SDL2/SDL_mixer.h>
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    18
#include "fontcche.h"
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    19
#include <SDL2/SDL_image.h>
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    20
#include <stdbool.h>
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    21
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    22
#define SCREEN_WIDTH 1280
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    23
#define SCREEN_HEIGHT 960
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    24
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    25
// Level width and height in tiles
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    26
#define LEVEL_WIDTH 256  // X
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    27
#define LEVEL_HEIGHT 5  // Y
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    28
#define LEVEL_DEPTH 256  // Z
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    29
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    30
// Tile width and height in pixels
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    31
#define TILE_WIDTH 89
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    32
#define TILE_HEIGHT 90
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    33
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    34
extern SDL_Texture* logo;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    35
extern bool gameRunning;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    36
extern int zoomFactor;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    37
extern int orientation;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    38
extern int stealProgress;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    39
extern bool fireAlarmSystemActivated;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    40
extern SDL_TimerID fireAlarmTimer;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    41
extern Mix_Chunk* alarmSound;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    42
extern Mix_Music* themeSong;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    43
extern Mix_Music* bgm1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    44
extern Mix_Music* bgm2;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    45
extern Mix_Music* bgm3;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    46
extern Mix_Music* bgm4;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    47
extern Mix_Music* bgm5;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    48
extern Mix_Music* bgm6;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    49
extern Mix_Music* bgm7;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    50
extern Mix_Music* bgm8;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    51
extern Mix_Music* bgm9;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    52
extern Mix_Music* bgm10;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    53
extern Mix_Music* bgm11;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    54
extern Mix_Music* bgm12;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    55
extern Mix_Music* bgm13;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    56
extern Mix_Music* bgm14;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    57
extern int selectedMenuItem;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    58
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    59
extern FC_Font* font;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    60
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    61
typedef struct
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    62
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    63
    int x, y;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    64
    char objectsStolen[8];
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    65
    bool canMove;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    66
    bool canLeaveCampus;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    67
    bool leftCampus;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    68
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    69
Player;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    70
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    71
typedef struct
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    72
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    73
    int ident;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    74
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    75
Interactions;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    76
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    77
typedef struct
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    78
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    79
    int textureIndex;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    80
    bool passable;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    81
    int stealable;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    82
    int stealTime;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    83
    int interactable; // Different numbers mean different actions (e.g. 0 = sit in chair, 1 = activate fire alarm sys, 2 = flush toilet, etc.)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    84
    int placementHeight;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    85
    int height;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    86
    int textureHeight;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    87
    bool renderUnder;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    88
    bool renderAbove;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    89
    bool flipTexture;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    90
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    91
Object;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    92
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    93
typedef struct
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    94
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    95
    Object level[LEVEL_WIDTH * LEVEL_HEIGHT * LEVEL_DEPTH];
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    96
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    97
Level;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    98
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    99
Object getObjectFromIdent(char ident);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   100
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   101
SDL_Point getTransformation(int x, int y);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   102
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   103
SDL_Point getLevelTransformation(int i, int j);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   104
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   105
SDL_Point pixelToTileCoordinates(int x, int y);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   106
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   107
SDL_Point tileToPixelCoordinates(int x, int y);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   108
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   109
extern char levelTiles[LEVEL_WIDTH * LEVEL_DEPTH];
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   110
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   111
extern Player player;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   112
extern SDL_Point offset;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   113
extern SDL_Rect clip;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   114
extern SDL_Rect destRect;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   115
extern SDL_Renderer* renderer;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   116
extern SDL_Texture* tilemap;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   117
extern SDL_Surface* tilemapSurface;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   118
extern double frameDelta;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   119
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
   120
#endif