Add places and characters as separate classes

This commit is contained in:
aNNiMON 2024-03-10 20:01:27 +02:00
parent 860398a340
commit e44a545377
4 changed files with 145 additions and 57 deletions

View File

@ -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", "Голос");
}
}

View File

@ -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"] = "Душевая";
}
}

View File

@ -7,12 +7,14 @@ 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 { }
}

View File

@ -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;
}
}