parent
f3fcb6b784
commit
60a9e78fab
@ -0,0 +1,28 @@
|
||||
#define MAX_PLAYERS 6
|
||||
#define TIMER_MAX 180
|
||||
#define TIMER_STEP 5
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct {
|
||||
bool countScores;
|
||||
uint8_t activePlayers;
|
||||
uint8_t currentPlayer;
|
||||
uint32_t turnTime;
|
||||
uint32_t timerValue;
|
||||
uint32_t scores[MAX_PLAYERS];
|
||||
} GameEngine;
|
||||
|
||||
extern GameEngine game;
|
||||
|
||||
void InitGameEngine();
|
||||
void IncrementTurnTime();
|
||||
void DecrementTurnTime();
|
||||
void AddPlayer();
|
||||
void RemovePlayer();
|
||||
uint32_t GetCurrentPlayer();
|
||||
uint32_t GetTimerValue();
|
||||
void ChangeScore(int8_t delta);
|
||||
void ResetTurnTimer();
|
||||
void NextPlayer();
|
||||
@ -0,0 +1,61 @@
|
||||
#include "game.h"
|
||||
|
||||
void InitGameEngine() {
|
||||
game.timerValue = game.turnTime;
|
||||
game.countScores = false;
|
||||
game.activePlayers = 0;
|
||||
game.currentPlayer = 0;
|
||||
game.turnTime = TIMER_MAX / 2;
|
||||
game.timerValue = game.turnTime;
|
||||
for (int i=0; i<MAX_PLAYERS; i++)
|
||||
game.scores[i] = -1;
|
||||
}
|
||||
|
||||
void DecrementTurnTime() {
|
||||
if (game.turnTime > TIMER_STEP)
|
||||
game.turnTime -= TIMER_STEP;
|
||||
else
|
||||
game.turnTime = TIMER_MAX;
|
||||
game.timerValue = game.turnTime;
|
||||
}
|
||||
|
||||
void IncrementTurnTime() {
|
||||
if (game.turnTime + TIMER_STEP <= TIMER_MAX)
|
||||
game.turnTime += TIMER_STEP;
|
||||
else
|
||||
game.turnTime = TIMER_STEP;
|
||||
game.timerValue = game.turnTime;
|
||||
}
|
||||
|
||||
void AddPlayer() {
|
||||
if (game.activePlayers < MAX_PLAYERS) {
|
||||
game.scores[game.activePlayers++] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void RemovePlayer() {
|
||||
if (game.activePlayers > 0) {
|
||||
game.scores[game.activePlayers--] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t GetCurrentPlayer() {
|
||||
return game.currentPlayer;
|
||||
}
|
||||
|
||||
uint32_t GetTimerValue() {
|
||||
return game.timerValue;
|
||||
}
|
||||
|
||||
void ChangeScore(int8_t delta) {
|
||||
game.scores[game.currentPlayer] += delta;
|
||||
}
|
||||
|
||||
void ResetTurnTimer() {
|
||||
game.timerValue = game.turnTime;
|
||||
}
|
||||
|
||||
void NextPlayer() {
|
||||
game.currentPlayer = (game.currentPlayer + 1) % game.activePlayers;
|
||||
ResetTurnTimer();
|
||||
}
|
||||
Loading…
Reference in new issue