From 1b2e062bb61249933132f03fc7ae516615e23460 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Mon, 11 Mar 2024 15:36:58 +0000 Subject: [PATCH] =?UTF-8?q?NationEntity=20=EC=B6=94=EA=B0=80=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- @sammo/game_logic/src/Entity/NationEntity.ts | 54 +++++++++++++++++++- @sammo/game_logic/src/defs.ts | 29 ++++++++++- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/@sammo/game_logic/src/Entity/NationEntity.ts b/@sammo/game_logic/src/Entity/NationEntity.ts index cbb2771..37d0e00 100644 --- a/@sammo/game_logic/src/Entity/NationEntity.ts +++ b/@sammo/game_logic/src/Entity/NationEntity.ts @@ -1,4 +1,4 @@ -import type { CityID, NationID, NationName, NationType } from "../defs.js"; +import type { CityID, ColorType, IntYearMonth, NationCmdType, NationID, NationLevel, NationName, NationType, RemainMonth, ReservedTurn, StaffLevel, StrategicCmd } from "../defs.js"; export interface INationEntity{ id: NationID; @@ -6,4 +6,56 @@ export interface INationEntity{ type: NationType; capitalID: CityID; + color: ColorType; + + level: NationLevel; + + lastExecutedYearMonth: Record< + 'capitalSet' + ,number>; + + //TODO: 이게 뭐더라 + capset: IntYearMonth; + + strategicCmdLimit: Record; + + //세율 + taxRate: number; + //지급율 + payRate: number; + + gold: number; + rice: number; + + blockScout: boolean; + blockWar: boolean; + + //특수외교커맨드 제한 + specialDiplomacyCmdLimit: IntYearMonth; + + //기술력 + technology: number; + + //환산 국력 + power: number; + + //첩보 제한 + spyLimit: Map; + + //커맨드별 옵션 + commandOption: Map>; + + lastExecutedTurn: Map; + + aux: { + availableWarSettingCnt?: number; + prevIncomeGold: number; + prevIncomeRice: number; + } + + //TODO: 타입 정의 + nationPolicy: Record; + //TODO: 타입 정의 + npcPolicy: Record; + } \ No newline at end of file diff --git a/@sammo/game_logic/src/defs.ts b/@sammo/game_logic/src/defs.ts index ffad35c..6b548aa 100644 --- a/@sammo/game_logic/src/defs.ts +++ b/@sammo/game_logic/src/defs.ts @@ -21,6 +21,8 @@ export type RegionID = number & { zz_t?: "RegionID" }; export type ServerID = number & { zz_t?: "ServerID" }; export type ScenarioID = number & { zz_t?: "ScenarioID" }; + + //TODO: 무언가의 keyof 로 바꿔야함 export type NationType = string & { zz_t?: "NationType" }; export type StrategicTurnType = string & { zz_t?: "StrategicTurnType" }; @@ -107,6 +109,16 @@ export const enum DiplomaticPermission { ambassador = 2, } +export const enum NationLevel { + 방랑군 = 0, + 호족 = 1, + 군벌 = 2, + 주자사 = 3, + 주목 = 4, + 공 = 5, + 왕 = 6, + 황제 = 7, +} export const enum CityLevel { 진 = 1, @@ -131,6 +143,13 @@ export const enum FrontStatus { NearEmpty = 3, } +export type NationCmdType = string & { zz_t?: "NationCmdType" }; + +export type StrategicCmdType = string & { zz_t?: "StrategicCmdType" }; + +//string? const or? Enum? +export type ColorType = string & { zz_t?: "ColorType" }; + //XXX: 기존처럼 값 하나만 유지할 것인가? export const enum CityState { //일반 @@ -227,4 +246,12 @@ export interface ReservedTurn { action: string; arg: Record; brief: string; -} \ No newline at end of file +} + + +//특수 숫자 정의 +//연 * 12 + 월 +export type IntYearMonth = number & { zz_t?: "YearMonth" }; +export type RemainMonth = number & { zz_t?: "RemainMonth" }; +//1.0을 기준으로한 number 타입 +export type Ratio = number & { zz_t?: "Ratio" };