-
Notifications
You must be signed in to change notification settings - Fork 19
/
Solution.h
79 lines (63 loc) · 1.88 KB
/
Solution.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#pragma once
#include "Common.h"
#include <cliext/utility>
ref struct Skill;
ref struct Ability;
ref struct Armor;
ref struct Charm;
ref struct ArmorEquivalence;
ref struct Decoration;
ref struct AbilityPair;
typedef System::Collections::Generic::Dictionary< Ability^, unsigned > AbilityMap;
ref struct Query : public System::Object
{
List_t< Skill^ > skills;
Gender gender;
unsigned hr, total_skill_points_required;
bool include_arena, allow_lower_tier, allow_fair_wind, no_decos, my_decos, always_search_alpha;
array< unsigned >^ weapon_slots;
List_t< List_t< Armor^ >^ > rel_armor, inf_armor;
List_t< Ability^ > rel_abilities;
List_t< Decoration^ > rel_decorations;
List_t< Charm^ > rel_charms, inf_charms;
};
ref struct ThreadSearchData
{
Query^ query;
Charm^ charm;
};
ref struct ThreadSearchData2
{
Query^ query;
array< Armor^ >^ armors;
List_t< Charm^ >^ charms;
};
ref struct CalculationData;
ref struct Solution
{
List_t< Armor^ > armors;
List_t< Decoration^ > decorations;
List_t< Skill^ > extra_skills, potential_extra_skills;
AbilityMap abilities;
Charm^ charm;
System::Drawing::Bitmap^ preview_image;
int fire_res, ice_res, water_res, thunder_res, dragon_res;
unsigned defence, max_defence, aug_defence, rarity, difficulty, total_slots_spare;
array< unsigned >^ slots_spare, ^family_score;
List_t< Solution^ > armor_swaps;
unsigned long long GetHash();
bool MatchesQuery( Query^ query, const bool find_armor_swaps );
bool HasDLCDisabledArmor();
void CalculateData();
void CalculateFamilyScore();
void CalculateSkillModifiers();
private:
CalculationData^ data;
Solution^ CreateArmorSwap( Query^ query, int armor_type, Armor^ armor );
bool ImpossibleNoDecorations( Query^ query );
void CalculateExtraSkills( Query^ query );
void CalculatePotentialExtraSkills();
void ReduceCharm();
void FindPotentialSkillUpgrades();
void FindArmorSwaps( Query^ query );
};