增加玩家死亡时onPlayerDead的调用
This commit is contained in:
parent
9528d7296f
commit
3de7c13212
@ -15,7 +15,7 @@ Object.defineProperties(Room.prototype, {
|
|||||||
let player1 = this.state.players.get(dstplayer);
|
let player1 = this.state.players.get(dstplayer);
|
||||||
let tmpCards = gameUtil.removeCard(player1, count);
|
let tmpCards = gameUtil.removeCard(player1, count);
|
||||||
let player0 = this.state.players.get(srcplayer);
|
let player0 = this.state.players.get(srcplayer);
|
||||||
gameUtil.addCardToPlayer(player0, tmpCards);
|
gameUtil.addCardToPlayer(this, player0, tmpCards, player1);
|
||||||
let cardIds = tmpCards.map(card => card.id);
|
let cardIds = tmpCards.map(card => card.id);
|
||||||
let client = this.getClient(player0);
|
let client = this.getClient(player0);
|
||||||
//广播一个偷卡成功信息, 并私信一个偷卡详情给当前玩家
|
//广播一个偷卡成功信息, 并私信一个偷卡详情给当前玩家
|
||||||
@ -63,7 +63,7 @@ Object.defineProperties(Room.prototype, {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let player2 = fromplayer ? this.state.players.get(fromplayer) : null;
|
let player2 = fromplayer ? this.state.players.get(fromplayer) : null;
|
||||||
let cards = gameUtil.drawCard(this.state.cardQueue, player, count, player2);
|
let cards = gameUtil.drawCard(this, this.state.cardQueue, player, count, player2);
|
||||||
let client = this.getClient(dstplayer);
|
let client = this.getClient(dstplayer);
|
||||||
let sData = {
|
let sData = {
|
||||||
player: dstplayer,
|
player: dstplayer,
|
||||||
@ -83,8 +83,19 @@ Object.defineProperties(Room.prototype, {
|
|||||||
updateHp: {
|
updateHp: {
|
||||||
value: function (dstplayer: string, hp: number): number {
|
value: function (dstplayer: string, hp: number): number {
|
||||||
let player = this.state.players.get(dstplayer);
|
let player = this.state.players.get(dstplayer);
|
||||||
|
if (!player) error("updateHp 未找到玩家")
|
||||||
return 0;
|
if (player.state === PlayerStateConst.PLAYER_DEAD) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
let dstHp = player.hp + hp;
|
||||||
|
if (dstHp <= 0) {
|
||||||
|
dstHp = 0;
|
||||||
|
player.state = PlayerStateConst.PLAYER_DEAD;
|
||||||
|
this.battleMan.onPlayerDead(player);
|
||||||
|
}
|
||||||
|
player.hp = dstHp;
|
||||||
|
}
|
||||||
|
return player.hp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -10,6 +10,7 @@ import {PlayerStateConst} from "../../constants/PlayerStateConst";
|
|||||||
import {Player} from "../schema/Player";
|
import {Player} from "../schema/Player";
|
||||||
import gameUtil from "../../utils/game.util";
|
import gameUtil from "../../utils/game.util";
|
||||||
import {PartCompare, PartResultMsg} from "../../message/PartResult";
|
import {PartCompare, PartResultMsg} from "../../message/PartResult";
|
||||||
|
import {Room} from "colyseus";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 游戏中的结算轮
|
* 游戏中的结算轮
|
||||||
@ -37,7 +38,7 @@ class CompareResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const comparePlayer = function (p0: Player, p1: Player): CompareResult {
|
const comparePlayer = function (room: Room, p0: Player, p1: Player): CompareResult {
|
||||||
let s0 = gameUtil.calcTotalAp(p0);
|
let s0 = gameUtil.calcTotalAp(p0);
|
||||||
let s1 = gameUtil.calcTotalAp(p1);
|
let s1 = gameUtil.calcTotalAp(p1);
|
||||||
let r: CompareResult = new CompareResult(p0, p1);
|
let r: CompareResult = new CompareResult(p0, p1);
|
||||||
@ -61,6 +62,7 @@ const comparePlayer = function (p0: Player, p1: Player): CompareResult {
|
|||||||
if (p1.hp <= 0) {
|
if (p1.hp <= 0) {
|
||||||
p1.hp = 0;
|
p1.hp = 0;
|
||||||
p1.state = PlayerStateConst.PLAYER_DEAD;
|
p1.state = PlayerStateConst.PLAYER_DEAD;
|
||||||
|
room.battleMan.onPlayerDead(p1);
|
||||||
} else {
|
} else {
|
||||||
r.next.set(1, p1);
|
r.next.set(1, p1);
|
||||||
}
|
}
|
||||||
@ -73,6 +75,7 @@ const comparePlayer = function (p0: Player, p1: Player): CompareResult {
|
|||||||
if (p0.hp <= 0) {
|
if (p0.hp <= 0) {
|
||||||
p0.hp = 0;
|
p0.hp = 0;
|
||||||
p0.state = PlayerStateConst.PLAYER_DEAD;
|
p0.state = PlayerStateConst.PLAYER_DEAD;
|
||||||
|
room.battleMan.onPlayerDead(p0);
|
||||||
} else {
|
} else {
|
||||||
r.next.set(0, p0);
|
r.next.set(0, p0);
|
||||||
}
|
}
|
||||||
@ -102,18 +105,18 @@ export class PartResultCommand extends Command<CardGameState, {}> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let result = [];
|
let result = [];
|
||||||
let r0 = comparePlayer(t0[0], t1[0]);
|
let r0 = comparePlayer(this.room, t0[0], t1[0]);
|
||||||
let obj0 = new PartCompare(r0.p0.id, r0.p1.id, r0.result, 0, r0.val);
|
let obj0 = new PartCompare(r0.p0.id, r0.p1.id, r0.result, 0, r0.val);
|
||||||
result.push(obj0)
|
result.push(obj0)
|
||||||
let r1 = comparePlayer(t0[1], t1[1]);
|
let r1 = comparePlayer(this.room, t0[1], t1[1]);
|
||||||
let obj1 = new PartCompare(r1.p0.id, r1.p0.id, r1.result, 0, r1.val);
|
let obj1 = new PartCompare(r1.p0.id, r1.p0.id, r1.result, 0, r1.val);
|
||||||
result.push(obj1)
|
result.push(obj1)
|
||||||
if (r0.result == CompareEnum.P0DEAD && r1.next.has(0)) {
|
if (r0.result == CompareEnum.P0DEAD && r1.next.has(0)) {
|
||||||
let r2 = comparePlayer(r0.p1, r1.next.get(0));
|
let r2 = comparePlayer(this.room, r0.p1, r1.next.get(0));
|
||||||
let obj2 = new PartCompare(r2.p0.id, r2.p0.id, r2.result, 0, r2.val);
|
let obj2 = new PartCompare(r2.p0.id, r2.p0.id, r2.result, 0, r2.val);
|
||||||
result.push(obj2)
|
result.push(obj2)
|
||||||
} else if (r0.result == CompareEnum.P1DEAD && r1.next.has(1)) {
|
} else if (r0.result == CompareEnum.P1DEAD && r1.next.has(1)) {
|
||||||
let r2 = comparePlayer(r0.p0, r1.next.get(1));
|
let r2 = comparePlayer(this.room, r0.p0, r1.next.get(1));
|
||||||
let obj2 = new PartCompare(r2.p0.id, r2.p0.id, r2.result, 0, r2.val);
|
let obj2 = new PartCompare(r2.p0.id, r2.p0.id, r2.result, 0, r2.val);
|
||||||
result.push(obj2)
|
result.push(obj2)
|
||||||
}
|
}
|
||||||
@ -127,7 +130,6 @@ export class PartResultCommand extends Command<CardGameState, {}> {
|
|||||||
deadCount1 ++;
|
deadCount1 ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//TODO: onPlayerDead
|
|
||||||
const roundNum = singleton(GameEnv).duelRoundNum;
|
const roundNum = singleton(GameEnv).duelRoundNum;
|
||||||
const totalRound = roundNum * singleton(GameEnv).maxDuelNum;
|
const totalRound = roundNum * singleton(GameEnv).maxDuelNum;
|
||||||
if ((deadCount0 == 2 || deadCount1 == 2) || (this.state.round >= totalRound - 1)) { // 游戏结束
|
if ((deadCount0 == 2 || deadCount1 == 2) || (this.state.round >= totalRound - 1)) { // 游戏结束
|
||||||
|
@ -65,7 +65,6 @@ export class Player extends Schema {
|
|||||||
*/
|
*/
|
||||||
countPresent: number;
|
countPresent: number;
|
||||||
|
|
||||||
//TODO: set hp, ap from cfg
|
|
||||||
constructor(id: string, heroId: number, team: number) {
|
constructor(id: string, heroId: number, team: number) {
|
||||||
super();
|
super();
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
@ -6,6 +6,7 @@ import {BaseConst} from "../constants/BaseConst";
|
|||||||
import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg";
|
import {SystemCardCfg} from "../cfg/parsers/SystemCardCfg";
|
||||||
import {EffectCardCfg} from "../cfg/parsers/EffectCardCfg";
|
import {EffectCardCfg} from "../cfg/parsers/EffectCardCfg";
|
||||||
import {error} from "../common/Debug";
|
import {error} from "../common/Debug";
|
||||||
|
import {Room} from "colyseus";
|
||||||
|
|
||||||
let gameUtil = {
|
let gameUtil = {
|
||||||
/**
|
/**
|
||||||
@ -91,18 +92,18 @@ let gameUtil = {
|
|||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 抽卡
|
* 抽卡
|
||||||
|
* @param room
|
||||||
* @param cardArr
|
* @param cardArr
|
||||||
* @param player
|
* @param player
|
||||||
* @param count
|
* @param count
|
||||||
* @param fromplayer
|
* @param fromplayer
|
||||||
*/
|
*/
|
||||||
drawCard(cardArr: Card[], player: Player, count: number, fromplayer?: Player): Card[] {
|
drawCard(room: Room, cardArr: Card[], player: Player, count: number, fromplayer?: Player): Card[] {
|
||||||
let cards: Card[] = [];
|
let cards: Card[] = [];
|
||||||
for (let i = 0; i < count; i++) {
|
for (let i = 0; i < count; i++) {
|
||||||
cards.push(cardArr.pop());
|
cards.push(cardArr.pop());
|
||||||
}
|
}
|
||||||
//TODO:
|
this.addCardToPlayer(room, player, cards, fromplayer);
|
||||||
this.addCardToPlayer(player, cards);
|
|
||||||
return cards;
|
return cards;
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@ -122,15 +123,18 @@ let gameUtil = {
|
|||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 往玩家的卡组里添加卡
|
* 往玩家的卡组里添加卡
|
||||||
|
* @param room
|
||||||
* @param player
|
* @param player
|
||||||
* @param cards
|
* @param cards
|
||||||
|
* @param fromplayer
|
||||||
*/
|
*/
|
||||||
addCardToPlayer(player: Player, cards: Card[]) {
|
addCardToPlayer(room: Room, player: Player, cards: Card[], fromplayer?: Player) {
|
||||||
for (let card of cards) {
|
for (let card of cards) {
|
||||||
player.cards.set(card.id + '', card);
|
player.cards.set(card.id + '', card);
|
||||||
player.cardSet.add(card.id + '');
|
player.cardSet.add(card.id + '');
|
||||||
}
|
}
|
||||||
player.countTotal += cards.length;
|
player.countTotal += cards.length;
|
||||||
|
room.battleMan.onCardGetted(player, cards, fromplayer);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 更换相同数量的卡
|
* 更换相同数量的卡
|
||||||
|
Loading…
x
Reference in New Issue
Block a user