From 7ec895bb014f5298b936c1d7668d75d97bde85b1 Mon Sep 17 00:00:00 2001 From: Eric Frechette Date: Wed, 8 Mar 2017 21:33:15 -0800 Subject: [PATCH] Cleaned up SkillTemplateService --- .../experience/SkillTemplateService.java | 114 +++++++++--------- 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/src/services/experience/SkillTemplateService.java b/src/services/experience/SkillTemplateService.java index 4f325c787..cc711ae4b 100644 --- a/src/services/experience/SkillTemplateService.java +++ b/src/services/experience/SkillTemplateService.java @@ -65,13 +65,27 @@ import services.objects.StaticItemService; public final class SkillTemplateService extends Service { private final Map skillTemplates; + private final Map badgeNames; private Map 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 loadRewardItemsIff(DatatableData rewardsTable) { + HashMap 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); } } }