96 lines
2 KiB
C
96 lines
2 KiB
C
#pragma once
|
|
|
|
#include "Input.h"
|
|
#include "Entity.h"
|
|
#include "QuestsData.h"
|
|
#include "Crafting.h"
|
|
|
|
#define MAX_PLAYERS 8
|
|
#define MAX_INPUT_BUFFER 3
|
|
|
|
#define PLAYER_SPRITE_HEAD_COUNT 4
|
|
#define PLAYER_SPRITE_EYES_COUNT 5
|
|
#define PLAYER_SPRITE_BODY_COUNT 6
|
|
#define PLAYER_SPRITE_ARMS_COUNT 6
|
|
#define PLAYER_SPRITE_LEGS_COUNT 5
|
|
|
|
|
|
typedef struct _plrsp {
|
|
bool choosen;
|
|
|
|
u8 legs;
|
|
u8 body;
|
|
u8 arms;
|
|
u8 head;
|
|
u8 eyes;
|
|
} PlayerSprite;
|
|
|
|
typedef struct _plrd {
|
|
//for identification in save data and sync game start
|
|
u32 id;
|
|
bool idSet;
|
|
bool ready;
|
|
|
|
//input/multiplayer/synchronization
|
|
Inputs inputs;
|
|
Inputs nextInputs[MAX_INPUT_BUFFER];
|
|
bool nextTurnReady[MAX_INPUT_BUFFER];
|
|
|
|
//
|
|
bool isSpawned;
|
|
u8 minimapData[128*128];
|
|
|
|
int score;
|
|
QuestlineManager questManager;
|
|
|
|
Entity entity;
|
|
Inventory inventory;
|
|
Item *activeItem;
|
|
|
|
PlayerSprite sprite;
|
|
|
|
//menu data
|
|
u8 ingameMenu;
|
|
s8 ingameMenuSelection;
|
|
s16 ingameMenuInvSel;
|
|
s16 ingameMenuInvSelOther;
|
|
bool ingameMenuAreYouSure;
|
|
bool ingameMenuAreYouSureSave;
|
|
s16 ingameMenuTimer;
|
|
NPC_MenuData npcMenuData;
|
|
|
|
RecipeManager currentRecipes;
|
|
char *currentCraftTitle;
|
|
Entity *curChestEntity;
|
|
s8 curChestEntityR;
|
|
|
|
bool mapShouldRender;
|
|
u8 mapZoomLevel;
|
|
s16 mapScrollX;
|
|
s16 mapScrollY;
|
|
char mapText[32];
|
|
|
|
s16 touchLastX;
|
|
s16 touchLastY;
|
|
bool touchIsDraggingMap;
|
|
bool touchIsChangingSize;
|
|
} PlayerData;
|
|
|
|
PlayerData players[MAX_PLAYERS];
|
|
int playerCount;
|
|
int playerLocalID;
|
|
|
|
void initPlayers();
|
|
void freePlayers();
|
|
|
|
void initPlayer(PlayerData *pd);
|
|
void freePlayer(PlayerData *pd);
|
|
|
|
PlayerData* getNearestPlayer(s8 level, s16 x, s16 y);
|
|
PlayerData* getLocalPlayer();
|
|
|
|
void tickPlayer(PlayerData *pd, bool inmenu);
|
|
void playerSetActiveItem(PlayerData *pd, Item * item);
|
|
bool playerUseEnergy(PlayerData * pd, int amount);
|
|
void playerHeal(PlayerData *pd, int amount);
|
|
void playerSpawn(PlayerData *pd);
|