summaryrefslogtreecommitdiff
path: root/src/main/java/tlIItools/AffixSet.java
blob: 569649ecad50c8c360962c405e69ec7954698494 (plain)
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
package tlIItools;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
 * Container of a set of affixes.
 *
 * @author Ben Culkin
 */
public class AffixSet {
	/**
	 * All of the affix groups contained in this set.
	 *
	 * An affix group is a set of affixes that generally have the same or
	 * similar effects, but have different intensities or spawn levels.
	 */
	public Map<String, Set<Affix>> affixGroups;

	/**
	 * All of the ungrouped affixes contained in this set.
	 */
	public Set<Affix> ungroupedAffixes;

	/**
	 * Create a new blank affix set.
	 */
	public AffixSet() {
		affixGroups = new HashMap<>();

		ungroupedAffixes = new HashSet<>();
	}
	
	/**
	 * Add an affix to this set.
	 * 
	 * @param afx The affix to add.
	 */
	public void addAffixByContents(Affix afx) {
		String afxGroup = afx.getAffixGroupName();
		
		if (afxGroup.equals("")) {
			ungroupedAffixes.add(afx);
		} else {
			affixGroups.compute(afxGroup, (key, val) -> {
				if (val == null) {
					Set<Affix> afxSet = new HashSet<>();
					
					afxSet.add(afx);
					
					return afxSet;
				} else {
					val.add(afx);
					
					return val;
				}
			});
		}
	}
}