use wasm_bindgen::prelude::*;
use crate::team::coach::FootballTeamCoach;
use crate::team::defense::FootballTeamDefense;
use crate::team::offense::FootballTeamOffense;
use crate::team::FootballTeam;
#[wasm_bindgen(js_name = "FootballTeam")]
pub struct WasmFootballTeam {
inner: FootballTeam,
}
#[wasm_bindgen(js_class = "FootballTeam")]
impl WasmFootballTeam {
#[wasm_bindgen(constructor)]
pub fn new() -> WasmFootballTeam {
WasmFootballTeam {
inner: FootballTeam::new(),
}
}
#[wasm_bindgen(js_name = "fromOveralls")]
pub fn from_overalls(
name: &str,
short_name: &str,
offense_overall: u32,
defense_overall: u32,
) -> Result<WasmFootballTeam, JsError> {
FootballTeam::from_overalls(name, short_name, offense_overall, defense_overall)
.map(|inner| WasmFootballTeam { inner })
.map_err(|e| JsError::new(&e))
}
#[wasm_bindgen(getter)]
pub fn name(&self) -> String {
self.inner.name().to_string()
}
#[wasm_bindgen(getter, js_name = "shortName")]
pub fn short_name(&self) -> String {
self.inner.short_name().to_string()
}
#[wasm_bindgen(getter, js_name = "offenseOverall")]
pub fn offense_overall(&self) -> u32 {
use crate::game::score::ScoreSimulatable;
self.inner.offense_overall()
}
#[wasm_bindgen(getter, js_name = "defenseOverall")]
pub fn defense_overall(&self) -> u32 {
use crate::game::score::ScoreSimulatable;
self.inner.defense_overall()
}
#[wasm_bindgen(js_name = "toJSON")]
pub fn to_json(&self) -> Result<JsValue, JsError> {
serde_wasm_bindgen::to_value(&self.inner).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen(js_name = "fromJSON")]
pub fn from_json(value: JsValue) -> Result<WasmFootballTeam, JsError> {
let inner: FootballTeam =
serde_wasm_bindgen::from_value(value).map_err(|e| JsError::new(&e.to_string()))?;
Ok(WasmFootballTeam { inner })
}
}
impl Default for WasmFootballTeam {
fn default() -> Self {
Self::new()
}
}
impl WasmFootballTeam {
pub fn inner(&self) -> &FootballTeam {
&self.inner
}
pub fn from_inner(inner: FootballTeam) -> Self {
WasmFootballTeam { inner }
}
}
#[wasm_bindgen(js_name = "FootballTeamCoach")]
pub struct WasmFootballTeamCoach {
inner: FootballTeamCoach,
}
#[wasm_bindgen(js_class = "FootballTeamCoach")]
impl WasmFootballTeamCoach {
#[wasm_bindgen(constructor)]
pub fn new() -> WasmFootballTeamCoach {
WasmFootballTeamCoach {
inner: FootballTeamCoach::new(),
}
}
#[wasm_bindgen(getter, js_name = "riskTaking")]
pub fn risk_taking(&self) -> u32 {
self.inner.risk_taking()
}
#[wasm_bindgen(getter, js_name = "runPass")]
pub fn run_pass(&self) -> u32 {
self.inner.run_pass()
}
#[wasm_bindgen(getter, js_name = "upTempo")]
pub fn up_tempo(&self) -> u32 {
self.inner.up_tempo()
}
#[wasm_bindgen(js_name = "toJSON")]
pub fn to_json(&self) -> Result<JsValue, JsError> {
serde_wasm_bindgen::to_value(&self.inner).map_err(|e| JsError::new(&e.to_string()))
}
}
impl Default for WasmFootballTeamCoach {
fn default() -> Self {
Self::new()
}
}
#[wasm_bindgen(js_name = "FootballTeamOffense")]
pub struct WasmFootballTeamOffense {
inner: FootballTeamOffense,
}
#[wasm_bindgen(js_class = "FootballTeamOffense")]
impl WasmFootballTeamOffense {
#[wasm_bindgen(constructor)]
pub fn new() -> WasmFootballTeamOffense {
WasmFootballTeamOffense {
inner: FootballTeamOffense::new(),
}
}
#[wasm_bindgen(js_name = "fromOverall")]
pub fn from_overall(overall: u32) -> Result<WasmFootballTeamOffense, JsError> {
FootballTeamOffense::from_overall(overall)
.map(|inner| WasmFootballTeamOffense { inner })
.map_err(|e| JsError::new(&e))
}
#[wasm_bindgen(getter)]
pub fn overall(&self) -> u32 {
self.inner.overall()
}
#[wasm_bindgen(getter)]
pub fn passing(&self) -> u32 {
self.inner.passing()
}
#[wasm_bindgen(getter)]
pub fn rushing(&self) -> u32 {
self.inner.rushing()
}
#[wasm_bindgen(getter)]
pub fn receiving(&self) -> u32 {
self.inner.receiving()
}
#[wasm_bindgen(getter)]
pub fn blocking(&self) -> u32 {
self.inner.blocking()
}
#[wasm_bindgen(getter)]
pub fn scrambling(&self) -> u32 {
self.inner.scrambling()
}
#[wasm_bindgen(getter)]
pub fn turnovers(&self) -> u32 {
self.inner.turnovers()
}
#[wasm_bindgen(getter, js_name = "fieldGoals")]
pub fn field_goals(&self) -> u32 {
self.inner.field_goals()
}
#[wasm_bindgen(getter)]
pub fn punting(&self) -> u32 {
self.inner.punting()
}
#[wasm_bindgen(getter)]
pub fn kickoffs(&self) -> u32 {
self.inner.kickoffs()
}
#[wasm_bindgen(getter, js_name = "kickReturnDefense")]
pub fn kick_return_defense(&self) -> u32 {
self.inner.kick_return_defense()
}
#[wasm_bindgen(js_name = "toJSON")]
pub fn to_json(&self) -> Result<JsValue, JsError> {
serde_wasm_bindgen::to_value(&self.inner).map_err(|e| JsError::new(&e.to_string()))
}
}
impl Default for WasmFootballTeamOffense {
fn default() -> Self {
Self::new()
}
}
#[wasm_bindgen(js_name = "FootballTeamDefense")]
pub struct WasmFootballTeamDefense {
inner: FootballTeamDefense,
}
#[wasm_bindgen(js_class = "FootballTeamDefense")]
impl WasmFootballTeamDefense {
#[wasm_bindgen(constructor)]
pub fn new() -> WasmFootballTeamDefense {
WasmFootballTeamDefense {
inner: FootballTeamDefense::new(),
}
}
#[wasm_bindgen(js_name = "fromOverall")]
pub fn from_overall(overall: u32) -> Result<WasmFootballTeamDefense, JsError> {
FootballTeamDefense::from_overall(overall)
.map(|inner| WasmFootballTeamDefense { inner })
.map_err(|e| JsError::new(&e))
}
#[wasm_bindgen(getter)]
pub fn overall(&self) -> u32 {
self.inner.overall()
}
#[wasm_bindgen(getter)]
pub fn blitzing(&self) -> u32 {
self.inner.blitzing()
}
#[wasm_bindgen(getter, js_name = "rushDefense")]
pub fn rush_defense(&self) -> u32 {
self.inner.rush_defense()
}
#[wasm_bindgen(getter, js_name = "passDefense")]
pub fn pass_defense(&self) -> u32 {
self.inner.pass_defense()
}
#[wasm_bindgen(getter)]
pub fn coverage(&self) -> u32 {
self.inner.coverage()
}
#[wasm_bindgen(getter)]
pub fn turnovers(&self) -> u32 {
self.inner.turnovers()
}
#[wasm_bindgen(getter, js_name = "kickReturning")]
pub fn kick_returning(&self) -> u32 {
self.inner.kick_returning()
}
#[wasm_bindgen(js_name = "toJSON")]
pub fn to_json(&self) -> Result<JsValue, JsError> {
serde_wasm_bindgen::to_value(&self.inner).map_err(|e| JsError::new(&e.to_string()))
}
}
impl Default for WasmFootballTeamDefense {
fn default() -> Self {
Self::new()
}
}