added gameover, added class/ancestry defaults
This commit is contained in:
parent
65ec5c1b15
commit
2c4b4ca143
8 changed files with 60 additions and 98 deletions
|
|
@ -32,7 +32,7 @@ use crate::consts::prelude::*;
|
|||
|
||||
#[derive(Serialize, Deserialize, Copy, Clone, PartialEq)]
|
||||
pub enum Ancestry {
|
||||
NULL,
|
||||
Unset,
|
||||
Human,
|
||||
Dwarf,
|
||||
Gnome,
|
||||
|
|
@ -42,6 +42,7 @@ pub enum Ancestry {
|
|||
|
||||
#[derive(Serialize, Deserialize, Copy, Clone, PartialEq)]
|
||||
pub enum Class {
|
||||
Unset,
|
||||
Fighter,
|
||||
Rogue,
|
||||
Wizard,
|
||||
|
|
@ -212,7 +213,7 @@ pub fn character_creation(gs: &mut State, ctx: &mut BTerm) -> CharCreateResult {
|
|||
Some(key) =>
|
||||
match key {
|
||||
VirtualKeyCode::Escape => {
|
||||
return CharCreateResult::Selected { ancestry: Ancestry::NULL, class };
|
||||
return CharCreateResult::Selected { ancestry: Ancestry::Unset, class };
|
||||
}
|
||||
VirtualKeyCode::Return => {
|
||||
return CharCreateResult::Selected { ancestry, class };
|
||||
|
|
@ -413,6 +414,9 @@ fn get_starting_inventory(
|
|||
let mut carried: Vec<String> = Vec::new();
|
||||
let starting_food: &str;
|
||||
match class {
|
||||
Class::Unset => {
|
||||
starting_food = VILLAGER_STARTING_FOOD;
|
||||
}
|
||||
Class::Fighter => {
|
||||
starting_food = FIGHTER_STARTING_FOOD;
|
||||
equipped = vec![
|
||||
|
|
|
|||
|
|
@ -1641,94 +1641,19 @@ pub enum YesNoResult {
|
|||
No,
|
||||
}
|
||||
|
||||
pub fn game_over(ctx: &mut BTerm) -> YesNoResult {
|
||||
let mut x = 3;
|
||||
let mut y = 12;
|
||||
let width = 45;
|
||||
let height = 20;
|
||||
ctx.draw_box(x, y, width, height, RGB::named(WHITE), RGB::named(BLACK));
|
||||
ctx.print_color(x + 3, y, RGB::named(YELLOW), RGB::named(BLACK), "You died!");
|
||||
ctx.print_color(
|
||||
x + 3,
|
||||
y + height,
|
||||
RGB::named(YELLOW),
|
||||
RGB::named(BLACK),
|
||||
" Write a morgue file? [y/n] "
|
||||
);
|
||||
x += 2;
|
||||
y += 2;
|
||||
ctx.print_color(
|
||||
x,
|
||||
y,
|
||||
RGB::named(GREEN),
|
||||
RGB::named(BLACK),
|
||||
format!("You survived for {} turns.", crate::gamelog::get_event_count(EVENT::COUNT_TURN))
|
||||
);
|
||||
y += 2;
|
||||
ctx.print_color(x, y, RGB::named(GREEN), RGB::named(BLACK), format!("And in the process, you"));
|
||||
y += 1;
|
||||
if crate::gamelog::get_event_count(EVENT::COUNT_CHANGED_FLOOR) > 0 {
|
||||
ctx.print_color(
|
||||
x + 1,
|
||||
y,
|
||||
RGB::named(WHITE),
|
||||
RGB::named(BLACK),
|
||||
format!(
|
||||
"- changed floor {} times",
|
||||
crate::gamelog::get_event_count(EVENT::COUNT_CHANGED_FLOOR)
|
||||
)
|
||||
);
|
||||
y += 1;
|
||||
}
|
||||
if crate::gamelog::get_event_count(EVENT::COUNT_KICK) > 0 {
|
||||
ctx.print_color(
|
||||
x + 1,
|
||||
y,
|
||||
RGB::named(WHITE),
|
||||
RGB::named(BLACK),
|
||||
format!(
|
||||
"- kicked {} time(s), breaking {} object(s)",
|
||||
crate::gamelog::get_event_count(EVENT::COUNT_KICK),
|
||||
crate::gamelog::get_event_count(EVENT::COUNT_BROKE_DOOR)
|
||||
)
|
||||
);
|
||||
y += 1;
|
||||
}
|
||||
if crate::gamelog::get_event_count(EVENT::COUNT_KILLED) > 0 {
|
||||
ctx.print_color(
|
||||
x + 1,
|
||||
y,
|
||||
RGB::named(WHITE),
|
||||
RGB::named(BLACK),
|
||||
format!(
|
||||
"- slew {} other creature(s)",
|
||||
crate::gamelog::get_event_count(EVENT::COUNT_KILLED)
|
||||
)
|
||||
);
|
||||
y += 1;
|
||||
}
|
||||
if crate::gamelog::get_event_count(EVENT::COUNT_LOOKED_FOR_HELP) > 0 {
|
||||
ctx.print_color(
|
||||
x + 1,
|
||||
y,
|
||||
RGB::named(WHITE),
|
||||
RGB::named(BLACK),
|
||||
format!(
|
||||
"- forgot the controls {} time(s)",
|
||||
crate::gamelog::get_event_count(EVENT::COUNT_LOOKED_FOR_HELP)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
match ctx.key {
|
||||
None => YesNoResult::NoSelection,
|
||||
Some(key) =>
|
||||
match key {
|
||||
VirtualKeyCode::N => YesNoResult::No,
|
||||
VirtualKeyCode::Y => YesNoResult::Yes,
|
||||
_ => YesNoResult::NoSelection,
|
||||
pub fn game_over(ctx: &mut App) -> YesNoResult {
|
||||
for keycode in &ctx.keyboard.pressed {
|
||||
match *keycode {
|
||||
KeyCode::N => {
|
||||
return YesNoResult::No;
|
||||
}
|
||||
KeyCode::Y => {
|
||||
return YesNoResult::Yes;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
YesNoResult::NoSelection
|
||||
}
|
||||
|
||||
pub fn with_article(name: &String) -> String {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue