Commit b3210cb1 authored by nanahira's avatar nanahira

refa

parent 83e457e0
Pipeline #43294 passed with stages
in 2 minutes and 3 seconds
......@@ -16,7 +16,7 @@ import { CommandsService, KoishiContextService } from '../koishi';
import { ChatgptService } from './chatgpt-service';
import { CloudReplayService } from './cloud-replay';
import { LpLowHintService } from './lp-low-hint-service';
import { LockDeckService } from './lock-deck-service';
import { LockDeckService } from './lock-deck';
import { BlockReplay } from './block-replay';
export const FeatsModule = createAppContext<ContextState>()
......
......@@ -4,8 +4,7 @@ export * from './chatgpt-service';
export * from './block-replay';
export * from './cloud-replay';
export * from './hide-player-name-provider';
export * from './lock-deck-check';
export * from './lock-deck-service';
export * from './lock-deck';
export * from './menu-manager';
export * from './welcome';
export * from './random-duel';
......
export * from './lock-deck-check';
export * from './lock-deck-service';
import YGOProDeck from 'ygopro-deck-encode';
import { Client } from '../client';
import { Room } from '../room';
import { ValueContainer } from '../utility/value-container';
import { Client } from '../../client';
import { Room } from '../../room';
import { ValueContainer } from '../../utility/value-container';
export class LockDeckExpectedDeckCheck extends ValueContainer<
YGOProDeck | null | undefined
......
import { YGOProLFListError, YGOProLFListErrorReason } from 'ygopro-lflist-encode';
import { ChatColor } from 'ygopro-msg-encode';
import { Context } from '../app';
import { RoomCheckDeck } from '../room';
import { isSrvproTournamentDeckEqual } from '../utility/deck-compare';
import { Context } from '../../app';
import { RoomCheckDeck } from '../../room';
import { isSrvproTournamentDeckEqual } from '../../utility/deck-compare';
import { LockDeckExpectedDeckCheck } from './lock-deck-check';
class SrvproDeckBadError extends YGOProLFListError {
......
......@@ -23,6 +23,26 @@ export class DuelRecord {
responses: Buffer[] = [];
messages: YGOProMsgBase[] = [];
toSwappedPlayers() {
if (!this.isSwapped) {
return [...this.players];
}
const swappedPlayers = [...this.players];
const isTag = swappedPlayers.length === 4;
const swapElements = (a: number, b: number) => {
const temp = swappedPlayers[a];
swappedPlayers[a] = swappedPlayers[b];
swappedPlayers[b] = temp;
};
if (isTag) {
swapElements(0, 2);
swapElements(1, 3);
} else {
swapElements(0, 1);
}
return swappedPlayers;
}
private toReplayDeck(deck: YGOProDeck | null | undefined) {
if (!deck) {
return null;
......@@ -50,20 +70,7 @@ export class DuelRecord {
// Set start_time (stored in hash field) as Unix timestamp in seconds
header.hash = Math.floor(this.startTime.getTime() / 1000);
const players = [...this.players];
if (this.isSwapped) {
const swapElements = (a: number, b: number) => {
const temp = players[a];
players[a] = players[b];
players[b] = temp;
};
if (isTag) {
swapElements(0, 2);
swapElements(1, 3);
} else {
swapElements(0, 1);
}
}
const players = this.toSwappedPlayers();
// Build YGOProYrp object
// Note: players array is already swapped
......
......@@ -1320,7 +1320,7 @@ export class Room {
extraScriptPaths,
ocgcoreWasmPath,
registry,
decks: duelRecord.players.map((p) => p.deck),
decks: duelRecord.toSwappedPlayers().map((p) => p.deck),
});
const [
......
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