Commit b8cdf42f authored by Chunchi Che's avatar Chunchi Che

Merge branch 'feat/hp' into 'main'

Feat/hp

See merge request !123
parents f473b3e1 2eb352ac
Pipeline #20541 passed with stages
in 6 minutes and 50 seconds
neos-protobuf @ 43cd7f19
Subproject commit 308767ca7ca67e28f99a45687a1cc8209e91453d Subproject commit 43cd7f197670493f58f648e52fb49f918e12803a
...@@ -5329,7 +5329,7 @@ export namespace ygopro { ...@@ -5329,7 +5329,7 @@ export namespace ygopro {
} }
export class StocGameMessage extends pb_1.Message { export class StocGameMessage extends pb_1.Message {
#one_of_decls: number[][] = [ #one_of_decls: number[][] = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
]; ];
constructor( constructor(
data?: data?:
...@@ -5354,6 +5354,7 @@ export namespace ygopro { ...@@ -5354,6 +5354,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5374,6 +5375,7 @@ export namespace ygopro { ...@@ -5374,6 +5375,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5394,6 +5396,7 @@ export namespace ygopro { ...@@ -5394,6 +5396,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5414,6 +5417,7 @@ export namespace ygopro { ...@@ -5414,6 +5417,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5434,6 +5438,7 @@ export namespace ygopro { ...@@ -5434,6 +5438,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5454,6 +5459,7 @@ export namespace ygopro { ...@@ -5454,6 +5459,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5474,6 +5480,7 @@ export namespace ygopro { ...@@ -5474,6 +5480,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5494,6 +5501,7 @@ export namespace ygopro { ...@@ -5494,6 +5501,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5514,6 +5522,7 @@ export namespace ygopro { ...@@ -5514,6 +5522,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5534,6 +5543,7 @@ export namespace ygopro { ...@@ -5534,6 +5543,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5554,6 +5564,7 @@ export namespace ygopro { ...@@ -5554,6 +5564,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5574,6 +5585,7 @@ export namespace ygopro { ...@@ -5574,6 +5585,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5594,6 +5606,7 @@ export namespace ygopro { ...@@ -5594,6 +5606,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5614,6 +5627,7 @@ export namespace ygopro { ...@@ -5614,6 +5627,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5634,6 +5648,7 @@ export namespace ygopro { ...@@ -5634,6 +5648,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5654,6 +5669,7 @@ export namespace ygopro { ...@@ -5654,6 +5669,7 @@ export namespace ygopro {
pos_change?: StocGameMessage.MsgPosChange; pos_change?: StocGameMessage.MsgPosChange;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5674,6 +5690,7 @@ export namespace ygopro { ...@@ -5674,6 +5690,7 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: StocGameMessage.MsgSelectUnselectCard; select_unselect_card?: StocGameMessage.MsgSelectUnselectCard;
select_yes_no?: never; select_yes_no?: never;
update_hp?: never;
} }
| { | {
start?: never; start?: never;
...@@ -5694,6 +5711,28 @@ export namespace ygopro { ...@@ -5694,6 +5711,28 @@ export namespace ygopro {
pos_change?: never; pos_change?: never;
select_unselect_card?: never; select_unselect_card?: never;
select_yes_no?: StocGameMessage.MsgSelectYesNo; select_yes_no?: StocGameMessage.MsgSelectYesNo;
update_hp?: never;
}
| {
start?: never;
draw?: never;
new_turn?: never;
new_phase?: never;
hint?: never;
select_idle_cmd?: never;
select_place?: never;
move?: never;
select_card?: never;
select_chain?: never;
select_effect_yn?: never;
select_position?: never;
select_option?: never;
shuffle_hand?: never;
select_battle_cmd?: never;
pos_change?: never;
select_unselect_card?: never;
select_yes_no?: never;
update_hp?: StocGameMessage.MsgUpdateHp;
} }
)) ))
) { ) {
...@@ -5767,6 +5806,9 @@ export namespace ygopro { ...@@ -5767,6 +5806,9 @@ export namespace ygopro {
if ("select_yes_no" in data && data.select_yes_no != undefined) { if ("select_yes_no" in data && data.select_yes_no != undefined) {
this.select_yes_no = data.select_yes_no; this.select_yes_no = data.select_yes_no;
} }
if ("update_hp" in data && data.update_hp != undefined) {
this.update_hp = data.update_hp;
}
} }
} }
get start() { get start() {
...@@ -6003,6 +6045,19 @@ export namespace ygopro { ...@@ -6003,6 +6045,19 @@ export namespace ygopro {
get has_select_yes_no() { get has_select_yes_no() {
return pb_1.Message.getField(this, 18) != null; return pb_1.Message.getField(this, 18) != null;
} }
get update_hp() {
return pb_1.Message.getWrapperField(
this,
StocGameMessage.MsgUpdateHp,
19
) as StocGameMessage.MsgUpdateHp;
}
set update_hp(value: StocGameMessage.MsgUpdateHp) {
pb_1.Message.setOneofWrapperField(this, 19, this.#one_of_decls[0], value);
}
get has_update_hp() {
return pb_1.Message.getField(this, 19) != null;
}
get gameMsg() { get gameMsg() {
const cases: { const cases: {
[index: number]: [index: number]:
...@@ -6024,7 +6079,8 @@ export namespace ygopro { ...@@ -6024,7 +6079,8 @@ export namespace ygopro {
| "select_battle_cmd" | "select_battle_cmd"
| "pos_change" | "pos_change"
| "select_unselect_card" | "select_unselect_card"
| "select_yes_no"; | "select_yes_no"
| "update_hp";
} = { } = {
0: "none", 0: "none",
1: "start", 1: "start",
...@@ -6045,11 +6101,12 @@ export namespace ygopro { ...@@ -6045,11 +6101,12 @@ export namespace ygopro {
16: "pos_change", 16: "pos_change",
17: "select_unselect_card", 17: "select_unselect_card",
18: "select_yes_no", 18: "select_yes_no",
19: "update_hp",
}; };
return cases[ return cases[
pb_1.Message.computeOneofCase( pb_1.Message.computeOneofCase(
this, this,
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
) )
]; ];
} }
...@@ -6100,6 +6157,9 @@ export namespace ygopro { ...@@ -6100,6 +6157,9 @@ export namespace ygopro {
select_yes_no?: ReturnType< select_yes_no?: ReturnType<
typeof StocGameMessage.MsgSelectYesNo.prototype.toObject typeof StocGameMessage.MsgSelectYesNo.prototype.toObject
>; >;
update_hp?: ReturnType<
typeof StocGameMessage.MsgUpdateHp.prototype.toObject
>;
}): StocGameMessage { }): StocGameMessage {
const message = new StocGameMessage({}); const message = new StocGameMessage({});
if (data.start != null) { if (data.start != null) {
...@@ -6182,6 +6242,11 @@ export namespace ygopro { ...@@ -6182,6 +6242,11 @@ export namespace ygopro {
data.select_yes_no data.select_yes_no
); );
} }
if (data.update_hp != null) {
message.update_hp = StocGameMessage.MsgUpdateHp.fromObject(
data.update_hp
);
}
return message; return message;
} }
toObject() { toObject() {
...@@ -6232,6 +6297,9 @@ export namespace ygopro { ...@@ -6232,6 +6297,9 @@ export namespace ygopro {
select_yes_no?: ReturnType< select_yes_no?: ReturnType<
typeof StocGameMessage.MsgSelectYesNo.prototype.toObject typeof StocGameMessage.MsgSelectYesNo.prototype.toObject
>; >;
update_hp?: ReturnType<
typeof StocGameMessage.MsgUpdateHp.prototype.toObject
>;
} = {}; } = {};
if (this.start != null) { if (this.start != null) {
data.start = this.start.toObject(); data.start = this.start.toObject();
...@@ -6287,6 +6355,9 @@ export namespace ygopro { ...@@ -6287,6 +6355,9 @@ export namespace ygopro {
if (this.select_yes_no != null) { if (this.select_yes_no != null) {
data.select_yes_no = this.select_yes_no.toObject(); data.select_yes_no = this.select_yes_no.toObject();
} }
if (this.update_hp != null) {
data.update_hp = this.update_hp.toObject();
}
return data; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
...@@ -6357,6 +6428,10 @@ export namespace ygopro { ...@@ -6357,6 +6428,10 @@ export namespace ygopro {
writer.writeMessage(18, this.select_yes_no, () => writer.writeMessage(18, this.select_yes_no, () =>
this.select_yes_no.serialize(writer) this.select_yes_no.serialize(writer)
); );
if (this.has_update_hp)
writer.writeMessage(19, this.update_hp, () =>
this.update_hp.serialize(writer)
);
if (!w) return writer.getResultBuffer(); if (!w) return writer.getResultBuffer();
} }
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StocGameMessage { static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StocGameMessage {
...@@ -6505,6 +6580,14 @@ export namespace ygopro { ...@@ -6505,6 +6580,14 @@ export namespace ygopro {
StocGameMessage.MsgSelectYesNo.deserialize(reader)) StocGameMessage.MsgSelectYesNo.deserialize(reader))
); );
break; break;
case 19:
reader.readMessage(
message.update_hp,
() =>
(message.update_hp =
StocGameMessage.MsgUpdateHp.deserialize(reader))
);
break;
default: default:
reader.skipField(); reader.skipField();
} }
...@@ -10792,5 +10875,141 @@ export namespace ygopro { ...@@ -10792,5 +10875,141 @@ export namespace ygopro {
return MsgSelectYesNo.deserialize(bytes); return MsgSelectYesNo.deserialize(bytes);
} }
} }
export class MsgUpdateHp extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(
data?:
| any[]
| {
player?: number;
type_?: StocGameMessage.MsgUpdateHp.ActionType;
value?: number;
}
) {
super();
pb_1.Message.initialize(
this,
Array.isArray(data) ? data : [],
0,
-1,
[],
this.#one_of_decls
);
if (!Array.isArray(data) && typeof data == "object") {
if ("player" in data && data.player != undefined) {
this.player = data.player;
}
if ("type_" in data && data.type_ != undefined) {
this.type_ = data.type_;
}
if ("value" in data && data.value != undefined) {
this.value = data.value;
}
}
}
get player() {
return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
}
set player(value: number) {
pb_1.Message.setField(this, 1, value);
}
get type_() {
return pb_1.Message.getFieldWithDefault(
this,
2,
StocGameMessage.MsgUpdateHp.ActionType.UNKNOWN
) as StocGameMessage.MsgUpdateHp.ActionType;
}
set type_(value: StocGameMessage.MsgUpdateHp.ActionType) {
pb_1.Message.setField(this, 2, value);
}
get value() {
return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
}
set value(value: number) {
pb_1.Message.setField(this, 3, value);
}
static fromObject(data: {
player?: number;
type_?: StocGameMessage.MsgUpdateHp.ActionType;
value?: number;
}): MsgUpdateHp {
const message = new MsgUpdateHp({});
if (data.player != null) {
message.player = data.player;
}
if (data.type_ != null) {
message.type_ = data.type_;
}
if (data.value != null) {
message.value = data.value;
}
return message;
}
toObject() {
const data: {
player?: number;
type_?: StocGameMessage.MsgUpdateHp.ActionType;
value?: number;
} = {};
if (this.player != null) {
data.player = this.player;
}
if (this.type_ != null) {
data.type_ = this.type_;
}
if (this.value != null) {
data.value = this.value;
}
return data;
}
serialize(): Uint8Array;
serialize(w: pb_1.BinaryWriter): void;
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
const writer = w || new pb_1.BinaryWriter();
if (this.player != 0) writer.writeInt32(1, this.player);
if (this.type_ != StocGameMessage.MsgUpdateHp.ActionType.UNKNOWN)
writer.writeEnum(2, this.type_);
if (this.value != 0) writer.writeInt32(3, this.value);
if (!w) return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): MsgUpdateHp {
const reader =
bytes instanceof pb_1.BinaryReader
? bytes
: new pb_1.BinaryReader(bytes),
message = new MsgUpdateHp();
while (reader.nextField()) {
if (reader.isEndGroup()) break;
switch (reader.getFieldNumber()) {
case 1:
message.player = reader.readInt32();
break;
case 2:
message.type_ = reader.readEnum();
break;
case 3:
message.value = reader.readInt32();
break;
default:
reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): MsgUpdateHp {
return MsgUpdateHp.deserialize(bytes);
}
}
export namespace MsgUpdateHp {
export enum ActionType {
UNKNOWN = 0,
DAMAGE = 1,
RECOVER = 2,
}
}
} }
} }
...@@ -42,3 +42,6 @@ export const MSG_SELECT_POSITION = 19; ...@@ -42,3 +42,6 @@ export const MSG_SELECT_POSITION = 19;
export const MSG_SELECT_OPTION = 14; export const MSG_SELECT_OPTION = 14;
export const MSG_SELECT_BATTLE_CMD = 10; export const MSG_SELECT_BATTLE_CMD = 10;
export const MSG_SELECT_UNSELECT_CARD = 26; export const MSG_SELECT_UNSELECT_CARD = 26;
export const MSG_DAMAGE = 91;
export const MSG_RECOVER = 92;
export const MSG_PAY_LP_COST = 100;
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "../../bufferIO";
/*
* Msg Damage
*
* @param player - 玩家编号
* @param value - 减少的Hp数值
* */
export default (data: Uint8Array) => {
const reader = new BufferReader(data, true);
const player = reader.readUint8();
const value = reader.readInt32();
return new ygopro.StocGameMessage.MsgUpdateHp({
player,
type_: ygopro.StocGameMessage.MsgUpdateHp.ActionType.DAMAGE,
value,
});
};
...@@ -20,6 +20,8 @@ import MsgSelectPositionAdapter from "./selectPosition"; ...@@ -20,6 +20,8 @@ import MsgSelectPositionAdapter from "./selectPosition";
import MsgSelectOptionAdapter from "./selectOption"; import MsgSelectOptionAdapter from "./selectOption";
import MsgSelectBattleCmdAdapter from "./selectBattleCmd"; import MsgSelectBattleCmdAdapter from "./selectBattleCmd";
import MsgSelectUnselectCardAdapter from "./selectUnselectCard"; import MsgSelectUnselectCardAdapter from "./selectUnselectCard";
import MsgDamage from "./damage";
import MsgRecover from "./recover";
import PENETRATE from "./penetrate"; import PENETRATE from "./penetrate";
/* /*
...@@ -117,6 +119,17 @@ export default class GameMsgAdapter implements StocAdapter { ...@@ -117,6 +119,17 @@ export default class GameMsgAdapter implements StocAdapter {
break; break;
} }
case GAME_MSG.MSG_PAY_LP_COST:
case GAME_MSG.MSG_DAMAGE: {
gameMsg.update_hp = MsgDamage(gameData);
break;
}
case GAME_MSG.MSG_RECOVER: {
gameMsg.update_hp = MsgRecover(gameData);
break;
}
default: { default: {
console.log("Unhandled GameMessage function=", func); console.log("Unhandled GameMessage function=", func);
......
import { ygopro } from "../../../idl/ocgcore";
import { BufferReader } from "../../bufferIO";
/*
* Msg Recover
*
* @param player - 玩家编号
* @param value - 回复的Hp数值
* */
export default (data: Uint8Array) => {
const reader = new BufferReader(data, true);
const player = reader.readUint8();
const value = reader.readInt32();
return new ygopro.StocGameMessage.MsgUpdateHp({
player,
type_: ygopro.StocGameMessage.MsgUpdateHp.ActionType.RECOVER,
value,
});
};
import { PayloadAction, CaseReducer } from "@reduxjs/toolkit"; import { PayloadAction, CaseReducer } from "@reduxjs/toolkit";
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { RootState } from "../../store"; import { RootState } from "../../store";
import { DuelState } from "./mod"; import { DuelState } from "./mod";
import { judgeSelf } from "./util"; import { judgeSelf } from "./util";
import MsgUpdateHp = ygopro.StocGameMessage.MsgUpdateHp;
export interface InitInfo { export interface InitInfo {
masterRule?: string; masterRule?: string;
...@@ -25,5 +27,32 @@ export const infoInitImpl: CaseReducer< ...@@ -25,5 +27,32 @@ export const infoInitImpl: CaseReducer<
} }
}; };
export const updateHpImpl: CaseReducer<
DuelState,
PayloadAction<ygopro.StocGameMessage.MsgUpdateHp>
> = (state, action) => {
const player = action.payload.player;
const actionType = action.payload.type_;
const value = action.payload.value;
const info = judgeSelf(player, state) ? state.meInitInfo : state.opInitInfo;
if (info) {
switch (actionType) {
case MsgUpdateHp.ActionType.DAMAGE: {
info.life = info.life - value;
break;
}
case MsgUpdateHp.ActionType.RECOVER: {
info.life = info.life + value;
break;
}
default: {
break;
}
}
}
};
export const selectMeInitInfo = (state: RootState) => state.duel.meInitInfo; export const selectMeInitInfo = (state: RootState) => state.duel.meInitInfo;
export const selectOpInitInfo = (state: RootState) => state.duel.opInitInfo; export const selectOpInitInfo = (state: RootState) => state.duel.opInitInfo;
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* */ * */
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { InitInfo, infoInitImpl } from "./initInfoSlice"; import { InitInfo, infoInitImpl, updateHpImpl } from "./initInfoSlice";
import { TimeLimit, updateTimeLimitImpl } from "./timeLimit"; import { TimeLimit, updateTimeLimitImpl } from "./timeLimit";
import { import {
HandState, HandState,
...@@ -170,6 +170,7 @@ const duelSlice = createSlice({ ...@@ -170,6 +170,7 @@ const duelSlice = createSlice({
state.selfType = action.payload; state.selfType = action.payload;
}, },
infoInit: infoInitImpl, infoInit: infoInitImpl,
updateHp: updateHpImpl,
updateTurn: newTurnImpl, updateTurn: newTurnImpl,
updateTimeLimit: updateTimeLimitImpl, updateTimeLimit: updateTimeLimitImpl,
...@@ -268,6 +269,7 @@ const duelSlice = createSlice({ ...@@ -268,6 +269,7 @@ const duelSlice = createSlice({
export const { export const {
setSelfType, setSelfType,
infoInit, infoInit,
updateHp,
updateTurn, updateTurn,
updatePhase, updatePhase,
setEnableBp, setEnableBp,
......
...@@ -18,6 +18,7 @@ import onMsgSelectBattleCmd from "./selectBattleCmd"; ...@@ -18,6 +18,7 @@ import onMsgSelectBattleCmd from "./selectBattleCmd";
import onMsgPosChange from "./posChange"; import onMsgPosChange from "./posChange";
import onMsgSelectUnselectCard from "./selectUnselectCard"; import onMsgSelectUnselectCard from "./selectUnselectCard";
import onMsgSelectYesNo from "./selectYesNo"; import onMsgSelectYesNo from "./selectYesNo";
import onMsgUpdateHp from "./updateHp";
export default function handleGameMsg(pb: ygopro.YgoStocMsg) { export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
const dispatch = store.dispatch; const dispatch = store.dispatch;
...@@ -114,6 +115,11 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) { ...@@ -114,6 +115,11 @@ export default function handleGameMsg(pb: ygopro.YgoStocMsg) {
break; break;
} }
case "update_hp": {
onMsgUpdateHp(msg.update_hp, dispatch);
break;
}
default: { default: {
break; break;
} }
......
import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { updateHp } from "../../reducers/duel/mod";
import { AppDispatch } from "../../store";
import MsgUpdateHp = ygopro.StocGameMessage.MsgUpdateHp;
export default (msgUpdateHp: MsgUpdateHp, dispatch: AppDispatch) => {
dispatch(updateHp(msgUpdateHp));
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment