Выделение класса для имён персонажей
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 TextView textview;
|
||||||
private MediaPlayer musicPlayer, soundPlayer;
|
private MediaPlayer musicPlayer, soundPlayer;
|
||||||
|
|
||||||
private Map<String, Person> names;
|
private Characters characters;
|
||||||
private Map<String, ImageView> spriteInContainer;
|
private Map<String, ImageView> spriteInContainer;
|
||||||
private DisplayMetrics displayMetrics;
|
private DisplayMetrics displayMetrics;
|
||||||
|
|
||||||
@ -69,35 +69,8 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
|||||||
|
|
||||||
spriteInContainer = new HashMap<String, ImageView>();
|
spriteInContainer = new HashMap<String, ImageView>();
|
||||||
|
|
||||||
// Маппинг <короткое_имя, имя/цвет>
|
characters = new CharactersES();
|
||||||
names = new HashMap<String, Person>();
|
characters.makeNamesKnown();
|
||||||
// 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
|
|
||||||
|
|
||||||
String scriptpath = "";
|
String scriptpath = "";
|
||||||
final Intent intent = getIntent();
|
final Intent intent = getIntent();
|
||||||
@ -290,10 +263,10 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
|||||||
|
|
||||||
public void text(String whoid, String text) {
|
public void text(String whoid, String text) {
|
||||||
if (whoid.equalsIgnoreCase("th")) text("~ " + text + " ~");
|
if (whoid.equalsIgnoreCase("th")) text("~ " + text + " ~");
|
||||||
else if (!names.containsKey(whoid)) text(text);
|
else if (!characters.contains(whoid)) text(text);
|
||||||
else {
|
else {
|
||||||
windowShow();
|
windowShow();
|
||||||
final Person person = names.get(whoid);
|
final Characters.NameInfo person = characters.get(whoid);
|
||||||
final String who = person.name;
|
final String who = person.name;
|
||||||
Spannable spannable = formatString(who + "\n" + text);
|
Spannable spannable = formatString(who + "\n" + text);
|
||||||
spannable.setSpan(new ForegroundColorSpan(person.color), 0, who.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
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);
|
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