Cleaned up SkillTemplateService

This commit is contained in:
Eric Frechette
2017-03-08 21:33:15 -08:00
parent bafd35ae5b
commit 7ec895bb01
@@ -65,13 +65,27 @@ import services.objects.StaticItemService;
public final class SkillTemplateService extends Service {
private final Map<String, String[]> skillTemplates;
private final Map<String, String[]> badgeNames;
private Map<String, RoadmapReward> rewards;
private DatatableData rewardsTable;
public SkillTemplateService() {
skillTemplates = new HashMap<>();
rewards = new HashMap<>();
rewardsTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/roadmap/item_rewards.iff");
badgeNames = new HashMap<>();
badgeNames.put("bounty_hunter_1a", new String[]{"new_prof_bountyhunter_master"});
badgeNames.put("commando_1a", new String[]{"new_prof_commando_master"});
badgeNames.put("entertainer_1a", new String[]{"new_prof_social_entertainer_master"});
badgeNames.put("force_sensitive_1a",new String[]{"new_prof_jedi_master"});
badgeNames.put("medic_1a", new String[]{"new_prof_medic_master"});
badgeNames.put("officer_1a", new String[]{"new_prof_officer_master"});
badgeNames.put("smuggler_1a", new String[]{"new_prof_smuggler_master"});
badgeNames.put("spy_1a", new String[]{"new_prof_spy_master"});
// All traders become Master Merchants and Master Artisans
badgeNames.put("trader_0a", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_chef_master", "new_prof_crafting_tailor_master"});
badgeNames.put("trader_0b", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_architect_master"});
badgeNames.put("trader_0c", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_armorsmith_master", "new_prof_crafting_weaponsmith_master"});
badgeNames.put("trader_0d", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_droidengineer_master"});
registerForIntent(LevelChangedIntent.class, lci -> handleLevelChangedIntent(lci));
}
@@ -86,7 +100,8 @@ public final class SkillTemplateService extends Service {
skillTemplates.put(profession, templates);
}
loadRewardItemsIff();
DatatableData rewardsTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/roadmap/item_rewards.iff");
rewards = loadRewardItemsIff(rewardsTable);
return super.initialize();
}
@@ -125,14 +140,27 @@ public final class SkillTemplateService extends Service {
}
}
if (skillUp) {
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage("clienteffect/skill_granted.cef", "", objectId));
player.sendPacket(new ShowFlyText(objectId, new StringId("cbt_spam", "skill_up"), Scale.LARGEST, new RGB(Color.GREEN)));
player.sendPacket(new PlayMusicMessage(0, "sound/music_acq_bountyhunter.snd", 1, false));
} else {
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage("clienteffect/level_granted.cef", "", objectId));
player.sendPacket(new ShowFlyText(objectId, new StringId("cbt_spam", "level_up"), Scale.LARGEST, new RGB(Color.BLUE)));
String effectFile;
String flyText;
RGB flyTextColor;
if (skillUp)
{
effectFile = "clienteffect/skill_granted.cef";
flyText = "skill_up";
flyTextColor = new RGB(Color.GREEN);
}
else
{
effectFile = "clienteffect/level_granted.cef";
flyText = "level_up";
flyTextColor = new RGB(Color.BLUE);
}
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage(effectFile, "", objectId));
player.sendPacket(new ShowFlyText(objectId, new StringId("cbt_spam", flyText), Scale.LARGEST, flyTextColor));
if (skillUp) player.sendPacket(new PlayMusicMessage(0, "sound/music_acq_bountyhunter.snd", 1, false));
}
private void giveRewardItems(CreatureObject creatureObject, String skillName) {
@@ -173,7 +201,9 @@ public final class SkillTemplateService extends Service {
}
}
private void loadRewardItemsIff() {
private HashMap<String, RoadmapReward> loadRewardItemsIff(DatatableData rewardsTable) {
HashMap<String, RoadmapReward> rewards = new HashMap<>();
for (int row = 0; row < rewardsTable.getRowCount(); row++) {
String roadmapTemplate = rewardsTable.getCell(row, 0).toString();
String roadmapSkillName = rewardsTable.getCell(row, 1).toString();
@@ -185,58 +215,24 @@ public final class SkillTemplateService extends Service {
rewards.put(roadmapSkillName, new RoadmapReward(roadmapTemplate, roadmapSkillName, appearanceName, stringId, itemDefault, itemWookiee, itemIthorian));
}
return rewards;
}
private void grantMasteryBadge(CreatureObject creature, String profession, String skillName) {
Log.d("grantMasteryBadge - skillName: %s", skillName);
if (skillName.endsWith("_phase4_master")) {
if (profession.startsWith("trader_0")) {
// All traders become Master Merchants and Master Artisans
new GrantBadgeIntent(creature, "new_prof_crafting_merchant_master").broadcast();
new GrantBadgeIntent(creature, "new_prof_crafting_artisan_master").broadcast();
if (badgeNames.containsKey(profession)) {
String[] badgeList = badgeNames.get(profession);
for (String badgeName : badgeList)
{
new GrantBadgeIntent(creature, badgeName).broadcast();
Log.d("granting badge %s to %s", badgeName, creature);
}
}
switch (profession) {
case "bounty_hunter_1a":
new GrantBadgeIntent(creature, "new_prof_bountyhunter_master").broadcast();
break;
case "commando_1a":
new GrantBadgeIntent(creature, "new_prof_commando_master").broadcast();
break;
case "entertainer_1a":
new GrantBadgeIntent(creature, "new_prof_social_entertainer_master").broadcast();
break;
case "force_sensitive_1a":
new GrantBadgeIntent(creature, "new_prof_jedi_master").broadcast();
break;
case "medic_1a":
new GrantBadgeIntent(creature, "new_prof_medic_master").broadcast();
break;
case "officer_1a":
new GrantBadgeIntent(creature, "new_prof_officer_master").broadcast();
break;
case "smuggler_1a":
new GrantBadgeIntent(creature, "new_prof_smuggler_master").broadcast();
break;
case "spy_1a":
new GrantBadgeIntent(creature, "new_prof_spy_master").broadcast();
break;
case "trader_0a":
new GrantBadgeIntent(creature, "new_prof_crafting_chef_master").broadcast();
new GrantBadgeIntent(creature, "new_prof_crafting_tailor_master").broadcast();
break;
case "trader_0b":
new GrantBadgeIntent(creature, "new_prof_crafting_architect_master").broadcast();
break;
case "trader_0c":
new GrantBadgeIntent(creature, "new_prof_crafting_armorsmith_master").broadcast();
new GrantBadgeIntent(creature, "new_prof_crafting_weaponsmith_master").broadcast();
break;
case "trader_0d":
new GrantBadgeIntent(creature, "new_prof_crafting_droidengineer_master").broadcast();
break;
default:
Log.e("%s could not be granted a mastery badge because their profession %s is unrecognised", creature, profession);
break;
else
{
Log.e("%s could not be granted a mastery badge because their profession %s is unrecognised", creature, profession);
}
}
}