pve enum
This commit is contained in:
parent
a6e91a1442
commit
114a6d505c
@ -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,
|
|
||||||
};
|
|
||||||
@ -24,7 +24,7 @@ function registerEvents(registry, events) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setItems(items) {
|
function setItems(items) {
|
||||||
registry.set('items', items);
|
registry.set('itemList', items);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setGameList(gameList) {
|
function setGameList(gameList) {
|
||||||
|
|||||||
@ -3,6 +3,7 @@ const Phaser = require('phaser');
|
|||||||
const Combat = require('./combat');
|
const Combat = require('./combat');
|
||||||
const CrypRows = require('./cryp.row');
|
const CrypRows = require('./cryp.row');
|
||||||
const GameList = require('./game.list');
|
const GameList = require('./game.list');
|
||||||
|
const ItemList = require('./item.list');
|
||||||
const StatSheet = require('./statsheet');
|
const StatSheet = require('./statsheet');
|
||||||
|
|
||||||
class CrypList extends Phaser.Scene {
|
class CrypList extends Phaser.Scene {
|
||||||
@ -29,6 +30,10 @@ class CrypList extends Phaser.Scene {
|
|||||||
this.renderGameList();
|
this.renderGameList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key === 'itemList') {
|
||||||
|
return this.renderItemList();
|
||||||
|
}
|
||||||
|
|
||||||
if (key === 'game' && this.scene.isActive()) {
|
if (key === 'game' && this.scene.isActive()) {
|
||||||
this.scene.sleep();
|
this.scene.sleep();
|
||||||
this.scene.add('Combat', Combat);
|
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 });
|
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) {
|
displaySkills(cryp) {
|
||||||
if (cryp) {
|
if (cryp) {
|
||||||
this.scene.add('StatSheet', StatSheet);
|
this.scene.add('StatSheet', StatSheet);
|
||||||
|
|||||||
@ -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;
|
|
||||||
@ -8,7 +8,7 @@ const {
|
|||||||
|
|
||||||
class GameList extends Phaser.GameObjects.Group {
|
class GameList extends Phaser.GameObjects.Group {
|
||||||
constructor(args) {
|
constructor(args) {
|
||||||
super(list);
|
super(args.list);
|
||||||
|
|
||||||
const { list, events, ws, cryps, gameList } = args;
|
const { list, events, ws, cryps, gameList } = args;
|
||||||
|
|
||||||
@ -98,13 +98,13 @@ class GameList extends Phaser.GameObjects.Group {
|
|||||||
pve.on('pointerdown', () => {
|
pve.on('pointerdown', () => {
|
||||||
const team = cryps.filter(c => c.active).map(c => c.id);
|
const team = cryps.filter(c => c.active).map(c => c.id);
|
||||||
if (team.length === 0) return false;
|
if (team.length === 0) return false;
|
||||||
return ws.sendGamePve(team, 'normal');
|
return ws.sendGamePve(team, 'Normal');
|
||||||
});
|
});
|
||||||
|
|
||||||
boss.on('pointerdown', () => {
|
boss.on('pointerdown', () => {
|
||||||
const team = cryps.filter(c => c.active).map(c => c.id);
|
const team = cryps.filter(c => c.active).map(c => c.id);
|
||||||
if (team.length === 0) return false;
|
if (team.length === 0) return false;
|
||||||
return ws.sendGamePve(team, 'boss');
|
return ws.sendGamePve(team, 'Boss');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -22,9 +22,9 @@ pub struct CrypSkill {
|
|||||||
impl CrypSkill {
|
impl CrypSkill {
|
||||||
pub fn new(skill: Skill) -> CrypSkill {
|
pub fn new(skill: Skill) -> CrypSkill {
|
||||||
CrypSkill {
|
CrypSkill {
|
||||||
skill,
|
skill,
|
||||||
self_targeting: skill.self_targeting(),
|
self_targeting: skill.self_targeting(),
|
||||||
cd: skill.base_cd(),
|
cd: skill.base_cd(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,12 @@ use item::{item_drop};
|
|||||||
|
|
||||||
pub type Log = Vec<String>;
|
pub type Log = Vec<String>;
|
||||||
|
|
||||||
|
#[derive(Debug,Clone,Serialize,Deserialize)]
|
||||||
|
pub enum PveMode {
|
||||||
|
Boss,
|
||||||
|
Normal,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug,Clone,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Serialize,Deserialize)]
|
||||||
pub struct Team {
|
pub struct Team {
|
||||||
id: Uuid,
|
id: Uuid,
|
||||||
@ -308,12 +314,6 @@ impl Game {
|
|||||||
.filter(|s| s.target_cryp_id.is_none() && s.target_team_id == mob_team_id)
|
.filter(|s| s.target_cryp_id.is_none() && s.target_team_id == mob_team_id)
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, s)| (i, s.id)) {
|
.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
|
let targets = mobs.cryps
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|c| self.cryp_targetable(mob_team_id, c.id).is_ok())
|
.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<Cryp>) -> Team {
|
fn generate_mob_team(mode: PveMode, cryps: &Vec<Cryp>) -> Team {
|
||||||
|
|
||||||
let mut mob_team = Team::new(Uuid::nil());
|
let mut mob_team = Team::new(Uuid::nil());
|
||||||
|
|
||||||
// Default settings
|
// Default settings
|
||||||
let mut team_size = 1;
|
let mut team_size = 1;
|
||||||
let mut mob_lvl = 1;
|
|
||||||
|
|
||||||
// Modify the NPC cryps for game mode settings
|
// Modify the NPC cryps for game mode settings
|
||||||
if (mode == "normal") {
|
let mob_lvl = match mode {
|
||||||
team_size = cryps.len();
|
PveMode::Normal => {
|
||||||
mob_lvl = cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl;
|
team_size = cryps.len();
|
||||||
} else if (mode == "boss") {
|
cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl
|
||||||
mob_lvl = cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl + 2;
|
},
|
||||||
}
|
PveMode::Boss => cryps.iter().max_by_key(|c| c.lvl).unwrap().lvl + 2,
|
||||||
|
};
|
||||||
|
|
||||||
// Generate and return the NPC team based on settings
|
// Generate and return the NPC team based on settings
|
||||||
let mobs = iter::repeat_with(|| generate_mob(mob_lvl).set_account(Uuid::nil()))
|
let mobs = iter::repeat_with(|| generate_mob(mob_lvl).set_account(Uuid::nil()))
|
||||||
.take(team_size)
|
.take(team_size)
|
||||||
.collect::<Vec<Cryp>>();
|
.collect::<Vec<Cryp>>();
|
||||||
mob_team.set_cryps(mobs);
|
mob_team.set_cryps(mobs);
|
||||||
|
|
||||||
return mob_team;
|
return mob_team;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn game_pve(params: GamePveParams, tx: &mut Transaction, account: &Account) -> Result<Game, Error> {
|
pub fn game_pve(params: GamePveParams, tx: &mut Transaction, account: &Account) -> Result<Game, Error> {
|
||||||
@ -800,7 +800,7 @@ pub fn game_pve(params: GamePveParams, tx: &mut Transaction, account: &Account)
|
|||||||
|
|
||||||
// create the mob team
|
// create the mob team
|
||||||
let mut mob_team = generate_mob_team(params.mode, &cryps);
|
let mut mob_team = generate_mob_team(params.mode, &cryps);
|
||||||
|
|
||||||
// add the players
|
// add the players
|
||||||
let mut plr_team = Team::new(account.id);
|
let mut plr_team = Team::new(account.id);
|
||||||
plr_team
|
plr_team
|
||||||
|
|||||||
@ -16,7 +16,7 @@ use failure::err_msg;
|
|||||||
|
|
||||||
use net::Db;
|
use net::Db;
|
||||||
use cryp::{Cryp, cryp_spawn, cryp_learn, cryp_forget};
|
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 account::{Account, account_create, account_login, account_from_token, account_cryps};
|
||||||
use item::{Item, items_list, item_use};
|
use item::{Item, items_list, item_use};
|
||||||
use skill::{Skill};
|
use skill::{Skill};
|
||||||
@ -395,7 +395,7 @@ struct GamePveMsg {
|
|||||||
#[derive(Debug,Clone,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Serialize,Deserialize)]
|
||||||
pub struct GamePveParams {
|
pub struct GamePveParams {
|
||||||
pub cryp_ids: Vec<Uuid>,
|
pub cryp_ids: Vec<Uuid>,
|
||||||
pub mode: String,
|
pub mode: PveMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug,Clone,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Serialize,Deserialize)]
|
||||||
|
|||||||
@ -834,8 +834,8 @@ fn empower(_cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> R
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO put overhealing back
|
// TODO put overhealing back
|
||||||
fn heal(cryp: &mut Cryp, target: &mut Cryp, mut resolution: Resolution) -> Resolution {
|
fn heal(cryp: &mut Cryp, _target: &mut Cryp, resolution: Resolution) -> Resolution {
|
||||||
let amount = cryp.phys_dmg();
|
let _amount = cryp.phys_dmg();
|
||||||
return resolution;
|
return resolution;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user