add 'cheat' command for quicker testing
parent
28f11e74c5
commit
42567278d3
|
@ -150,6 +150,7 @@ enum RoomName {
|
|||
Room1,
|
||||
/// Duplicate of starting room so I can change things around a little.
|
||||
_Room2,
|
||||
SortingPuzzle,
|
||||
}
|
||||
|
||||
impl Default for RoomName {
|
||||
|
@ -213,10 +214,16 @@ pub struct State {
|
|||
}
|
||||
|
||||
impl State {
|
||||
pub fn cheat (&mut self) {
|
||||
self.current_room = RoomName::SortingPuzzle;
|
||||
}
|
||||
|
||||
/// 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.
|
||||
|
||||
pub fn step (&mut self, input: &str) -> Vec <Response> {
|
||||
use RoomName::*;
|
||||
|
||||
match self.intro_state {
|
||||
IntroState::Stage1 => {
|
||||
self.intro_state = IntroState::Stage2;
|
||||
|
@ -259,7 +266,10 @@ impl State {
|
|||
line_response ("`hint` may contain spoilers. `help` will not."),
|
||||
Response::Nonsense,
|
||||
],
|
||||
PlayerAction::RoomSpecific (x) => self.room_1 (x),
|
||||
PlayerAction::RoomSpecific (x) => match self.current_room {
|
||||
Room1 => self.room_1 (x),
|
||||
_ => just (line_response ("ERR: Invalid current room")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -51,8 +51,12 @@ fn read_input () -> Result <String> {
|
|||
Ok (buffer)
|
||||
}
|
||||
|
||||
fn game () -> Result <()> {
|
||||
fn game (args: &[String]) -> Result <()> {
|
||||
let mut state = State::default ();
|
||||
|
||||
if args.get (1) == Some (&"cheat".to_string ()) {
|
||||
state.cheat ();
|
||||
}
|
||||
let responses = state.step ("");
|
||||
|
||||
for response in responses.into_iter () {
|
||||
|
@ -91,7 +95,8 @@ fn game () -> Result <()> {
|
|||
}
|
||||
|
||||
fn main () -> Result <()> {
|
||||
game ()?;
|
||||
let args: Vec <_> = std::env::args ().collect ();
|
||||
game (&args [..])?;
|
||||
|
||||
Ok (())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue