mirror of
https://github.com/redstrate/Kawari.git
synced 2025-05-13 07:07:45 +00:00
Update and use the nice, new Physis ColumnData API
Now the GameData::get_warp function looks much closer to how I want it to!
This commit is contained in:
parent
93923ff7a8
commit
99c92d1b67
3 changed files with 8 additions and 11 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -1017,7 +1017,7 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
|
|||
[[package]]
|
||||
name = "physis"
|
||||
version = "0.4.0"
|
||||
source = "git+https://github.com/redstrate/physis#70343e12125c70cffa1998e68ff28a8d2dc4f3df"
|
||||
source = "git+https://github.com/redstrate/physis#309726163a0d76f26831236f43740a2c8bd1b01d"
|
||||
dependencies = [
|
||||
"binrw",
|
||||
"bitflags",
|
||||
|
|
|
@ -132,19 +132,14 @@ impl GameData {
|
|||
}
|
||||
|
||||
/// Returns the pop range object id that's associated with the warp id
|
||||
pub fn get_warp(&mut self, warp_id: u32) -> (u32, u16) {
|
||||
pub fn get_warp(&mut self, warp_id: u32) -> Option<(u32, u16)> {
|
||||
let warp_sheet = Warp::read_from(&mut self.game_data, Language::English);
|
||||
|
||||
let row = warp_sheet.get_row(warp_id);
|
||||
|
||||
let physis::exd::ColumnData::UInt32(pop_range_id) = row.PopRange() else {
|
||||
panic!("Unexpected type!");
|
||||
};
|
||||
let pop_range_id = row.PopRange().into_u32()?;
|
||||
let zone_id = row.TerritoryType().into_u16()?;
|
||||
|
||||
let physis::exd::ColumnData::UInt16(zone_id) = row.TerritoryType() else {
|
||||
panic!("Unexpected type!");
|
||||
};
|
||||
|
||||
(*pop_range_id, *zone_id)
|
||||
Some((*pop_range_id, *zone_id))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -434,7 +434,9 @@ impl ZoneConnection {
|
|||
// find the pop range on the other side
|
||||
{
|
||||
let mut game_data = self.gamedata.lock().unwrap();
|
||||
let (pop_range_id, zone_id) = game_data.get_warp(warp_id);
|
||||
let (pop_range_id, zone_id) = game_data
|
||||
.get_warp(warp_id)
|
||||
.expect("Failed to find the warp!");
|
||||
|
||||
let new_zone = Zone::load(&mut game_data.game_data, zone_id);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue