mirror of
https://github.com/doukutsu-rs/doukutsu-rs
synced 2025-05-02 03:24:41 +00:00
add teleport_player command and use if let() instead of unwrapping
This commit is contained in:
parent
0330cf3b2b
commit
c9e6dd7181
|
@ -21,6 +21,7 @@ pub enum CommandLineCommand {
|
||||||
RemoveXP(u16),
|
RemoveXP(u16),
|
||||||
SetMaxHP(u16),
|
SetMaxHP(u16),
|
||||||
SpawnNPC(u16),
|
SpawnNPC(u16),
|
||||||
|
TeleportPlayer(f32, f32),
|
||||||
TSC(String),
|
TSC(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,8 +44,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let item_id = components[1].parse::<u16>();
|
let item_id = components[1].parse::<u16>();
|
||||||
if item_id.is_ok() {
|
if let Ok(item_id) = item_id {
|
||||||
return Some(CommandLineCommand::AddItem(item_id.unwrap()));
|
return Some(CommandLineCommand::AddItem(item_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"remove_item" => {
|
"remove_item" => {
|
||||||
|
@ -53,8 +54,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let item_id = components[1].parse::<u16>();
|
let item_id = components[1].parse::<u16>();
|
||||||
if item_id.is_ok() {
|
if let Ok(item_id) = item_id {
|
||||||
return Some(CommandLineCommand::RemoveItem(item_id.unwrap()));
|
return Some(CommandLineCommand::RemoveItem(item_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"add_weapon" => {
|
"add_weapon" => {
|
||||||
|
@ -65,8 +66,8 @@ impl CommandLineCommand {
|
||||||
let weapon_id = components[1].parse::<u16>();
|
let weapon_id = components[1].parse::<u16>();
|
||||||
let ammo_count = components[2].parse::<u16>();
|
let ammo_count = components[2].parse::<u16>();
|
||||||
|
|
||||||
if weapon_id.is_ok() && ammo_count.is_ok() {
|
if let (Ok(weapon_id), Ok(ammo_count)) = (weapon_id, ammo_count) {
|
||||||
return Some(CommandLineCommand::AddWeapon(weapon_id.unwrap(), ammo_count.unwrap()));
|
return Some(CommandLineCommand::AddWeapon(weapon_id, ammo_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"remove_weapon" => {
|
"remove_weapon" => {
|
||||||
|
@ -75,8 +76,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let weapon_id = components[1].parse::<u16>();
|
let weapon_id = components[1].parse::<u16>();
|
||||||
if weapon_id.is_ok() {
|
if let Ok(weapon_id) = weapon_id {
|
||||||
return Some(CommandLineCommand::RemoveWeapon(weapon_id.unwrap()));
|
return Some(CommandLineCommand::RemoveWeapon(weapon_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"add_weapon_ammo" => {
|
"add_weapon_ammo" => {
|
||||||
|
@ -85,8 +86,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let ammo_count = components[1].parse::<u16>();
|
let ammo_count = components[1].parse::<u16>();
|
||||||
if ammo_count.is_ok() {
|
if let Ok(ammo_count) = ammo_count {
|
||||||
return Some(CommandLineCommand::AddWeaponAmmo(ammo_count.unwrap()));
|
return Some(CommandLineCommand::AddWeaponAmmo(ammo_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"set_weapon_max_ammo" => {
|
"set_weapon_max_ammo" => {
|
||||||
|
@ -95,8 +96,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let max_ammo_count = components[1].parse::<u16>();
|
let max_ammo_count = components[1].parse::<u16>();
|
||||||
if max_ammo_count.is_ok() {
|
if let Ok(max_ammo_count) = max_ammo_count {
|
||||||
return Some(CommandLineCommand::SetWeaponMaxAmmo(max_ammo_count.unwrap()));
|
return Some(CommandLineCommand::SetWeaponMaxAmmo(max_ammo_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"refill_ammo" => {
|
"refill_ammo" => {
|
||||||
|
@ -111,8 +112,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let xp_count = components[1].parse::<u16>();
|
let xp_count = components[1].parse::<u16>();
|
||||||
if xp_count.is_ok() {
|
if let Ok(xp_count) = xp_count {
|
||||||
return Some(CommandLineCommand::AddXP(xp_count.unwrap()));
|
return Some(CommandLineCommand::AddXP(xp_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"remove_xp" => {
|
"remove_xp" => {
|
||||||
|
@ -121,8 +122,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let xp_count = components[1].parse::<u16>();
|
let xp_count = components[1].parse::<u16>();
|
||||||
if xp_count.is_ok() {
|
if let Ok(xp_count) = xp_count {
|
||||||
return Some(CommandLineCommand::RemoveXP(xp_count.unwrap()));
|
return Some(CommandLineCommand::RemoveXP(xp_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"set_max_hp" => {
|
"set_max_hp" => {
|
||||||
|
@ -131,8 +132,8 @@ impl CommandLineCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
let hp_count = components[1].parse::<u16>();
|
let hp_count = components[1].parse::<u16>();
|
||||||
if hp_count.is_ok() {
|
if let Ok(hp_count) = hp_count {
|
||||||
return Some(CommandLineCommand::SetMaxHP(hp_count.unwrap()));
|
return Some(CommandLineCommand::SetMaxHP(hp_count));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"spawn_npc" => {
|
"spawn_npc" => {
|
||||||
|
@ -140,8 +141,18 @@ impl CommandLineCommand {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let npc_id = components[1].parse::<u16>();
|
let npc_id = components[1].parse::<u16>();
|
||||||
if npc_id.is_ok() {
|
if let Ok(npc_id) = npc_id {
|
||||||
return Some(CommandLineCommand::SpawnNPC(npc_id.unwrap()));
|
return Some(CommandLineCommand::SpawnNPC(npc_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"teleport_player" => {
|
||||||
|
if components.len() < 2 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let x = components[1].parse::<f32>();
|
||||||
|
let y = components[2].parse::<f32>();
|
||||||
|
if let (Ok(x), Ok(y)) = (x, y) {
|
||||||
|
return Some(CommandLineCommand::TeleportPlayer(x, y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"tsc" => {
|
"tsc" => {
|
||||||
|
@ -227,6 +238,12 @@ impl CommandLineCommand {
|
||||||
npc.x = game_scene.player1.x + game_scene.player1.direction.vector_x() * (0x2000 * 3);
|
npc.x = game_scene.player1.x + game_scene.player1.direction.vector_x() * (0x2000 * 3);
|
||||||
game_scene.npc_list.spawn(0x100, npc)?;
|
game_scene.npc_list.spawn(0x100, npc)?;
|
||||||
}
|
}
|
||||||
|
CommandLineCommand::TeleportPlayer(x, y) => {
|
||||||
|
game_scene.player1.x = (x * 512.0) as i32;
|
||||||
|
game_scene.player1.y = (y * 512.0) as i32;
|
||||||
|
game_scene.player2.x = game_scene.player1.x;
|
||||||
|
game_scene.player2.y = game_scene.player1.y;
|
||||||
|
}
|
||||||
CommandLineCommand::TSC(script) => {
|
CommandLineCommand::TSC(script) => {
|
||||||
log::info!("Executing TSC script: {}", format!("#9999\n{}", script));
|
log::info!("Executing TSC script: {}", format!("#9999\n{}", script));
|
||||||
match TextScript::compile(format!("#9999\n{}", script).as_bytes(), true, TextScriptEncoding::UTF8) {
|
match TextScript::compile(format!("#9999\n{}", script).as_bytes(), true, TextScriptEncoding::UTF8) {
|
||||||
|
@ -260,6 +277,7 @@ impl CommandLineCommand {
|
||||||
CommandLineCommand::RemoveXP(xp_count) => format!("/remove_xp {}", xp_count),
|
CommandLineCommand::RemoveXP(xp_count) => format!("/remove_xp {}", xp_count),
|
||||||
CommandLineCommand::SetMaxHP(hp_count) => format!("/set_max_hp {}", hp_count),
|
CommandLineCommand::SetMaxHP(hp_count) => format!("/set_max_hp {}", hp_count),
|
||||||
CommandLineCommand::SpawnNPC(npc_id) => format!("/spawn_npc {}", npc_id),
|
CommandLineCommand::SpawnNPC(npc_id) => format!("/spawn_npc {}", npc_id),
|
||||||
|
CommandLineCommand::TeleportPlayer(x, y) => format!("/teleport_player {} {}", x, y),
|
||||||
CommandLineCommand::TSC(script) => format!("/tsc {}", script.replace("\n", "\\n")),
|
CommandLineCommand::TSC(script) => format!("/tsc {}", script.replace("\n", "\\n")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,6 +300,7 @@ impl CommandLineCommand {
|
||||||
CommandLineCommand::RemoveXP(xp_count) => format!("Removed {} XP from current weapon.", xp_count),
|
CommandLineCommand::RemoveXP(xp_count) => format!("Removed {} XP from current weapon.", xp_count),
|
||||||
CommandLineCommand::SetMaxHP(hp_count) => format!("Set max HP of player to {}.", hp_count),
|
CommandLineCommand::SetMaxHP(hp_count) => format!("Set max HP of player to {}.", hp_count),
|
||||||
CommandLineCommand::SpawnNPC(npc_id) => format!("Spawned NPC ID {} in front of player.", npc_id),
|
CommandLineCommand::SpawnNPC(npc_id) => format!("Spawned NPC ID {} in front of player.", npc_id),
|
||||||
|
CommandLineCommand::TeleportPlayer(x, y) => format!("Teleported players to ({}, {}).", x, y),
|
||||||
CommandLineCommand::TSC(_) => "Executed TSC script.".to_string(),
|
CommandLineCommand::TSC(_) => "Executed TSC script.".to_string(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue