From 114a6d505ca839011b299f52869858a7d15a1cc6 Mon Sep 17 00:00:00 2001 From: ntr Date: Fri, 21 Dec 2018 13:18:08 +1100 Subject: [PATCH] pve enum --- client/src/actions.js | 42 ----------------------- client/src/events.js | 2 +- client/src/scenes/cryp.list.js | 18 ++++++++++ client/src/scenes/cryp.page.js | 61 ---------------------------------- client/src/scenes/game.list.js | 6 ++-- server/src/cryp.rs | 6 ++-- server/src/game.rs | 38 ++++++++++----------- server/src/rpc.rs | 4 +-- server/src/skill.rs | 4 +-- 9 files changed, 48 insertions(+), 133 deletions(-) delete mode 100644 client/src/actions.js delete mode 100644 client/src/scenes/cryp.page.js diff --git a/client/src/actions.js b/client/src/actions.js deleted file mode 100644 index 8d942440..00000000 --- a/client/src/actions.js +++ /dev/null @@ -1,42 +0,0 @@ -const SET_ACCOUNT = 'SET_ACCOUNT'; -const setAccount = value => ({ type: SET_ACCOUNT, value }); - -const SET_CRYPS = 'SET_CRYPS'; -const setCryps = value => ({ type: SET_CRYPS, value }); - -const SET_ITEMS = 'SET_ITEMS'; -const setItems = value => ({ type: SET_ITEMS, value }); - -const SET_GAME = 'SET_GAME'; -const setGame = value => ({ type: SET_GAME, value }); - -const SET_ACTIVE_ITEM = 'SET_ACTIVE_ITEM'; -const setActiveItem = value => ({ type: SET_ACTIVE_ITEM, value }); - -const SET_ACTIVE_INCOMING = 'SET_ACTIVE_INCOMING'; -const setActiveIncoming = value => ({ type: SET_ACTIVE_INCOMING, value }); - -const SET_ACTIVE_SKILL = 'SET_ACTIVE_SKILL'; -const setActiveSkill = (crypId, skill) => ({ type: SET_ACTIVE_SKILL, value: crypId ? { crypId, skill } : null }); - -const SET_WS = 'SET_WS'; -const setWs = value => ({ type: SET_WS, value }); - -module.exports = { - SET_ACCOUNT, - setAccount, - SET_CRYPS, - setCryps, - SET_ITEMS, - setItems, - SET_GAME, - setGame, - SET_ACTIVE_ITEM, - setActiveItem, - SET_ACTIVE_INCOMING, - setActiveIncoming, - SET_ACTIVE_SKILL, - setActiveSkill, - SET_WS, - setWs, -}; diff --git a/client/src/events.js b/client/src/events.js index fd657c28..4842c574 100644 --- a/client/src/events.js +++ b/client/src/events.js @@ -24,7 +24,7 @@ function registerEvents(registry, events) { } function setItems(items) { - registry.set('items', items); + registry.set('itemList', items); } function setGameList(gameList) { diff --git a/client/src/scenes/cryp.list.js b/client/src/scenes/cryp.list.js index 2dae4def..55268f01 100644 --- a/client/src/scenes/cryp.list.js +++ b/client/src/scenes/cryp.list.js @@ -3,6 +3,7 @@ const Phaser = require('phaser'); const Combat = require('./combat'); const CrypRows = require('./cryp.row'); const GameList = require('./game.list'); +const ItemList = require('./item.list'); const StatSheet = require('./statsheet'); class CrypList extends Phaser.Scene { @@ -29,6 +30,10 @@ class CrypList extends Phaser.Scene { this.renderGameList(); } + if (key === 'itemList') { + return this.renderItemList(); + } + if (key === 'game' && this.scene.isActive()) { this.scene.sleep(); this.scene.add('Combat', Combat); @@ -62,6 +67,19 @@ class CrypList extends Phaser.Scene { this.gameList = new GameList({ list: this, ws, cryps, gameList, events: this.game.events }); } + renderItemList() { + const ws = this.registry.get('ws'); + const itemList = this.registry.get('itemList'); + + if (this.itemList) { + this.itemList.cleanup(); + this.itemList.destroy(true); + } + + this.itemList = new ItemList({ list: this, ws, itemList, events: this.game.events }); + } + + displaySkills(cryp) { if (cryp) { this.scene.add('StatSheet', StatSheet); diff --git a/client/src/scenes/cryp.page.js b/client/src/scenes/cryp.page.js deleted file mode 100644 index e54e918b..00000000 --- a/client/src/scenes/cryp.page.js +++ /dev/null @@ -1,61 +0,0 @@ -const Phaser = require('phaser'); - -const { TEXT, SKILLS, POSITIONS: { STATS } } = require('./constants'); - -class CrypPage extends Phaser.GameObjects.Group { - constructor(scene, cryp) { - super(scene); - this.id = cryp.id; - this.scene = scene; - this.ws = scene.registry.get('ws'); - - const TEXT_MARGIN = STATS.textMargin(); - - const crypStat = (stat, i) => { - const STAT_X = STATS.x(); - const STAT_Y = (i * TEXT_MARGIN) + STATS.y() + TEXT_MARGIN; - - const text = scene.add.text(STAT_X, STAT_Y, `${stat.stat}: ${stat.base}`, TEXT.NORMAL); - this.add(text); - }; - - const knownSkill = (skill, i) => { - const SKILL_X = STATS.knownX(); - const SKILL_Y = (i * TEXT_MARGIN) + STATS.y() + TEXT_MARGIN; - - const text = scene.add.text(SKILL_X, SKILL_Y, skill.skill, TEXT.NORMAL) - .setInteractive(); - - text.on('pointerdown', () => { - this.ws.sendCrypForget(cryp.id, skill.skill); - }); - this.add(text); - }; - - const learnable = (skill, i) => { - const SKILL_X = STATS.learnableX(); - const SKILL_Y = (i * TEXT_MARGIN) + STATS.y() + TEXT_MARGIN; - - const text = scene.add.text(SKILL_X, SKILL_Y, `${skill.name}\n${skill.description}`, TEXT.NORMAL) - .setInteractive(); - - text.on('pointerdown', () => { - this.ws.sendCrypLearn(cryp.id, skill); - }); - this.add(text); - text.cryp = cryp; - }; - - const CRYP_STATS = [cryp.stamina, cryp.phys_dmg, cryp.spell_dmg]; - this.add(scene.add.text(STATS.x(), STATS.y(), cryp.name, TEXT.HEADER)); - CRYP_STATS.forEach(crypStat); - - this.add(scene.add.text(STATS.knownX(), STATS.y(), 'Skills', TEXT.HEADER)); - cryp.skills.forEach(knownSkill); - - this.add(scene.add.text(STATS.learnableX(), STATS.y(), 'Learnable', TEXT.HEADER)); - SKILLS.LEARNABLE.forEach(learnable); - } -} - -module.exports = CrypPage; diff --git a/client/src/scenes/game.list.js b/client/src/scenes/game.list.js index 13e6601b..d68a26c0 100644 --- a/client/src/scenes/game.list.js +++ b/client/src/scenes/game.list.js @@ -8,7 +8,7 @@ const { class GameList extends Phaser.GameObjects.Group { constructor(args) { - super(list); + super(args.list); const { list, events, ws, cryps, gameList } = args; @@ -98,13 +98,13 @@ class GameList extends Phaser.GameObjects.Group { pve.on('pointerdown', () => { const team = cryps.filter(c => c.active).map(c => c.id); if (team.length === 0) return false; - return ws.sendGamePve(team, 'normal'); + return ws.sendGamePve(team, 'Normal'); }); boss.on('pointerdown', () => { const team = cryps.filter(c => c.active).map(c => c.id); if (team.length === 0) return false; - return ws.sendGamePve(team, 'boss'); + return ws.sendGamePve(team, 'Boss'); }); diff --git a/server/src/cryp.rs b/server/src/cryp.rs index 20bcd313..95bf63d2 100644 --- a/server/src/cryp.rs +++ b/server/src/cryp.rs @@ -22,9 +22,9 @@ pub struct CrypSkill { impl CrypSkill { pub fn new(skill: Skill) -> CrypSkill { CrypSkill { - skill, - self_targeting: skill.self_targeting(), - cd: skill.base_cd(), + skill, + self_targeting: skill.self_targeting(), + cd: skill.base_cd(), } } } diff --git a/server/src/game.rs b/server/src/game.rs index d259d062..0dcdc9b0 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -18,6 +18,12 @@ use item::{item_drop}; pub type Log = Vec; +#[derive(Debug,Clone,Serialize,Deserialize)] +pub enum PveMode { + Boss, + Normal, +} + #[derive(Debug,Clone,Serialize,Deserialize)] pub struct Team { id: Uuid, @@ -308,12 +314,6 @@ impl Game { .filter(|s| s.target_cryp_id.is_none() && s.target_team_id == mob_team_id) .enumerate() .map(|(i, s)| (i, s.id)) { - // let target_id = match mobs.cryps.iter().find(|c| { - // self.cryp_targetable(mob_team_id, c.id).is_ok()}) - // { - // Some(c) => c.id, - // None => panic!("could not find a targetable pve cryp"), - // }; let targets = mobs.cryps .iter() .filter(|c| self.cryp_targetable(mob_team_id, c.id).is_ok()) @@ -753,30 +753,30 @@ fn generate_mob(lvl: u8) -> Cryp { } -fn generate_mob_team(mode: String, cryps: &Vec) -> Team { - +fn generate_mob_team(mode: PveMode, cryps: &Vec) -> Team { + let mut mob_team = Team::new(Uuid::nil()); - + // Default settings let mut team_size = 1; - let mut mob_lvl = 1; // Modify the NPC cryps for game mode settings - if (mode == "normal") { - team_size = cryps.len(); - mob_lvl = cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl; - } else if (mode == "boss") { - mob_lvl = cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl + 2; - } + let mob_lvl = match mode { + PveMode::Normal => { + team_size = cryps.len(); + cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl + }, + PveMode::Boss => cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl + 2, + }; // Generate and return the NPC team based on settings let mobs = iter::repeat_with(|| generate_mob(mob_lvl).set_account(Uuid::nil())) .take(team_size) .collect::>(); mob_team.set_cryps(mobs); - + return mob_team; - + } pub fn game_pve(params: GamePveParams, tx: &mut Transaction, account: &Account) -> Result { @@ -800,7 +800,7 @@ pub fn game_pve(params: GamePveParams, tx: &mut Transaction, account: &Account) // create the mob team let mut mob_team = generate_mob_team(params.mode, &cryps); - + // add the players let mut plr_team = Team::new(account.id); plr_team diff --git a/server/src/rpc.rs b/server/src/rpc.rs index 643a7d0b..69633696 100644 --- a/server/src/rpc.rs +++ b/server/src/rpc.rs @@ -16,7 +16,7 @@ use failure::err_msg; use net::Db; use cryp::{Cryp, cryp_spawn, cryp_learn, cryp_forget}; -use game::{Game, game_state, game_pve, game_pvp, game_join, game_joinable_list, game_skill, game_target}; +use game::{Game, PveMode, game_state, game_pve, game_pvp, game_join, game_joinable_list, game_skill, game_target}; use account::{Account, account_create, account_login, account_from_token, account_cryps}; use item::{Item, items_list, item_use}; use skill::{Skill}; @@ -395,7 +395,7 @@ struct GamePveMsg { #[derive(Debug,Clone,Serialize,Deserialize)] pub struct GamePveParams { pub cryp_ids: Vec, - pub mode: String, + pub mode: PveMode, } #[derive(Debug,Clone,Serialize,Deserialize)] diff --git a/server/src/skill.rs b/server/src/skill.rs index 2e9eed89..1a586dfc 100644 --- a/server/src/skill.rs +++ b/server/src/skill.rs @@ -834,8 +834,8 @@ fn empower(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> R } // TODO put overhealing back -fn heal(cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution { - let amount = cryp.phys_dmg(); +fn heal(cryp: &mut Cryp, _target: &mut Cryp, resolution: Resolution) -> Resolution { + let _amount = cryp.phys_dmg(); return resolution; }