Commit 5e1e0834 authored by chechunchi's avatar chechunchi

remove sequence in CardState

parent d521a1cd
Pipeline #19505 passed with stages
in 5 minutes and 7 seconds
......@@ -22,7 +22,6 @@ export const initDeckImpl: CaseReducer<
location: {
controler: player,
location: ygopro.CardZone.DECK,
sequence: i,
},
idleInteractivities: [],
});
......
......@@ -20,7 +20,6 @@ export const initFieldImpl: CaseReducer<DuelState, PayloadAction<number>> = (
inner: {
location: {
controler: player,
sequence: 0,
location: ygopro.CardZone.ONFIELD,
},
idleInteractivities: [],
......@@ -31,7 +30,6 @@ export const initFieldImpl: CaseReducer<DuelState, PayloadAction<number>> = (
inner: {
location: {
controler: player,
sequence: 0,
location: ygopro.CardZone.ONFIELD,
},
idleInteractivities: [],
......
......@@ -12,7 +12,6 @@ export interface CardState {
location: {
controler: number;
location?: number;
sequence: number;
position?: ygopro.CardPosition;
overlay_sequence?: number;
}; // 位置信息
......@@ -97,12 +96,11 @@ export function extendOccupant<T extends DuelFieldState>(
position?: ygopro.CardPosition
) {
if (state) {
for (const item of state.inner) {
if (item.location.sequence == sequence) {
item.occupant = newMeta;
if (position) {
item.location.position = position;
}
const target = state.inner.find((_, idx) => idx == sequence);
if (target) {
target.occupant = newMeta;
if (position) {
target.location.position = position;
}
}
}
......@@ -114,10 +112,9 @@ export function extendMeta<T extends DuelFieldState>(
sequence: number
) {
if (state) {
for (const item of state.inner) {
if (item.location.sequence == sequence) {
item.occupant = newMeta;
}
const target = state.inner.find((_, idx) => idx == sequence);
if (target) {
target.occupant = newMeta;
}
}
}
......@@ -129,17 +126,16 @@ export function extendPlaceInteractivity<T extends DuelFieldState>(
zone: ygopro.CardZone
) {
if (state) {
for (let item of state.inner) {
if (item.location.sequence == sequence) {
item.placeInteractivities = {
interactType: InteractType.PLACE_SELECTABLE,
response: {
controler,
zone,
sequence,
},
};
}
const target = state.inner.find((_, idx) => idx == sequence);
if (target) {
target.placeInteractivities = {
interactType: InteractType.PLACE_SELECTABLE,
response: {
controler,
zone,
sequence,
},
};
}
}
}
......
......@@ -130,9 +130,7 @@ export const removeHandImpl: CaseReducer<
const hands = judgeSelf(controler, state) ? state.meHands : state.opHands;
if (hands) {
hands.inner = hands.inner.filter(
(card) => card.location.sequence != sequence
);
hands.inner = hands.inner.filter((_, idx) => idx != sequence);
}
};
......
......@@ -14,6 +14,7 @@ const Field = () => {
{meField ? (
<FixedSlot
state={meField}
sequence={0}
position={fieldPosition(0)}
rotation={CONFIG.CardSlotRotation(false)}
/>
......@@ -23,6 +24,7 @@ const Field = () => {
{opField ? (
<FixedSlot
state={opField}
sequence={0}
position={fieldPosition(1)}
rotation={CONFIG.CardSlotRotation(true)}
/>
......
......@@ -18,6 +18,7 @@ const shape = CONFIG.CardSlotShape();
const FixedSlot = (props: {
state: CardState;
sequence: number;
position: BABYLON.Vector3;
rotation: BABYLON.Vector3;
deffenseRotation?: BABYLON.Vector3;
......@@ -67,7 +68,7 @@ const FixedSlot = (props: {
return (
<plane
name={`fixedslot-${props.state.location.sequence}`}
name={`fixedslot-${props.sequence}`}
ref={planeRef}
width={shape.width}
height={shape.height}
......@@ -83,7 +84,7 @@ const FixedSlot = (props: {
edgesColor={edgesColor}
>
<standardMaterial
name={`fixedslot-mat-${props.state.location.sequence}`}
name={`fixedslot-mat-${props.sequence}`}
diffuseTexture={
props.state.occupant
? faceDown
......
......@@ -19,21 +19,23 @@ const Magics = () => {
return (
<>
{zip(meMagics, meMagicPositions).map(([magic, position]) => {
{zip(meMagics, meMagicPositions).map(([magic, position], sequence) => {
return (
<FixedSlot
state={magic}
key={magic.location.sequence}
key={sequence}
sequence={sequence}
position={position}
rotation={CONFIG.CardSlotRotation(false)}
/>
);
})}
{zip(opMagics, opMagicPositions).map(([magic, position]) => {
{zip(opMagics, opMagicPositions).map(([magic, position], sequence) => {
return (
<FixedSlot
state={magic}
key={magic.location.sequence}
key={sequence}
sequence={sequence}
position={position}
rotation={CONFIG.CardSlotRotation(true)}
/>
......@@ -49,9 +51,7 @@ const magicPositions = (player: number, magics: CardState[]) => {
const y = shape.depth / 2 + CONFIG.Floating;
const z = player == 0 ? -2.6 : 2.6;
return magics.map(
(magic) => new BABYLON.Vector3(x(magic.location.sequence), y, z)
);
return magics.map((_, sequence) => new BABYLON.Vector3(x(sequence), y, z));
};
export default Magics;
......@@ -22,28 +22,34 @@ const Monsters = () => {
return (
<>
{zip(meMonsters, meMonsterPositions).map(([monster, position], idx) => {
return (
<FixedSlot
state={monster}
key={idx}
position={position}
rotation={CONFIG.CardSlotRotation(false)}
deffenseRotation={CONFIG.CardSlotDefenceRotation()}
/>
);
})}
{zip(opMonsters, opMonsterPositions).map(([monster, position], idx) => {
return (
<FixedSlot
state={monster}
key={idx}
position={position}
rotation={CONFIG.CardSlotRotation(true)}
deffenseRotation={CONFIG.CardSlotDefenceRotation()}
/>
);
})}
{zip(meMonsters, meMonsterPositions).map(
([monster, position], sequence) => {
return (
<FixedSlot
state={monster}
key={sequence}
sequence={sequence}
position={position}
rotation={CONFIG.CardSlotRotation(false)}
deffenseRotation={CONFIG.CardSlotDefenceRotation()}
/>
);
}
)}
{zip(opMonsters, opMonsterPositions).map(
([monster, position], sequence) => {
return (
<FixedSlot
state={monster}
key={sequence}
sequence={sequence}
position={position}
rotation={CONFIG.CardSlotRotation(true)}
deffenseRotation={CONFIG.CardSlotDefenceRotation()}
/>
);
}
)}
<ExtraMonsters />
<ExtraMonsters />
</>
......@@ -86,9 +92,7 @@ const monsterPositions = (player: number, monsters: CardState[]) => {
const y = shape.depth / 2 + CONFIG.Floating;
const z = player == 0 ? -1.35 : 1.35;
return monsters.map(
(monster) => new BABYLON.Vector3(x(monster.location.sequence), y, z)
);
return monsters.map((_, sequence) => new BABYLON.Vector3(x(sequence), y, z));
};
export default Monsters;
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