refactor(0.1.14-P1): 内核归位——game/ 按引擎架构重排(零行为漂移)

结构(旧 game/core+engine → 新 engine/ 域):
- engine/kernel/  时钟/随机/插件协议/fxqueue/timesense/format/urgency/guide/names(原 core)
- engine/narrative/  legacy/报告/列传/谱系/年轴(原 core 叙事族)
- engine/runtime/   World/creation/pcgen/ApiFacade/capabilities/pluginManager/boot/clocks + Systems/*(12 系统)
- engine/sim/     Market(未来 WorldSim 同行)
- 旧 game/core、engine/systems、engine/world.ts 等路径全部废弃(无 re-export 兼容层)

验证:35 套件/967 测试全绿(金钟罩三档零漂移=纯搬迁无行为变化)
typecheck 0 error
This commit is contained in:
2026-08-23 13:23:25 +08:00
parent 2528226a9f
commit ff6df8054c
89 changed files with 281 additions and 281 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { GameFacade, ACT_CATALOG, ActName } from '../src/renderer/game/engine/api'
import { World } from '../src/renderer/game/engine/runtime/World'
import { GameFacade, ACT_CATALOG, ActName } from '../src/renderer/game/engine/runtime/ApiFacade'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+6 -6
View File
@@ -1,11 +1,11 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { monthlyRate, resolveBreakthrough } from '../src/renderer/game/engine/systems/cultivation'
import { combatPowerOf } from '../src/renderer/game/engine/systems/combat'
import { World } from '../src/renderer/game/engine/runtime/World'
import { monthlyRate, resolveBreakthrough } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { combatPowerOf } from '../src/renderer/game/engine/runtime/Systems/combat'
import { isFit } from '../src/renderer/game/data/aspirations'
import { needsTribulation, resolveTribulation, tribulationEventId } from '../src/renderer/game/engine/systems/tribulation'
import { buildBiography } from '../src/renderer/game/core/biography'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { needsTribulation, resolveTribulation, tribulationEventId } from '../src/renderer/game/engine/runtime/Systems/tribulation'
import { buildBiography } from '../src/renderer/game/engine/narrative/biography'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+4 -4
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { computeUrgency } from '../src/renderer/game/core/urgency'
import { monthlyRate } from '../src/renderer/game/engine/systems/cultivation'
import { World } from '../src/renderer/game/engine/runtime/World'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { computeUrgency } from '../src/renderer/game/engine/kernel/urgency'
import { monthlyRate } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+8 -8
View File
@@ -1,13 +1,13 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { newCharacter } from '../src/renderer/game/engine/pcgen'
import { Rng, seedToRng } from '../src/renderer/game/core/rng'
import { World } from '../src/renderer/game/engine/runtime/World'
import { newCharacter } from '../src/renderer/game/engine/runtime/pcgen'
import { Rng, seedToRng } from '../src/renderer/game/engine/kernel/rng'
import { PACK } from '../src/renderer/game/data/registry'
import { buildApprentice } from '../src/renderer/game/engine/systems/tournament'
import { sendMission } from '../src/renderer/game/engine/systems/missions'
import { buyItem, marketPrice } from '../src/renderer/game/engine/market'
import { findEvent } from '../src/renderer/game/engine/systems/events'
import { runTournament } from '../src/renderer/game/engine/systems/tournament'
import { buildApprentice } from '../src/renderer/game/engine/runtime/Systems/tournament'
import { sendMission } from '../src/renderer/game/engine/runtime/Systems/missions'
import { buyItem, marketPrice } from '../src/renderer/game/engine/sim/Market'
import { findEvent } from '../src/renderer/game/engine/runtime/Systems/events'
import { runTournament } from '../src/renderer/game/engine/runtime/Systems/tournament'
import { stateFingerprint, longRun } from './fingerprint.helper'
import { resetSaveBus, attachLogSink } from './world.helpers'
+4 -4
View File
@@ -1,11 +1,11 @@
import { describe, expect, it } from 'vitest'
import { World, normalizeGameState } from '../src/renderer/game/engine/world'
import { World, normalizeGameState } from '../src/renderer/game/engine/runtime/World'
import {
marryNpcFamily,
makePeace
} from '../src/renderer/game/engine/systems/diplomacy'
import { sendMission, recallAll } from '../src/renderer/game/engine/systems/missions'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
} from '../src/renderer/game/engine/runtime/Systems/diplomacy'
import { sendMission, recallAll } from '../src/renderer/game/engine/runtime/Systems/missions'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { GameState } from '../src/renderer/game/types/domain'
import { resetSaveBus, attachLogSink } from './world.helpers'
+9 -9
View File
@@ -1,13 +1,13 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { monthlyRate } from '../src/renderer/game/engine/systems/cultivation'
import { combatPowerOf } from '../src/renderer/game/engine/systems/combat'
import { resolveBreakthrough } from '../src/renderer/game/engine/systems/cultivation'
import { computeLegacy, resolveLegacy } from '../src/renderer/game/core/legacy'
import { yearAxis } from '../src/renderer/game/core/yearaxis'
import { buildBiography } from '../src/renderer/game/core/biography'
import { computeGenealogy } from '../src/renderer/game/core/genealogy'
import { marketPrice, buyItem, sellItem } from '../src/renderer/game/engine/market'
import { World } from '../src/renderer/game/engine/runtime/World'
import { monthlyRate } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { combatPowerOf } from '../src/renderer/game/engine/runtime/Systems/combat'
import { resolveBreakthrough } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { computeLegacy, resolveLegacy } from '../src/renderer/game/engine/narrative/legacy'
import { yearAxis } from '../src/renderer/game/engine/narrative/yearaxis'
import { buildBiography } from '../src/renderer/game/engine/narrative/biography'
import { computeGenealogy } from '../src/renderer/game/engine/narrative/genealogy'
import { marketPrice, buyItem, sellItem } from '../src/renderer/game/engine/sim/Market'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+5 -5
View File
@@ -1,10 +1,10 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { GameClock, PHASE_ORDER } from '../src/renderer/game/core/clock'
import { buildClock } from '../src/renderer/game/engine/clocks'
import { RngHub } from '../src/renderer/game/core/rng'
import { World } from '../src/renderer/game/engine/runtime/World'
import { GameClock, PHASE_ORDER } from '../src/renderer/game/engine/kernel/clock'
import { buildClock } from '../src/renderer/game/engine/runtime/clocks'
import { RngHub } from '../src/renderer/game/engine/kernel/rng'
import { seasonOf, seasonMod, SEASON } from '../src/renderer/game/data/season'
import { yearAxis, decadeLabel } from '../src/renderer/game/core/yearaxis'
import { yearAxis, decadeLabel } from '../src/renderer/game/engine/narrative/yearaxis'
import { stateFingerprint } from './fingerprint.helper'
import { resetSaveBus, attachLogSink } from './world.helpers'
+1 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { stateFingerprint, longRun } from './fingerprint.helper'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
/**
* 金钟罩:固定种子长跑 560 月的状态指纹。
+3 -3
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { combatPowerOf, resolveEncounter, resolveRaid, rollWarbooty } from '../src/renderer/game/engine/systems/combat'
import { World } from '../src/renderer/game/engine/runtime/World'
import { combatPowerOf, resolveEncounter, resolveRaid, rollWarbooty } from '../src/renderer/game/engine/runtime/Systems/combat'
import { ENEMIES } from '../src/renderer/game/data/secrets'
import { sendMission, recallAll } from '../src/renderer/game/engine/systems/missions'
import { sendMission, recallAll } from '../src/renderer/game/engine/runtime/Systems/missions'
import { missionById } from '../src/renderer/game/data/secrets'
import { resetSaveBus, attachLogSink } from './world.helpers'
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { applyEventChoice, applyEffect } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { applyEventChoice, applyEffect } from '../src/renderer/game/engine/runtime/Systems/events'
import { EffectDef } from '../src/renderer/game/data/events'
import { Character } from '../src/renderer/game/types/domain'
import { resetSaveBus, attachLogSink } from './world.helpers'
+1 -1
View File
@@ -22,7 +22,7 @@ import { NPCS, npcById } from '../src/renderer/game/data/npcs'
import { POSTS, POST_ORDER } from '../src/renderer/game/data/posts'
import { EVENTS } from '../src/renderer/game/data/events'
import { MAJOR_RATE, masteryRateOfMajor } from '../src/renderer/game/data/pacing'
import { SURNAME_POOL, MALE_GIVEN, FEMALE_GIVEN } from '../src/renderer/game/core/names'
import { SURNAME_POOL, MALE_GIVEN, FEMALE_GIVEN } from '../src/renderer/game/engine/kernel/names'
import { TRAITS } from '../src/renderer/game/data/traits'
describe('realms 境界表', () => {
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { applyEventChoice, eventRoll } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { applyEventChoice, eventRoll } from '../src/renderer/game/engine/runtime/Systems/events'
describe('echo 四邻回声', () => {
function baseWorld(seed: string): World {
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { marketPrice, buyItem, sellItem, buyTechnique, techniquePrice } from '../src/renderer/game/engine/market'
import { World } from '../src/renderer/game/engine/runtime/World'
import { marketPrice, buyItem, sellItem, buyTechnique, techniquePrice } from '../src/renderer/game/engine/sim/Market'
import { ITEMS } from '../src/renderer/game/data/items'
describe('economy 经济系统', () => {
+2 -2
View File
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest'
import { World, normalizeGameState } from '../src/renderer/game/engine/world'
import { World, normalizeGameState } from '../src/renderer/game/engine/runtime/World'
import { EVENTS, EffectDef } from '../src/renderer/game/data/events'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { POSTS } from '../src/renderer/game/data/posts'
import { ASPIRATIONS } from '../src/renderer/game/data/aspirations'
import { resetSaveBus, attachLogSink } from './world.helpers'
+2 -2
View File
@@ -1,5 +1,5 @@
import { World } from '../src/renderer/game/engine/world'
import { matchesCond } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { matchesCond } from '../src/renderer/game/engine/runtime/Systems/events'
import { Cond } from '../src/renderer/game/data/events'
export function matchesCondPub(w: World, cond?: Cond): boolean {
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { matchesCond, applyEventChoice, findEvent, eventRoll } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { matchesCond, applyEventChoice, findEvent, eventRoll } from '../src/renderer/game/engine/runtime/Systems/events'
import { EVENTS } from '../src/renderer/game/data/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
+4 -4
View File
@@ -1,9 +1,9 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { GameFacade } from '../src/renderer/game/engine/api'
import { SYSTEM_DEFS } from '../src/renderer/game/engine/capabilities'
import { World } from '../src/renderer/game/engine/runtime/World'
import { GameFacade } from '../src/renderer/game/engine/runtime/ApiFacade'
import { SYSTEM_DEFS } from '../src/renderer/game/engine/runtime/capabilities'
import { PACK, pack, DEFAULT_PACK } from '../src/renderer/game/data/registry'
import { marketPrice } from '../src/renderer/game/engine/market'
import { marketPrice } from '../src/renderer/game/engine/sim/Market'
import { stateFingerprint, longRun } from './fingerprint.helper'
import { resetSaveBus, attachLogSink } from './world.helpers'
+5 -5
View File
@@ -1,12 +1,12 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { buildReport, verdictLine } from '../src/renderer/game/core/legacyreport'
import { World } from '../src/renderer/game/engine/runtime/World'
import { buildReport, verdictLine } from '../src/renderer/game/engine/narrative/legacyreport'
import { migrateIfNeeded, exportEnvelope, parseImportEnvelope, CURRENT_SCHEMA, APP_ID } from '../src/renderer/game/storage/migrate'
import { FORMATIONS, formationById, FormationId } from '../src/renderer/game/data/formations'
import { resolveEncounter } from '../src/renderer/game/engine/systems/combat'
import { resolveEncounter } from '../src/renderer/game/engine/runtime/Systems/combat'
import { ENEMIES } from '../src/renderer/game/data/secrets'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { sendMission } from '../src/renderer/game/engine/systems/missions'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { sendMission } from '../src/renderer/game/engine/runtime/Systems/missions'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+1 -1
View File
@@ -1,4 +1,4 @@
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
import { GameState } from '../src/renderer/game/types/domain'
export function stateFingerprint(s: GameState): string {
+2 -2
View File
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest'
import { seasonOf } from '../src/renderer/game/data/season'
import { tideOf, yearRing, seasonTint, seasonCssVars, TIDES } from '../src/renderer/game/core/timesense'
import { FxGate, FxKind } from '../src/renderer/game/core/fxqueue'
import { tideOf, yearRing, seasonTint, seasonCssVars, TIDES } from '../src/renderer/game/engine/kernel/timesense'
import { FxGate, FxKind } from '../src/renderer/game/engine/kernel/fxqueue'
describe('timesense 时间感知矩阵', () => {
it.each([[1, 'spring'], [3, 'spring'], [4, 'summer'], [6, 'summer'], [7, 'autumn'], [9, 'autumn'], [10, 'winter'], [12, 'winter']] as const)(
+1 -1
View File
@@ -1,4 +1,4 @@
import { CotycPlugin } from '../../src/renderer/game/core/plugin'
import { CotycPlugin } from '../../src/renderer/game/engine/kernel/plugin'
/** 示例内容插件:注入事件池 + 一个护山能力(开发范本) */
export const examplePlugin: CotycPlugin = {
+4 -4
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { computeLegacy, resolveLegacy, peakRealmIndex, grandTechniqueCount } from '../src/renderer/game/core/legacy'
import { runTournament, buildApprentice, finalizeApprentice, apprenticeCandidates } from '../src/renderer/game/engine/systems/tournament'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { computeLegacy, resolveLegacy, peakRealmIndex, grandTechniqueCount } from '../src/renderer/game/engine/narrative/legacy'
import { runTournament, buildApprentice, finalizeApprentice, apprenticeCandidates } from '../src/renderer/game/engine/runtime/Systems/tournament'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { World } from '../src/renderer/game/engine/runtime/World'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
const SEEDS = ['long-a', 'long-b', 'long-c']
+4 -4
View File
@@ -1,13 +1,13 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
import {
giftNpc,
marryNpcFamily,
makePeace,
arrangeWedding,
diplomacyTick
} from '../src/renderer/game/engine/systems/diplomacy'
import { yearStartMarriage } from '../src/renderer/game/engine/systems/marriage'
} from '../src/renderer/game/engine/runtime/Systems/diplomacy'
import { yearStartMarriage } from '../src/renderer/game/engine/runtime/Systems/marriage'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
@@ -189,7 +189,7 @@ describe('genealogy 谱系结构', () => {
})
})
import { computeGenealogy } from '../src/renderer/game/core/genealogy'
import { computeGenealogy } from '../src/renderer/game/engine/narrative/genealogy'
function computeGenealogyLocal(w: World) {
return computeGenealogy(w)
}
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { calcGiftGain, GIFT_TIERS, giftNpc } from '../src/renderer/game/engine/systems/diplomacy'
import { World } from '../src/renderer/game/engine/runtime/World'
import { calcGiftGain, GIFT_TIERS, giftNpc } from '../src/renderer/game/engine/runtime/Systems/diplomacy'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
+5 -5
View File
@@ -1,9 +1,9 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { Rng, seedToRng } from '../src/renderer/game/core/rng'
import { newCharacter, rollAttributes, rollRoots, rollPersonality, traitBonuses, calcLifespan } from '../src/renderer/game/engine/pcgen'
import { monthlyRate, perAttemptChance } from '../src/renderer/game/engine/systems/cultivation'
import { lifespanOf } from '../src/renderer/game/engine/systems/lifecycle'
import { World } from '../src/renderer/game/engine/runtime/World'
import { Rng, seedToRng } from '../src/renderer/game/engine/kernel/rng'
import { newCharacter, rollAttributes, rollRoots, rollPersonality, traitBonuses, calcLifespan } from '../src/renderer/game/engine/runtime/pcgen'
import { monthlyRate, perAttemptChance } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { lifespanOf } from '../src/renderer/game/engine/runtime/Systems/lifecycle'
function rng(): Rng {
return new Rng(seedToRng('pcgen'))
+5 -5
View File
@@ -1,9 +1,9 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { GameFacade } from '../src/renderer/game/engine/api'
import { installCoreSystems, buildClock } from '../src/renderer/game/engine/clocks'
import { emptyClock } from '../src/renderer/game/engine/clocks'
import { CORE_PLUGINS } from '../src/renderer/game/engine/plugin-bootstrap'
import { World } from '../src/renderer/game/engine/runtime/World'
import { GameFacade } from '../src/renderer/game/engine/runtime/ApiFacade'
import { installCoreSystems, buildClock } from '../src/renderer/game/engine/runtime/clocks'
import { emptyClock } from '../src/renderer/game/engine/runtime/clocks'
import { CORE_PLUGINS } from '../src/renderer/game/engine/runtime/plugin-bootstrap'
import { examplePlugin, brokenPlugin } from './helpers/examplePlugin'
import { stateFingerprint, longRun } from './fingerprint.helper'
import { resetSaveBus, attachLogSink } from './world.helpers'
+5 -5
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { monthlyRate } from '../src/renderer/game/engine/systems/cultivation'
import { World } from '../src/renderer/game/engine/runtime/World'
import { monthlyRate } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { MAJORS } from '../src/renderer/game/data/realms'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
function baseWorld(seed: string): World {
@@ -73,8 +73,8 @@ describe('0.1.10 数值重建验收', () => {
})
})
import { resolveBreakthrough } from '../src/renderer/game/engine/systems/cultivation'
import { perTribChance } from '../src/renderer/game/engine/systems/tribulation'
import { resolveBreakthrough } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { perTribChance } from '../src/renderer/game/engine/runtime/Systems/tribulation'
describe('事件悬置与周期(0.1.10', () => {
it('大比征召 FIFO 不被拍卖/传薪挤掉(20 年三年都触发)', () => {
+1 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import { Rng, seedToRng, RngHub } from '../src/renderer/game/core/rng'
import { Rng, seedToRng, RngHub } from '../src/renderer/game/engine/kernel/rng'
describe('RNG 多种子矩阵', () => {
it.each([
+1 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import { Rng, seedToRng } from '../src/renderer/game/core/rng'
import { Rng, seedToRng } from '../src/renderer/game/engine/kernel/rng'
describe('Rng.sfc32 特性', () => {
it('同一种子产生的序列完全一致', () => {
+1 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { SaveSlot, SaveDbDriver } from '../src/renderer/game/storage/slots'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
interface Row {
[k: string]: unknown
+1 -1
View File
@@ -1,7 +1,7 @@
import { describe, expect, it } from 'vitest'
import { SaveSlot, SaveDbDriver } from '../src/renderer/game/storage/slots'
import { GameState } from '../src/renderer/game/types/domain'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
interface Row {
[k: string]: unknown
+6 -6
View File
@@ -1,10 +1,10 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { combatPowerOf } from '../src/renderer/game/engine/systems/combat'
import { marketPrice, buyItem, sellItem, buyTechnique } from '../src/renderer/game/engine/market'
import { resolveBreakthrough, monthlyRate } from '../src/renderer/game/engine/systems/cultivation'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { computeGenealogy } from '../src/renderer/game/core/genealogy'
import { World } from '../src/renderer/game/engine/runtime/World'
import { combatPowerOf } from '../src/renderer/game/engine/runtime/Systems/combat'
import { marketPrice, buyItem, sellItem, buyTechnique } from '../src/renderer/game/engine/sim/Market'
import { resolveBreakthrough, monthlyRate } from '../src/renderer/game/engine/runtime/Systems/cultivation'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { computeGenealogy } from '../src/renderer/game/engine/narrative/genealogy'
import { matchesCondPub } from './events.helpers'
import { resetSaveBus, attachLogSink } from './world.helpers'
+4 -4
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { computeUrgency } from '../src/renderer/game/core/urgency'
import { computeGuide, GUIDE_STEPS, guideAdvance } from '../src/renderer/game/core/guide'
import { fmt } from '../src/renderer/game/core/format'
import { World } from '../src/renderer/game/engine/runtime/World'
import { computeUrgency } from '../src/renderer/game/engine/kernel/urgency'
import { computeGuide, GUIDE_STEPS, guideAdvance } from '../src/renderer/game/engine/kernel/guide'
import { fmt } from '../src/renderer/game/engine/kernel/format'
function baseWorld(seed: string): World {
return World.create({ seed, surname: '舒', familyName: '舒家', motto: 'm', difficulty: 'normal' })
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { createWorldState, NewGameOptions, findInheritor } from '../src/renderer/game/engine/creation'
import { World } from '../src/renderer/game/engine/runtime/World'
import { createWorldState, NewGameOptions, findInheritor } from '../src/renderer/game/engine/runtime/creation'
import { resetSaveBus, attachLogSink } from './world.helpers'
function opts(seed: string, difficulty: 'easy' | 'normal' | 'hard' = 'normal', surname = '彭'): NewGameOptions {
+3 -3
View File
@@ -1,8 +1,8 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
import { stateFingerprint, longRun } from './fingerprint.helper'
import { computeGenealogy } from '../src/renderer/game/core/genealogy'
import { applyEventChoice } from '../src/renderer/game/engine/systems/events'
import { computeGenealogy } from '../src/renderer/game/engine/narrative/genealogy'
import { applyEventChoice } from '../src/renderer/game/engine/runtime/Systems/events'
import { resetSaveBus, attachLogSink } from './world.helpers'
describe('多 seed 长跑矩阵', () => {
+1 -1
View File
@@ -1,4 +1,4 @@
import { World, WorldEventBus } from '../src/renderer/game/engine/world'
import { World, WorldEventBus } from '../src/renderer/game/engine/runtime/World'
import { LogItem, ChronicleEntry, BattleLog } from '../src/renderer/game/types/domain'
const sinks: Set<WorldEventBus> = new Set()
+1 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest'
import { World } from '../src/renderer/game/engine/world'
import { World } from '../src/renderer/game/engine/runtime/World'
import { resetSaveBus, attachLogSink } from './world.helpers'
describe('World engine', () => {