1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
use serde_json::json;
use serde::Deserialize;
use specs::{
DispatcherBuilder
};
use crate::{
RoomId,
Encyclopedia,
room::Room,
roomtemplate::RoomTemplate,
systems::{
Move,
ControlInput,
UpdateCooldowns,
ControlAI,
}
};
pub fn purgatory_id() -> RoomId {
RoomId(String::from("+"))
}
pub fn create_purgatory<'a, 'b>(encyclopedia: &Encyclopedia) -> Room<'a, 'b> {
let dispatcher = DispatcherBuilder::new()
.with(UpdateCooldowns, "cool_down", &[])
.with(ControlInput, "controlinput", &["cool_down"])
.with(ControlAI, "controlai", &["cool_down"])
.with(Move, "move", &["controlinput", "controlai"])
.build();
let mut room = Room::new(purgatory_id(), encyclopedia.clone(), Some(dispatcher));
room.load_from_template(&RoomTemplate::deserialize(&json!({
"width": 15,
"height": 20,
"spawn": [7, 9],
"field": [
" YOU HAVE DIED ",
" ",
" ",
" +++ ",
" +++++++ ",
" +++++++++ ",
" +++++++++ ",
" +++++++++++ ",
" +++++++++++ ",
" +++++++++++ ",
" +++++++++ ",
" +++++++++ ",
" +++++++ ",
" +++ ",
" ",
" ",
" RESTART CLIENT",
" TO RESPAWN "
],
"mapping": {
" ": [],
"+": ["floor"],
"A": [{"type": "letter", "args": ["A"]}],
"B": [{"type": "letter", "args": ["B"]}],
"C": [{"type": "letter", "args": ["C"]}],
"D": [{"type": "letter", "args": ["D"]}],
"E": [{"type": "letter", "args": ["E"]}],
"F": [{"type": "letter", "args": ["F"]}],
"G": [{"type": "letter", "args": ["G"]}],
"H": [{"type": "letter", "args": ["H"]}],
"I": [{"type": "letter", "args": ["I"]}],
"J": [{"type": "letter", "args": ["J"]}],
"K": [{"type": "letter", "args": ["K"]}],
"L": [{"type": "letter", "args": ["L"]}],
"M": [{"type": "letter", "args": ["M"]}],
"N": [{"type": "letter", "args": ["N"]}],
"O": [{"type": "letter", "args": ["O"]}],
"P": [{"type": "letter", "args": ["P"]}],
"Q": [{"type": "letter", "args": ["Q"]}],
"R": [{"type": "letter", "args": ["R"]}],
"S": [{"type": "letter", "args": ["S"]}],
"T": [{"type": "letter", "args": ["T"]}],
"U": [{"type": "letter", "args": ["U"]}],
"V": [{"type": "letter", "args": ["V"]}],
"W": [{"type": "letter", "args": ["W"]}],
"X": [{"type": "letter", "args": ["X"]}],
"Y": [{"type": "letter", "args": ["Y"]}],
"Z": [{"type": "letter", "args": ["Z"]}]
}
})).unwrap()).unwrap();
room
}
|