diff --git a/@sammo/game_logic/src/Entity/Diplomacy.ts b/@sammo/game_logic/src/Entity/Diplomacy.ts new file mode 100644 index 0000000..eea86a6 --- /dev/null +++ b/@sammo/game_logic/src/Entity/Diplomacy.ts @@ -0,0 +1,13 @@ +import type { DiplomacyState, NationID } from "@/defs.js"; + +export interface Diplomacy { + _id: string; + + lowerNationID: NationID; + higherNationID: NationID; + + state: DiplomacyState; + + lowerNationDeadCrew?: number; + higherNationDeadCrew?: number; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/External/DiplomaticLetter.ts b/@sammo/game_logic/src/Entity/External/DiplomaticLetter.ts new file mode 100644 index 0000000..ed26604 --- /dev/null +++ b/@sammo/game_logic/src/Entity/External/DiplomaticLetter.ts @@ -0,0 +1,29 @@ +import type { NationID } from "@/defs.js"; + +export interface IDiplomaticLetter { + _id: string; + + srcNationID: NationID; + destNationID: NationID; + + prevID?: string; + + state: 'proposed' | 'accepted' | 'rejected' | 'canceled' | 'replaced'; + + srcSigner: { + generalID: string; + generalName: string; + icon: string; + }; + destSigner: { + generalID: string; + generalName: string; + icon: string; + }; + + textBrief: string; + textDetail: string; + + createdAt: Date; + updatedAt: Date; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/External/GeneralExternalRankEntity.ts b/@sammo/game_logic/src/Entity/External/GeneralExternalRankEntity.ts index 432f3f6..4d219d6 100644 --- a/@sammo/game_logic/src/Entity/External/GeneralExternalRankEntity.ts +++ b/@sammo/game_logic/src/Entity/External/GeneralExternalRankEntity.ts @@ -1,6 +1,6 @@ import type { GeneralID } from "@/defs.js"; -//게임 외부적인 General Rank ㅈ어보 +//게임 외부적인 General Rank 정보 export interface IGeneralExternalRankEntity { generalID: GeneralID; diff --git a/@sammo/game_logic/src/Entity/External/GeneralTurn.ts b/@sammo/game_logic/src/Entity/External/GeneralTurn.ts new file mode 100644 index 0000000..5e78133 --- /dev/null +++ b/@sammo/game_logic/src/Entity/External/GeneralTurn.ts @@ -0,0 +1,10 @@ +import type { GeneralID } from "@/defs.js"; + +export interface IGeneralTurn { + generalID: GeneralID; + turn: { + action: string; + arg?: Record; + brief: string; + }[]; +} diff --git a/@sammo/game_logic/src/Entity/External/Message.ts b/@sammo/game_logic/src/Entity/External/Message.ts new file mode 100644 index 0000000..e69de29 diff --git a/@sammo/game_logic/src/Entity/External/NationTurn.ts b/@sammo/game_logic/src/Entity/External/NationTurn.ts new file mode 100644 index 0000000..4259a9d --- /dev/null +++ b/@sammo/game_logic/src/Entity/External/NationTurn.ts @@ -0,0 +1,14 @@ +import type { StaffLevel } from "@/defs.js"; + +export interface INationTurn { + _id: string; + + nationID: string; + officerLevel: StaffLevel, + + turn: { + action: string; + arg?: Record; + brief: string; + }[]; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/GeneralEntity.ts b/@sammo/game_logic/src/Entity/GeneralEntity.ts index 8db1160..671e9ab 100644 --- a/@sammo/game_logic/src/Entity/GeneralEntity.ts +++ b/@sammo/game_logic/src/Entity/GeneralEntity.ts @@ -5,7 +5,7 @@ export interface IGeneralEntity { ownerID?: UserID; npcType: NpcType; affinity?: number; - picture?: string; + icon?: string; name: GeneralName; ownerName?: UserName; nationID: NationID; diff --git a/@sammo/game_logic/src/Entity/Persistant/HallOfFame.ts b/@sammo/game_logic/src/Entity/Persistant/HallOfFame.ts new file mode 100644 index 0000000..ac4c06d --- /dev/null +++ b/@sammo/game_logic/src/Entity/Persistant/HallOfFame.ts @@ -0,0 +1,31 @@ +import type { GeneralID, GeneralName, NationName, ScenarioID, ServerID, UserID, UserName } from "@/defs.js" +import type { IGeneralRankEntity } from "../GeneralRankEntity.js"; +import type { IGeneralExternalRankEntity } from "../External/GeneralExternalRankEntity.js"; + + + +export interface IHallOfFame { + _id: string + + serverID: ServerID; + serverIdx: number; + season: number; + + scenarioID: ScenarioID; + scenarioName: string; + + generalID: GeneralID; + generalName: GeneralName; + ownerID: UserID; + ownerName: UserName; + icon: string; + + nationName: NationName; + nationColor: string; + + startTime: Date; + endTime: Date; + + ingame: IGeneralRankEntity; + external: IGeneralExternalRankEntity; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/Persistant/History.ts b/@sammo/game_logic/src/Entity/Persistant/History.ts new file mode 100644 index 0000000..b8a15cd --- /dev/null +++ b/@sammo/game_logic/src/Entity/Persistant/History.ts @@ -0,0 +1,32 @@ +import type { CityID, CityLevel, CityState, NationID, NpcType, OfficerLevel, RegionID, ServerID } from "@/defs.js"; + +export interface IHistory { + _id: string; + + serverID: ServerID; + year: number; + month: number; + mapBase: string; + nations: Map; + generals: { + name: string; + npcType: NpcType; + }[]; + }>; + cities: Map + globalHistory: string[]; + globalAction: string[]; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/Persistant/OldGeneral.ts b/@sammo/game_logic/src/Entity/Persistant/OldGeneral.ts new file mode 100644 index 0000000..a762c2f --- /dev/null +++ b/@sammo/game_logic/src/Entity/Persistant/OldGeneral.ts @@ -0,0 +1,28 @@ +import type { CityLevel, GeneralID, ServerID, UserID } from "@/defs.js"; +import type { IGeneralEntity } from "../GeneralEntity.js"; +import type { IGeneralRankEntity } from "../GeneralRankEntity.js"; + +export interface OldGeneral { + _id: string; + + serverID: ServerID; + generalID: GeneralID; + ownerID?: UserID; + + lastYearMonth: number; + + general: IGeneralEntity; + rank: IGeneralRankEntity; + + troopName?: string; + cityBasic: { + name: string; + level: CityLevel; + } + nationBasic: { + name: string; + color: string; + }; + + createdAt: Date; +} \ No newline at end of file diff --git a/@sammo/game_logic/src/Entity/Persistant/OldNation.ts b/@sammo/game_logic/src/Entity/Persistant/OldNation.ts new file mode 100644 index 0000000..e81c76d --- /dev/null +++ b/@sammo/game_logic/src/Entity/Persistant/OldNation.ts @@ -0,0 +1,34 @@ +import type { GeneralID, GeneralName, ItemID, ItemKeyType, NationID, NpcType, OfficerLevel, PersonalityType, ServerID, SpecialityDomesticType, SpecialityWarType, UserID } from "@/defs.js"; +import type { INationEntity } from "../NationEntity.js"; + +export interface IOldNation { + _id: string; + + serverID: ServerID; + nationID: NationID; + + nation: INationEntity; + + lastYearMonth: number; + + members: Record + + history: { + year: number; + month: number; + text: string[]; + }; + + createdAt: Date; +} diff --git a/@sammo/game_logic/src/defs.ts b/@sammo/game_logic/src/defs.ts index 738d71c..012b2ad 100644 --- a/@sammo/game_logic/src/defs.ts +++ b/@sammo/game_logic/src/defs.ts @@ -19,6 +19,7 @@ export type RegionID = number & { zz_t?: "RegionID" }; //서버 ID export type ServerID = number & { zz_t?: "ServerID" }; +export type ScenarioID = number & { zz_t?: "ScenarioID" }; //TODO: 무언가의 keyof 로 바꿔야함 export type NationType = string & { zz_t?: "NationType" }; @@ -43,18 +44,7 @@ export const enum NpcType { npc_invader = 9, } -export const enum OfficerLevel { - //재야 - none = 0, - - //일반 - normal = 1, - - //도시관직 - cityLeadership = 2, - cityIntel = 3, - cityStrength = 4, - +export const enum StaffLevel { //지력관직 staffIntel3 = 5, staffIntel2 = 7, @@ -70,7 +60,45 @@ export const enum OfficerLevel { //군주 lord = 12, +} + +export const enum CityOfficerLevel { + cityLeadership = 2, + cityIntel = 3, + cityStrength = 4, +} + + +//XXX: const enum의 merge가 없어? + +export const enum OfficerLevel { + //재야 + none = 0, + + //일반 + normal = 1, + + //도시관직 + cityLeadership = CityOfficerLevel.cityLeadership, + cityIntel = CityOfficerLevel.cityIntel, + cityStrength = CityOfficerLevel.cityStrength, + + //지력관직 + staffIntel3 = StaffLevel.staffIntel3, + staffIntel2 = StaffLevel.staffIntel2, + staffIntel1 = StaffLevel.staffIntel1, + + //무력관직 + staffStrength3 = StaffLevel.staffStrength3, + staffStrength2 = StaffLevel.staffStrength2, + staffStrength1 = StaffLevel.staffStrength1, + + //참모 + staffChief = StaffLevel.staffChief, + + //군주 + lord = StaffLevel.lord, } export const enum DiplomaticPermission { @@ -103,12 +131,6 @@ export const enum FrontStatus { NearEmpty = 3, } -export const enum CityOfficerLevel { - cityLeadership = 2, - cityIntel = 3, - cityStrength = 4, -} - //XXX: 기존처럼 값 하나만 유지할 것인가? export const enum CityState { //일반 @@ -135,6 +157,21 @@ export const enum CityState { thief = 9, } +//NOTE: PHP버전과 수치가 다름 +export const enum DiplomacyState{ + //중립 + neutral = 0, + + //선포중 + declare = 1, + + //전쟁중 + war = 2, + + //불가침 + inviolable = 7, +} + /* 전용 stat이어서 확장하고자 하는경우 아래와 같이 확장 가능 ```ts declare module "@/defs.js" { diff --git a/@sammo/gateway_server/src/schema/User.ts b/@sammo/gateway_server/src/schema/User.ts index 8b06972..85b3e79 100644 --- a/@sammo/gateway_server/src/schema/User.ts +++ b/@sammo/gateway_server/src/schema/User.ts @@ -38,7 +38,7 @@ export interface IUser { allowGatewayAction?: ServerActionType[]; penalty?: Map; - picture?: string; + icon?: string; useImgSvr?: boolean; regDate: Date; @@ -75,7 +75,7 @@ export const User = new Schema({ }, penalty: { type: Map, required: false, of: Date }, - picture: { type: String, required: false }, + icon: { type: String, required: false }, useImgSvr: { type: Boolean, required: false }, regDate: { type: Date, required: true },