cleanup
This commit is contained in:
parent
9b00500a77
commit
b9d5b7916c
@ -7,6 +7,7 @@ use event::Event;
|
|||||||
|
|
||||||
use {Channel, User};
|
use {Channel, User};
|
||||||
|
|
||||||
|
use pvn::Error;
|
||||||
use pvn::Fighter;
|
use pvn::Fighter;
|
||||||
use pvn::pirates::{Pirate, Pirates};
|
use pvn::pirates::{Pirate, Pirates};
|
||||||
use pvn::ninjas::{Ninja, Ninjas};
|
use pvn::ninjas::{Ninja, Ninjas};
|
||||||
@ -45,34 +46,51 @@ fn reply (message: &str, channel: &Option<Channel>, user: &User) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_pirate (pirate: &Pirate, channel: &Option<Channel>, user: &User) {
|
trait PvnFighter: Fighter {
|
||||||
reply(&format!("**{}**", pirate.name), channel, user);
|
fn name (&self) -> &str;
|
||||||
reply(&format!("Swashbuckling: {}", pirate.swashbuckling), channel, user);
|
fn print (&self, channel: &Option<Channel>, user: &User);
|
||||||
reply(&format!("Drunkenness: {}", pirate.drunkenness), channel, user);
|
|
||||||
reply(&format!("Booty: {}", pirate.booty), channel, user);
|
fn fight (&self, other: &PvnFighter, channel: &Option<Channel>, user: &User) {
|
||||||
reply(&format!("Weapons: {}", pirate.weapons.join(", ")), channel, user);
|
self.print(channel, user);
|
||||||
reply(&format!("**TOTAL POWER: {}**", pirate.power()), channel, user);
|
other.print(channel, user);
|
||||||
|
|
||||||
|
if self.power() == other.power() {
|
||||||
|
reply("**It's a tie!**", channel, user);
|
||||||
|
} else if self.power() > other.power() {
|
||||||
|
reply(&format!("**Winner: {}!**", self.name()), channel, user);
|
||||||
|
} else {
|
||||||
|
reply(&format!("**Winner: {}!**", other.name()), channel, user);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_ninja (ninja: &Ninja, channel: &Option<Channel>, user: &User) {
|
impl PvnFighter for Pirate {
|
||||||
reply(&format!("**{}**", ninja.name), channel, user);
|
fn print (&self, channel: &Option<Channel>, user: &User) {
|
||||||
reply(&format!("Sneakiness: {}", ninja.sneakiness), channel, user);
|
reply(&format!("**{}**", self.name), channel, user);
|
||||||
reply(&format!("Pajamas: {}", ninja.pajamas), channel, user);
|
reply(&format!("Swashbuckling: {}", self.swashbuckling), channel, user);
|
||||||
reply(&format!("Pointy Things: {}", ninja.pointy_things), channel, user);
|
reply(&format!("Drunkenness: {}", self.drunkenness), channel, user);
|
||||||
reply(&format!("Weapons: {}", ninja.weapons.join(", ")), channel, user);
|
reply(&format!("Booty: {}", self.booty), channel, user);
|
||||||
reply(&format!("**TOTAL POWER: {}**", ninja.power()), channel, user);
|
reply(&format!("Weapons: {}", self.weapons.join(", ")), channel, user);
|
||||||
|
reply(&format!("**TOTAL POWER: {}**", self.power()), channel, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn name (&self) -> &str {
|
||||||
|
&self.name[..]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pirate_vs_ninja (pirate: &Pirate, ninja: &Ninja, channel: &Option<Channel>, user: &User) {
|
impl PvnFighter for Ninja {
|
||||||
print_pirate(pirate, channel, user);
|
fn print (&self, channel: &Option<Channel>, user: &User) {
|
||||||
print_ninja(ninja, channel, user);
|
reply(&format!("**{}**", self.name), channel, user);
|
||||||
|
reply(&format!("Sneakiness: {}", self.sneakiness), channel, user);
|
||||||
|
reply(&format!("Pajamas: {}", self.pajamas), channel, user);
|
||||||
|
reply(&format!("Pointy Things: {}", self.pointy_things), channel, user);
|
||||||
|
reply(&format!("Weapons: {}", self.weapons.join(", ")), channel, user);
|
||||||
|
reply(&format!("**TOTAL POWER: {}**", self.power()), channel, user);
|
||||||
|
}
|
||||||
|
|
||||||
if pirate.power() == ninja.power() {
|
fn name (&self) -> &str {
|
||||||
reply("**It's a tie!**", channel, user);
|
&self.name[..]
|
||||||
} else if pirate.power() > ninja.power() {
|
|
||||||
reply(&format!("**Winner: {}!**", pirate.name), channel, user);
|
|
||||||
} else {
|
|
||||||
reply(&format!("**Winner: {}!**", ninja.name), channel, user);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +107,7 @@ impl PirateVsNinja {
|
|||||||
Ok(pirate) => {
|
Ok(pirate) => {
|
||||||
match self.ninjas.get(ninja_name) {
|
match self.ninjas.get(ninja_name) {
|
||||||
Ok(ninja) => {
|
Ok(ninja) => {
|
||||||
pirate_vs_ninja(pirate, ninja, channel, user);
|
pirate.fight(ninja, channel, user);
|
||||||
},
|
},
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
error!("Error getting ninja: {:?}", error);
|
error!("Error getting ninja: {:?}", error);
|
||||||
@ -110,7 +128,7 @@ impl PirateVsNinja {
|
|||||||
fn pirate_command (&mut self, name: &str, channel: &Option<Channel>, user: &User) {
|
fn pirate_command (&mut self, name: &str, channel: &Option<Channel>, user: &User) {
|
||||||
match self.pirates.get(name) {
|
match self.pirates.get(name) {
|
||||||
Ok(pirate) => {
|
Ok(pirate) => {
|
||||||
print_pirate(pirate, channel, user);
|
pirate.print(channel, user);
|
||||||
},
|
},
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
error!("Error getting pirate: {:?}", error);
|
error!("Error getting pirate: {:?}", error);
|
||||||
@ -121,13 +139,21 @@ impl PirateVsNinja {
|
|||||||
fn ninja_command (&mut self, name: &str, channel: &Option<Channel>, user: &User) {
|
fn ninja_command (&mut self, name: &str, channel: &Option<Channel>, user: &User) {
|
||||||
match self.ninjas.get(name) {
|
match self.ninjas.get(name) {
|
||||||
Ok(ninja) => {
|
Ok(ninja) => {
|
||||||
print_ninja(ninja, channel, user);
|
ninja.print(channel, user);
|
||||||
},
|
},
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
error!("Error getting ninja: {:?}", error);
|
error!("Error getting ninja: {:?}", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_pirate (&mut self, name: &str) -> Result<&Pirate, Error> {
|
||||||
|
self.pirates.get(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_ninja (&mut self, name: &str) -> Result<&Ninja, Error> {
|
||||||
|
self.ninjas.get(name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Module for PvnModule {
|
impl Module for PvnModule {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user