Выделение класса для имён персонажей
This commit is contained in:
parent
5c1d1eb841
commit
17b0568710
68
src/com/annimon/everlastingsummer/Characters.java
Normal file
68
src/com/annimon/everlastingsummer/Characters.java
Normal file
@ -0,0 +1,68 @@
|
||||
package com.annimon.everlastingsummer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Работа с персонажами.
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public class Characters {
|
||||
|
||||
private static final int DEFAULT_COLOR = 0xFFC0C0C0;
|
||||
|
||||
/** Маппинг <короткое имя, полное имя/цвет> */
|
||||
protected final Map<String, NameInfo> names;
|
||||
|
||||
public Characters() {
|
||||
this.names = new HashMap<String, NameInfo>();
|
||||
makeNamesUnknown();
|
||||
}
|
||||
|
||||
public boolean contains(String shortName) {
|
||||
return names.containsKey(shortName);
|
||||
}
|
||||
|
||||
public NameInfo get(String shortName) {
|
||||
return names.get(shortName);
|
||||
}
|
||||
|
||||
public void setName(String shortName, String fullName) {
|
||||
if (names.containsKey(shortName)) {
|
||||
NameInfo info = names.get(shortName);
|
||||
info.name = fullName;
|
||||
} else {
|
||||
names.put(shortName, new NameInfo(fullName));
|
||||
}
|
||||
}
|
||||
|
||||
public void setName(String shortName, String fullName, int color) {
|
||||
if (names.containsKey(shortName)) {
|
||||
NameInfo info = names.get(shortName);
|
||||
info.name = fullName;
|
||||
info.color = color;
|
||||
} else {
|
||||
names.put(shortName, new NameInfo(fullName, color));
|
||||
}
|
||||
}
|
||||
|
||||
public void makeNamesUnknown() {
|
||||
names.clear();
|
||||
}
|
||||
|
||||
public void makeNamesKnown() {
|
||||
}
|
||||
|
||||
public static class NameInfo {
|
||||
String name;
|
||||
int color;
|
||||
protected NameInfo(String fullName) {
|
||||
this.name = fullName;
|
||||
this.color = DEFAULT_COLOR;
|
||||
}
|
||||
protected NameInfo(String fullName, int color) {
|
||||
this.name = fullName;
|
||||
this.color = color;
|
||||
}
|
||||
}
|
||||
}
|
70
src/com/annimon/everlastingsummer/CharactersES.java
Normal file
70
src/com/annimon/everlastingsummer/CharactersES.java
Normal file
@ -0,0 +1,70 @@
|
||||
package com.annimon.everlastingsummer;
|
||||
|
||||
/**
|
||||
* Персонажи бесконечного лета.
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public final class CharactersES extends Characters {
|
||||
|
||||
@Override
|
||||
public void makeNamesUnknown() {
|
||||
super.makeNamesUnknown();
|
||||
// https://github.com/yakui-lover/eroge-dopil/blob/master/media.rpy#L365
|
||||
names.put("me", new NameInfo("Семён", 0xFFE1DD7D));
|
||||
names.put("un", new NameInfo("Пионерка", 0xFFB956FF));
|
||||
names.put("dv", new NameInfo("Пионерка", 0xFFFFAA00));
|
||||
names.put("sl", new NameInfo("Пионерка", 0xFFFFD200));
|
||||
names.put("us", new NameInfo("Пионерка", 0xFFFF3200));
|
||||
names.put("mt", new NameInfo("Вожатая", 0xFF00EA32));
|
||||
names.put("cs", new NameInfo("Медсестра", 0xFFA5A5FF));
|
||||
names.put("mz", new NameInfo("Пионерка", 0xFF4A86FF));
|
||||
names.put("mi", new NameInfo("Пионерка", 0xFF00DEFF));
|
||||
names.put("uv", new NameInfo("Странная девочка", 0xFF4EFF00));
|
||||
names.put("lk", new NameInfo("Луркмор-кун", 0xFFFF8080));
|
||||
names.put("sh", new NameInfo("Пионер", 0xFFFFF226));
|
||||
names.put("el", new NameInfo("Пионер", 0xFFFFFF00));
|
||||
names.put("pi", new NameInfo("Пионер", 0xFFE60101));
|
||||
|
||||
names.put("dy", new NameInfo("Голос из динамика", 0xFFC0C0C0));
|
||||
names.put("voice", new NameInfo("Голос", 0xFFE1DD7D));
|
||||
names.put("voices", new NameInfo("Голоса", 0xFFC0C0C0));
|
||||
names.put("message", new NameInfo("Сообщение", 0xFFC0C0C0));
|
||||
names.put("all", new NameInfo("Пионеры", 0xFFED4444));
|
||||
names.put("kids", new NameInfo("Малышня", 0xFFEB7883));
|
||||
names.put("dreamgirl", new NameInfo("...", 0xFFC0C0C0));
|
||||
names.put("bush", new NameInfo("Голос", 0xFFC0C0C0));
|
||||
names.put("FIXME_voice", new NameInfo("Голос", 0xFFC0C0C0));
|
||||
names.put("odn", new NameInfo("Одногруппник", 0xFFC0C0C0));
|
||||
names.put("mt_voice", new NameInfo("Голос", 0xFF00EA32));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void makeNamesKnown() {
|
||||
super.makeNamesKnown();
|
||||
setName("me", "Семён");
|
||||
setName("un", "Лена");
|
||||
setName("dv", "Алиса");
|
||||
setName("sl", "Славя");
|
||||
setName("us", "Ульяна");
|
||||
setName("mt", "Ольга Дмитриевна");
|
||||
setName("cs", "Виола");
|
||||
setName("mz", "Женя");
|
||||
setName("mi", "Мику");
|
||||
setName("uv", "Юля");
|
||||
setName("lk", "Луркмор-кун");
|
||||
setName("sh", "Шурик");
|
||||
setName("el", "Электроник");
|
||||
setName("pi", "Пионер");
|
||||
setName("dy", "Голос из динамика");
|
||||
setName("voice", "Голос");
|
||||
setName("voices", "Голоса");
|
||||
setName("message", "Сообщение");
|
||||
setName("all", "Пионеры");
|
||||
setName("kids", "Малышня");
|
||||
setName("dreamgirl", "...");
|
||||
setName("bush", "Голос");
|
||||
setName("FIXME_voice", "Голос");
|
||||
setName("odn", "Одногруппник");
|
||||
setName("mt_voice", "Голос");
|
||||
}
|
||||
}
|
@ -42,7 +42,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
||||
private TextView textview;
|
||||
private MediaPlayer musicPlayer, soundPlayer;
|
||||
|
||||
private Map<String, Person> names;
|
||||
private Characters characters;
|
||||
private Map<String, ImageView> spriteInContainer;
|
||||
private DisplayMetrics displayMetrics;
|
||||
|
||||
@ -69,35 +69,8 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
||||
|
||||
spriteInContainer = new HashMap<String, ImageView>();
|
||||
|
||||
// Маппинг <короткое_имя, имя/цвет>
|
||||
names = new HashMap<String, Person>();
|
||||
// https://github.com/yakui-lover/eroge-dopil/blob/master/media.rpy#L365
|
||||
names.put("me", new Person("Семён", 0xFFE1DD7D));
|
||||
names.put("un", new Person("Лена", 0xFFB956FF)); // night 0xFFAA64D9, sunset: 0xFFB956FF, day: 0xFFB956FF, prolog: 0xFFB956FF
|
||||
names.put("dv", new Person("Алиса", 0xFFFFAA00)); // night 0xFFD28B10, sunset: 0xFFFFAA00, day: 0xFFFFAA00, prolog: 0xFFFFAA00
|
||||
names.put("sl", new Person("Славя", 0xFFFFD200)); // night 0xFFD6B000, sunset: 0xFFFFD200, day: 0xFFFFD200, prolog: 0xFFFFD200
|
||||
names.put("us", new Person("Ульяна", 0xFFFF3200)); // night 0xFFEA3700, sunset: 0xFFFF3200, day: 0xFFFF3200, prolog: 0xFFFF3200
|
||||
names.put("mt", new Person("Ольга Дмитриевна", 0xFF00EA32)); // night 0xFF00B627, sunset: 0xFF00EA32, day: 0xFF00EA32, prolog: 0xFF00EA32
|
||||
names.put("cs", new Person("Виола", 0xFFA5A5FF)); // night 0xFF8686E6, sunset: 0xFFA5A5FF, day: 0xFFA5A5FF, prolog: 0xFFA5A5FF
|
||||
names.put("mz", new Person("Женя", 0xFF4A86FF)); // night 0xFF5481DB, sunset: 0xFF72A0FF, day: 0xFF4A86FF, prolog: 0xFF4A86FF
|
||||
names.put("mi", new Person("Мику", 0xFF00DEFF)); // night 0xFF00B4CF, sunset: 0xFF00FBFF, day: 0xFF00DEFF, prolog: 0xFF00DEFF
|
||||
names.put("uv", new Person("Юля", 0xFF4EFF00)); // night 0xFF40D000, sunset: 0xFF4EFF00, day: 0xFF4EFF00, prolog: 0xFF4EFF00
|
||||
names.put("lk", new Person("Луркмор-кун", 0xFFFF8080));
|
||||
names.put("sh", new Person("Шурик", 0xFFFFF226)); // night 0xFFCDC212, sunset: 0xFFFFF226, day: 0xFFFFF226, prolog: 0xFFFFF226
|
||||
names.put("el", new Person("Электроник", 0xFFFFFF00)); // night 0xFFCDCD00, sunset: 0xFFFFFF00, day: 0xFFFFFF00, prolog: 0xFFFFFF00
|
||||
names.put("pi", new Person("Пионер", 0xFFE60101)); // night 0xFFE60000, sunset: 0xFFE60000, day: 0xFFE60101, prolog: 0xFFE60000
|
||||
|
||||
names.put("dy", new Person("Голос из динамика", 0xFFC0C0C0));
|
||||
names.put("voice", new Person("Голос", 0xFFE1DD7D));
|
||||
names.put("voices", new Person("Голоса", 0xFFC0C0C0));
|
||||
names.put("message", new Person("Сообщение", 0xFFC0C0C0));
|
||||
names.put("all", new Person("Пионеры", 0xFFED4444)); // night 0xFFE33A3A, sunset: 0xFFE33A3A, day: 0xFFED4444, prolog: 0xFFE33A3A
|
||||
names.put("kids", new Person("Малышня", 0xFFEB7883));
|
||||
names.put("dreamgirl", new Person("...", 0xFFC0C0C0));
|
||||
names.put("bush", new Person("Голос", 0xFFC0C0C0));
|
||||
names.put("FIXME_voice", new Person("Голос", 0xFFC0C0C0));
|
||||
names.put("odn", new Person("Одногруппник", 0xFFC0C0C0));
|
||||
names.put("mt_voice", new Person("Голос", 0xFF00EA32)); // night 0xFF00B627, sunset: 0xFF00EA32, day: 0xFF00EA32, prolog: 0xFF00EA32
|
||||
characters = new CharactersES();
|
||||
characters.makeNamesKnown();
|
||||
|
||||
String scriptpath = "";
|
||||
final Intent intent = getIntent();
|
||||
@ -290,10 +263,10 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
||||
|
||||
public void text(String whoid, String text) {
|
||||
if (whoid.equalsIgnoreCase("th")) text("~ " + text + " ~");
|
||||
else if (!names.containsKey(whoid)) text(text);
|
||||
else if (!characters.contains(whoid)) text(text);
|
||||
else {
|
||||
windowShow();
|
||||
final Person person = names.get(whoid);
|
||||
final Characters.NameInfo person = characters.get(whoid);
|
||||
final String who = person.name;
|
||||
Spannable spannable = formatString(who + "\n" + text);
|
||||
spannable.setSpan(new ForegroundColorSpan(person.color), 0, who.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
@ -392,13 +365,4 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
||||
onMenuItemSelected(item);
|
||||
}
|
||||
};
|
||||
|
||||
private class Person {
|
||||
String name;
|
||||
int color;
|
||||
Person(String fullName, int color) {
|
||||
this.name = fullName;
|
||||
this.color = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user