Commit 0a2badea authored by Chunchi Che's avatar Chunchi Che

update ui

parent d02078d1
Pipeline #20933 failed with stages
in 18 minutes and 23 seconds
...@@ -61,6 +61,7 @@ import { ...@@ -61,6 +61,7 @@ import {
resetCheckCardModalV3Impl, resetCheckCardModalV3Impl,
setCheckCardModalV3SelectedImpl, setCheckCardModalV3SelectedImpl,
checkCardModalV3Case, checkCardModalV3Case,
setCardModalCountersImpl,
} from "./modal/mod"; } from "./modal/mod";
import { import {
MonsterState, MonsterState,
...@@ -163,7 +164,7 @@ export interface DuelState { ...@@ -163,7 +164,7 @@ export interface DuelState {
const initialState: DuelState = { const initialState: DuelState = {
modalState: { modalState: {
cardModal: { isOpen: false, interactivies: [] }, cardModal: { isOpen: false, interactivies: [], counters: {} },
cardListModal: { isOpen: false, list: [] }, cardListModal: { isOpen: false, list: [] },
checkCardModal: { isOpen: false, cancelAble: false, tags: [] }, checkCardModal: { isOpen: false, cancelAble: false, tags: [] },
yesNoModal: { isOpen: false }, yesNoModal: { isOpen: false },
...@@ -279,6 +280,7 @@ const duelSlice = createSlice({ ...@@ -279,6 +280,7 @@ const duelSlice = createSlice({
setCheckCardModalV3ResponseAble: setCheckCardModalV3ResponseAbleImpl, setCheckCardModalV3ResponseAble: setCheckCardModalV3ResponseAbleImpl,
resetCheckCardModalV3: resetCheckCardModalV3Impl, resetCheckCardModalV3: resetCheckCardModalV3Impl,
setCheckCardModalV3Selected: setCheckCardModalV3SelectedImpl, setCheckCardModalV3Selected: setCheckCardModalV3SelectedImpl,
setCardModalCounters: setCardModalCountersImpl,
// 通用的`Reducer` // 通用的`Reducer`
clearAllIdleInteractivities: clearAllIdleInteractivitiesImpl, clearAllIdleInteractivities: clearAllIdleInteractivitiesImpl,
...@@ -392,6 +394,7 @@ export const { ...@@ -392,6 +394,7 @@ export const {
setCheckCardModalV3ResponseAble, setCheckCardModalV3ResponseAble,
resetCheckCardModalV3, resetCheckCardModalV3,
setCheckCardModalV3Selected, setCheckCardModalV3Selected,
setCardModalCounters,
} = duelSlice.actions; } = duelSlice.actions;
export const selectDuelHsStart = (state: RootState) => { export const selectDuelHsStart = (state: RootState) => {
return state.duel.meInitInfo != null; return state.duel.meInitInfo != null;
......
...@@ -27,9 +27,19 @@ export const setCardModalInteractiviesImpl: CaseReducer< ...@@ -27,9 +27,19 @@ export const setCardModalInteractiviesImpl: CaseReducer<
state.modalState.cardModal.interactivies = action.payload; state.modalState.cardModal.interactivies = action.payload;
}; };
// 更新卡牌弹窗指示器
export const setCardModalCountersImpl: CaseReducer<
DuelState,
PayloadAction<{ [type: number]: number }>
> = (state, action) => {
state.modalState.cardModal.counters = action.payload;
};
export const selectCardModalIsOpen = (state: RootState) => export const selectCardModalIsOpen = (state: RootState) =>
state.duel.modalState.cardModal.isOpen; state.duel.modalState.cardModal.isOpen;
export const selectCardModalMeta = (state: RootState) => export const selectCardModalMeta = (state: RootState) =>
state.duel.modalState.cardModal.meta; state.duel.modalState.cardModal.meta;
export const selectCardModalInteractivies = (state: RootState) => export const selectCardModalInteractivies = (state: RootState) =>
state.duel.modalState.cardModal.interactivies; state.duel.modalState.cardModal.interactivies;
export const selectCardModalCounters = (state: RootState) =>
state.duel.modalState.cardModal.counters;
...@@ -7,6 +7,7 @@ export interface ModalState { ...@@ -7,6 +7,7 @@ export interface ModalState {
isOpen: boolean; isOpen: boolean;
meta?: CardMeta; meta?: CardMeta;
interactivies: { desc: string; response: number }[]; interactivies: { desc: string; response: number }[];
counters: { [type: number]: number };
}; };
// 卡牌列表弹窗 // 卡牌列表弹窗
cardListModal: { cardListModal: {
......
...@@ -5,6 +5,7 @@ import { ...@@ -5,6 +5,7 @@ import {
selectCardModalIsOpen, selectCardModalIsOpen,
selectCardModalInteractivies, selectCardModalInteractivies,
selectCardModalMeta, selectCardModalMeta,
selectCardModalCounters,
} from "../../reducers/duel/modal/mod"; } from "../../reducers/duel/modal/mod";
import { import {
setCardModalIsOpen, setCardModalIsOpen,
...@@ -39,6 +40,7 @@ const CardModal = () => { ...@@ -39,6 +40,7 @@ const CardModal = () => {
const desc = meta?.text.desc; const desc = meta?.text.desc;
const atk = meta?.data.atk; const atk = meta?.data.atk;
const def = meta?.data.def; const def = meta?.data.def;
const counters = useAppSelector(selectCardModalCounters);
const imgUrl = meta?.id const imgUrl = meta?.id
? `${NeosConfig.cardImgUrl}/${meta.id}.jpg` ? `${NeosConfig.cardImgUrl}/${meta.id}.jpg`
: undefined; : undefined;
...@@ -66,6 +68,9 @@ const CardModal = () => { ...@@ -66,6 +68,9 @@ const CardModal = () => {
<p> <p>
<AtkLine level={level} atk={atk} def={def} /> <AtkLine level={level} atk={atk} def={def} />
</p> </p>
<p>
<CounterLine counters={counters} />
</p>
<p>{desc}</p> <p>{desc}</p>
</Card> </Card>
{interactivies.map((interactive, idx) => { {interactivies.map((interactive, idx) => {
...@@ -141,4 +146,25 @@ const AttLine = (props: { ...@@ -141,4 +146,25 @@ const AttLine = (props: {
); );
}; };
const CounterLine = (props: { counters: { [type: number]: number } }) => {
const counters = [];
for (const counterType in props.counters) {
const count = props.counters[counterType];
if (count > 0) {
const counterStr = fetchStrings("!counter", Number(counterType));
counters.push(`${counterStr}: ${count}`);
}
}
return counters.length > 0 ? (
<Row gutter={8}>
{counters.map((counter) => (
<Col>{counter}</Col>
))}
</Row>
) : (
<></>
);
};
export default CardModal; export default CardModal;
...@@ -8,6 +8,7 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore"; ...@@ -8,6 +8,7 @@ import { ygopro } from "../../api/ocgcore/idl/ocgcore";
import { import {
setCardListModalInfo, setCardListModalInfo,
setCardListModalIsOpen, setCardListModalIsOpen,
setCardModalCounters,
setCardModalInteractivies, setCardModalInteractivies,
setCardModalIsOpen, setCardModalIsOpen,
setCardModalMeta, setCardModalMeta,
...@@ -68,6 +69,7 @@ const FixedSlot = (props: { ...@@ -68,6 +69,7 @@ const FixedSlot = (props: {
}) })
) )
); );
dispatch(setCardModalCounters(props.state.counters));
dispatch(setCardModalIsOpen(true)); dispatch(setCardModalIsOpen(true));
// 侧边栏展示超量素材信息 // 侧边栏展示超量素材信息
......
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