mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-07-10 15:58:13 +07:00
Implemented proper I18N lookup of names
Implemented proper I18N lookup of names using string TBL Added StringTBLs.lookup(String) Added namestr column to ItemEntry
This commit is contained in:
@ -19,9 +19,9 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
public class StringTBL {
|
public class StringTBL {
|
||||||
private static final String TAG = "StringTBL";
|
private static final String TAG = "StringTBL";
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = !true;
|
||||||
private static final boolean DEBUG_ENTRIES = DEBUG && false;
|
private static final boolean DEBUG_ENTRIES = DEBUG && !true;
|
||||||
private static final boolean DEBUG_LOOKUP = DEBUG && false;
|
private static final boolean DEBUG_LOOKUP = DEBUG && !true;
|
||||||
|
|
||||||
public static final short CLASSIC_OFFSET = 0;
|
public static final short CLASSIC_OFFSET = 0;
|
||||||
public static final short PATCH_OFFSET = 10000;
|
public static final short PATCH_OFFSET = 10000;
|
||||||
@ -96,8 +96,9 @@ public class StringTBL {
|
|||||||
KEY.offset = entry.keyOffset - header.startIndex;
|
KEY.offset = entry.keyOffset - header.startIndex;
|
||||||
KEY.length = entry.strOffset - entry.keyOffset - 1;
|
KEY.length = entry.strOffset - entry.keyOffset - 1;
|
||||||
if (key.contentEquals(KEY)) {
|
if (key.contentEquals(KEY)) {
|
||||||
if (DEBUG_LOOKUP) Gdx.app.debug(TAG, "Took " + hashTries);
|
String value = new String(text, entry.strOffset - header.startIndex, entry.strLen - 1);
|
||||||
return new String(text, entry.strOffset - header.startIndex, entry.strLen - 1);
|
if (DEBUG_LOOKUP) Gdx.app.debug(TAG, key + " took " + hashTries + " : \"" + value + "\"");
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
@ -67,4 +67,12 @@ public class StringTBLs {
|
|||||||
public String format(int index, Object... args) {
|
public String format(int index, Object... args) {
|
||||||
return String.format(lookup(index), args);
|
return String.format(lookup(index), args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String lookup(String key) {
|
||||||
|
String str;
|
||||||
|
if ((str = patchstring.lookup(key)) != null) return str;
|
||||||
|
if ((str = expansionstring.lookup(key)) != null) return str;
|
||||||
|
if ((str = string.lookup(key)) != null) return str;
|
||||||
|
return "ERROR: " + key;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ public class ItemEntry extends Excel.Entry {
|
|||||||
public String code;
|
public String code;
|
||||||
|
|
||||||
@Column public String name;
|
@Column public String name;
|
||||||
|
@Column public String namestr;
|
||||||
@Column public int version;
|
@Column public int version;
|
||||||
@Column public String alternateGfx;
|
@Column public String alternateGfx;
|
||||||
@Column public String type;
|
@Column public String type;
|
||||||
|
@ -38,7 +38,7 @@ public class Monster extends Entity {
|
|||||||
this.monstats = monstats;
|
this.monstats = monstats;
|
||||||
this.monstats2 = Diablo.files.monstats2.get(monstats.MonStatsEx);
|
this.monstats2 = Diablo.files.monstats2.get(monstats.MonStatsEx);
|
||||||
className = monstats.Id;
|
className = monstats.Id;
|
||||||
setName(monstats.NameStr);
|
setName(monstats.NameStr.equalsIgnoreCase("dummy") ? monstats.Id : Diablo.string.lookup(monstats.NameStr));
|
||||||
setWeaponClass(monstats2.BaseW);
|
setWeaponClass(monstats2.BaseW);
|
||||||
setMode(monstats.spawnmode.isEmpty() ? "NU" : monstats.spawnmode);
|
setMode(monstats.spawnmode.isEmpty() ? "NU" : monstats.spawnmode);
|
||||||
setWalkSpeed(monstats.Velocity);
|
setWalkSpeed(monstats.Velocity);
|
||||||
|
@ -27,32 +27,14 @@ public class StaticEntity extends Entity {
|
|||||||
className = base.Description;
|
className = base.Description;
|
||||||
// FIXME: Find how this association is actually made
|
// FIXME: Find how this association is actually made
|
||||||
if (base.SubClass == 64) {
|
if (base.SubClass == 64) {
|
||||||
String levelName;
|
String levelName = Diablo.string.lookup(zone.level.LevelName);
|
||||||
int id = getLevelName(zone);
|
setName(String.format("%s\n%s", levelName, Diablo.string.lookup(base.Name)));
|
||||||
if (id != 0) {
|
|
||||||
levelName = Diablo.string.lookup(id);
|
|
||||||
} else {
|
} else {
|
||||||
levelName = zone.level.LevelName;
|
setName(base.Name.equalsIgnoreCase("dummy") ? base.Description : Diablo.string.lookup(base.Name));
|
||||||
}
|
|
||||||
setName(String.format("%s\n%s", levelName, Diablo.string.lookup(3257)));
|
|
||||||
} else {
|
|
||||||
switch (base.Id) {
|
|
||||||
case 267: setName(Diablo.string.lookup(3292)); break;
|
|
||||||
default: setName(base.Name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getLevelName(Map.Zone zone) {
|
|
||||||
switch (zone.level.Id) {
|
|
||||||
case 1: return 5055;
|
|
||||||
case 2: return 5054;
|
|
||||||
case 8: return 5048;
|
|
||||||
default: return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static StaticEntity create(Map map, Map.Zone zone, DS1 ds1, DS1.Object obj) {
|
public static StaticEntity create(Map map, Map.Zone zone, DS1 ds1, DS1.Object obj) {
|
||||||
assert obj.type == DS1.Object.STATIC_TYPE;
|
assert obj.type == DS1.Object.STATIC_TYPE;
|
||||||
|
|
||||||
@ -173,7 +155,11 @@ public class StaticEntity extends Entity {
|
|||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:
|
case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:
|
||||||
case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18:
|
break;
|
||||||
|
// Rogue Bonfire
|
||||||
|
case 10:
|
||||||
|
break;
|
||||||
|
case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Gdx.app.error(TAG, "Invalid ClientFn for " + getName() + ": " + base.ClientFn);
|
Gdx.app.error(TAG, "Invalid ClientFn for " + getName() + ": " + base.ClientFn);
|
||||||
|
@ -362,12 +362,12 @@ public class Item extends Actor implements Disposable {
|
|||||||
case HIGH:
|
case HIGH:
|
||||||
if ((flags & RUNEWORD) == RUNEWORD) {
|
if ((flags & RUNEWORD) == RUNEWORD) {
|
||||||
int runeword = RunewordData.id(runewordData);
|
int runeword = RunewordData.id(runewordData);
|
||||||
name.append(Diablo.files.Runes.get(runeword).Rune_Name);
|
name.append(Diablo.string.lookup(Diablo.files.Runes.get(runeword).Name));
|
||||||
break;
|
break;
|
||||||
} else if (socketsFilled > 0) {
|
} else if (socketsFilled > 0) {
|
||||||
name.append(Diablo.string.lookup(1728)) // Gemmed
|
name.append(Diablo.string.lookup(1728)) // Gemmed
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(base.name);
|
.append(Diablo.string.lookup(base.namestr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,47 +375,47 @@ public class Item extends Actor implements Disposable {
|
|||||||
case LOW:
|
case LOW:
|
||||||
name.append(Diablo.string.lookup(LowQuality.valueOf(qualityId).stringId))
|
name.append(Diablo.string.lookup(LowQuality.valueOf(qualityId).stringId))
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(base.name);
|
.append(Diablo.string.lookup(base.namestr));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HIGH:
|
case HIGH:
|
||||||
name.append(Diablo.string.lookup(1727)) // Superior
|
name.append(Diablo.string.lookup(1727)) // Superior
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(base.name);
|
.append(Diablo.string.lookup(base.namestr));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
name.append(base.name);
|
name.append(Diablo.string.lookup(base.namestr));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MAGIC:
|
case MAGIC:
|
||||||
prefix = qualityId & MAGIC_AFFIX_MASK;
|
prefix = qualityId & MAGIC_AFFIX_MASK;
|
||||||
suffix = qualityId >>> MAGIC_AFFIX_SIZE;
|
suffix = qualityId >>> MAGIC_AFFIX_SIZE;
|
||||||
if ((affix = Diablo.files.MagicPrefix.get(prefix)) != null) name.append(affix.name).append(' ');
|
if ((affix = Diablo.files.MagicPrefix.get(prefix)) != null) name.append(Diablo.string.lookup(affix.name)).append(' ');
|
||||||
name.append(base.name);
|
name.append(Diablo.string.lookup(base.namestr));
|
||||||
if ((affix = Diablo.files.MagicSuffix.get(suffix)) != null) name.append(' ').append(affix.name);
|
if ((affix = Diablo.files.MagicSuffix.get(suffix)) != null) name.append(' ').append(Diablo.string.lookup(affix.name));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RARE:
|
case RARE:
|
||||||
case CRAFTED:
|
case CRAFTED:
|
||||||
prefix = qualityId & RARE_AFFIX_MASK;
|
prefix = qualityId & RARE_AFFIX_MASK;
|
||||||
suffix = qualityId >>> RARE_AFFIX_SIZE;
|
suffix = qualityId >>> RARE_AFFIX_SIZE;
|
||||||
name.append(Diablo.files.RarePrefix.get(prefix).name)
|
name.append(Diablo.string.lookup(Diablo.files.RarePrefix.get(prefix).name))
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append(Diablo.files.RareSuffix.get(suffix).name);
|
.append(Diablo.string.lookup(Diablo.files.RareSuffix.get(suffix).name));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SET:
|
case SET:
|
||||||
name.append(Diablo.files.SetItems.get(qualityId).index);
|
name.append(Diablo.string.lookup(Diablo.files.SetItems.get(qualityId).index));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNIQUE:
|
case UNIQUE:
|
||||||
name.append(Diablo.files.UniqueItems.get(qualityId).index);
|
name.append(Diablo.string.lookup(Diablo.files.UniqueItems.get(qualityId).index));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
name.append(base.name);
|
name.append(Diablo.string.lookup(base.namestr));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.name = name.toString();
|
this.name = name.toString();
|
||||||
@ -590,7 +590,7 @@ public class Item extends Actor implements Disposable {
|
|||||||
|
|
||||||
BitmapFont font = Diablo.fonts.font16;
|
BitmapFont font = Diablo.fonts.font16;
|
||||||
name = new Label(Item.this.getName(), font);
|
name = new Label(Item.this.getName(), font);
|
||||||
type = new Label(base.name, font);
|
type = new Label(Diablo.string.lookup(base.namestr), font);
|
||||||
switch (quality) {
|
switch (quality) {
|
||||||
case LOW:
|
case LOW:
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
|
Reference in New Issue
Block a user