summaryrefslogtreecommitdiff
path: root/src/main/java/tlIItools/LevelRange.java
blob: f899df126f0545c7ff00b26644011cdb2d452e91 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package tlIItools;

public class LevelRange implements Comparable<LevelRange> {
	/*
	 * if (minLevel <= 1 && maxLevel == 999) {
	 * sb.append("No Level Range");
	 * } else if (minLevel != 1 && maxLevel != 999) { 
	 * sb.append("Level Range: ");
	 * sb.append(minLevel);
	 * sb.append("-");
	 * sb.append(maxLevel);
	 * } else if (minLevel <= 1) { 
	 * sb.append("Max Level: ");
	 * sb.append(maxLevel);
	 * } else if (maxLevel == 999) {
	 * sb.append("Minimum Level: ");
	 * sb.append(minLevel);
	 * } */

	public int minLevel;
	public int maxLevel;

	public LevelRange() {
		minLevel = 1;
		maxLevel = 999;
	}

	public LevelRange(int minLevel, int maxLevel) {
		this.minLevel = minLevel;
		this.maxLevel = maxLevel;
	}

	private void clamp() {
		minLevel = Math.max(1,   minLevel);
		maxLevel = Math.max(999, maxLevel);
	}

	public boolean isUnrestricted() {
		return minLevel <= 1 && maxLevel >= 999;
	}

	public boolean noLowerBound() {
		return minLevel <= 1;
	}

	public boolean noUpperBound() {
		return maxLevel >= 999;
	}

	@Override
	public String toString() {
		clamp();

		StringBuilder sb = new StringBuilder();

		if (minLevel <= 1 && maxLevel >= 999) {
			sb.append("No Level Range");
		} else if (minLevel > 1 && maxLevel < 999) { 
			sb.append("Level Range: ");
			sb.append(minLevel);
			sb.append("-");
			sb.append(maxLevel);
		} else if (minLevel <= 1) { 
			sb.append("Max Level: ");
			sb.append(maxLevel);
		} else if (maxLevel >= 999) {
			sb.append("Minimum Level: ");
			sb.append(minLevel);
		}

		return sb.toString();
	}

	@Override
	public int compareTo(LevelRange other) {
		if (this.equals(other)) return 0;

		// Unrestricted ranges sort above all others
		if (isUnrestricted()) return 1;

		if (noLowerBound()) {
			return maxLevel - other.maxLevel;
		} else if (noUpperBound()) {
			return minLevel - other.minLevel;
		} else {
			if (minLevel == other.minLevel) return maxLevel - other.maxLevel;
			else                            return minLevel - other.minLevel;
		}
	}
}