♻️ refactor: state structs to their own module
parent
d4847f2239
commit
614787b94b
|
@ -1,3 +1,7 @@
|
||||||
|
mod state;
|
||||||
|
|
||||||
|
pub use state::State;
|
||||||
|
|
||||||
fn print_help () -> Response {
|
fn print_help () -> Response {
|
||||||
Response::PrintMany (vec! [
|
Response::PrintMany (vec! [
|
||||||
"All commands are ASCII and case-insensitive.",
|
"All commands are ASCII and case-insensitive.",
|
||||||
|
@ -144,33 +148,6 @@ macro_rules! require_detection {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive (Clone)]
|
|
||||||
enum RoomName {
|
|
||||||
/// Starting room with the dead-simple note and keypad puzzle.
|
|
||||||
Room1,
|
|
||||||
/// Duplicate of starting room so I can change things around a little.
|
|
||||||
_Room2,
|
|
||||||
SortingRoom,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for RoomName {
|
|
||||||
fn default () -> Self {
|
|
||||||
Self::Room1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive (Clone, Default)]
|
|
||||||
struct StateRoom1 {
|
|
||||||
detected_keypad: bool,
|
|
||||||
detected_note: bool,
|
|
||||||
read_note: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive (Clone, Default)]
|
|
||||||
struct StateSortingRoom {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Commands that the game will ask the runtime to execute.
|
/// Commands that the game will ask the runtime to execute.
|
||||||
|
|
||||||
#[derive (PartialEq)]
|
#[derive (PartialEq)]
|
||||||
|
@ -196,39 +173,19 @@ pub enum Response {
|
||||||
Nonsense,
|
Nonsense,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive (Clone, Copy)]
|
|
||||||
enum IntroState {
|
|
||||||
Stage1,
|
|
||||||
Stage2,
|
|
||||||
Stage3,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Default for IntroState {
|
|
||||||
fn default () -> Self {
|
|
||||||
Self::Stage1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The entire game state
|
|
||||||
|
|
||||||
#[derive (Clone, Default)]
|
|
||||||
pub struct State {
|
|
||||||
intro_state: IntroState,
|
|
||||||
current_room: RoomName,
|
|
||||||
room_1: StateRoom1,
|
|
||||||
room_sorting: StateSortingRoom,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl State {
|
impl State {
|
||||||
pub fn cheat (&mut self) {
|
pub fn cheat (&mut self) {
|
||||||
self.current_room = RoomName::SortingRoom;
|
self.current_room = state::RoomName::SortingRoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Send a line of player input (e.g. "look table") into the game and return
|
/// Send a line of player input (e.g. "look table") into the game and return
|
||||||
/// a Vec of Responses. The runtime should process these responses in order.
|
/// a Vec of Responses. The runtime should process these responses in order.
|
||||||
|
|
||||||
pub fn step (&mut self, input: &str) -> Vec <Response> {
|
pub fn step (&mut self, input: &str) -> Vec <Response> {
|
||||||
use RoomName::*;
|
use state::{
|
||||||
|
IntroState,
|
||||||
|
RoomName::*,
|
||||||
|
};
|
||||||
|
|
||||||
match self.intro_state {
|
match self.intro_state {
|
||||||
IntroState::Stage1 => {
|
IntroState::Stage1 => {
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/// The entire game state
|
||||||
|
|
||||||
|
#[derive (Clone, Default)]
|
||||||
|
pub struct State {
|
||||||
|
pub intro_state: IntroState,
|
||||||
|
pub current_room: RoomName,
|
||||||
|
pub room_1: StateRoom1,
|
||||||
|
pub room_sorting: StateSortingRoom,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive (Clone, Copy)]
|
||||||
|
pub enum IntroState {
|
||||||
|
Stage1,
|
||||||
|
Stage2,
|
||||||
|
Stage3,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for IntroState {
|
||||||
|
fn default () -> Self {
|
||||||
|
Self::Stage1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive (Clone)]
|
||||||
|
pub enum RoomName {
|
||||||
|
/// Starting room with the dead-simple note and keypad puzzle.
|
||||||
|
Room1,
|
||||||
|
/// Duplicate of starting room so I can change things around a little.
|
||||||
|
_Room2,
|
||||||
|
SortingRoom,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for RoomName {
|
||||||
|
fn default () -> Self {
|
||||||
|
Self::Room1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive (Clone, Default)]
|
||||||
|
pub struct StateRoom1 {
|
||||||
|
pub detected_keypad: bool,
|
||||||
|
pub detected_note: bool,
|
||||||
|
pub read_note: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive (Clone, Default)]
|
||||||
|
pub struct StateSortingRoom {
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue