BIG MOVES

This commit is contained in:
Priec
2025-11-14 19:59:04 +01:00
parent 4ed4452fae
commit fa7e18e4d5
11 changed files with 75 additions and 11 deletions

View File

@@ -1,4 +1,4 @@
// background_dark_inverted.h // src/assets/background_frame.h
#pragma once #pragma once
static const char *BACKGROUND_MASK[] = { static const char *BACKGROUND_MASK[] = {

View File

@@ -1,4 +1,4 @@
// src/render/player_mask.h // src/assets/character_frames.h
#pragma once #pragma once

View File

@@ -0,0 +1,38 @@
// src/game/state.cpp
#include "state.h"
void WalkingState::update() {
// stop crawling after duration
if (current_state == PlayerState::Crawl1 &&
state_timer.elapsed_time() >= CRAWL_DURATION) {
current_state = PlayerState::Walk1;
state_timer.stop();
}
}
void WalkingState::start_crawl() {
current_state = PlayerState::Crawl1;
state_timer.reset();
state_timer.start();
}
void WalkingState::toggle_walk_frame() {
if (current_state == PlayerState::Walk1) {
current_state = PlayerState::Walk2;
} else if (current_state == PlayerState::Walk2) {
current_state = PlayerState::Walk1;
}
}
CharacterFrame WalkingState::get_character_frame() const {
switch (current_state) {
case PlayerState::Walk1:
return CharacterFrame::Walk1;
case PlayerState::Walk2:
return CharacterFrame::Walk2;
case PlayerState::Crawl1:
return CharacterFrame::Crawl1;
default:
return CharacterFrame::Walk1;
}
}

View File

@@ -0,0 +1,26 @@
// src/game/state.h
#pragma once
#include "mbed.h"
#include "../assets/character_frames.h"
constexpr auto CRAWL_DURATION = 300ms;
enum class PlayerState { Walk1, Walk2, Crawl1 };
class WalkingState {
private:
PlayerState current_state = PlayerState::Walk1;
Timer state_timer;
public:
// Update state (handles crawl timeout)
void update();
// State transitions
void start_crawl();
void toggle_walk_frame();
// Getters
PlayerState get_state() const { return current_state; }
CharacterFrame get_character_frame() const;
};

View File

@@ -1,7 +1,7 @@
// main.cpp // main.cpp
#include "mbed.h" #include "mbed.h"
#include "background_dark_inverted.h" #include "assets/background_frame.h"
#include "render/loop.h" #include "render/loop.h"
#define TARGET_TX_PIN USBTX #define TARGET_TX_PIN USBTX

View File

@@ -1,6 +1,6 @@
// src/render/background.cpp // src/render/background.cpp
#include "../background_dark_inverted.h" #include "../assets/background_frame.h"
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>

View File

@@ -1,11 +1,11 @@
// src/render/loop.cpp // src/render/loop.cpp
#include "loop.h" #include "loop.h"
#include "../background_dark_inverted.h" #include "../assets/background_frame.h"
#include "player_positioning.h" #include "player_positioning.h"
#include "background.h" #include "background.h"
#include "mbed.h" #include "mbed.h"
#include "player.h" #include "player.h"
#include "player_mask.h" #include "../assets/character_frames.h"
#include <cstring> #include <cstring>
extern BufferedSerial serial_port; extern BufferedSerial serial_port;

View File

@@ -1,6 +1,6 @@
// src/render/player.cpp // src/render/player.cpp
#include "player.h" #include "player.h"
#include "player_mask.h" #include "../assets/character_frames.h"
#include <cstdio> #include <cstdio>
void draw_character(int x, int y, CharacterFrame frame) { void draw_character(int x, int y, CharacterFrame frame) {

View File

@@ -1,6 +1,6 @@
// src/render/player.h // src/render/player.h
#pragma once #pragma once
#include "player_mask.h" #include "../assets/character_frames.h"
// Draw the player object starting at given (x, y) // Draw the player object starting at given (x, y)
void draw_character(int x, int y, CharacterFrame frame); void draw_character(int x, int y, CharacterFrame frame);

View File

@@ -1,6 +1,6 @@
// src/render/player_positioning.cpp // src/render/player_positioning.cpp
#include "player_positioning.h" #include "player_positioning.h"
#include "../background_dark_inverted.h" #include "../assets/background_frame.h"
#include <cstdio> #include <cstdio>
// Convert a pivot coordinate (bottom-left) to the top-left draw position // Convert a pivot coordinate (bottom-left) to the top-left draw position

View File

@@ -1,7 +1,7 @@
// src/render/player_positioning.h // src/render/player_positioning.h
#pragma once #pragma once
#include "../background_dark_inverted.h" #include "../assets/background_frame.h"
#include "player_mask.h" #include "../assets/character_frames.h"
struct CharacterPosition { struct CharacterPosition {
int x; int x;