From e44a54537767e84bcf75d6cd204ab877698667db Mon Sep 17 00:00:00 2001 From: aNNiMON Date: Sun, 10 Mar 2024 20:01:27 +0200 Subject: [PATCH] Add places and characters as separate classes --- src/view/gamemodel/CharactersES.ts | 70 ++++++++++++++++++++++++++++++ src/view/gamemodel/MapPlacesES.ts | 34 +++++++++++++++ src/view/model/Characters.ts | 62 +++----------------------- src/view/model/MapPlaces.ts | 36 +++++++++++++++ 4 files changed, 145 insertions(+), 57 deletions(-) create mode 100644 src/view/gamemodel/CharactersES.ts create mode 100644 src/view/gamemodel/MapPlacesES.ts create mode 100644 src/view/model/MapPlaces.ts diff --git a/src/view/gamemodel/CharactersES.ts b/src/view/gamemodel/CharactersES.ts new file mode 100644 index 0000000..54498c6 --- /dev/null +++ b/src/view/gamemodel/CharactersES.ts @@ -0,0 +1,70 @@ +import { Characters } from "../model/Characters"; +import { NameInfo } from "../model/NameInfo"; + +export class CharactersES extends Characters { + + public override init(): void { + this.makeNamesUnknown(); + this.makeNamesKnown(); + } + + public override makeNamesUnknown(): void { + super.makeNamesUnknown(); + // https://github.com/yakui-lover/eroge-dopil/blob/master/media.rpy#L365 + this.names["me"] = new NameInfo("Семён", 0xFFE1DD7D); + this.names["un"] = new NameInfo("Пионерка", 0xFFB956FF); + this.names["dv"] = new NameInfo("Пионерка", 0xFFFFAA00); + this.names["sl"] = new NameInfo("Пионерка", 0xFFFFD200); + this.names["us"] = new NameInfo("Пионерка", 0xFFFF3200); + this.names["mt"] = new NameInfo("Вожатая", 0xFF00EA32); + this.names["cs"] = new NameInfo("Медсестра", 0xFFA5A5FF); + this.names["mz"] = new NameInfo("Пионерка", 0xFF4A86FF); + this.names["mi"] = new NameInfo("Пионерка", 0xFF00DEFF); + this.names["uv"] = new NameInfo("Странная девочка", 0xFF4EFF00); + this.names["lk"] = new NameInfo("Луркмор-кун", 0xFFFF8080); + this.names["sh"] = new NameInfo("Пионер", 0xFFFFF226); + this.names["el"] = new NameInfo("Пионер", 0xFFFFFF00); + this.names["pi"] = new NameInfo("Пионер", 0xFFE60101); + + this.names["dy"] = new NameInfo("Голос из динамика", 0xFFC0C0C0); + this.names["voice"] = new NameInfo("Голос", 0xFFE1DD7D); + this.names["voices"] = new NameInfo("Голоса", 0xFFC0C0C0); + this.names["message"] = new NameInfo("Сообщение", 0xFFC0C0C0); + this.names["all"] = new NameInfo("Пионеры", 0xFFED4444); + this.names["kids"] = new NameInfo("Малышня", 0xFFEB7883); + this.names["dreamgirl"] = new NameInfo("...", 0xFFC0C0C0); + this.names["bush"] = new NameInfo("Голос", 0xFFC0C0C0); + this.names["FIXME_voice"] = new NameInfo("Голос", 0xFFC0C0C0); + this.names["odn"] = new NameInfo("Одногруппник", 0xFFC0C0C0); + this.names["mt_voice"] = new NameInfo("Голос", 0xFF00EA32); + } + + public override makeNamesKnown(): void { + super.makeNamesKnown(); + this.setName("me", "Семён"); + this.setName("un", "Лена"); + this.setName("dv", "Алиса"); + this.setName("sl", "Славя"); + this.setName("us", "Ульяна"); + this.setName("mt", "Ольга Дмитриевна"); + this.setName("cs", "Виола"); + this.setName("mz", "Женя"); + this.setName("mi", "Мику"); + this.setName("uv", "Юля"); + this.setName("lk", "Луркмор-кун"); + this.setName("sh", "Шурик"); + this.setName("el", "Электроник"); + this.setName("pi", "Пионер"); + this.setName("dy", "Голос из динамика"); + this.setName("voice", "Голос"); + this.setName("voices", "Голоса"); + this.setName("message", "Сообщение"); + this.setName("all", "Пионеры"); + this.setName("kids", "Малышня"); + this.setName("dreamgirl", "..."); + this.setName("bush", "Голос"); + this.setName("FIXME_voice", "Голос"); + this.setName("odn", "Одногруппник"); + this.setName("mt_voice", "Голос"); + } +} \ No newline at end of file diff --git a/src/view/gamemodel/MapPlacesES.ts b/src/view/gamemodel/MapPlacesES.ts new file mode 100644 index 0000000..3d984a4 --- /dev/null +++ b/src/view/gamemodel/MapPlacesES.ts @@ -0,0 +1,34 @@ +import { MapPlaces } from "../model/MapPlaces"; + +export class MapPlacesES extends MapPlaces { + + constructor() { + super(); + this.names["admin_house"] = "Админ. корпус"; + this.names["badminton"] = "Бадминтон"; + this.names["beach"] = "Пляж"; + this.names["boat_station"] = "Лодочная станция"; + this.names["camp_entrance"] = "Ворота в лагерь"; + this.names["clubs"] = "Клубы"; + this.names["dining_hall"] = "Столовая"; + this.names["dv_us_house"] = "Домик Ульяны и Алисы"; + this.names["estrade"] = "Сцена"; + this.names["forest"] = "Лес"; + this.names["island_nearest"] = 'Остров "Ближний"'; + this.names["library"] = "Библиотека"; + this.names["me_mt_house"] = "Домик вожатой"; + this.names["medic_house"] = "Медпункт"; + this.names["monument"] = "Памятник"; + this.names["music_club"] = "Музыкальный клуб"; + this.names["old_house"] = "Старый корпус"; + this.names["old_road"] = "Дорога к старому лагерю"; + this.names["sl_mz_house"] = "Домик Слави и Жени"; + this.names["sport_area"] = "Спортплощадка"; + this.names["square"] = "Площадь"; + this.names["store_house"] = "Склад"; + this.names["sy_sh_house"] = "Домик Электроника и Шурика"; + this.names["un_mi_house"] = "Домик Лены и Мику"; + this.names["valleyball"] = "Волейбол"; + this.names["wash_house"] = "Душевая"; + } +} \ No newline at end of file diff --git a/src/view/model/Characters.ts b/src/view/model/Characters.ts index dc0768b..2cf4b23 100644 --- a/src/view/model/Characters.ts +++ b/src/view/model/Characters.ts @@ -7,11 +7,13 @@ type NameInfoMap = { export class Characters { private static readonly DEFAULT_COLOR: number = 0xFFC0C0C0; - private names: NameInfoMap; + protected names: NameInfoMap; constructor() { this.names = {}; } + + public init(): void { } public contains(shortName: string): boolean { return shortName in this.names; @@ -32,61 +34,7 @@ export class Characters { return shortName in this.names; } - public makeNamesUnknown(): void { - // https://github.com/yakui-lover/eroge-dopil/blob/master/media.rpy#L365 - this.names["me"] = new NameInfo("Семён", 0xFFE1DD7D); - this.names["un"] = new NameInfo("Пионерка", 0xFFB956FF); - this.names["dv"] = new NameInfo("Пионерка", 0xFFFFAA00); - this.names["sl"] = new NameInfo("Пионерка", 0xFFFFD200); - this.names["us"] = new NameInfo("Пионерка", 0xFFFF3200); - this.names["mt"] = new NameInfo("Вожатая", 0xFF00EA32); - this.names["cs"] = new NameInfo("Медсестра", 0xFFA5A5FF); - this.names["mz"] = new NameInfo("Пионерка", 0xFF4A86FF); - this.names["mi"] = new NameInfo("Пионерка", 0xFF00DEFF); - this.names["uv"] = new NameInfo("Странная девочка", 0xFF4EFF00); - this.names["lk"] = new NameInfo("Луркмор-кун", 0xFFFF8080); - this.names["sh"] = new NameInfo("Пионер", 0xFFFFF226); - this.names["el"] = new NameInfo("Пионер", 0xFFFFFF00); - this.names["pi"] = new NameInfo("Пионер", 0xFFE60101); + public makeNamesUnknown(): void { } - this.names["dy"] = new NameInfo("Голос из динамика", 0xFFC0C0C0); - this.names["voice"] = new NameInfo("Голос", 0xFFE1DD7D); - this.names["voices"] = new NameInfo("Голоса", 0xFFC0C0C0); - this.names["message"] = new NameInfo("Сообщение", 0xFFC0C0C0); - this.names["all"] = new NameInfo("Пионеры", 0xFFED4444); - this.names["kids"] = new NameInfo("Малышня", 0xFFEB7883); - this.names["dreamgirl"] = new NameInfo("...", 0xFFC0C0C0); - this.names["bush"] = new NameInfo("Голос", 0xFFC0C0C0); - this.names["FIXME_voice"] = new NameInfo("Голос", 0xFFC0C0C0); - this.names["odn"] = new NameInfo("Одногруппник", 0xFFC0C0C0); - this.names["mt_voice"] = new NameInfo("Голос", 0xFF00EA32); - } - - public makeNamesKnown(): void { - this.setName("me", "Семён"); - this.setName("un", "Лена"); - this.setName("dv", "Алиса"); - this.setName("sl", "Славя"); - this.setName("us", "Ульяна"); - this.setName("mt", "Ольга Дмитриевна"); - this.setName("cs", "Виола"); - this.setName("mz", "Женя"); - this.setName("mi", "Мику"); - this.setName("uv", "Юля"); - this.setName("lk", "Луркмор-кун"); - this.setName("sh", "Шурик"); - this.setName("el", "Электроник"); - this.setName("pi", "Пионер"); - this.setName("dy", "Голос из динамика"); - this.setName("voice", "Голос"); - this.setName("voices", "Голоса"); - this.setName("message", "Сообщение"); - this.setName("all", "Пионеры"); - this.setName("kids", "Малышня"); - this.setName("dreamgirl", "..."); - this.setName("bush", "Голос"); - this.setName("FIXME_voice", "Голос"); - this.setName("odn", "Одногруппник"); - this.setName("mt_voice", "Голос"); - } + public makeNamesKnown(): void { } } \ No newline at end of file diff --git a/src/view/model/MapPlaces.ts b/src/view/model/MapPlaces.ts new file mode 100644 index 0000000..e9008fe --- /dev/null +++ b/src/view/model/MapPlaces.ts @@ -0,0 +1,36 @@ +export class MapPlaces { + protected names: {[key: string]: string}; + private zones: {[key: string]: string}; + private currentZone: string; + + constructor() { + this.names = {}; + this.zones = {}; + this.currentZone = ""; + } + + public getZones(): {[key: string]: string} { + return this.zones; + } + + public getName(key: string): string { + return this.names[key] ?? key; + } + + public disableAllZones(): void { + this.zones = {}; + this.currentZone = ""; + } + + public disableCurrentZone(): void { + delete this.zones[this.currentZone]; + } + + public resetZone(zone: string): void { + delete this.zones[zone]; + } + + public setZone(name: string, label: string): void { + this.zones[name] = label; + } +} \ No newline at end of file