ff7/
lib.rs

1//! This is the Final Fantasy VII crate for Rust.
2//! It contains information about the late 1990's game Final Fantasy VII.
3
4pub mod locations {
5  //! This module contains information about the locations you can visit in Final Fantasy VII.
6
7  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