mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-22 03:19:12 +01:00
Added requirements to skills (other skills, stats or levels)
Unlimited number of savegame slots. Added "quests" as tab to character screen. Added display type string to item info page (Quest item/Rare/Exceptional/Legendary). Bugfixes (thanks Samuel) Updated French translation (thanks Misty Soul) git-svn-id: https://andors-trail.googlecode.com/svn/trunk@137 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
@@ -44,10 +44,13 @@
|
||||
<activity android:name=".activity.LoadingActivity" />
|
||||
<activity android:name=".activity.Preferences" />
|
||||
<activity android:name=".activity.LoadSaveActivity" android:theme="@android:style/Theme.Dialog" />
|
||||
<activity android:name=".activity.QuestLogActivity" />
|
||||
<activity android:name=".activity.ActorConditionInfoActivity" android:theme="@android:style/Theme.Dialog" />
|
||||
<activity android:name=".activity.BulkSelectionInterface" android:theme="@android:style/Theme.Dialog" />
|
||||
<activity android:name=".activity.SkillInfoActivity" android:theme="@android:style/Theme.Dialog" />
|
||||
<activity android:name=".activity.HeroinfoActivity_Quests" />
|
||||
<activity android:name=".activity.HeroinfoActivity_Stats" />
|
||||
<activity android:name=".activity.HeroinfoActivity_Skills" />
|
||||
<activity android:name=".activity.HeroinfoActivity_Inventory" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
||||
|
||||
@@ -185,164 +185,160 @@ public final class R {
|
||||
public static final int conversation_next=0x7f090028;
|
||||
public static final int conversation_statements=0x7f090027;
|
||||
public static final int conversation_text=0x7f09002b;
|
||||
public static final int heroinfo_ap=0x7f090040;
|
||||
public static final int heroinfo_currentconditions=0x7f090047;
|
||||
public static final int heroinfo_currentconditions_title=0x7f090046;
|
||||
public static final int heroinfo_currenttraits=0x7f090044;
|
||||
public static final int heroinfo_expbar=0x7f090043;
|
||||
public static final int heroinfo_healthbar=0x7f090042;
|
||||
public static final int heroinfo_image=0x7f09003c;
|
||||
public static final int heroinfo_itemeffects=0x7f090045;
|
||||
public static final int heroinfo_level=0x7f09003e;
|
||||
public static final int heroinfo_levelup=0x7f090048;
|
||||
public static final int heroinfo_listskills_list=0x7f09003b;
|
||||
public static final int heroinfo_listskills_number_of_increases=0x7f09003a;
|
||||
public static final int heroinfo_movecost=0x7f090041;
|
||||
public static final int heroinfo_quests=0x7f090049;
|
||||
public static final int heroinfo_stats_attack=0x7f09004b;
|
||||
public static final int heroinfo_stats_defense=0x7f09004c;
|
||||
public static final int heroinfo_stats_gold=0x7f09004a;
|
||||
public static final int heroinfo_tab1=0x7f09002c;
|
||||
public static final int heroinfo_tab2=0x7f09002d;
|
||||
public static final int heroinfo_tab3=0x7f09002e;
|
||||
public static final int heroinfo_title=0x7f09003d;
|
||||
public static final int heroinfo_totalexperience=0x7f09003f;
|
||||
public static final int heroinfo_worn_body=0x7f090031;
|
||||
public static final int heroinfo_worn_center=0x7f09002f;
|
||||
public static final int heroinfo_worn_feet=0x7f090034;
|
||||
public static final int heroinfo_worn_hand=0x7f090033;
|
||||
public static final int heroinfo_worn_head=0x7f090030;
|
||||
public static final int heroinfo_worn_neck=0x7f090032;
|
||||
public static final int heroinfo_worn_ringleft=0x7f090036;
|
||||
public static final int heroinfo_worn_ringright=0x7f090038;
|
||||
public static final int heroinfo_worn_shield=0x7f090037;
|
||||
public static final int heroinfo_worn_weapon=0x7f090035;
|
||||
public static final int inv_assign_slot1=0x7f0900c4;
|
||||
public static final int inv_assign_slot2=0x7f0900c5;
|
||||
public static final int inv_assign_slot3=0x7f0900c6;
|
||||
public static final int inv_image=0x7f09004d;
|
||||
public static final int inv_menu_assign=0x7f0900c3;
|
||||
public static final int inv_menu_drop=0x7f0900c2;
|
||||
public static final int inv_menu_equip=0x7f0900bf;
|
||||
public static final int inv_menu_info=0x7f0900be;
|
||||
public static final int inv_menu_unequip=0x7f0900c0;
|
||||
public static final int inv_menu_use=0x7f0900c1;
|
||||
public static final int inv_text=0x7f09004e;
|
||||
public static final int inventorylist_root=0x7f090039;
|
||||
public static final int itemeffect_onequip_abilitymodifierinfo=0x7f090050;
|
||||
public static final int itemeffect_onequip_conditions=0x7f090051;
|
||||
public static final int itemeffect_onequip_title=0x7f09004f;
|
||||
public static final int itemeffect_onhit=0x7f090055;
|
||||
public static final int itemeffect_onhit_title=0x7f090054;
|
||||
public static final int itemeffect_onkill=0x7f090057;
|
||||
public static final int itemeffect_onkill_title=0x7f090056;
|
||||
public static final int itemeffect_onuse=0x7f090053;
|
||||
public static final int itemeffect_onuse_conditions_source=0x7f09005a;
|
||||
public static final int itemeffect_onuse_conditions_source_title=0x7f090059;
|
||||
public static final int itemeffect_onuse_conditions_target=0x7f09005c;
|
||||
public static final int itemeffect_onuse_conditions_target_title=0x7f09005b;
|
||||
public static final int itemeffect_onuse_list=0x7f090058;
|
||||
public static final int itemeffect_onuse_title=0x7f090052;
|
||||
public static final int iteminfo_action=0x7f090061;
|
||||
public static final int iteminfo_category=0x7f09005f;
|
||||
public static final int iteminfo_close=0x7f090062;
|
||||
public static final int iteminfo_effects=0x7f090060;
|
||||
public static final int iteminfo_image=0x7f09005d;
|
||||
public static final int iteminfo_title=0x7f09005e;
|
||||
public static final int levelup_add_attackchance=0x7f090066;
|
||||
public static final int levelup_add_attackdamage=0x7f090067;
|
||||
public static final int levelup_add_blockchance=0x7f090068;
|
||||
public static final int levelup_add_health=0x7f090065;
|
||||
public static final int levelup_adds_new_skillpoint=0x7f090069;
|
||||
public static final int levelup_description=0x7f090064;
|
||||
public static final int levelup_image=0x7f090063;
|
||||
public static final int loadsave_description=0x7f09006d;
|
||||
public static final int loadsave_image=0x7f09006b;
|
||||
public static final int loadsave_slot_1=0x7f09006e;
|
||||
public static final int loadsave_slot_2=0x7f09006f;
|
||||
public static final int loadsave_slot_3=0x7f090070;
|
||||
public static final int loadsave_slot_4=0x7f090071;
|
||||
public static final int loadsave_title=0x7f09006c;
|
||||
public static final int loadsave_titlelayout=0x7f09006a;
|
||||
public static final int main_combatview=0x7f090075;
|
||||
public static final int main_container=0x7f090072;
|
||||
public static final int main_mainview=0x7f090076;
|
||||
public static final int main_quickitemview=0x7f090074;
|
||||
public static final int main_statusview=0x7f090073;
|
||||
public static final int main_virtual_dpad=0x7f090079;
|
||||
public static final int monsterencounter_attack=0x7f09007d;
|
||||
public static final int monsterencounter_cancel=0x7f09007f;
|
||||
public static final int monsterencounter_description=0x7f09007c;
|
||||
public static final int monsterencounter_image=0x7f09007a;
|
||||
public static final int monsterencounter_info=0x7f09007e;
|
||||
public static final int monsterencounter_title=0x7f09007b;
|
||||
public static final int monsterinfo_close=0x7f090086;
|
||||
public static final int monsterinfo_currenttraits=0x7f090084;
|
||||
public static final int monsterinfo_difficulty=0x7f090082;
|
||||
public static final int monsterinfo_healthbar=0x7f090083;
|
||||
public static final int monsterinfo_image=0x7f090080;
|
||||
public static final int monsterinfo_onhiteffects=0x7f090085;
|
||||
public static final int monsterinfo_title=0x7f090081;
|
||||
public static final int questlog_contents=0x7f090088;
|
||||
public static final int questlog_entrytext=0x7f090089;
|
||||
public static final int questlog_includecompleted=0x7f090087;
|
||||
public static final int heroinfo_ap=0x7f09003d;
|
||||
public static final int heroinfo_currentconditions=0x7f090044;
|
||||
public static final int heroinfo_currentconditions_title=0x7f090043;
|
||||
public static final int heroinfo_currenttraits=0x7f090041;
|
||||
public static final int heroinfo_expbar=0x7f090040;
|
||||
public static final int heroinfo_healthbar=0x7f09003f;
|
||||
public static final int heroinfo_image=0x7f090039;
|
||||
public static final int heroinfo_itemeffects=0x7f090042;
|
||||
public static final int heroinfo_level=0x7f09003b;
|
||||
public static final int heroinfo_levelup=0x7f090045;
|
||||
public static final int heroinfo_listskills_list=0x7f090038;
|
||||
public static final int heroinfo_listskills_number_of_increases=0x7f090037;
|
||||
public static final int heroinfo_movecost=0x7f09003e;
|
||||
public static final int heroinfo_stats_attack=0x7f090047;
|
||||
public static final int heroinfo_stats_defense=0x7f090048;
|
||||
public static final int heroinfo_stats_gold=0x7f090046;
|
||||
public static final int heroinfo_title=0x7f09003a;
|
||||
public static final int heroinfo_totalexperience=0x7f09003c;
|
||||
public static final int heroinfo_worn_body=0x7f09002e;
|
||||
public static final int heroinfo_worn_center=0x7f09002c;
|
||||
public static final int heroinfo_worn_feet=0x7f090031;
|
||||
public static final int heroinfo_worn_hand=0x7f090030;
|
||||
public static final int heroinfo_worn_head=0x7f09002d;
|
||||
public static final int heroinfo_worn_neck=0x7f09002f;
|
||||
public static final int heroinfo_worn_ringleft=0x7f090033;
|
||||
public static final int heroinfo_worn_ringright=0x7f090035;
|
||||
public static final int heroinfo_worn_shield=0x7f090034;
|
||||
public static final int heroinfo_worn_weapon=0x7f090032;
|
||||
public static final int inv_assign_slot1=0x7f0900c0;
|
||||
public static final int inv_assign_slot2=0x7f0900c1;
|
||||
public static final int inv_assign_slot3=0x7f0900c2;
|
||||
public static final int inv_image=0x7f090049;
|
||||
public static final int inv_menu_assign=0x7f0900bf;
|
||||
public static final int inv_menu_drop=0x7f0900be;
|
||||
public static final int inv_menu_equip=0x7f0900bb;
|
||||
public static final int inv_menu_info=0x7f0900ba;
|
||||
public static final int inv_menu_unequip=0x7f0900bc;
|
||||
public static final int inv_menu_use=0x7f0900bd;
|
||||
public static final int inv_text=0x7f09004a;
|
||||
public static final int inventorylist_root=0x7f090036;
|
||||
public static final int itemeffect_onequip_abilitymodifierinfo=0x7f09004c;
|
||||
public static final int itemeffect_onequip_conditions=0x7f09004d;
|
||||
public static final int itemeffect_onequip_title=0x7f09004b;
|
||||
public static final int itemeffect_onhit=0x7f090051;
|
||||
public static final int itemeffect_onhit_title=0x7f090050;
|
||||
public static final int itemeffect_onkill=0x7f090053;
|
||||
public static final int itemeffect_onkill_title=0x7f090052;
|
||||
public static final int itemeffect_onuse=0x7f09004f;
|
||||
public static final int itemeffect_onuse_conditions_source=0x7f090056;
|
||||
public static final int itemeffect_onuse_conditions_source_title=0x7f090055;
|
||||
public static final int itemeffect_onuse_conditions_target=0x7f090058;
|
||||
public static final int itemeffect_onuse_conditions_target_title=0x7f090057;
|
||||
public static final int itemeffect_onuse_list=0x7f090054;
|
||||
public static final int itemeffect_onuse_title=0x7f09004e;
|
||||
public static final int iteminfo_action=0x7f09005e;
|
||||
public static final int iteminfo_category=0x7f09005c;
|
||||
public static final int iteminfo_close=0x7f09005f;
|
||||
public static final int iteminfo_displaytype=0x7f09005b;
|
||||
public static final int iteminfo_effects=0x7f09005d;
|
||||
public static final int iteminfo_image=0x7f090059;
|
||||
public static final int iteminfo_title=0x7f09005a;
|
||||
public static final int levelup_add_attackchance=0x7f090063;
|
||||
public static final int levelup_add_attackdamage=0x7f090064;
|
||||
public static final int levelup_add_blockchance=0x7f090065;
|
||||
public static final int levelup_add_health=0x7f090062;
|
||||
public static final int levelup_adds_new_skillpoint=0x7f090066;
|
||||
public static final int levelup_description=0x7f090061;
|
||||
public static final int levelup_image=0x7f090060;
|
||||
public static final int loadsave_description=0x7f09006a;
|
||||
public static final int loadsave_image=0x7f090068;
|
||||
public static final int loadsave_save_to_new_slot=0x7f09006d;
|
||||
public static final int loadsave_slot_list=0x7f09006b;
|
||||
public static final int loadsave_slot_n=0x7f09006c;
|
||||
public static final int loadsave_title=0x7f090069;
|
||||
public static final int loadsave_titlelayout=0x7f090067;
|
||||
public static final int main_combatview=0x7f090071;
|
||||
public static final int main_container=0x7f09006e;
|
||||
public static final int main_mainview=0x7f090072;
|
||||
public static final int main_quickitemview=0x7f090070;
|
||||
public static final int main_statusview=0x7f09006f;
|
||||
public static final int main_virtual_dpad=0x7f090075;
|
||||
public static final int monsterencounter_attack=0x7f090079;
|
||||
public static final int monsterencounter_cancel=0x7f09007b;
|
||||
public static final int monsterencounter_description=0x7f090078;
|
||||
public static final int monsterencounter_image=0x7f090076;
|
||||
public static final int monsterencounter_info=0x7f09007a;
|
||||
public static final int monsterencounter_title=0x7f090077;
|
||||
public static final int monsterinfo_close=0x7f090082;
|
||||
public static final int monsterinfo_currenttraits=0x7f090080;
|
||||
public static final int monsterinfo_difficulty=0x7f09007e;
|
||||
public static final int monsterinfo_healthbar=0x7f09007f;
|
||||
public static final int monsterinfo_image=0x7f09007c;
|
||||
public static final int monsterinfo_onhiteffects=0x7f090081;
|
||||
public static final int monsterinfo_title=0x7f09007d;
|
||||
public static final int questlog_contents=0x7f090084;
|
||||
public static final int questlog_entrytext=0x7f090085;
|
||||
public static final int questlog_includecompleted=0x7f090083;
|
||||
public static final int quick_menu_assign=0x7f090000;
|
||||
public static final int quick_menu_assign_group=0x7f090001;
|
||||
public static final int quick_menu_unassign=0x7f090002;
|
||||
public static final int quickitem_toggle=0x7f0900ad;
|
||||
public static final int quickitemview_item1=0x7f09008a;
|
||||
public static final int quickitemview_item2=0x7f09008b;
|
||||
public static final int quickitemview_item3=0x7f09008c;
|
||||
public static final int rangebar_label=0x7f09008d;
|
||||
public static final int rangebar_progress=0x7f09008e;
|
||||
public static final int rangebar_text=0x7f09008f;
|
||||
public static final int shop_buy_gc=0x7f090091;
|
||||
public static final int shop_buy_list=0x7f090092;
|
||||
public static final int shop_sell_gc=0x7f090094;
|
||||
public static final int shop_sell_list=0x7f090095;
|
||||
public static final int shop_tab1=0x7f090090;
|
||||
public static final int shop_tab2=0x7f090093;
|
||||
public static final int shopitem_image=0x7f090096;
|
||||
public static final int shopitem_infobutton=0x7f090098;
|
||||
public static final int shopitem_shopbutton=0x7f090097;
|
||||
public static final int shopitem_text=0x7f090099;
|
||||
public static final int skillentry_description=0x7f0900a3;
|
||||
public static final int skillentry_icon=0x7f0900a1;
|
||||
public static final int skillentry_title=0x7f0900a2;
|
||||
public static final int skillinfo_currentlevel=0x7f09009c;
|
||||
public static final int skillinfo_image=0x7f09009a;
|
||||
public static final int skillinfo_longdescription=0x7f09009d;
|
||||
public static final int skillinfo_prerequisites=0x7f09009e;
|
||||
public static final int skillinfo_title=0x7f09009b;
|
||||
public static final int skillinfoinfo_action=0x7f09009f;
|
||||
public static final int skillinfoinfo_close=0x7f0900a0;
|
||||
public static final int startscreen_about=0x7f0900aa;
|
||||
public static final int startscreen_continue=0x7f0900a7;
|
||||
public static final int startscreen_currenthero=0x7f0900a4;
|
||||
public static final int startscreen_enterheroname=0x7f0900a5;
|
||||
public static final int startscreen_load=0x7f0900a9;
|
||||
public static final int startscreen_newgame=0x7f0900a8;
|
||||
public static final int startscreen_quit=0x7f0900ab;
|
||||
public static final int startscreen_version=0x7f0900a6;
|
||||
public static final int status_image=0x7f0900ac;
|
||||
public static final int statusview_activeconditions=0x7f090078;
|
||||
public static final int statusview_exp=0x7f0900af;
|
||||
public static final int statusview_health=0x7f0900ae;
|
||||
public static final int statusview_statustext=0x7f090077;
|
||||
public static final int traitsinfo_attack_chance=0x7f0900b3;
|
||||
public static final int traitsinfo_attack_cost=0x7f0900b1;
|
||||
public static final int traitsinfo_attack_damage=0x7f0900b5;
|
||||
public static final int traitsinfo_attack_row1=0x7f0900b0;
|
||||
public static final int traitsinfo_attack_row2=0x7f0900b2;
|
||||
public static final int traitsinfo_attack_row3=0x7f0900b4;
|
||||
public static final int traitsinfo_critical_row1=0x7f0900b6;
|
||||
public static final int traitsinfo_critical_row2=0x7f0900b8;
|
||||
public static final int traitsinfo_criticalhit_chance=0x7f0900b7;
|
||||
public static final int traitsinfo_criticalhit_multiplier=0x7f0900b9;
|
||||
public static final int traitsinfo_defense_chance=0x7f0900bb;
|
||||
public static final int traitsinfo_defense_damageresist=0x7f0900bd;
|
||||
public static final int traitsinfo_defense_row1=0x7f0900ba;
|
||||
public static final int traitsinfo_defense_row2=0x7f0900bc;
|
||||
public static final int quickitem_toggle=0x7f0900a9;
|
||||
public static final int quickitemview_item1=0x7f090086;
|
||||
public static final int quickitemview_item2=0x7f090087;
|
||||
public static final int quickitemview_item3=0x7f090088;
|
||||
public static final int rangebar_label=0x7f090089;
|
||||
public static final int rangebar_progress=0x7f09008a;
|
||||
public static final int rangebar_text=0x7f09008b;
|
||||
public static final int shop_buy_gc=0x7f09008d;
|
||||
public static final int shop_buy_list=0x7f09008e;
|
||||
public static final int shop_sell_gc=0x7f090090;
|
||||
public static final int shop_sell_list=0x7f090091;
|
||||
public static final int shop_tab1=0x7f09008c;
|
||||
public static final int shop_tab2=0x7f09008f;
|
||||
public static final int shopitem_image=0x7f090092;
|
||||
public static final int shopitem_infobutton=0x7f090094;
|
||||
public static final int shopitem_shopbutton=0x7f090093;
|
||||
public static final int shopitem_text=0x7f090095;
|
||||
public static final int skillentry_description=0x7f09009f;
|
||||
public static final int skillentry_icon=0x7f09009d;
|
||||
public static final int skillentry_title=0x7f09009e;
|
||||
public static final int skillinfo_currentlevel=0x7f090098;
|
||||
public static final int skillinfo_image=0x7f090096;
|
||||
public static final int skillinfo_longdescription=0x7f090099;
|
||||
public static final int skillinfo_requirement=0x7f09009a;
|
||||
public static final int skillinfo_title=0x7f090097;
|
||||
public static final int skillinfoinfo_action=0x7f09009b;
|
||||
public static final int skillinfoinfo_close=0x7f09009c;
|
||||
public static final int startscreen_about=0x7f0900a6;
|
||||
public static final int startscreen_continue=0x7f0900a3;
|
||||
public static final int startscreen_currenthero=0x7f0900a0;
|
||||
public static final int startscreen_enterheroname=0x7f0900a1;
|
||||
public static final int startscreen_load=0x7f0900a5;
|
||||
public static final int startscreen_newgame=0x7f0900a4;
|
||||
public static final int startscreen_quit=0x7f0900a7;
|
||||
public static final int startscreen_version=0x7f0900a2;
|
||||
public static final int status_image=0x7f0900a8;
|
||||
public static final int statusview_activeconditions=0x7f090074;
|
||||
public static final int statusview_exp=0x7f0900ab;
|
||||
public static final int statusview_health=0x7f0900aa;
|
||||
public static final int statusview_statustext=0x7f090073;
|
||||
public static final int traitsinfo_attack_chance=0x7f0900af;
|
||||
public static final int traitsinfo_attack_cost=0x7f0900ad;
|
||||
public static final int traitsinfo_attack_damage=0x7f0900b1;
|
||||
public static final int traitsinfo_attack_row1=0x7f0900ac;
|
||||
public static final int traitsinfo_attack_row2=0x7f0900ae;
|
||||
public static final int traitsinfo_attack_row3=0x7f0900b0;
|
||||
public static final int traitsinfo_critical_row1=0x7f0900b2;
|
||||
public static final int traitsinfo_critical_row2=0x7f0900b4;
|
||||
public static final int traitsinfo_criticalhit_chance=0x7f0900b3;
|
||||
public static final int traitsinfo_criticalhit_multiplier=0x7f0900b5;
|
||||
public static final int traitsinfo_defense_chance=0x7f0900b7;
|
||||
public static final int traitsinfo_defense_damageresist=0x7f0900b9;
|
||||
public static final int traitsinfo_defense_row1=0x7f0900b6;
|
||||
public static final int traitsinfo_defense_row2=0x7f0900b8;
|
||||
}
|
||||
public static final class layout {
|
||||
public static final int abilitymodifierview=0x7f030000;
|
||||
@@ -476,7 +472,7 @@ public final class R {
|
||||
public static final int conversation_rewardgold=0x7f0500ee;
|
||||
public static final int conversation_rewarditem=0x7f0500f0;
|
||||
public static final int conversation_rewarditems=0x7f0500f1;
|
||||
public static final int conversation_title=0x7f050184;
|
||||
public static final int conversation_title=0x7f05018a;
|
||||
public static final int conversationlist_alynndir=0x7f050026;
|
||||
public static final int conversationlist_ambelie=0x7f05002a;
|
||||
public static final int conversationlist_blackwater_harlenn=0x7f05003d;
|
||||
@@ -629,6 +625,10 @@ public final class R {
|
||||
<string name="key_required">Une clé spécifique est requise pour passer.</string>
|
||||
*/
|
||||
public static final int iteminfo_category=0x7f0500d5;
|
||||
public static final int iteminfo_displaytype_extraordinary=0x7f050186;
|
||||
public static final int iteminfo_displaytype_legendary=0x7f050187;
|
||||
public static final int iteminfo_displaytype_quest=0x7f050185;
|
||||
public static final int iteminfo_displaytype_rare=0x7f050188;
|
||||
public static final int iteminfo_effect_chance_of=0x7f050128;
|
||||
public static final int iteminfo_effect_decrease_current_ap=0x7f050132;
|
||||
public static final int iteminfo_effect_decrease_current_hp=0x7f050130;
|
||||
@@ -662,7 +662,7 @@ public final class R {
|
||||
public static final int itemlist_v069_2=0x7f050059;
|
||||
public static final int itemlist_v069_questitems=0x7f05005a;
|
||||
public static final int itemlist_weapons=0x7f05004e;
|
||||
public static final int key_required=0x7f050183;
|
||||
public static final int key_required=0x7f050189;
|
||||
public static final int levelup_add_attackchance=0x7f050101;
|
||||
public static final int levelup_add_attackchance_description=0x7f050102;
|
||||
public static final int levelup_add_attackdamage=0x7f050103;
|
||||
@@ -671,10 +671,11 @@ public final class R {
|
||||
public static final int levelup_add_blockchance_description=0x7f050106;
|
||||
public static final int levelup_add_health=0x7f0500ff;
|
||||
public static final int levelup_add_health_description=0x7f050100;
|
||||
public static final int levelup_adds_new_skillpoint=0x7f050182;
|
||||
public static final int levelup_adds_new_skillpoint=0x7f050183;
|
||||
public static final int levelup_buttontext=0x7f0500fe;
|
||||
public static final int levelup_description=0x7f0500fd;
|
||||
public static final int levelup_title=0x7f0500fc;
|
||||
public static final int loadsave_save_to_new_slot=0x7f050184;
|
||||
public static final int loadsave_selectslot=0x7f050078;
|
||||
public static final int loadsave_slot_empty=0x7f050079;
|
||||
public static final int loadsave_title_load=0x7f050077;
|
||||
@@ -764,10 +765,11 @@ public final class R {
|
||||
public static final int skill_longdescription_speed=0x7f050171;
|
||||
public static final int skill_longdescription_weapon_chance=0x7f05016a;
|
||||
public static final int skill_longdescription_weapon_dmg=0x7f05016b;
|
||||
public static final int skill_number_of_increases_one=0x7f050180;
|
||||
public static final int skill_number_of_increases_several=0x7f050181;
|
||||
public static final int skill_number_of_increases_one=0x7f050181;
|
||||
public static final int skill_number_of_increases_several=0x7f050182;
|
||||
public static final int skill_prerequisite_level=0x7f05017f;
|
||||
public static final int skill_prerequisite_other_skill=0x7f05017e;
|
||||
public static final int skill_prerequisite_stat=0x7f05017f;
|
||||
public static final int skill_prerequisite_stat=0x7f050180;
|
||||
public static final int skill_shortdescription_barkskin=0x7f05015d;
|
||||
public static final int skill_shortdescription_barter=0x7f05015b;
|
||||
public static final int skill_shortdescription_better_criticals=0x7f05015f;
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<TabHost
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/tabhost"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="5dp">
|
||||
android:padding="5dp"
|
||||
>
|
||||
|
||||
<TabWidget
|
||||
android:id="@android:id/tabs"
|
||||
android:layout_width="fill_parent"
|
||||
@@ -17,29 +21,7 @@
|
||||
android:id="@android:id/tabcontent"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
|
||||
<!-- TAB 1 -->
|
||||
/>
|
||||
|
||||
<include
|
||||
layout="@layout/heroinfo_stats"
|
||||
android:id="@+id/heroinfo_tab1"
|
||||
/>
|
||||
|
||||
<!-- TAB 2 -->
|
||||
|
||||
<include
|
||||
layout="@layout/heroinfo_skill_list"
|
||||
android:id="@+id/heroinfo_tab2"
|
||||
/>
|
||||
|
||||
<!-- TAB 3 -->
|
||||
|
||||
<include
|
||||
layout="@layout/heroinfo_inventory"
|
||||
android:id="@+id/heroinfo_tab3"
|
||||
/>
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
</TabHost>
|
||||
|
||||
@@ -128,13 +128,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/heroinfo_levelup"
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/heroinfo_quests"
|
||||
android:layout_width="0dip"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/heroinfo_quests"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/boxshape_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
@@ -34,7 +33,6 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/boxshape_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
@@ -59,7 +57,6 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/boxshape_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
|
||||
@@ -40,6 +40,12 @@
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/iteminfo_displaytype"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -46,33 +46,22 @@
|
||||
android:layout_below="@id/loadsave_description"
|
||||
>
|
||||
<LinearLayout
|
||||
android:id="@+id/loadsave_slot_list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<Button
|
||||
android:id="@+id/loadsave_slot_1"
|
||||
android:id="@+id/loadsave_slot_n"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="1."
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/loadsave_slot_2"
|
||||
android:id="@+id/loadsave_save_to_new_slot"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="2."
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/loadsave_slot_3"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="3."
|
||||
/>
|
||||
<Button
|
||||
android:id="@+id/loadsave_slot_4"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="4."
|
||||
android:text="@string/loadsave_save_to_new_slot"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -6,26 +6,6 @@
|
||||
android:padding="@dimen/dialog_margin"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
>
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/icon"
|
||||
android:paddingRight="@dimen/dialog_iconpadding_right"
|
||||
android:paddingBottom="@dimen/dialog_iconpadding_bottom"
|
||||
/>
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/questlog_title"
|
||||
android:textSize="@dimen/titletext"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/questlog_includecompleted"
|
||||
@@ -38,6 +18,7 @@
|
||||
android:id="@+id/questlog_contents"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -58,10 +58,11 @@
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:text="Prerequisite"
|
||||
android:text="Next level requires"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/skillinfo_prerequisites"
|
||||
android:id="@+id/skillinfo_requirement"
|
||||
android:layout_marginBottom="@dimen/section_margin"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -119,20 +119,20 @@
|
||||
[id|name|showInLog|stages[progress|logText|rewardExperience|finishesQuest|]|];
|
||||
{bwm_agent|L\'agent et la bête|1|{
|
||||
{1|J\'ai rencontré un homme recherchant de l\'aide pour sa colonie, le « Mont Blackwater ». Il semblerait que la colonie soit attaquée par des monstres et des bandits, et ils ont besoin d\'une aide exérieure.|||}
|
||||
{5|J\'ai accepté d\'aider l\'homme et la coloine du Mont Blackwater à résoudre son problème.|||}
|
||||
{10|L\'homme m\'a demandé de le retrouver de l\'autre côté de la mine effondrée. Il va passer en rampant à travers les éboulis pendant que je descendrai dans la nuit noire du puits de mine abandonnée.|||}
|
||||
{20|J\'ai parcouru l\'obscurité de la mine abandonnée et retrouvé l\'homme de l\'autre côté. Il était anxieux de me dire de me diriger plein Est une fois que je serais sorti de la mine. Je dois retrouver cet homme au pied de la montagne à l\'Est.|||}
|
||||
{25|J\'ai entendu une histoire au sujet de Prim et de la colonie du Mont Blackwater se combattant les uns les autres.|||}
|
||||
{30|Je dois suivre le chemin qui monte dans la montange vers la colonie de Blackwater.|||}
|
||||
{5|J\'ai accepté d\'aider l\'homme et la colonie du Mont Blackwater à résoudre son problème.|||}
|
||||
{10|L\'homme m\'a demandé de le retrouver de l\'autre côté de la mine effondrée. Il va passer en rampant à travers les éboulis pendant que je descendrai dans la nuit noire du puits de la mine abandonnée.|||}
|
||||
{20|J\'ai parcouru l\'obscurité de la mine abandonnée et retrouvé l\'homme de l\'autre côté. Il insistait pour me convaincre de me diriger plein Est une fois que je serais sorti de la mine. Je dois retrouver cet homme au pied de la montagne à l\'Est.|||}
|
||||
{25|J\'ai entendu une histoire au sujet des habitants de Prim et de la colonie du Mont Blackwater se combattant les uns les autres.|||}
|
||||
{30|Je dois suivre le chemin qui monte dans la montagne vers la colonie de Blackwater.|||}
|
||||
{40|J\'ai retrouvé l\'homme en gravissant le Mont Blackwater. Je dois continuer mon ascension.|||}
|
||||
{50|Je suis arrivé aux pentes enneigées du Mont Blackwater. L\'homme m\'a dit de continuer à grimper dans la montagne. Apparemment, la colonie du Mont Blackwater est proche.|||}
|
||||
{60|Je suis arrivé à la colonie du Mont Blackwater. Je dois trouver le chef de guerre Harlenn.|||}
|
||||
{65|J\'ai discuté avec Harlenn dans la colonie du Mont Blackwater. Apparemment, la colonie est soumise à des attaques par de nombreux monstres, les Aulaeth et des wyrms blanches. Pour couronner le tout, ils sont aussi attaqués par les gens de Prim.|||}
|
||||
{66|Harlenn pense que les gens de Prim sont d\'une manière ou d\'une autre derrière les attaques de monstres.|||}
|
||||
{70|Harlenn veut que je transmette un message à Guthbered de Prim. Les gens de Prim cessent leurs attaques contre la colonie du Mont Blackwater, ou alors ils en supporteront les conséquences. Je dois aller parler à Guthbered à Prim.|||}
|
||||
{70|Harlenn veut que je transmette un message à Guthbered de Prim. Les gens de Prim doivent cesser leurs attaques contre la colonie du Mont Blackwater, ou alors ils en supporteront les conséquences. Je dois aller parler à Guthbered à Prim.|||}
|
||||
{80|Guthbered dément le fait que les gens de Prim aient la moindre responsabilité dans les attaques de monstres contre la colonie du Mont Blackwater. Je dois aller parler à Harlenn|||}
|
||||
{90|Harlenn est certain que les gens de Prim sont mêlés à ces attaques.|||}
|
||||
{95|Harlenn veut que j\'aille à Prim et que je recherche des preuves qu\'ils se préparent à attaquer la colonie. Je dois rechercher des indices à proximité de l\'endroit où Guthbered se tient.|||}
|
||||
{95|Harlenn veut que j\'aille à Prim et que j\'y recherche des preuves qu\'ils se préparent à attaquer la colonie. Je dois rechercher des indices à proximité de l\'endroit où Guthbered se tient.|||}
|
||||
{100|J\'ai trouvé des plans à Prim pour recruter des mercenaires et attaquer la colonie du Mont Blackwater. Je dois aller en parler à Harlenn immédiatement.|||}
|
||||
{110|Harlenn m\'a remercié d\'avoir enquêté sur ces plans d\'attaque.|115||}
|
||||
{120|Afin de faire cesser les attaques contre la colonie du Mont Blackwater, Harlenn veut que j\'assassine Guthbered à Prim.|||}
|
||||
@@ -145,15 +145,15 @@
|
||||
}|};
|
||||
{prim_innquest|Bien reposé|1|{
|
||||
{10|J\'ai discuté avec le cuisinier de Prim, au pied du Mont Blackwater. Il y a une chambre à louer, mais elle est déjà louée par Arghest. Je dois aller parler à Arghest pour voir s\'il a toujours besoin de louer cette chambre. Le cuisinier m\'a indiqué une direction au Sud-Ouest de Prim.|||}
|
||||
{20|J\'ai parlé avec Arghest au sujet de la chambre dans l\'auberge. Il souhaite toujours pouvoir en disposer pour s\'y reposer. Il m\'a cependant déclaré qu\'il se laisserait persuader de me laisser l\'utiliser si je lui offrais une compensation suffisante.|||}
|
||||
{20|J\'ai parlé avec Arghest au sujet de la chambre dans l\'auberge. Il souhaite toujours pouvoir en disposer pour s\'y reposer. Il m\'a cependant déclaré que je pourrais le persuader de me laisser l\'utiliser si je lui offrais une compensation suffisante.|||}
|
||||
{30|Arghest veut que je lui rapporte 5 bouteilles de lait. Je devrais pouvoir trouver un peu de lait dans un des plus gros villages.|||}
|
||||
{40|J\'ai rapporté du lait à Arghest. Il est d\'accord pour me laisser utiliser la chambre de l\'auberge de Prim. Je devrais pouvoir m\'y reposer désormais. Je dois aller le dire au cuisinier de l\'auberge.|50||}
|
||||
{50|J\'ai expliqué au cuisinier que j\'avais la permission d\'Arghest d\'utiliser la chambre.||1|}
|
||||
}|};
|
||||
{prim_hunt|Intentions brumeuses|1|{
|
||||
{10|Juste à l\'extérieur de la mine effondrée sur le chemin du Mont blackwater, j\'ai rencontré un homme du village de Prim. Il m\'a supplié de les aider.|||}
|
||||
{11|Le village de Prim a besoin d\'une aide extérieure pour s\'occuper d\'attaques de monstres. Je devrais aller parler avec Guthbered à Prim si je désire les aider.|||}
|
||||
{15|On peut trouver Guthbered dans la grande halle de Prim. Je dois rechercher une maison en pierre au centre du village.|||}
|
||||
{11|Le village de Prim a besoin d\'une aide extérieure pour se défendre contre des attaques de monstres. Je devrais aller parler avec Guthbered à Prim si je désire les aider.|||}
|
||||
{15|On peut trouver Guthbered dans la grande halle de Prim. Je dois rechercher une maison en pierres au centre du village.|||}
|
||||
{20|J\'ai parlé avec Guthbered au sujet de l\'histoire de Prim. Prim est depuis quelques temps soumis à des attaques permanentes de la colonie du Mont Blackwater.|||}
|
||||
{25|Guthbered veut que je monte jusqu\'à la colonie et que je demande à leur chef de guerre Harlenn pourquoi (ou si) ils ont invoqué les monstres de Gornaud contre Prim.|||}
|
||||
{30|J\'ai parlé avec Harlenn des attaques contre Prim. Il dément le fait que les gens de la colonie du Mont Blackwater aient quoi que ce soit à voir avec ces attaques. Je dois retourner parler avec Guthbered à Prim.|||}
|
||||
@@ -164,43 +164,43 @@
|
||||
{80|Afin de faire cesser les attaques contre Prim, Guthbered veut que j\'aille tuer Harlenn en haut dans la colonie du Mont Blackwater.|||}
|
||||
{90|J\'ai commencé à me battre avec Harlenn.|||}
|
||||
{91|J\'ai dit à Harlenn que j\'avais été envoyé pour le tuer, mais l\'ai laissé vivre. Il m\'a remercié avec profusion et a quitté la colonie.|210||}
|
||||
{100|Guthbered m\'a remercié pour l\'aide que je lui ai fournie. Désormais, les attaques contre Prim devraient cesser. En remerciement, Guthbered m\'a donné quelques objets et un laisser-passer falsifié afin que je puisse entrer dans la chambre centrale de la colonie du Mont Blackwater.|500||}
|
||||
{140|J\'ai montré le laisser-passer flasifié au garde et ai pu entrer dans la chambre centrale.|||}
|
||||
{100|Guthbered m\'a remercié pour l\'aide que je lui ai fournie. Désormais, les attaques contre Prim devraient cesser. En remerciement, Guthbered m\'a donné quelques objets et un laisser-passer falsifié afin que je puisse entrer dans les quartiers confidentiels de la colonie du Mont Blackwater.|500||}
|
||||
{140|J\'ai montré le laisser-passer falsifié au garde et ai pu entrer dans les quartiers confidentiels.|||}
|
||||
{240|J\'ai maintenant gagné la confiance de Prim, et devrais avoir accès à tous les services.||1|}
|
||||
{250|J\'ai décidé de ne pas aider les gens de Prim.||1|}
|
||||
{251|Comme j\'aide la colonie du Mont Blackwater, Guthbered ne veut plus me parler.||1|}
|
||||
}|};
|
||||
{kazaul|Lumières dans le noir|1|{
|
||||
{8|J\'ai trouvé mon chemin dans la chambre centrale de la colonie du Mont Blackwater et découvert un groupe de mages dirigés par un homme dénommé Throdna.|||}
|
||||
{9|Throdna semblait très intéressé par quelqu\'un (ou quelque chose) appela Kazaul, et en particulier par un rituel célébré en son nom.|||}
|
||||
{10|J\'ai accepté d\'aider Throdna à en savoir plus au sujet du rituel proprement dit, en recherchant les pièces qui semblent avoir été dispersées à travers la montagne. Je dois recherche les éléments du rituel de Kazaul sur le chemin en descendant du Mont Blackwater vers Prim.|||}
|
||||
{11|Je dois trouver les deux parties du chant et les trois articles décrivant le rituel proprement dit, et revenir voir Throdna lorsque j\'aurais tout trouvé.|||}
|
||||
{21|J\'ai trouvé la première moitié du chant du rituel de Kazaul.|||}
|
||||
{22|J\'ai trouvé la seconde moitié du chant du rituel de Kazaul.|||}
|
||||
{25|J\'ai trouvé le premier article du rituel de Kazaul.|||}
|
||||
{26|J\'ai trouvé le second article du rituel de Kazaul.|||}
|
||||
{27|J\'ai trouvé le troisième article du rituel de Kazaul.|||}
|
||||
{8|J\'ai trouvé mon chemin dans les quartiers confidentiels de la colonie du Mont Blackwater et découvert un groupe de mages dirigés par un homme dénommé Throdna.|||}
|
||||
{9|Throdna semblait très intéressé par quelqu\'un (ou quelque chose) appelé Kazaul, et en particulier par un rituel célébré en son nom.|||}
|
||||
{10|J\'ai accepté d\'aider Throdna à en savoir plus au sujet du rituel proprement dit, en recherchant les pièces qui semblent avoir été dispersées à travers la montagne. Je dois rechercher les éléments du rituel de Kazaul sur le chemin en descendant du Mont Blackwater vers Prim.|||}
|
||||
{11|Je dois trouver les deux couplets du chant et les trois stances décrivant le rituel proprement dit, et revenir voir Throdna lorsque j\'aurais tout trouvé.|||}
|
||||
{21|J\'ai trouvé le premier couplet du chant du rituel de Kazaul.|||}
|
||||
{22|J\'ai trouvé le second couplet du chant du rituel de Kazaul.|||}
|
||||
{25|J\'ai trouvé la première stance du rituel de Kazaul.|||}
|
||||
{26|J\'ai trouvé la seconde stance du rituel de Kazaul.|||}
|
||||
{27|J\'ai trouvé la troisième stance du rituel de Kazaul.|||}
|
||||
{30|Throdna m\'a remercié d\'avoir trouvé tous les éléments du rituel.|360||}
|
||||
{40|Throdna veut que je mette un terme aux réapparitions de l\'engeance de Kazaul qui se produisent près du Mont Blackwater. Il y a un mausolée au pied de la montagne que je devrais inspecter.|||}
|
||||
{41|On m\'a donné une fiole d\'elixir purificateur que Throdna me demande de verser sur le mausolée de Kazaul. Je dois revenir voir Throdna lorsque j\'aurais trouvé et purifié le mausolée.|||}
|
||||
{50|Au mausolée du pied du Mont Blackwater, j\'ai rencontré le gardien de Kazaul. En récitant les vers du chant du rituel, j\'ai réussi à déclencher son attaque.|||}
|
||||
{41|On m\'a donné une fiole d\'élixir purificateur que Throdna me demande de verser sur le mausolée de Kazaul. Je dois revenir voir Throdna lorsque j\'aurais trouvé et purifié le mausolée.|||}
|
||||
{50|Au mausolée du pied du Mont Blackwater, j\'ai rencontré le gardien de Kazaul. En récitant les couplets du chant du rituel, j\'ai réussi à déclencher son attaque.|||}
|
||||
{60|J\'ai purifié le mausolée de Kazaul.|320||}
|
||||
{100|J\'espérais quelque signe d\'appréciation de Throdna pour l\'avoir aider à en apprendre plus sur le rituel et pour avoir purifié le mausolée. Mais il semblait plus occupé par ses divagations concernant Kazaul. Je n\'ai rien compris à ses élucubrations.||1|}
|
||||
{100|J\'espérais quelque signe d\'appréciation de Throdna pour l\'avoir aidé à en apprendre plus sur le rituel et pour avoir purifié le mausolée. Mais il semblait plus occupé par ses divagations concernant Kazaul. Je n\'ai rien compris à ses élucubrations.||1|}
|
||||
}|};
|
||||
{bwm_wyrms|Sans faiblesse|1|{
|
||||
{10|Herec au second niveau de la colonie du Mont Blackwater fait des recherches au sujet des wyrms blanches à l\'extérieur de la colonie. Il veur que je lui rapporte 5 griffes de wyrms blanches afin qu\'il puisse continuer ses recherches. Apparemment, seules certaines des wyrms blanches ont ces griffes. Il va falloir que j\'en tue un certain nombre pour m\'en procurer.|||}
|
||||
{10|Herec au second niveau de la colonie du Mont Blackwater fait des recherches au sujet des wyrms blanches à l\'extérieur de la colonie. Il veut que je lui rapporte 5 griffes de wyrms blanches afin qu\'il puisse continuer ses recherches. Apparemment, seules certaines des wyrms blanches ont ces griffes. Il va falloir que j\'en tue un certain nombre pour m\'en procurer.|||}
|
||||
{20|J\'ai donné les 5 griffes de wyrms blanches à Herec.|||}
|
||||
{30|Herec a achevé la création d\'une potion soulageant la fatigue que sera très utile pour combattre les wyrms dans le futur.|150|1|}
|
||||
{30|Herec a achevé la création d\'une potion soulageant la fatigue qui sera très utile pour combattre les wyrms dans le futur.|150|1|}
|
||||
}|};
|
||||
{bjorgur_grave|Éveillés du repos|1|{
|
||||
{10|Bjorgur à Prim à la base du Mont Blackwater pense que quelque chose a dérangé la tombe de ses parents, au sud-Ouest de Prim, juste à l\'stérieur de la mine de Elm.|||}
|
||||
{10|Bjorgur à Prim à la base du Mont Blackwater pense que quelque chose a dérangé la tombe de ses parents, au Sud-Ouest de Prim, juste à l\'extérieur de la mine de Elm.|||}
|
||||
{15|Bjorgur veut que j\'aille vérifier la tombe et que je m\'assure que la dague de sa famille est toujours en sécurité dans la tombe.|||}
|
||||
{20|Fulus à Prim aimerait obtenir la dague de famille de Bjorgur\'s family que possédait le grand-père de Bjorgur.|||}
|
||||
{20|Fulus à Prim aimerait obtenir la dague de famille de Bjorgur que possédait le grand-père de Bjorgur.|||}
|
||||
{30|J\'ai rencontré un homme qui portait une dague étrange au fond d\'un caveau au Sud-Ouest de Prim. Il a du piller la tombe pour voler la dague.|||}
|
||||
{40|J\'ai remis la dague à sa place dans la tombe. Étonnement, les morts sans repos semblent plus apaisés désormais.|20||}
|
||||
{40|J\'ai remis la dague à sa place dans la tombe. Étonnamment, les morts sans repos semblent plus apaisés désormais.|20||}
|
||||
{50|Bjorgur m\'a remercié pour mon aide. Il m\'a dit que je devrais aussi aller trouver ses parents à Feygard.|110|1|}
|
||||
{51|I have told Fulus that I helped Bjorgur return his family dagger to its original place.|||}
|
||||
{60|J\'ai donné la dague de famille de Bjorgur à Fulus. Il m\'a remercié de la lui avoir apportée, et m\' remercié avec largesse.|170|1|}
|
||||
{51|J\'ai dit à Fulus que j\'avais aidé Bjorgur à remettre la dague de sa famille à sa place d\'origine.|||}
|
||||
{60|J\'ai donné la dague de famille de Bjorgur à Fulus. Il m\'a remercié de la lui avoir apportée, et m\'a remercié avec largesse.|170|1|}
|
||||
}|};
|
||||
</string>
|
||||
|
||||
|
||||
@@ -79,15 +79,15 @@
|
||||
<string name="combat_hero_dies">Vous tombez inconscient mais heureusement vous vous réveillez en vie. Vous perdez %1$d points d\'expérience.</string>
|
||||
|
||||
<string name="inventory_info">Info</string>
|
||||
<string name="inventory_equip">Équipé</string>
|
||||
<string name="inventory_unequip">Non-équipé</string>
|
||||
<string name="inventory_use">Utilisé</string>
|
||||
<string name="inventory_drop">Lâché</string>
|
||||
<string name="inventory_equip">S\'équiper</string>
|
||||
<string name="inventory_unequip">Se déséquiper</string>
|
||||
<string name="inventory_use">Utiliser</string>
|
||||
<string name="inventory_drop">Lâcher</string>
|
||||
<string name="inventory_item_used">Vous avez utilisé %1$s.</string>
|
||||
<string name="inventory_item_dropped">%1$s a été déposé.</string>
|
||||
<string name="inventory_item_equipped">Vous vous êtes équipé de %1$s.</string>
|
||||
|
||||
<string name="dialog_loot_pickall">Ramassez tout</string>
|
||||
<string name="dialog_loot_pickall">Ramasser tout</string>
|
||||
<string name="dialog_loot_foundgold">Vous avez trouvé %1$d or. </string>
|
||||
<string name="dialog_loot_pickedupitems">Vous avez ramassé %1$d objets.</string>
|
||||
<string name="dialog_groundloot_title">Objets</string>
|
||||
|
||||
@@ -429,10 +429,18 @@
|
||||
<string name="skillinfo_action_levelup">Level up</string>
|
||||
<string name="skill_current_level">Current level: %1$d</string>
|
||||
<string name="skill_current_level_with_maximum">Current level: %1$d / %2$d</string>
|
||||
<string name="skill_prerequisite_other_skill">Requires at least level %1$d of the %1$s skill to select.</string>
|
||||
<string name="skill_prerequisite_stat">Requires at least %1$d %1$s to select</string>
|
||||
<string name="skill_number_of_increases_one">You may select one skill to increase</string>
|
||||
<string name="skill_number_of_increases_several">You may select %1$d skills to increase</string>
|
||||
<string name="skill_prerequisite_other_skill">To level up this skill, you need at least level %1$d of the %2$s skill.</string>
|
||||
<string name="skill_prerequisite_level">To level up this skill, you need at least experience level %1$d.</string>
|
||||
<string name="skill_prerequisite_stat">To level up this skill, you need at least %1$d %2$s.</string>
|
||||
<string name="skill_number_of_increases_one">You may select one skill to increase.</string>
|
||||
<string name="skill_number_of_increases_several">You may select %1$d skills to increase.</string>
|
||||
<string name="levelup_adds_new_skillpoint">This level also gives you a new skill point to spend!</string>
|
||||
|
||||
<string name="loadsave_save_to_new_slot">Create new savegame slot</string>
|
||||
|
||||
<string name="iteminfo_displaytype_quest">Quest item</string>
|
||||
<string name="iteminfo_displaytype_extraordinary">Extraordinary</string>
|
||||
<string name="iteminfo_displaytype_legendary">Legendary</string>
|
||||
<string name="iteminfo_displaytype_rare">Rare</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -23,15 +23,17 @@ import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ActorConditionInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.BulkSelectionInterface;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ConversationActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity_Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity_Skills;
|
||||
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity_Stats;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LoadSaveActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MainActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ItemInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.LevelUpActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterEncounterActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.MonsterInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.Preferences;
|
||||
import com.gpl.rpg.AndorsTrail.activity.QuestLogActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity_Quests;
|
||||
import com.gpl.rpg.AndorsTrail.activity.ShopActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.activity.StartScreenActivity;
|
||||
@@ -204,7 +206,7 @@ public final class Dialogs {
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/iteminfo/" + itemTypeID));
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_ITEMINFO);
|
||||
}
|
||||
public static void showLevelUp(final HeroinfoActivity currentActivity) {
|
||||
public static void showLevelUp(final HeroinfoActivity_Stats currentActivity) {
|
||||
Intent intent = new Intent(currentActivity, LevelUpActivity.class);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/levelup"));
|
||||
currentActivity.startActivityForResult(intent, MainActivity.INTENTREQUEST_LEVELUP);
|
||||
@@ -266,7 +268,7 @@ public final class Dialogs {
|
||||
}
|
||||
|
||||
public static void showQuestLog(final Activity currentActivity) {
|
||||
Intent intent = new Intent(currentActivity, QuestLogActivity.class);
|
||||
Intent intent = new Intent(currentActivity, HeroinfoActivity_Quests.class);
|
||||
currentActivity.startActivity(intent);
|
||||
}
|
||||
|
||||
@@ -284,7 +286,7 @@ public final class Dialogs {
|
||||
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_SELL, MainActivity.INTENTREQUEST_BULKSELECT_SELL);
|
||||
}
|
||||
|
||||
public static void showBulkDroppingInterface(HeroinfoActivity currentActivity, int itemTypeID, int totalAvailableAmount) {
|
||||
public static void showBulkDroppingInterface(HeroinfoActivity_Inventory currentActivity, int itemTypeID, int totalAvailableAmount) {
|
||||
showBulkSelectionInterface(currentActivity, itemTypeID, totalAvailableAmount, BulkSelectionInterface.BULK_INTERFACE_DROP, MainActivity.INTENTREQUEST_BULKSELECT_DROP);
|
||||
}
|
||||
|
||||
@@ -296,7 +298,7 @@ public final class Dialogs {
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/bulkselection/" + itemTypeID));
|
||||
currentActivity.startActivityForResult(intent, requestCode);
|
||||
}
|
||||
public static void showSkillInfo(HeroinfoActivity currentActivity, int skillID) {
|
||||
public static void showSkillInfo(HeroinfoActivity_Skills currentActivity, int skillID) {
|
||||
Intent intent = new Intent(currentActivity, SkillInfoActivity.class);
|
||||
intent.putExtra("skillID", skillID);
|
||||
intent.setData(Uri.parse("content://com.gpl.rpg.AndorsTrail/showskillinfo/" + skillID));
|
||||
|
||||
@@ -6,9 +6,14 @@ import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Environment;
|
||||
@@ -79,8 +84,13 @@ public final class Savegames {
|
||||
}
|
||||
}
|
||||
private static File getSlotFile(int slot) {
|
||||
File root = getSavegameDirectory();
|
||||
return new File(root, Constants.FILENAME_SAVEGAME_FILENAME_PREFIX + slot);
|
||||
}
|
||||
|
||||
private static File getSavegameDirectory() {
|
||||
File root = Environment.getExternalStorageDirectory();
|
||||
return new File(root, Constants.FILENAME_SAVEGAME_SLOT + slot);
|
||||
return new File(root, Constants.FILENAME_SAVEGAME_DIRECTORY);
|
||||
}
|
||||
|
||||
private static void saveWorld(WorldContext world, OutputStream outStream, String displayInfo) throws IOException {
|
||||
@@ -123,6 +133,27 @@ public final class Savegames {
|
||||
}
|
||||
}
|
||||
|
||||
private static final Pattern savegameFilenamePattern = Pattern.compile(Constants.FILENAME_SAVEGAME_FILENAME_PREFIX + "(\\d+)");
|
||||
public static Set<Integer> getUsedSavegameSlots(Context androidContext) {
|
||||
try {
|
||||
final HashSet<Integer> result = new HashSet<Integer>();
|
||||
getSavegameDirectory().listFiles(new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File f, String filename) {
|
||||
Matcher m = savegameFilenamePattern.matcher(filename);
|
||||
if (m != null && m.matches()) {
|
||||
result.add(Integer.parseInt(m.group(1)));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static final class FileHeader {
|
||||
public final int fileversion;
|
||||
public final String playerName;
|
||||
|
||||
@@ -1,461 +1,56 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.Dialogs;
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.ViewContext;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.view.ActorConditionEffectList;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
|
||||
import com.gpl.rpg.AndorsTrail.view.RangeBar;
|
||||
import com.gpl.rpg.AndorsTrail.view.SkillListAdapter;
|
||||
import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
|
||||
|
||||
import android.app.TabActivity;
|
||||
import android.content.Context;
|
||||
import android.app.ActivityGroup;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TabHost;
|
||||
import android.widget.TextView;
|
||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
|
||||
public final class HeroinfoActivity extends TabActivity {
|
||||
public final class HeroinfoActivity extends ActivityGroup {
|
||||
private WorldContext world;
|
||||
private ViewContext view;
|
||||
|
||||
private Player player;
|
||||
private ItemContainer container;
|
||||
private TabHost tabHost;
|
||||
|
||||
private ListView inventoryList;
|
||||
private Button levelUpButton;
|
||||
private Button questsButton;
|
||||
private TextView heroinfo_ap;
|
||||
private TextView heroinfo_movecost;
|
||||
private TraitsInfoView heroinfo_currenttraits;
|
||||
private ItemEffectsView heroinfo_itemeffects;
|
||||
private TextView heroinfo_currentconditions_title;
|
||||
private LinearLayout heroinfo_currentconditions;
|
||||
private TextView heroinfo_level;
|
||||
private TextView heroinfo_totalexperience;
|
||||
private TextView heroinfo_stats_gold;
|
||||
private TextView heroinfo_stats_attack;
|
||||
private TextView heroinfo_stats_defense;
|
||||
private RangeBar rangebar_hp;
|
||||
private RangeBar rangebar_exp;
|
||||
|
||||
private ItemType lastSelectedItem; // Workaround android bug #7139
|
||||
|
||||
private final ImageView[] wornItemImage = new ImageView[Inventory.NUM_WORN_SLOTS];
|
||||
private final int[] defaultWornItemImageResourceIDs = new int[Inventory.NUM_WORN_SLOTS];
|
||||
|
||||
private SkillListAdapter skillListAdapter;
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
this.world = app.world;
|
||||
this.view = app.currentView.get();
|
||||
|
||||
AndorsTrailApplication.setWindowParameters(this, app.preferences);
|
||||
|
||||
this.player = world.model.player;
|
||||
|
||||
setContentView(R.layout.heroinfo);
|
||||
|
||||
Resources res = getResources();
|
||||
TabHost h = getTabHost();
|
||||
h.addTab(h.newTabSpec("char")
|
||||
|
||||
tabHost = (TabHost) findViewById(android.R.id.tabhost);
|
||||
tabHost.setup(this.getLocalActivityManager());
|
||||
|
||||
tabHost.addTab(tabHost.newTabSpec("char")
|
||||
.setIndicator(res.getString(R.string.heroinfo_char), res.getDrawable(R.drawable.char_hero))
|
||||
.setContent(R.id.heroinfo_tab1));
|
||||
h.addTab(h.newTabSpec("skills")
|
||||
.setContent(new Intent(this, HeroinfoActivity_Stats.class)));
|
||||
tabHost.addTab(tabHost.newTabSpec("quests")
|
||||
.setIndicator(res.getString(R.string.heroinfo_quests), res.getDrawable(R.drawable.ui_icon_quest))
|
||||
.setContent(new Intent(this, HeroinfoActivity_Quests.class)));
|
||||
tabHost.addTab(tabHost.newTabSpec("skills")
|
||||
.setIndicator(res.getString(R.string.heroinfo_skill), res.getDrawable(R.drawable.ui_icon_skill))
|
||||
.setContent(R.id.heroinfo_tab2));
|
||||
h.addTab(h.newTabSpec("inv")
|
||||
.setContent(new Intent(this, HeroinfoActivity_Skills.class)));
|
||||
tabHost.addTab(tabHost.newTabSpec("inv")
|
||||
.setIndicator(res.getString(R.string.heroinfo_inv), res.getDrawable(R.drawable.ui_icon_equipment))
|
||||
.setContent(R.id.heroinfo_tab3));
|
||||
.setContent(new Intent(this, HeroinfoActivity_Inventory.class)));
|
||||
String t = world.model.uiSelections.selectedTabHeroInfo;
|
||||
if (t != null && t.length() > 0) {
|
||||
h.setCurrentTabByTag(t);
|
||||
tabHost.setCurrentTabByTag(t);
|
||||
}
|
||||
h.setup();
|
||||
|
||||
inventoryList = (ListView) h.findViewById(R.id.inventorylist_root);
|
||||
registerForContextMenu(inventoryList);
|
||||
inventoryList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
showInventoryItemInfo((int) id);
|
||||
}
|
||||
});
|
||||
container = player.inventory;
|
||||
|
||||
ImageView iv = (ImageView) findViewById(R.id.heroinfo_image);
|
||||
iv.setImageBitmap(world.tileStore.getBitmap(player.traits.iconID));
|
||||
|
||||
((TextView) findViewById(R.id.heroinfo_title)).setText(player.traits.name);
|
||||
heroinfo_ap = (TextView) findViewById(R.id.heroinfo_ap);
|
||||
heroinfo_movecost = (TextView) findViewById(R.id.heroinfo_movecost);
|
||||
heroinfo_currenttraits = (TraitsInfoView) findViewById(R.id.heroinfo_currenttraits);
|
||||
heroinfo_itemeffects = (ItemEffectsView) findViewById(R.id.heroinfo_itemeffects);
|
||||
heroinfo_currentconditions_title = (TextView) findViewById(R.id.heroinfo_currentconditions_title);
|
||||
heroinfo_currentconditions = (LinearLayout) findViewById(R.id.heroinfo_currentconditions);
|
||||
heroinfo_stats_gold = (TextView) findViewById(R.id.heroinfo_stats_gold);
|
||||
heroinfo_stats_attack = (TextView) findViewById(R.id.heroinfo_stats_attack);
|
||||
heroinfo_stats_defense = (TextView) findViewById(R.id.heroinfo_stats_defense);
|
||||
heroinfo_level = (TextView) findViewById(R.id.heroinfo_level);
|
||||
heroinfo_totalexperience = (TextView) findViewById(R.id.heroinfo_totalexperience);
|
||||
|
||||
rangebar_hp = (RangeBar) findViewById(R.id.heroinfo_healthbar);
|
||||
rangebar_hp.init(R.drawable.ui_progress_health, R.string.status_hp);
|
||||
rangebar_exp = (RangeBar) findViewById(R.id.heroinfo_expbar);
|
||||
rangebar_exp.init(R.drawable.ui_progress_exp, R.string.status_exp);
|
||||
|
||||
levelUpButton = (Button) findViewById(R.id.heroinfo_levelup);
|
||||
levelUpButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showLevelUp(HeroinfoActivity.this);
|
||||
// We disable the button temporarily, so that there is no possibility
|
||||
// of clicking it again before the levelup activity has started.
|
||||
// See issue:
|
||||
// http://code.google.com/p/andors-trail/issues/detail?id=42
|
||||
levelUpButton.setEnabled(false);
|
||||
}
|
||||
});
|
||||
questsButton = (Button) findViewById(R.id.heroinfo_quests);
|
||||
questsButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showQuestLog(HeroinfoActivity.this);
|
||||
}
|
||||
});
|
||||
|
||||
setWearSlot(ItemType.CATEGORY_WEAPON, R.id.heroinfo_worn_weapon, R.drawable.equip_weapon);
|
||||
setWearSlot(ItemType.CATEGORY_SHIELD, R.id.heroinfo_worn_shield, R.drawable.equip_shield);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_HEAD, R.id.heroinfo_worn_head, R.drawable.equip_head);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_BODY, R.id.heroinfo_worn_body, R.drawable.equip_body);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_FEET, R.id.heroinfo_worn_feet, R.drawable.equip_feet);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_NECK, R.id.heroinfo_worn_neck, R.drawable.equip_neck);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_HAND, R.id.heroinfo_worn_hand, R.drawable.equip_hand);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_RING, R.id.heroinfo_worn_ringleft, R.drawable.equip_ring);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_RING+1, R.id.heroinfo_worn_ringright, R.drawable.equip_ring);
|
||||
|
||||
inventoryList.setAdapter(new ItemContainerAdapter(this, world.tileStore, container));
|
||||
|
||||
skillListAdapter = new SkillListAdapter(this, world.skills.getAllSkills(), player);
|
||||
ListView skillList = (ListView) findViewById(R.id.heroinfo_listskills_list);
|
||||
skillList.setAdapter(skillListAdapter);
|
||||
skillList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Dialogs.showSkillInfo(HeroinfoActivity.this, (int) id);
|
||||
}
|
||||
});
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
private void setWearSlot(final int inventorySlot, int viewId, int resourceId) {
|
||||
final ImageView view = (ImageView) findViewById(viewId);
|
||||
wornItemImage[inventorySlot] = view;
|
||||
defaultWornItemImageResourceIDs[inventorySlot] = resourceId;
|
||||
view.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (player.inventory.isEmptySlot(inventorySlot)) return;
|
||||
view.setClickable(false); // Will be enabled again on update()
|
||||
showEquippedItemInfo(player.inventory.wear[inventorySlot], inventorySlot);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
world.model.uiSelections.selectedTabHeroInfo = getTabHost().getCurrentTabTag();
|
||||
world.model.uiSelections.selectedTabHeroInfo = tabHost.getCurrentTabTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
ItemType itemType;
|
||||
switch (requestCode) {
|
||||
case MainActivity.INTENTREQUEST_ITEMINFO:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
|
||||
int actionType = data.getExtras().getInt("actionType");
|
||||
if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
|
||||
view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_EQUIP) {
|
||||
view.itemController.equipItem(itemType);
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_USE) {
|
||||
view.itemController.useItem(itemType);
|
||||
}
|
||||
break;
|
||||
case MainActivity.INTENTREQUEST_LEVELUP:
|
||||
break;
|
||||
case MainActivity.INTENTREQUEST_BULKSELECT_DROP:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
int quantity = data.getExtras().getInt("selectedAmount");
|
||||
int itemTypeID = data.getExtras().getInt("itemTypeID");
|
||||
itemType = world.itemTypes.getItemType(itemTypeID);
|
||||
view.itemController.dropItem(itemType, quantity);
|
||||
break;
|
||||
case MainActivity.INTENTREQUEST_SKILLINFO:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
int skillID = data.getExtras().getInt("skillID");
|
||||
player.addSkillLevel(skillID);
|
||||
break;
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
private void update() {
|
||||
updateItemList();
|
||||
updateTraits();
|
||||
updateWorn();
|
||||
updateLevelup();
|
||||
updateConditions();
|
||||
updateSkillList();
|
||||
}
|
||||
|
||||
private void updateSkillList() {
|
||||
TextView listskills_number_of_increases = (TextView) findViewById(R.id.heroinfo_listskills_number_of_increases);
|
||||
|
||||
int numberOfSkillIncreases = player.availableSkillIncreases;
|
||||
if (numberOfSkillIncreases > 0) {
|
||||
if (numberOfSkillIncreases == 1) {
|
||||
listskills_number_of_increases.setText(R.string.skill_number_of_increases_one);
|
||||
} else {
|
||||
listskills_number_of_increases.setText(getResources().getString(R.string.skill_number_of_increases_several, numberOfSkillIncreases));
|
||||
}
|
||||
listskills_number_of_increases.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
listskills_number_of_increases.setVisibility(View.GONE);
|
||||
}
|
||||
skillListAdapter.notifyDataSetInvalidated();
|
||||
}
|
||||
|
||||
private void updateLevelup() {
|
||||
levelUpButton.setEnabled(player.canLevelup());
|
||||
}
|
||||
|
||||
private void updateTraits() {
|
||||
heroinfo_level.setText(Integer.toString(player.level));
|
||||
heroinfo_totalexperience.setText(Integer.toString(player.totalExperience));
|
||||
heroinfo_ap.setText(player.ap.toString());
|
||||
heroinfo_movecost.setText(Integer.toString(player.traits.moveCost));
|
||||
heroinfo_stats_gold.setText(getResources().getString(R.string.heroinfo_gold, player.inventory.gold));
|
||||
heroinfo_stats_attack.setText(ItemType.describeAttackEffect(player.traits));
|
||||
heroinfo_stats_defense.setText(ItemType.describeBlockEffect(player.traits));
|
||||
rangebar_hp.update(player.health);
|
||||
rangebar_exp.update(player.levelExperience);
|
||||
|
||||
heroinfo_currenttraits.update(player.traits);
|
||||
ArrayList<ItemTraits_OnUse> effects_hit = new ArrayList<ItemTraits_OnUse>();
|
||||
ArrayList<ItemTraits_OnUse> effects_kill = new ArrayList<ItemTraits_OnUse>();
|
||||
for (int i = 0; i < Inventory.NUM_WORN_SLOTS; ++i) {
|
||||
ItemType type = player.inventory.wear[i];
|
||||
if (type == null) continue;
|
||||
if (type.effects_hit != null) effects_hit.add(type.effects_hit);
|
||||
if (type.effects_kill != null) effects_kill.add(type.effects_kill);
|
||||
}
|
||||
if (effects_hit.isEmpty()) effects_hit = null;
|
||||
if (effects_kill.isEmpty()) effects_kill = null;
|
||||
heroinfo_itemeffects.update(null, null, effects_hit, effects_kill);
|
||||
}
|
||||
|
||||
private void updateWorn() {
|
||||
for(int slot = 0; slot < Inventory.NUM_WORN_SLOTS; ++slot) {
|
||||
updateWornImage(wornItemImage[slot], defaultWornItemImageResourceIDs[slot], player.inventory.wear[slot]);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateWornImage(ImageView view, int resourceIDEmptyImage, ItemType type) {
|
||||
if (type != null) {
|
||||
world.tileStore.setImageViewTile(view, type);
|
||||
} else {
|
||||
view.setImageResource(resourceIDEmptyImage);
|
||||
}
|
||||
view.setClickable(true);
|
||||
}
|
||||
|
||||
private void updateItemList() {
|
||||
((ItemContainerAdapter) inventoryList.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void updateConditions() {
|
||||
if (player.conditions.isEmpty()) {
|
||||
heroinfo_currentconditions_title.setVisibility(View.GONE);
|
||||
heroinfo_currentconditions.setVisibility(View.GONE);
|
||||
} else {
|
||||
heroinfo_currentconditions_title.setVisibility(View.VISIBLE);
|
||||
heroinfo_currentconditions.setVisibility(View.VISIBLE);
|
||||
heroinfo_currentconditions.removeAllViews();
|
||||
final Resources res = getResources();
|
||||
final Context context = this;
|
||||
for (ActorCondition c : player.conditions) {
|
||||
View v = View.inflate(this, R.layout.inventoryitemview, null);
|
||||
((ImageView) v.findViewById(R.id.inv_image)).setImageBitmap(world.tileStore.getBitmap(c.conditionType.iconID));
|
||||
((TextView) v.findViewById(R.id.inv_text)).setText(describeEffect(res, c));
|
||||
final ActorConditionType conditionType = c.conditionType;
|
||||
v.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showActorConditionInfo(context, conditionType);
|
||||
}
|
||||
});
|
||||
heroinfo_currentconditions.addView(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String describeEffect(Resources res, ActorCondition c) {
|
||||
return ActorConditionEffectList.describeEffect(res, c.conditionType, c.magnitude, c.duration);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
ItemType type = getSelectedItemType((AdapterContextMenuInfo) menuInfo);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
switch (v.getId()) {
|
||||
case R.id.inventorylist_root:
|
||||
inflater.inflate(R.menu.inventoryitem, menu);
|
||||
if (type.isUsable()){
|
||||
menu.findItem(R.id.inv_menu_use).setVisible(true);
|
||||
menu.findItem(R.id.inv_menu_assign).setVisible(true);
|
||||
}
|
||||
if (type.isEquippable()) menu.findItem(R.id.inv_menu_equip).setVisible(true);
|
||||
break;
|
||||
}
|
||||
lastSelectedItem = null;
|
||||
}
|
||||
|
||||
private int getSelectedID(AdapterContextMenuInfo info) {
|
||||
return (int) info.id;
|
||||
}
|
||||
private ItemType getSelectedItemType(AdapterContextMenuInfo info) {
|
||||
return world.itemTypes.getItemType(getSelectedID(info));
|
||||
}
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
|
||||
switch (item.getItemId()) {
|
||||
case R.id.inv_menu_info:
|
||||
showInventoryItemInfo(getSelectedItemType(info));
|
||||
//context.controller.itemInfo(this, getSelectedItemType(info));
|
||||
break;
|
||||
case R.id.inv_menu_drop:
|
||||
int itemTypeID = getSelectedItemType(info).id;
|
||||
Dialogs.showBulkDroppingInterface(this, itemTypeID, player.inventory.getItemQuantity(itemTypeID));
|
||||
break;
|
||||
case R.id.inv_menu_equip:
|
||||
view.itemController.equipItem(getSelectedItemType(info));
|
||||
break;
|
||||
/*case R.id.inv_menu_unequip:
|
||||
context.controller.unequipItem(this, getSelectedItemType(info));
|
||||
break;*/
|
||||
case R.id.inv_menu_use:
|
||||
view.itemController.useItem(getSelectedItemType(info));
|
||||
break;
|
||||
case R.id.inv_menu_assign:
|
||||
lastSelectedItem = getSelectedItemType(info);
|
||||
break;
|
||||
case R.id.inv_assign_slot1:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 0);
|
||||
break;
|
||||
case R.id.inv_assign_slot2:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 1);
|
||||
break;
|
||||
case R.id.inv_assign_slot3:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 2);
|
||||
break;
|
||||
default:
|
||||
return super.onContextItemSelected(item);
|
||||
}
|
||||
update();
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showEquippedItemInfo(ItemType itemType, int inventorySlot) {
|
||||
String text;
|
||||
boolean enabled = true;
|
||||
|
||||
if (world.model.uiSelections.isInCombat) {
|
||||
int ap = world.model.player.reequipCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_unequip_ap, ap);
|
||||
if (ap > 0) {
|
||||
if (world.model.player.ap.current < ap) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_unequip);
|
||||
}
|
||||
Dialogs.showItemInfo(HeroinfoActivity.this, itemType.id, ItemInfoActivity.ITEMACTION_UNEQUIP, text, enabled, inventorySlot);
|
||||
}
|
||||
private void showInventoryItemInfo(int itemTypeID) {
|
||||
showInventoryItemInfo(world.itemTypes.getItemType(itemTypeID));
|
||||
}
|
||||
private void showInventoryItemInfo(ItemType itemType) {
|
||||
String text = "";
|
||||
int ap = 0;
|
||||
boolean enabled = true;
|
||||
int action = ItemInfoActivity.ITEMACTION_NONE;
|
||||
final boolean isInCombat = world.model.uiSelections.isInCombat;
|
||||
if (itemType.isEquippable()) {
|
||||
if (isInCombat) {
|
||||
ap = world.model.player.reequipCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_equip_ap, ap);
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_equip);
|
||||
}
|
||||
action = ItemInfoActivity.ITEMACTION_EQUIP;
|
||||
} else if (itemType.isUsable()) {
|
||||
if (isInCombat) {
|
||||
ap = world.model.player.useItemCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_use_ap, ap);
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_use);
|
||||
}
|
||||
action = ItemInfoActivity.ITEMACTION_USE;
|
||||
}
|
||||
if (isInCombat && ap > 0) {
|
||||
if (world.model.player.ap.current < ap) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
Dialogs.showItemInfo(HeroinfoActivity.this, itemType.id, action, text, enabled, -1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,280 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.Dialogs;
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.ViewContext;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemContainerAdapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
|
||||
public final class HeroinfoActivity_Inventory extends Activity {
|
||||
private WorldContext world;
|
||||
private ViewContext view;
|
||||
|
||||
private Player player;
|
||||
private ItemContainer container;
|
||||
|
||||
private ListView inventoryList;
|
||||
private TextView heroinfo_stats_gold;
|
||||
private TextView heroinfo_stats_attack;
|
||||
private TextView heroinfo_stats_defense;
|
||||
|
||||
private ItemType lastSelectedItem; // Workaround android bug #7139
|
||||
|
||||
private final ImageView[] wornItemImage = new ImageView[Inventory.NUM_WORN_SLOTS];
|
||||
private final int[] defaultWornItemImageResourceIDs = new int[Inventory.NUM_WORN_SLOTS];
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
this.world = app.world;
|
||||
this.view = app.currentView.get();
|
||||
this.player = world.model.player;
|
||||
|
||||
setContentView(R.layout.heroinfo_inventory);
|
||||
|
||||
inventoryList = (ListView) findViewById(R.id.inventorylist_root);
|
||||
registerForContextMenu(inventoryList);
|
||||
inventoryList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
showInventoryItemInfo((int) id);
|
||||
}
|
||||
});
|
||||
container = player.inventory;
|
||||
|
||||
heroinfo_stats_gold = (TextView) findViewById(R.id.heroinfo_stats_gold);
|
||||
heroinfo_stats_attack = (TextView) findViewById(R.id.heroinfo_stats_attack);
|
||||
heroinfo_stats_defense = (TextView) findViewById(R.id.heroinfo_stats_defense);
|
||||
|
||||
setWearSlot(ItemType.CATEGORY_WEAPON, R.id.heroinfo_worn_weapon, R.drawable.equip_weapon);
|
||||
setWearSlot(ItemType.CATEGORY_SHIELD, R.id.heroinfo_worn_shield, R.drawable.equip_shield);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_HEAD, R.id.heroinfo_worn_head, R.drawable.equip_head);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_BODY, R.id.heroinfo_worn_body, R.drawable.equip_body);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_FEET, R.id.heroinfo_worn_feet, R.drawable.equip_feet);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_NECK, R.id.heroinfo_worn_neck, R.drawable.equip_neck);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_HAND, R.id.heroinfo_worn_hand, R.drawable.equip_hand);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_RING, R.id.heroinfo_worn_ringleft, R.drawable.equip_ring);
|
||||
setWearSlot(ItemType.CATEGORY_WEARABLE_RING+1, R.id.heroinfo_worn_ringright, R.drawable.equip_ring);
|
||||
|
||||
inventoryList.setAdapter(new ItemContainerAdapter(this, world.tileStore, container));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
update();
|
||||
}
|
||||
|
||||
private void setWearSlot(final int inventorySlot, int viewId, int resourceId) {
|
||||
final ImageView view = (ImageView) findViewById(viewId);
|
||||
wornItemImage[inventorySlot] = view;
|
||||
defaultWornItemImageResourceIDs[inventorySlot] = resourceId;
|
||||
view.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (player.inventory.isEmptySlot(inventorySlot)) return;
|
||||
view.setClickable(false); // Will be enabled again on update()
|
||||
showEquippedItemInfo(player.inventory.wear[inventorySlot], inventorySlot);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
ItemType itemType;
|
||||
switch (requestCode) {
|
||||
case MainActivity.INTENTREQUEST_ITEMINFO:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
|
||||
int actionType = data.getExtras().getInt("actionType");
|
||||
if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
|
||||
view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_EQUIP) {
|
||||
view.itemController.equipItem(itemType);
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_USE) {
|
||||
view.itemController.useItem(itemType);
|
||||
}
|
||||
break;
|
||||
case MainActivity.INTENTREQUEST_BULKSELECT_DROP:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
int quantity = data.getExtras().getInt("selectedAmount");
|
||||
int itemTypeID = data.getExtras().getInt("itemTypeID");
|
||||
itemType = world.itemTypes.getItemType(itemTypeID);
|
||||
view.itemController.dropItem(itemType, quantity);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void update() {
|
||||
updateTraits();
|
||||
updateWorn();
|
||||
updateItemList();
|
||||
}
|
||||
|
||||
private void updateTraits() {
|
||||
heroinfo_stats_gold.setText(getResources().getString(R.string.heroinfo_gold, player.inventory.gold));
|
||||
heroinfo_stats_attack.setText(ItemType.describeAttackEffect(player.traits));
|
||||
heroinfo_stats_defense.setText(ItemType.describeBlockEffect(player.traits));
|
||||
}
|
||||
|
||||
private void updateWorn() {
|
||||
for(int slot = 0; slot < Inventory.NUM_WORN_SLOTS; ++slot) {
|
||||
updateWornImage(wornItemImage[slot], defaultWornItemImageResourceIDs[slot], player.inventory.wear[slot]);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateWornImage(ImageView view, int resourceIDEmptyImage, ItemType type) {
|
||||
if (type != null) {
|
||||
world.tileStore.setImageViewTile(view, type);
|
||||
} else {
|
||||
view.setImageResource(resourceIDEmptyImage);
|
||||
}
|
||||
view.setClickable(true);
|
||||
}
|
||||
|
||||
private void updateItemList() {
|
||||
((ItemContainerAdapter) inventoryList.getAdapter()).notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo);
|
||||
ItemType type = getSelectedItemType((AdapterContextMenuInfo) menuInfo);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
switch (v.getId()) {
|
||||
case R.id.inventorylist_root:
|
||||
inflater.inflate(R.menu.inventoryitem, menu);
|
||||
if (type.isUsable()){
|
||||
menu.findItem(R.id.inv_menu_use).setVisible(true);
|
||||
menu.findItem(R.id.inv_menu_assign).setVisible(true);
|
||||
}
|
||||
if (type.isEquippable()) menu.findItem(R.id.inv_menu_equip).setVisible(true);
|
||||
break;
|
||||
}
|
||||
lastSelectedItem = null;
|
||||
}
|
||||
|
||||
private int getSelectedID(AdapterContextMenuInfo info) {
|
||||
return (int) info.id;
|
||||
}
|
||||
private ItemType getSelectedItemType(AdapterContextMenuInfo info) {
|
||||
return world.itemTypes.getItemType(getSelectedID(info));
|
||||
}
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
|
||||
switch (item.getItemId()) {
|
||||
case R.id.inv_menu_info:
|
||||
showInventoryItemInfo(getSelectedItemType(info));
|
||||
//context.controller.itemInfo(this, getSelectedItemType(info));
|
||||
break;
|
||||
case R.id.inv_menu_drop:
|
||||
int itemTypeID = getSelectedItemType(info).id;
|
||||
Dialogs.showBulkDroppingInterface(this, itemTypeID, player.inventory.getItemQuantity(itemTypeID));
|
||||
break;
|
||||
case R.id.inv_menu_equip:
|
||||
view.itemController.equipItem(getSelectedItemType(info));
|
||||
break;
|
||||
/*case R.id.inv_menu_unequip:
|
||||
context.controller.unequipItem(this, getSelectedItemType(info));
|
||||
break;*/
|
||||
case R.id.inv_menu_use:
|
||||
view.itemController.useItem(getSelectedItemType(info));
|
||||
break;
|
||||
case R.id.inv_menu_assign:
|
||||
lastSelectedItem = getSelectedItemType(info);
|
||||
break;
|
||||
case R.id.inv_assign_slot1:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 0);
|
||||
break;
|
||||
case R.id.inv_assign_slot2:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 1);
|
||||
break;
|
||||
case R.id.inv_assign_slot3:
|
||||
view.itemController.setQuickItem(lastSelectedItem, 2);
|
||||
break;
|
||||
default:
|
||||
return super.onContextItemSelected(item);
|
||||
}
|
||||
update();
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showEquippedItemInfo(ItemType itemType, int inventorySlot) {
|
||||
String text;
|
||||
boolean enabled = true;
|
||||
|
||||
if (world.model.uiSelections.isInCombat) {
|
||||
int ap = world.model.player.reequipCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_unequip_ap, ap);
|
||||
if (ap > 0) {
|
||||
if (world.model.player.ap.current < ap) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_unequip);
|
||||
}
|
||||
Dialogs.showItemInfo(HeroinfoActivity_Inventory.this, itemType.id, ItemInfoActivity.ITEMACTION_UNEQUIP, text, enabled, inventorySlot);
|
||||
}
|
||||
private void showInventoryItemInfo(int itemTypeID) {
|
||||
showInventoryItemInfo(world.itemTypes.getItemType(itemTypeID));
|
||||
}
|
||||
private void showInventoryItemInfo(ItemType itemType) {
|
||||
String text = "";
|
||||
int ap = 0;
|
||||
boolean enabled = true;
|
||||
int action = ItemInfoActivity.ITEMACTION_NONE;
|
||||
final boolean isInCombat = world.model.uiSelections.isInCombat;
|
||||
if (itemType.isEquippable()) {
|
||||
if (isInCombat) {
|
||||
ap = world.model.player.reequipCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_equip_ap, ap);
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_equip);
|
||||
}
|
||||
action = ItemInfoActivity.ITEMACTION_EQUIP;
|
||||
} else if (itemType.isUsable()) {
|
||||
if (isInCombat) {
|
||||
ap = world.model.player.useItemCost;
|
||||
text = getResources().getString(R.string.iteminfo_action_use_ap, ap);
|
||||
} else {
|
||||
text = getResources().getString(R.string.iteminfo_action_use);
|
||||
}
|
||||
action = ItemInfoActivity.ITEMACTION_USE;
|
||||
}
|
||||
if (isInCombat && ap > 0) {
|
||||
if (world.model.player.ap.current < ap) {
|
||||
enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
Dialogs.showItemInfo(HeroinfoActivity_Inventory.this, itemType.id, action, text, enabled, -1);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,7 +22,7 @@ import com.gpl.rpg.AndorsTrail.model.quest.Quest;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
|
||||
|
||||
public final class QuestLogActivity extends Activity {
|
||||
public final class HeroinfoActivity_Quests extends Activity {
|
||||
|
||||
private Spinner questlog_includecompleted;
|
||||
private SimpleExpandableListAdapter questlog_contents_adapter;
|
||||
@@ -73,13 +73,18 @@ public final class QuestLogActivity extends Activity {
|
||||
, new int[] { R.id.questlog_entrytext }
|
||||
);
|
||||
questlog_contents.setAdapter(questlog_contents_adapter);
|
||||
reloadQuests();
|
||||
}
|
||||
|
||||
private static final String mn_questName = "questName";
|
||||
private static final String mn_questStatus = "questStatus";
|
||||
private static final String mn_logText = "logText";
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
reloadQuests();
|
||||
}
|
||||
|
||||
private void reloadQuests() {
|
||||
groupList.clear();
|
||||
childList.clear();
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.Dialogs;
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.view.SkillListAdapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
|
||||
public final class HeroinfoActivity_Skills extends Activity {
|
||||
private WorldContext world;
|
||||
|
||||
private Player player;
|
||||
|
||||
private SkillListAdapter skillListAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
this.world = app.world;
|
||||
this.player = world.model.player;
|
||||
|
||||
setContentView(R.layout.heroinfo_skill_list);
|
||||
|
||||
skillListAdapter = new SkillListAdapter(this, world.skills.getAllSkills(), player);
|
||||
ListView skillList = (ListView) findViewById(R.id.heroinfo_listskills_list);
|
||||
skillList.setAdapter(skillListAdapter);
|
||||
skillList.setOnItemClickListener(new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Dialogs.showSkillInfo(HeroinfoActivity_Skills.this, (int) id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
updateSkillList();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
switch (requestCode) {
|
||||
case MainActivity.INTENTREQUEST_SKILLINFO:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
int skillID = data.getExtras().getInt("skillID");
|
||||
player.addSkillLevel(skillID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSkillList() {
|
||||
TextView listskills_number_of_increases = (TextView) findViewById(R.id.heroinfo_listskills_number_of_increases);
|
||||
|
||||
int numberOfSkillIncreases = player.availableSkillIncreases;
|
||||
if (numberOfSkillIncreases > 0) {
|
||||
if (numberOfSkillIncreases == 1) {
|
||||
listskills_number_of_increases.setText(R.string.skill_number_of_increases_one);
|
||||
} else {
|
||||
listskills_number_of_increases.setText(getResources().getString(R.string.skill_number_of_increases_several, numberOfSkillIncreases));
|
||||
}
|
||||
listskills_number_of_increases.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
listskills_number_of_increases.setVisibility(View.GONE);
|
||||
}
|
||||
skillListAdapter.notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.Dialogs;
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.ViewContext;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
|
||||
import com.gpl.rpg.AndorsTrail.view.ActorConditionEffectList;
|
||||
import com.gpl.rpg.AndorsTrail.view.ItemEffectsView;
|
||||
import com.gpl.rpg.AndorsTrail.view.RangeBar;
|
||||
import com.gpl.rpg.AndorsTrail.view.TraitsInfoView;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.UnderlineSpan;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
public final class HeroinfoActivity_Stats extends Activity {
|
||||
private WorldContext world;
|
||||
private ViewContext view;
|
||||
|
||||
private Player player;
|
||||
|
||||
private Button levelUpButton;
|
||||
private TextView heroinfo_ap;
|
||||
private TextView heroinfo_movecost;
|
||||
private TraitsInfoView heroinfo_currenttraits;
|
||||
private ItemEffectsView heroinfo_itemeffects;
|
||||
private TextView heroinfo_currentconditions_title;
|
||||
private LinearLayout heroinfo_currentconditions;
|
||||
private TextView heroinfo_level;
|
||||
private TextView heroinfo_totalexperience;
|
||||
private RangeBar rangebar_hp;
|
||||
private RangeBar rangebar_exp;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
|
||||
this.world = app.world;
|
||||
this.view = app.currentView.get();
|
||||
this.player = world.model.player;
|
||||
|
||||
setContentView(R.layout.heroinfo_stats);
|
||||
|
||||
ImageView iv = (ImageView) findViewById(R.id.heroinfo_image);
|
||||
iv.setImageBitmap(world.tileStore.getBitmap(player.traits.iconID));
|
||||
|
||||
((TextView) findViewById(R.id.heroinfo_title)).setText(player.traits.name);
|
||||
heroinfo_ap = (TextView) findViewById(R.id.heroinfo_ap);
|
||||
heroinfo_movecost = (TextView) findViewById(R.id.heroinfo_movecost);
|
||||
heroinfo_currenttraits = (TraitsInfoView) findViewById(R.id.heroinfo_currenttraits);
|
||||
heroinfo_itemeffects = (ItemEffectsView) findViewById(R.id.heroinfo_itemeffects);
|
||||
heroinfo_currentconditions_title = (TextView) findViewById(R.id.heroinfo_currentconditions_title);
|
||||
heroinfo_currentconditions = (LinearLayout) findViewById(R.id.heroinfo_currentconditions);
|
||||
heroinfo_level = (TextView) findViewById(R.id.heroinfo_level);
|
||||
heroinfo_totalexperience = (TextView) findViewById(R.id.heroinfo_totalexperience);
|
||||
|
||||
rangebar_hp = (RangeBar) findViewById(R.id.heroinfo_healthbar);
|
||||
rangebar_hp.init(R.drawable.ui_progress_health, R.string.status_hp);
|
||||
rangebar_exp = (RangeBar) findViewById(R.id.heroinfo_expbar);
|
||||
rangebar_exp.init(R.drawable.ui_progress_exp, R.string.status_exp);
|
||||
|
||||
levelUpButton = (Button) findViewById(R.id.heroinfo_levelup);
|
||||
levelUpButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showLevelUp(HeroinfoActivity_Stats.this);
|
||||
// We disable the button temporarily, so that there is no possibility
|
||||
// of clicking it again before the levelup activity has started.
|
||||
// See issue:
|
||||
// http://code.google.com/p/andors-trail/issues/detail?id=42
|
||||
levelUpButton.setEnabled(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
updateTraits();
|
||||
updateLevelup();
|
||||
updateConditions();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
ItemType itemType;
|
||||
switch (requestCode) {
|
||||
case MainActivity.INTENTREQUEST_ITEMINFO:
|
||||
if (resultCode != RESULT_OK) break;
|
||||
|
||||
itemType = world.itemTypes.getItemType(data.getExtras().getInt("itemTypeID"));
|
||||
int actionType = data.getExtras().getInt("actionType");
|
||||
if (actionType == ItemInfoActivity.ITEMACTION_UNEQUIP) {
|
||||
view.itemController.unequipSlot(itemType, data.getExtras().getInt("inventorySlot"));
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_EQUIP) {
|
||||
view.itemController.equipItem(itemType);
|
||||
} else if (actionType == ItemInfoActivity.ITEMACTION_USE) {
|
||||
view.itemController.useItem(itemType);
|
||||
}
|
||||
break;
|
||||
case MainActivity.INTENTREQUEST_LEVELUP:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLevelup() {
|
||||
levelUpButton.setEnabled(player.canLevelup());
|
||||
}
|
||||
|
||||
private void updateTraits() {
|
||||
heroinfo_level.setText(Integer.toString(player.level));
|
||||
heroinfo_totalexperience.setText(Integer.toString(player.totalExperience));
|
||||
heroinfo_ap.setText(player.ap.toString());
|
||||
heroinfo_movecost.setText(Integer.toString(player.traits.moveCost));
|
||||
rangebar_hp.update(player.health);
|
||||
rangebar_exp.update(player.levelExperience);
|
||||
|
||||
heroinfo_currenttraits.update(player.traits);
|
||||
ArrayList<ItemTraits_OnUse> effects_hit = new ArrayList<ItemTraits_OnUse>();
|
||||
ArrayList<ItemTraits_OnUse> effects_kill = new ArrayList<ItemTraits_OnUse>();
|
||||
for (int i = 0; i < Inventory.NUM_WORN_SLOTS; ++i) {
|
||||
ItemType type = player.inventory.wear[i];
|
||||
if (type == null) continue;
|
||||
if (type.effects_hit != null) effects_hit.add(type.effects_hit);
|
||||
if (type.effects_kill != null) effects_kill.add(type.effects_kill);
|
||||
}
|
||||
if (effects_hit.isEmpty()) effects_hit = null;
|
||||
if (effects_kill.isEmpty()) effects_kill = null;
|
||||
heroinfo_itemeffects.update(null, null, effects_hit, effects_kill);
|
||||
}
|
||||
|
||||
private void updateConditions() {
|
||||
if (player.conditions.isEmpty()) {
|
||||
heroinfo_currentconditions_title.setVisibility(View.GONE);
|
||||
heroinfo_currentconditions.setVisibility(View.GONE);
|
||||
} else {
|
||||
heroinfo_currentconditions_title.setVisibility(View.VISIBLE);
|
||||
heroinfo_currentconditions.setVisibility(View.VISIBLE);
|
||||
heroinfo_currentconditions.removeAllViews();
|
||||
final Resources res = getResources();
|
||||
final Context context = this;
|
||||
for (ActorCondition c : player.conditions) {
|
||||
View v = View.inflate(this, R.layout.inventoryitemview, null);
|
||||
((ImageView) v.findViewById(R.id.inv_image)).setImageBitmap(world.tileStore.getBitmap(c.conditionType.iconID));
|
||||
SpannableString content = new SpannableString(describeEffect(res, c));
|
||||
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
|
||||
((TextView) v.findViewById(R.id.inv_text)).setText(content);
|
||||
final ActorConditionType conditionType = c.conditionType;
|
||||
v.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showActorConditionInfo(context, conditionType);
|
||||
}
|
||||
});
|
||||
heroinfo_currentconditions.addView(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String describeEffect(Resources res, ActorCondition c) {
|
||||
return ActorConditionEffectList.describeEffect(res, c.conditionType, c.magnitude, c.duration);
|
||||
}
|
||||
}
|
||||
@@ -87,8 +87,30 @@ public final class ItemInfoActivity extends Activity {
|
||||
ItemInfoActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
tv = (TextView) findViewById(R.id.iteminfo_displaytype);
|
||||
if (itemType.isOrdinaryItem()) {
|
||||
tv.setVisibility(View.GONE);
|
||||
} else {
|
||||
tv.setVisibility(View.VISIBLE);
|
||||
tv.setText(getDisplayTypeRes(itemType.displayType));
|
||||
}
|
||||
}
|
||||
|
||||
private static int getDisplayTypeRes(int itemDisplayType) {
|
||||
switch (itemDisplayType) {
|
||||
case ItemType.DISPLAYTYPE_QUEST:
|
||||
return R.string.iteminfo_displaytype_quest;
|
||||
case ItemType.DISPLAYTYPE_LEGENDARY:
|
||||
return R.string.iteminfo_displaytype_legendary;
|
||||
case ItemType.DISPLAYTYPE_EXTRAORDINARY:
|
||||
return R.string.iteminfo_displaytype_extraordinary;
|
||||
case ItemType.DISPLAYTYPE_RARE:
|
||||
return R.string.iteminfo_displaytype_rare;
|
||||
default:
|
||||
return R.string.iteminfo_displaytype_rare;
|
||||
}
|
||||
}
|
||||
private static int getCategoryNameRes(int itemCategory) {
|
||||
switch (itemCategory) {
|
||||
case ItemType.CATEGORY_MONEY:
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
package com.gpl.rpg.AndorsTrail.activity;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
@@ -14,10 +19,11 @@ import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.Savegames;
|
||||
import com.gpl.rpg.AndorsTrail.Savegames.FileHeader;
|
||||
|
||||
public final class LoadSaveActivity extends Activity {
|
||||
public final class LoadSaveActivity extends Activity implements OnClickListener {
|
||||
private boolean isLoading = true;
|
||||
private static final int SLOT_NUMBER_CREATE_NEW_SLOT = -1;
|
||||
private static final int SLOT_NUMBER_FIRST_SLOT = 1;
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -39,40 +45,55 @@ public final class LoadSaveActivity extends Activity {
|
||||
tv.setText(R.string.loadsave_title_save);
|
||||
}
|
||||
|
||||
handleSlotButton(R.id.loadsave_slot_1, 1);
|
||||
handleSlotButton(R.id.loadsave_slot_2, 2);
|
||||
handleSlotButton(R.id.loadsave_slot_3, 3);
|
||||
handleSlotButton(R.id.loadsave_slot_4, 4);
|
||||
ViewGroup slotList = (ViewGroup) findViewById(R.id.loadsave_slot_list);
|
||||
Button slotTemplateButton = (Button) findViewById(R.id.loadsave_slot_n);
|
||||
Button createNewSlot = (Button) findViewById(R.id.loadsave_save_to_new_slot);
|
||||
LayoutParams params = slotTemplateButton.getLayoutParams();
|
||||
slotList.removeView(slotTemplateButton);
|
||||
slotList.removeView(createNewSlot);
|
||||
|
||||
addSavegameSlotButtons(slotList, params, Savegames.getUsedSavegameSlots(this));
|
||||
|
||||
if (!isLoading) {
|
||||
Button b = new Button(this);
|
||||
b.setLayoutParams(params);
|
||||
b.setTag(SLOT_NUMBER_CREATE_NEW_SLOT);
|
||||
b.setOnClickListener(this);
|
||||
b.setText(R.string.loadsave_save_to_new_slot);
|
||||
slotList.addView(b, params);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleSlotButton(int resId, final int slot) {
|
||||
final Button b = (Button) findViewById(resId);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
loadsave(slot);
|
||||
}
|
||||
});
|
||||
final FileHeader header = Savegames.quickload(this, slot);
|
||||
final boolean exists = (header != null);
|
||||
if (isLoading) {
|
||||
b.setEnabled(exists);
|
||||
} else {
|
||||
b.setEnabled(true);
|
||||
}
|
||||
String s = slot + ". ";
|
||||
if (header != null) {
|
||||
s += header.describe();
|
||||
} else {
|
||||
s += getString(R.string.loadsave_slot_empty);
|
||||
}
|
||||
b.setText(s);
|
||||
private void addSavegameSlotButtons(ViewGroup parent, LayoutParams params, Set<Integer> usedSavegameSlots) {
|
||||
for (int slot : usedSavegameSlots) {
|
||||
final FileHeader header = Savegames.quickload(this, slot);
|
||||
if (header == null) continue;
|
||||
|
||||
Button b = new Button(this);
|
||||
b.setLayoutParams(params);
|
||||
b.setTag(slot);
|
||||
b.setOnClickListener(this);
|
||||
b.setText(slot + ". " + header.describe());
|
||||
parent.addView(b, params);
|
||||
}
|
||||
}
|
||||
|
||||
public void loadsave(int slot) {
|
||||
Intent i = new Intent();
|
||||
if (slot == SLOT_NUMBER_CREATE_NEW_SLOT) {
|
||||
Set<Integer> usedSlots = Savegames.getUsedSavegameSlots(this);
|
||||
if (usedSlots.isEmpty()) slot = SLOT_NUMBER_FIRST_SLOT;
|
||||
else slot = Collections.max(usedSlots) + 1;
|
||||
}
|
||||
if (slot < SLOT_NUMBER_FIRST_SLOT) slot = SLOT_NUMBER_FIRST_SLOT;
|
||||
|
||||
Intent i = new Intent();
|
||||
i.putExtra("slot", slot);
|
||||
setResult(Activity.RESULT_OK, i);
|
||||
LoadSaveActivity.this.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
loadsave((Integer) view.getTag());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,6 +146,14 @@ public final class MainActivity extends Activity {
|
||||
world.model.player.inventory.addItem(itemType);
|
||||
itemType = world.itemTypes.getItemTypeByTag("pot_fatigue_restore");
|
||||
world.model.player.inventory.addItem(itemType, 20);
|
||||
itemType = world.itemTypes.getItemTypeByTag("quickdagger1");
|
||||
world.model.player.inventory.addItem(itemType);
|
||||
itemType = world.itemTypes.getItemTypeByTag("bonemeal_potion");
|
||||
world.model.player.inventory.addItem(itemType);
|
||||
itemType = world.itemTypes.getItemTypeByTag("calomyran_secrets");
|
||||
world.model.player.inventory.addItem(itemType);
|
||||
itemType = world.itemTypes.getItemTypeByTag("tail_caverat");
|
||||
world.model.player.inventory.addItem(itemType);
|
||||
|
||||
updateStatus();
|
||||
Toast.makeText(MainActivity.this, "DEBUG: added items", Toast.LENGTH_SHORT).show();
|
||||
|
||||
@@ -4,8 +4,11 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.controller.SkillController;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -13,10 +16,11 @@ import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
public final class SkillInfoActivity extends Activity {
|
||||
@@ -43,15 +47,16 @@ public final class SkillInfoActivity extends Activity {
|
||||
SkillController.setSkillIcon(skillinfo_image, skillID, res);
|
||||
|
||||
TextView skillinfo_title = (TextView) findViewById(R.id.skillinfo_title);
|
||||
skillinfo_title.setText(SkillCollection.getSkillTitleResourceID(skillID));
|
||||
skillinfo_title.setText(getSkillTitleResourceID(skillID));
|
||||
|
||||
TextView skillinfo_longdescription = (TextView) findViewById(R.id.skillinfo_longdescription);
|
||||
skillinfo_longdescription.setText(SkillCollection.getSkillLongDescription(skillID, res));
|
||||
skillinfo_longdescription.setText(getSkillLongDescription(skillID, res));
|
||||
|
||||
TextView skillinfo_currentlevel = (TextView) findViewById(R.id.skillinfo_currentlevel);
|
||||
final int playerSkillLevel = player.getSkillLevel(skillID);
|
||||
final int nextSkillLevel = playerSkillLevel + 1;
|
||||
if (player.hasSkill(skillID)) {
|
||||
int playerSkillLevel = player.getSkillLevel(skillID);
|
||||
if (skill.hasMaxLevel()) {
|
||||
if (skill.hasMaxLevel()) {
|
||||
skillinfo_currentlevel.setText(res.getString(R.string.skill_current_level_with_maximum, playerSkillLevel, skill.maxLevel));
|
||||
} else {
|
||||
skillinfo_currentlevel.setText(res.getString(R.string.skill_current_level, playerSkillLevel));
|
||||
@@ -61,13 +66,24 @@ public final class SkillInfoActivity extends Activity {
|
||||
}
|
||||
|
||||
|
||||
TextView skillinfo_prerequisites = (TextView) findViewById(R.id.skillinfo_prerequisites);
|
||||
LinearLayout parent = (LinearLayout) skillinfo_prerequisites.getParent();
|
||||
TextView skillinfo_requirement = (TextView) findViewById(R.id.skillinfo_requirement);
|
||||
LayoutParams requirementParams = skillinfo_requirement.getLayoutParams();
|
||||
ViewGroup requirementList = (ViewGroup) skillinfo_requirement.getParent();
|
||||
requirementList.removeView(skillinfo_requirement);
|
||||
if (skill.hasLevelupRequirements()) {
|
||||
//skillinfo_prerequisites.setText(SkillInfo.getLongDescription(skillID, res));
|
||||
} else {
|
||||
parent.removeView(skillinfo_prerequisites);
|
||||
for (SkillLevelRequirement requirement : skill.levelupRequirements) {
|
||||
TextView tv = new TextView(this);
|
||||
tv.setLayoutParams(requirementParams);
|
||||
|
||||
int requiredValue = requirement.getRequiredValue(nextSkillLevel);
|
||||
tv.setText(getRequirementDescription(requirement, requiredValue, res));
|
||||
boolean satisfiesRequirement = requirement.isSatisfiedByPlayer(player, nextSkillLevel);
|
||||
tv.setEnabled(!satisfiesRequirement);
|
||||
|
||||
requirementList.addView(tv, requirementParams);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Button b = (Button) findViewById(R.id.skillinfoinfo_close);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
@@ -91,4 +107,93 @@ public final class SkillInfoActivity extends Activity {
|
||||
b.setEnabled(SkillController.canLevelupSkill(player, skill));
|
||||
}
|
||||
|
||||
public static int getSkillTitleResourceID(int skill) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_title_weapon_chance;
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_title_weapon_dmg;
|
||||
case SkillCollection.SKILL_BARTER: return R.string.skill_title_barter;
|
||||
case SkillCollection.SKILL_DODGE: return R.string.skill_title_dodge;
|
||||
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_title_barkskin;
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_title_more_criticals;
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_title_better_criticals;
|
||||
case SkillCollection.SKILL_SPEED: return R.string.skill_title_speed;
|
||||
case SkillCollection.SKILL_COINFINDER: return R.string.skill_title_coinfinder;
|
||||
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_title_more_exp;
|
||||
case SkillCollection.SKILL_CLEAVE: return R.string.skill_title_cleave;
|
||||
case SkillCollection.SKILL_EATER: return R.string.skill_title_eater;
|
||||
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_title_fortitude;
|
||||
case SkillCollection.SKILL_EVASION: return R.string.skill_title_evasion;
|
||||
case SkillCollection.SKILL_REGENERATION: return R.string.skill_title_regeneration;
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_title_lower_exploss;
|
||||
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_title_magicfinder;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getSkillLongDescription(final int skill, final Resources res) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return res.getString(R.string.skill_longdescription_weapon_chance, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_CHANCE);
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return res.getString(R.string.skill_longdescription_weapon_dmg, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN);
|
||||
case SkillCollection.SKILL_BARTER: return res.getString(R.string.skill_longdescription_barter, SkillCollection.PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE);
|
||||
case SkillCollection.SKILL_DODGE: return res.getString(R.string.skill_longdescription_dodge, SkillCollection.PER_SKILLPOINT_INCREASE_DODGE);
|
||||
case SkillCollection.SKILL_BARKSKIN: return res.getString(R.string.skill_longdescription_barkskin, SkillCollection.PER_SKILLPOINT_INCREASE_BARKSKIN);
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return res.getString(R.string.skill_longdescription_more_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT);
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return res.getString(R.string.skill_longdescription_better_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT);
|
||||
case SkillCollection.SKILL_SPEED: return res.getString(R.string.skill_longdescription_speed, SkillCollection.PER_SKILLPOINT_INCREASE_SPEED);
|
||||
case SkillCollection.SKILL_COINFINDER: return res.getString(R.string.skill_longdescription_coinfinder, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
|
||||
case SkillCollection.SKILL_MORE_EXP: return res.getString(R.string.skill_longdescription_more_exp, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT);
|
||||
case SkillCollection.SKILL_CLEAVE: return res.getString(R.string.skill_longdescription_cleave, SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP);
|
||||
case SkillCollection.SKILL_EATER: return res.getString(R.string.skill_longdescription_eater, SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH);
|
||||
case SkillCollection.SKILL_FORTITUDE: return res.getString(R.string.skill_longdescription_fortitude, SkillCollection.PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH);
|
||||
case SkillCollection.SKILL_EVASION: return res.getString(R.string.skill_longdescription_evasion, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE);
|
||||
case SkillCollection.SKILL_REGENERATION: return res.getString(R.string.skill_longdescription_regeneration, SkillCollection.PER_SKILLPOINT_INCREASE_REGENERATION);
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return res.getString(R.string.skill_longdescription_lower_exploss, SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT, 100 / SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT);
|
||||
case SkillCollection.SKILL_MAGICFINDER: return res.getString(R.string.skill_longdescription_magicfinder, SkillCollection.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private static String getRequirementDescription(SkillLevelRequirement requirement, int requiredValue, final Resources res) {
|
||||
switch (requirement.requirementType) {
|
||||
case SkillLevelRequirement.REQUIREMENT_TYPE_SKILL_LEVEL:
|
||||
String skillName = res.getString(getSkillTitleResourceID(requirement.skillOrStatID));
|
||||
return res.getString(R.string.skill_prerequisite_other_skill, requiredValue, skillName);
|
||||
case SkillLevelRequirement.REQUIREMENT_TYPE_EXPERIENCE_LEVEL:
|
||||
return res.getString(R.string.skill_prerequisite_level, requiredValue);
|
||||
case SkillLevelRequirement.REQUIREMENT_TYPE_COMBAT_STAT:
|
||||
String combatStatName = res.getString(getRequirementCombatStatsResourceID(requirement.skillOrStatID)).replace(':', ' ').trim();
|
||||
return res.getString(R.string.skill_prerequisite_stat, requiredValue, combatStatName);
|
||||
case SkillLevelRequirement.REQUIREMENT_TYPE_ACTOR_STAT:
|
||||
String actorStatName = res.getString(getRequirementActorStatsResourceID(requirement.skillOrStatID)).replace(':', ' ').trim();
|
||||
return res.getString(R.string.skill_prerequisite_stat, requiredValue, actorStatName);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private static int getRequirementActorStatsResourceID(int statID) {
|
||||
switch (statID) {
|
||||
case ActorTraits.STAT_ACTOR_MAX_HP: return R.string.actorinfo_health;
|
||||
case ActorTraits.STAT_ACTOR_MAX_AP: return R.string.heroinfo_actionpoints;
|
||||
case ActorTraits.STAT_ACTOR_MOVECOST: return R.string.actorinfo_movecost;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private static int getRequirementCombatStatsResourceID(int statID) {
|
||||
switch (statID) {
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_COST: return R.string.traitsinfo_attack_cost;
|
||||
case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return R.string.traitsinfo_attack_chance;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_CHANCE: return R.string.traitsinfo_criticalhit_chance;
|
||||
case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return R.string.traitsinfo_criticalhit_multiplier;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return R.string.traitsinfo_attack_damage;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return R.string.traitsinfo_attack_damage;
|
||||
case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return R.string.traitsinfo_defense_chance;
|
||||
case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return R.string.traitsinfo_defense_damageresist;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ public final class StartScreenActivity extends Activity {
|
||||
private boolean hasExistingGame = false;
|
||||
private Button startscreen_continue;
|
||||
private Button startscreen_newgame;
|
||||
private Button startscreen_load;
|
||||
private TextView startscreen_currenthero;
|
||||
private EditText startscreen_enterheroname;
|
||||
|
||||
@@ -88,13 +89,15 @@ public final class StartScreenActivity extends Activity {
|
||||
}
|
||||
});
|
||||
|
||||
b = (Button) findViewById(R.id.startscreen_load);
|
||||
b.setOnClickListener(new OnClickListener() {
|
||||
startscreen_load = (Button) findViewById(R.id.startscreen_load);
|
||||
startscreen_load.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
Dialogs.showLoad(StartScreenActivity.this);
|
||||
}
|
||||
});
|
||||
boolean hasSavegames = !Savegames.getUsedSavegameSlots(this).isEmpty();
|
||||
b.setEnabled(hasSavegames);
|
||||
|
||||
final Resources res = getResources();
|
||||
app.world.tileStore.setDensity(res);
|
||||
@@ -134,6 +137,9 @@ public final class StartScreenActivity extends Activity {
|
||||
if (isNewVersion()) {
|
||||
Dialogs.showNewVersion(this);
|
||||
}
|
||||
|
||||
boolean hasSavegames = !Savegames.getUsedSavegameSlots(this).isEmpty();
|
||||
startscreen_load.setEnabled(hasSavegames);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,7 @@ public final class Constants {
|
||||
public static final String PREFERENCE_MODEL_LASTRUNVERSION = "lastversion";
|
||||
public static final String FILENAME_SAVEGAME_QUICKSAVE = "savegame";
|
||||
public static final String FILENAME_SAVEGAME_DIRECTORY = "andors-trail";
|
||||
public static final String FILENAME_SAVEGAME_SLOT = FILENAME_SAVEGAME_DIRECTORY + "/savegame";
|
||||
public static final String FILENAME_SAVEGAME_FILENAME_PREFIX = "savegame";
|
||||
|
||||
|
||||
public static final Random rnd = new Random();
|
||||
|
||||
@@ -65,12 +65,11 @@ public final class SkillController {
|
||||
public static boolean canLevelupSkill(Player player, SkillInfo skill) {
|
||||
if (player.availableSkillIncreases <= 0) return false;
|
||||
if (skill.isQuestSkill) return false;
|
||||
final int playerSkillLevel = player.getSkillLevel(skill.id);
|
||||
if (skill.hasMaxLevel()) {
|
||||
int playerSkillLevel = player.getSkillLevel(skill.id);
|
||||
if (playerSkillLevel >= skill.maxLevel) return false;
|
||||
}
|
||||
//if (skill.id == SkillCollection.SKILL_COINFINDER) return false;
|
||||
//if (skill.id == SkillCollection.SKILL_DODGE) return false;
|
||||
if (!skill.canLevelUpSkillTo(player, playerSkillLevel + 1)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,15 @@ import java.io.IOException;
|
||||
import com.gpl.rpg.AndorsTrail.util.Range;
|
||||
|
||||
public class CombatTraits {
|
||||
public static final int STAT_COMBAT_ATTACK_COST = 0;
|
||||
public static final int STAT_COMBAT_ATTACK_CHANCE = 1;
|
||||
public static final int STAT_COMBAT_CRITICAL_CHANCE = 2;
|
||||
public static final int STAT_COMBAT_CRITICAL_MULTIPLIER = 3;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MIN = 4;
|
||||
public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MAX = 5;
|
||||
public static final int STAT_COMBAT_BLOCK_CHANCE = 6;
|
||||
public static final int STAT_COMBAT_DAMAGE_RESISTANCE = 7;
|
||||
|
||||
public int attackCost;
|
||||
|
||||
public int attackChance;
|
||||
@@ -45,6 +54,21 @@ public class CombatTraits {
|
||||
return (int) Math.floor(maxAP / attackCost);
|
||||
}
|
||||
|
||||
public int getCombatStats(int statID) {
|
||||
switch (statID) {
|
||||
case STAT_COMBAT_ATTACK_COST: return attackCost;
|
||||
case STAT_COMBAT_ATTACK_CHANCE: return attackChance;
|
||||
case STAT_COMBAT_CRITICAL_CHANCE: return criticalChance;
|
||||
case STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) Math.floor(criticalMultiplier);
|
||||
case STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return damagePotential.current;
|
||||
case STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return damagePotential.max;
|
||||
case STAT_COMBAT_BLOCK_CHANCE: return blockChance;
|
||||
case STAT_COMBAT_DAMAGE_RESISTANCE: return damageResistance;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ====== PARCELABLE ===================================================================
|
||||
|
||||
public CombatTraits(DataInputStream src, int fileversion) throws IOException {
|
||||
|
||||
@@ -3,10 +3,10 @@ package com.gpl.rpg.AndorsTrail.model.ability;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
import android.content.res.Resources;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.controller.Constants;
|
||||
import com.gpl.rpg.AndorsTrail.model.CombatTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits;
|
||||
|
||||
public final class SkillCollection {
|
||||
public static final int SKILL_WEAPON_CHANCE = 0;
|
||||
@@ -38,7 +38,7 @@ public final class SkillCollection {
|
||||
public static final int PER_SKILLPOINT_INCREASE_DODGE = 9;
|
||||
public static final int PER_SKILLPOINT_INCREASE_BARKSKIN = 1;
|
||||
public static final int PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT = 20;
|
||||
public static final int PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT = 50;
|
||||
public static final int PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT = 25;
|
||||
public static final int PER_SKILLPOINT_INCREASE_SPEED = 1;
|
||||
public static final int PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE = 4;
|
||||
public static final int PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT = 30;
|
||||
@@ -63,25 +63,42 @@ public final class SkillCollection {
|
||||
skills.put(skill.id, skill);
|
||||
}
|
||||
public void initialize() {
|
||||
initializeSkill(new SkillInfo(SKILL_WEAPON_CHANCE, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_WEAPON_DMG, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_BARTER, Constants.MARKET_PRICEFACTOR_PERCENT / PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_DODGE, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_BARKSKIN, 5, false));
|
||||
initializeSkill(new SkillInfo(SKILL_MORE_CRITICALS, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_BETTER_CRITICALS, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_SPEED, 2, false));
|
||||
initializeSkill(new SkillInfo(SKILL_COINFINDER, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_MORE_EXP, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_CLEAVE, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_EATER, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_FORTITUDE, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_EVASION, Constants.FLEE_FAIL_CHANCE_PERCENT / PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_REGENERATION, SkillInfo.MAXLEVEL_NONE, false));
|
||||
initializeSkill(new SkillInfo(SKILL_LOWER_EXPLOSS, 100 / PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT, false));
|
||||
initializeSkill(new SkillInfo(SKILL_MAGICFINDER, SkillInfo.MAXLEVEL_NONE, false));
|
||||
//initializeSkill(new SkillInfo(SKILL_BERSERKER, SkillInfo.MAXLEVEL_NONE);
|
||||
initializeSkill(new SkillInfo(SKILL_WEAPON_CHANCE, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_WEAPON_DMG, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_BARTER, Constants.MARKET_PRICEFACTOR_PERCENT / PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_DODGE, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_BARKSKIN, 5, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(10)
|
||||
,SkillLevelRequirement.requireCombatStats(CombatTraits.STAT_COMBAT_BLOCK_CHANCE, 15, 0)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_MORE_CRITICALS, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_BETTER_CRITICALS, SkillInfo.MAXLEVEL_NONE, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SKILL_MORE_CRITICALS, 1)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_SPEED, 2, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(15)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_COINFINDER, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_MORE_EXP, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_CLEAVE, SkillInfo.MAXLEVEL_NONE, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_CHANCE, 1)
|
||||
,SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_DMG, 1)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_EATER, SkillInfo.MAXLEVEL_NONE, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 20, 20)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_FORTITUDE, SkillInfo.MAXLEVEL_NONE, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireExperienceLevels(5)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_EVASION, Constants.FLEE_FAIL_CHANCE_PERCENT / PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_REGENERATION, SkillInfo.MAXLEVEL_NONE, false, new SkillLevelRequirement[] {
|
||||
SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 30, 0)
|
||||
}));
|
||||
initializeSkill(new SkillInfo(SKILL_LOWER_EXPLOSS, 100 / PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT, false, null));
|
||||
initializeSkill(new SkillInfo(SKILL_MAGICFINDER, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
//initializeSkill(new SkillInfo(SKILL_BERSERKER, SkillInfo.MAXLEVEL_NONE, false, null));
|
||||
}
|
||||
|
||||
public SkillInfo getSkill(int skillID) {
|
||||
return skills.get(skillID);
|
||||
}
|
||||
@@ -89,76 +106,4 @@ public final class SkillCollection {
|
||||
public Collection<SkillInfo> getAllSkills() {
|
||||
return skills.values();
|
||||
}
|
||||
|
||||
public static int getSkillTitleResourceID(int skill) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_title_weapon_chance;
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_title_weapon_dmg;
|
||||
case SkillCollection.SKILL_BARTER: return R.string.skill_title_barter;
|
||||
case SkillCollection.SKILL_DODGE: return R.string.skill_title_dodge;
|
||||
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_title_barkskin;
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_title_more_criticals;
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_title_better_criticals;
|
||||
case SkillCollection.SKILL_SPEED: return R.string.skill_title_speed;
|
||||
case SkillCollection.SKILL_COINFINDER: return R.string.skill_title_coinfinder;
|
||||
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_title_more_exp;
|
||||
case SkillCollection.SKILL_CLEAVE: return R.string.skill_title_cleave;
|
||||
case SkillCollection.SKILL_EATER: return R.string.skill_title_eater;
|
||||
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_title_fortitude;
|
||||
case SkillCollection.SKILL_EVASION: return R.string.skill_title_evasion;
|
||||
case SkillCollection.SKILL_REGENERATION: return R.string.skill_title_regeneration;
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_title_lower_exploss;
|
||||
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_title_magicfinder;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static int getSkillShortDescriptionResourceID(int skill) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_shortdescription_weapon_chance;
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_shortdescription_weapon_dmg;
|
||||
case SkillCollection.SKILL_BARTER: return R.string.skill_shortdescription_barter;
|
||||
case SkillCollection.SKILL_DODGE: return R.string.skill_shortdescription_dodge;
|
||||
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_shortdescription_barkskin;
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_shortdescription_more_criticals;
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_shortdescription_better_criticals;
|
||||
case SkillCollection.SKILL_SPEED: return R.string.skill_shortdescription_speed;
|
||||
case SkillCollection.SKILL_COINFINDER: return R.string.skill_shortdescription_coinfinder;
|
||||
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_shortdescription_more_exp;
|
||||
case SkillCollection.SKILL_CLEAVE: return R.string.skill_shortdescription_cleave;
|
||||
case SkillCollection.SKILL_EATER: return R.string.skill_shortdescription_eater;
|
||||
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_shortdescription_fortitude;
|
||||
case SkillCollection.SKILL_EVASION: return R.string.skill_shortdescription_evasion;
|
||||
case SkillCollection.SKILL_REGENERATION: return R.string.skill_shortdescription_regeneration;
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_shortdescription_lower_exploss;
|
||||
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_shortdescription_magicfinder;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getSkillLongDescription(final int skill, final Resources res) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return res.getString(R.string.skill_longdescription_weapon_chance, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_CHANCE);
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return res.getString(R.string.skill_longdescription_weapon_dmg, SkillCollection.PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MIN);
|
||||
case SkillCollection.SKILL_BARTER: return res.getString(R.string.skill_longdescription_barter, SkillCollection.PER_SKILLPOINT_INCREASE_BARTER_PRICEFACTOR_PERCENTAGE);
|
||||
case SkillCollection.SKILL_DODGE: return res.getString(R.string.skill_longdescription_dodge, SkillCollection.PER_SKILLPOINT_INCREASE_DODGE);
|
||||
case SkillCollection.SKILL_BARKSKIN: return res.getString(R.string.skill_longdescription_barkskin, SkillCollection.PER_SKILLPOINT_INCREASE_BARKSKIN);
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return res.getString(R.string.skill_longdescription_more_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_CRITICALS_PERCENT);
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return res.getString(R.string.skill_longdescription_better_criticals, SkillCollection.PER_SKILLPOINT_INCREASE_BETTER_CRITICALS_PERCENT);
|
||||
case SkillCollection.SKILL_SPEED: return res.getString(R.string.skill_longdescription_speed, SkillCollection.PER_SKILLPOINT_INCREASE_SPEED);
|
||||
case SkillCollection.SKILL_COINFINDER: return res.getString(R.string.skill_longdescription_coinfinder, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_CHANCE_PERCENT, SkillCollection.PER_SKILLPOINT_INCREASE_COINFINDER_QUANTITY_PERCENT);
|
||||
case SkillCollection.SKILL_MORE_EXP: return res.getString(R.string.skill_longdescription_more_exp, SkillCollection.PER_SKILLPOINT_INCREASE_MORE_EXP_PERCENT);
|
||||
case SkillCollection.SKILL_CLEAVE: return res.getString(R.string.skill_longdescription_cleave, SkillCollection.PER_SKILLPOINT_INCREASE_CLEAVE_AP);
|
||||
case SkillCollection.SKILL_EATER: return res.getString(R.string.skill_longdescription_eater, SkillCollection.PER_SKILLPOINT_INCREASE_EATER_HEALTH);
|
||||
case SkillCollection.SKILL_FORTITUDE: return res.getString(R.string.skill_longdescription_fortitude, SkillCollection.PER_SKILLPOINT_INCREASE_FORTITUDE_HEALTH);
|
||||
case SkillCollection.SKILL_EVASION: return res.getString(R.string.skill_longdescription_evasion, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_FLEE_CHANCE_PERCENTAGE, SkillCollection.PER_SKILLPOINT_INCREASE_EVASION_MONSTER_ATTACK_CHANCE_PERCENTAGE);
|
||||
case SkillCollection.SKILL_REGENERATION: return res.getString(R.string.skill_longdescription_regeneration, SkillCollection.PER_SKILLPOINT_INCREASE_REGENERATION);
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return res.getString(R.string.skill_longdescription_lower_exploss, SkillCollection.PER_SKILLPOINT_INCREASE_EXPLOSS_PERCENT);
|
||||
case SkillCollection.SKILL_MAGICFINDER: return res.getString(R.string.skill_longdescription_magicfinder, SkillCollection.PER_SKILLPOINT_INCREASE_MAGICFINDER_CHANCE_PERCENT);
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
package com.gpl.rpg.AndorsTrail.model.ability;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
|
||||
public class SkillInfo {
|
||||
public static final int MAXLEVEL_NONE = -1;
|
||||
public final int id;
|
||||
public final int maxLevel;
|
||||
public final boolean isQuestSkill;
|
||||
public SkillInfo(int id, int maxLevel, boolean isQuestSkill) {
|
||||
public final SkillLevelRequirement[] levelupRequirements;
|
||||
public SkillInfo(int id, int maxLevel, boolean isQuestSkill, SkillLevelRequirement[] levelupRequirements) {
|
||||
this.id = id;
|
||||
this.maxLevel = maxLevel;
|
||||
this.isQuestSkill = isQuestSkill;
|
||||
this.levelupRequirements = levelupRequirements;
|
||||
}
|
||||
|
||||
public boolean hasMaxLevel() {
|
||||
@@ -17,19 +21,67 @@ public class SkillInfo {
|
||||
}
|
||||
|
||||
public boolean hasLevelupRequirements() {
|
||||
return false;
|
||||
return levelupRequirements != null;
|
||||
}
|
||||
|
||||
/*private static final class SkillLevelRequirement {
|
||||
public boolean canLevelUpSkillTo(Player player, int requestedSkillLevel) {
|
||||
if (!hasLevelupRequirements()) return true;
|
||||
|
||||
for (SkillLevelRequirement requirement : levelupRequirements) {
|
||||
if (!requirement.isSatisfiedByPlayer(player, requestedSkillLevel)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static final class SkillLevelRequirement {
|
||||
public static final int REQUIREMENT_TYPE_SKILL_LEVEL = 0;
|
||||
public static final int REQUIREMENT_TYPE_EXPERIENCE_LEVEL = 1;
|
||||
public static final int REQUIREMENT_TYPE_COMBAT_STAT = 2;
|
||||
public static final int REQUIREMENT_TYPE_ACTOR_STAT = 3;
|
||||
public final int requirementType;
|
||||
//public final int ;
|
||||
public final int value;
|
||||
public final int skillOrStatID;
|
||||
public final int everySkillLevelRequiresThisAmount;
|
||||
public final int initialRequiredAmount;
|
||||
|
||||
private SkillLevelRequirement(int requirementType, int everySkillLevelRequiresThisAmount, int initialRequiredAmount, int skillOrStatID) {
|
||||
this.requirementType = requirementType;
|
||||
this.skillOrStatID = skillOrStatID;
|
||||
this.everySkillLevelRequiresThisAmount = everySkillLevelRequiresThisAmount;
|
||||
this.initialRequiredAmount = initialRequiredAmount;
|
||||
}
|
||||
|
||||
public static SkillLevelRequirement requireOtherSkill(int skillID, int everySkillLevelRequiresThisAmount) {
|
||||
return new SkillLevelRequirement(REQUIREMENT_TYPE_SKILL_LEVEL, everySkillLevelRequiresThisAmount, 0, skillID);
|
||||
}
|
||||
public static SkillLevelRequirement requireExperienceLevels(int everySkillLevelRequiresThisAmount) {
|
||||
return new SkillLevelRequirement(REQUIREMENT_TYPE_EXPERIENCE_LEVEL, everySkillLevelRequiresThisAmount, 0, 0);
|
||||
}
|
||||
public static SkillLevelRequirement requireCombatStats(int statID, int everySkillLevelRequiresThisAmount, int initialRequiredAmount) {
|
||||
return new SkillLevelRequirement(REQUIREMENT_TYPE_COMBAT_STAT, everySkillLevelRequiresThisAmount, initialRequiredAmount, statID);
|
||||
}
|
||||
public static SkillLevelRequirement requireActorStats(int statID, int everySkillLevelRequiresThisAmount, int initialRequiredAmount) {
|
||||
return new SkillLevelRequirement(REQUIREMENT_TYPE_ACTOR_STAT, everySkillLevelRequiresThisAmount, initialRequiredAmount, statID);
|
||||
}
|
||||
|
||||
public boolean isSatisfiedByPlayer(Player player, int requestedSkillLevel) {
|
||||
final int minimumValueRequired = getRequiredValue(requestedSkillLevel);
|
||||
final int playerValue = getRequirementActualValue(player);
|
||||
if (playerValue >= minimumValueRequired) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getRequiredValue(int requestedSkillLevel) {
|
||||
return requestedSkillLevel * everySkillLevelRequiresThisAmount + initialRequiredAmount;
|
||||
}
|
||||
|
||||
private int getRequirementActualValue(Player player) {
|
||||
switch (requirementType) {
|
||||
case REQUIREMENT_TYPE_SKILL_LEVEL: return player.getSkillLevel(skillOrStatID);
|
||||
case REQUIREMENT_TYPE_EXPERIENCE_LEVEL: return player.level;
|
||||
case REQUIREMENT_TYPE_COMBAT_STAT: return player.traits.baseCombatTraits.getCombatStats(skillOrStatID);
|
||||
case REQUIREMENT_TYPE_ACTOR_STAT: return player.traits.getActorStats(skillOrStatID);
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Stats {
|
||||
public static final int STAT_MAX_HP = 0;
|
||||
}*/
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@ import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
|
||||
import com.gpl.rpg.AndorsTrail.util.Size;
|
||||
|
||||
public class ActorTraits extends CombatTraits {
|
||||
public static final int STAT_ACTOR_MAX_HP = 0;
|
||||
public static final int STAT_ACTOR_MAX_AP = 1;
|
||||
public static final int STAT_ACTOR_MOVECOST = 2;
|
||||
|
||||
public final int iconID;
|
||||
public final Size tileSize;
|
||||
|
||||
@@ -42,6 +46,15 @@ public class ActorTraits extends CombatTraits {
|
||||
return (int) Math.floor(maxAP / moveCost);
|
||||
}
|
||||
|
||||
public int getActorStats(int statID) {
|
||||
switch (statID) {
|
||||
case STAT_ACTOR_MAX_HP: return maxHP;
|
||||
case STAT_ACTOR_MAX_AP: return maxAP;
|
||||
case STAT_ACTOR_MOVECOST: return moveCost;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ====== PARCELABLE ===================================================================
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public final class ItemType {
|
||||
public static final int DISPLAYTYPE_QUEST = 1;
|
||||
public static final int DISPLAYTYPE_LEGENDARY = 2;
|
||||
public static final int DISPLAYTYPE_EXTRAORDINARY = 3;
|
||||
public static final int DISPLAYTYPE_UNIQUE = 4;
|
||||
public static final int DISPLAYTYPE_RARE = 4;
|
||||
|
||||
public final int id;
|
||||
public final int iconID;
|
||||
@@ -141,7 +141,7 @@ public final class ItemType {
|
||||
return TileStore.iconID_selection_green;
|
||||
case ItemType.DISPLAYTYPE_EXTRAORDINARY:
|
||||
return TileStore.iconID_selection_blue;
|
||||
case ItemType.DISPLAYTYPE_UNIQUE:
|
||||
case ItemType.DISPLAYTYPE_RARE:
|
||||
return TileStore.iconID_selection_purple;
|
||||
}
|
||||
return -1;
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.UnderlineSpan;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
@@ -38,7 +40,10 @@ public final class ActorConditionEffectList extends LinearLayout {
|
||||
msg = describeEffect(res, e);
|
||||
}
|
||||
TextView tv = new TextView(context);
|
||||
tv.setText(msg);
|
||||
|
||||
SpannableString content = new SpannableString(msg);
|
||||
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
|
||||
tv.setText(content);
|
||||
tv.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.R;
|
||||
import com.gpl.rpg.AndorsTrail.activity.SkillInfoActivity;
|
||||
import com.gpl.rpg.AndorsTrail.controller.SkillController;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo;
|
||||
@@ -57,13 +58,13 @@ public final class SkillListAdapter extends ArrayAdapter<SkillInfo> {
|
||||
final TextView description = (TextView) result.findViewById(R.id.skillentry_description);
|
||||
|
||||
SkillController.setSkillIcon(icon, skillID, r);
|
||||
String skillTitle = r.getString(SkillCollection.getSkillTitleResourceID(skillID));
|
||||
String skillTitle = r.getString(SkillInfoActivity.getSkillTitleResourceID(skillID));
|
||||
final int skillLevel = player.getSkillLevel(skillID);
|
||||
if (skillLevel > 0) {
|
||||
skillTitle += " (" + skillLevel + ")";
|
||||
}
|
||||
title.setText(skillTitle);
|
||||
description.setText(SkillCollection.getSkillShortDescriptionResourceID(skillID));
|
||||
description.setText(getSkillShortDescriptionResourceID(skillID));
|
||||
|
||||
boolean enabled = true;
|
||||
if (player.hasAvailableSkillpoints()) {
|
||||
@@ -77,4 +78,28 @@ public final class SkillListAdapter extends ArrayAdapter<SkillInfo> {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int getSkillShortDescriptionResourceID(int skill) {
|
||||
switch (skill) {
|
||||
case SkillCollection.SKILL_WEAPON_CHANCE: return R.string.skill_shortdescription_weapon_chance;
|
||||
case SkillCollection.SKILL_WEAPON_DMG: return R.string.skill_shortdescription_weapon_dmg;
|
||||
case SkillCollection.SKILL_BARTER: return R.string.skill_shortdescription_barter;
|
||||
case SkillCollection.SKILL_DODGE: return R.string.skill_shortdescription_dodge;
|
||||
case SkillCollection.SKILL_BARKSKIN: return R.string.skill_shortdescription_barkskin;
|
||||
case SkillCollection.SKILL_MORE_CRITICALS: return R.string.skill_shortdescription_more_criticals;
|
||||
case SkillCollection.SKILL_BETTER_CRITICALS: return R.string.skill_shortdescription_better_criticals;
|
||||
case SkillCollection.SKILL_SPEED: return R.string.skill_shortdescription_speed;
|
||||
case SkillCollection.SKILL_COINFINDER: return R.string.skill_shortdescription_coinfinder;
|
||||
case SkillCollection.SKILL_MORE_EXP: return R.string.skill_shortdescription_more_exp;
|
||||
case SkillCollection.SKILL_CLEAVE: return R.string.skill_shortdescription_cleave;
|
||||
case SkillCollection.SKILL_EATER: return R.string.skill_shortdescription_eater;
|
||||
case SkillCollection.SKILL_FORTITUDE: return R.string.skill_shortdescription_fortitude;
|
||||
case SkillCollection.SKILL_EVASION: return R.string.skill_shortdescription_evasion;
|
||||
case SkillCollection.SKILL_REGENERATION: return R.string.skill_shortdescription_regeneration;
|
||||
case SkillCollection.SKILL_LOWER_EXPLOSS: return R.string.skill_shortdescription_lower_exploss;
|
||||
case SkillCollection.SKILL_MAGICFINDER: return R.string.skill_shortdescription_magicfinder;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user