1pub mod locations {
5 pub fn get_locations() -> Vec<Location> {
8 let mut all_locations: Vec<Location> = vec![];
9 all_locations.extend(get_locations_eastern());
10 all_locations.extend(get_locations_western());
11 all_locations.extend(get_locations_northern());
12 return all_locations;
13 }
14
15 fn get_locations_northern() -> Vec<Location> {
16 return vec![
17 Location::new("Bone Village", Area::Icicle, Continent::Northern),
18 Location::new("Sleeping Forest", Area::Icicle, Continent::Northern),
19 Location::new("Corel Valley", Area::Icicle, Continent::Northern),
20 Location::new("City of the Ancients", Area::Icicle, Continent::Northern),
21 Location::new("Corel Valley Cave", Area::Icicle, Continent::Northern),
22 Location::new("Icicle Inn", Area::Icicle, Continent::Northern),
23 Location::new("Great Glacier", Area::Icicle, Continent::Northern),
24 Location::new("Gaea's Cliff", Area::Icicle, Continent::Northern),
25 Location::new("North Crater", Area::Icicle, Continent::Northern),
26 Location::new("Whirlwind Maze", Area::Icicle, Continent::Northern),
27 Location::new("Northern Cave", Area::Icicle, Continent::Northern),
28 Location::new("Chocobo Sage's House", Area::Icicle, Continent::Northern),
29 ];
30 }
31
32 fn get_locations_western() -> Vec<Location> {
33 return vec![
34 Location::new("Costa del Sol", Area::Corel, Continent::Western),
35 Location::new("Mt. Corel", Area::Corel, Continent::Western),
36 Location::new("Coal Train", Area::Corel, Continent::Western),
37
38 Location::new("North Corel", Area::GoldSaucer, Continent::Western),
39 Location::new("Gold Saucer", Area::GoldSaucer, Continent::Western),
40 Location::new("Wonder Square", Area::GoldSaucer, Continent::Western),
41 Location::new("Battle Square", Area::GoldSaucer, Continent::Western),
42 Location::new("Chocobo Square", Area::GoldSaucer, Continent::Western),
43 Location::new("Speed Square", Area::GoldSaucer, Continent::Western),
44 Location::new("Corel Prison", Area::GoldSaucer, Continent::Western),
45 Location::new("???", Area::GoldSaucer, Continent::Western),
46
47 Location::new("Gongaga", Area::Gongaga, Continent::Western),
48 Location::new("Materia Cave", Area::Gongaga, Continent::Western),
49 Location::new("Weapon Seller", Area::Gongaga, Continent::Western),
50
51 Location::new("Cosmo Canyon", Area::Cosmo, Continent::Western),
52 Location::new("Cave of the Gi", Area::Cosmo, Continent::Western),
53 Location::new("Ancient Forest", Area::Cosmo, Continent::Western),
54
55 Location::new("Nibelheim", Area::Nibel, Continent::Western),
56 Location::new("Shinra Mansion", Area::Nibel, Continent::Western),
57 Location::new("Mount Nibel", Area::Nibel, Continent::Western),
58 Location::new("Nibel Reactor", Area::Nibel, Continent::Western),
59 Location::new("???", Area::Nibel, Continent::Western),
60
61 Location::new("Rocket Town", Area::RocketLaunchPad, Continent::Western),
62
63 Location::new("Materia Cave", Area::NorthCorel, Continent::Western),
64 ];
65 }
66
67 fn get_locations_eastern() -> Vec<Location> {
68 return vec![
69 Location::new("Midgar Sector 1", Area::Midgar, Continent:: Eastern ),
70 Location::new("Mako Reactor 1", Area::Midgar, Continent:: Eastern ),
71 Location::new("Midgar Sector 7", Area::Midgar, Continent:: Eastern ),
72 Location::new("Seventh Heaven", Area::Midgar, Continent:: Eastern ),
73 Location::new("Train Graveyard", Area::Midgar, Continent:: Eastern ),
74 Location::new("Midgar Sector 4", Area::Midgar, Continent:: Eastern ),
75 Location::new("Midgar Sector 5", Area::Midgar, Continent:: Eastern ),
76 Location::new("Mako Reactor 5", Area::Midgar, Continent:: Eastern ),
77 Location::new("Sector 5 Slums Church", Area::Midgar, Continent:: Eastern ),
78 Location::new("Midgar Sector 6", Area::Midgar, Continent:: Eastern ),
79 Location::new("Wall Market", Area::Midgar, Continent:: Eastern ),
80 Location::new("Honey Bee Inn", Area::Midgar, Continent:: Eastern ),
81 Location::new("Sewer", Area::Midgar, Continent:: Eastern ),
82 Location::new("Midgar Sector 0", Area::Midgar, Continent:: Eastern ),
83 Location::new("Shinra Building", Area::Midgar, Continent:: Eastern ),
84 Location::new("Midgar Expressway", Area::Midgar, Continent:: Eastern ),
85 Location::new("Midgar Wasteland", Area::Midgar, Continent:: Eastern ),
86 Location::new("Kalm", Area::Midgar, Continent:: Eastern ),
87
88 Location::new("Chocobo Farm", Area::Grasslands, Continent:: Eastern ),
89 Location::new("Marshes", Area::Grasslands, Continent:: Eastern ),
90 Location::new("Mythril Mine", Area::Grasslands, Continent:: Eastern ),
91
92 Location::new("Junon", Area::Junon, Continent:: Eastern ),
93 Location::new("Cargo Ship", Area::Junon, Continent:: Eastern ),
94 Location::new("Underwater Reactor", Area::Junon, Continent:: Eastern ),
95 Location::new("Old Man's House", Area::Junon, Continent:: Eastern ),
96 Location::new("Fort Condor", Area::Junon, Continent:: Eastern ),
97 Location::new("Under Junon", Area::Junon, Continent:: Eastern ),
98 Location::new("Mythril Mine", Area::Junon, Continent:: Eastern ),
99
100
101
102 ];
103 }
104
105 impl Location {
106 fn new(name: &str, area: Area, continent: Continent) -> Location {
107 return Location {
108 name: name.to_string(),
109 area,
110 continent,
111 }
112 }
113 }
114
115 enum Continent {
116 Western,
117 Eastern,
118 Northern,
119 Other,
120 DebugRoom
121 }
122
123 enum Area {
124 Midgar,
125 Grasslands,
126 Junon,
127 Corel,
128 GoldSaucer,
129 Gongaga,
130 Cosmo,
131 Nibel,
132 RocketLaunchPad,
133 NorthCorel,
134 Icicle,
135 Woodlands,
136 Mideel,
137 Wutai,
138 SeaBottom,
139 }
140
141
142 pub struct Location {
143 name: String,
144 area: Area,
145 continent: Continent,
146 }
147}
148