Skip to content

Commit 1564119

Browse files
authored
Merge pull request #19 from GDIBass/alliance_leader_tag
Fix a few configs
2 parents 0e20d7b + 4917588 commit 1564119

4 files changed

Lines changed: 74 additions & 53 deletions

File tree

dist/index.js

Lines changed: 25 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/config/AllianceConfig.ts

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,35 @@ import {
44
HasRequiredKeys,
55
Config,
66
validate,
7-
validateNoDuplicateIds
7+
validateNoDuplicateIds,
8+
HasIntegers
89
} from '../validation';
9-
import InvalidConfig from '../error/InvalidConfig';
1010

11-
const requiredKeys = ['member_status'];
11+
const requiredKeys = [
12+
'member_status',
13+
'leader_status',
14+
'requester_status',
15+
'new_member_status'
16+
];
17+
const integerKeys = ['leader_status', 'requester_status', 'new_member_status'];
1218
const requiredObjects = ['member_status'];
1319

1420
interface RawAllianceConfig {
1521
member_status: {[key: string]: object};
22+
leader_status: string;
23+
requester_status: string;
24+
new_member_status: string;
1625
}
1726

1827
type MemberStatuses = {[key: string]: MemberStatus};
1928

20-
class AllianceConfig implements Config, HasRequiredKeys, HasObjects {
29+
class AllianceConfig
30+
implements Config, HasRequiredKeys, HasObjects, HasIntegers
31+
{
2132
private readonly _member_status: MemberStatuses = {};
33+
private readonly _leader_status: number;
34+
private readonly _requester_status: number;
35+
private readonly _new_member_status: number;
2236

2337
constructor(rawYaml: object) {
2438
validate(this, rawYaml);
@@ -32,39 +46,43 @@ class AllianceConfig implements Config, HasRequiredKeys, HasObjects {
3246
);
3347
}
3448

49+
this._leader_status = parseInt(
50+
(rawYaml as RawAllianceConfig).leader_status
51+
);
52+
this._requester_status = parseInt(
53+
(rawYaml as RawAllianceConfig).requester_status
54+
);
55+
this._new_member_status = parseInt(
56+
(rawYaml as RawAllianceConfig).new_member_status
57+
);
58+
3559
validateNoDuplicateIds(
3660
this,
3761
'member_status',
3862
Object.values(this._member_status)
3963
);
40-
41-
let leaderFound = false;
42-
for (const memberStatusKey in this.member_status) {
43-
const member = this.member_status[memberStatusKey];
44-
if (member.leader) {
45-
if (leaderFound) {
46-
throw new InvalidConfig(this, 'Cannot have two leader statuses');
47-
} else {
48-
leaderFound = true;
49-
}
50-
}
51-
}
52-
53-
if (!leaderFound) {
54-
throw new InvalidConfig(
55-
this,
56-
'One member status must be tagged as leader, found 0'
57-
);
58-
}
5964
}
6065

6166
getRequiredKeys = (): string[] => requiredKeys;
6267
getObjects = (): string[] => requiredObjects;
68+
getIntegers = (): string[] => integerKeys;
6369
getClassName = (): string => AllianceConfig.name;
6470

6571
get member_status(): MemberStatuses {
6672
return this._member_status;
6773
}
74+
75+
get leader_status(): number {
76+
return this._leader_status;
77+
}
78+
79+
get requester_status(): number {
80+
return this._requester_status;
81+
}
82+
83+
get new_member_status(): number {
84+
return this._new_member_status;
85+
}
6886
}
6987

7088
export default AllianceConfig;

src/config/alliance/MemberStatus.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ interface RawMemberStatus {
1818
key: string;
1919
id: string;
2020
description: string;
21-
leader: string | boolean;
21+
manager: string | boolean;
2222
}
2323

2424
class MemberStatus
@@ -27,17 +27,17 @@ class MemberStatus
2727
private readonly _id: number;
2828
private readonly _key: string;
2929
private readonly _description: string;
30-
private readonly _leader: boolean;
30+
private readonly _manager: boolean;
3131

3232
constructor(statusKey: string, rawYaml: object) {
3333
validate(this, rawYaml);
3434
validateKeysMatch(this, statusKey, (rawYaml as RawMemberStatus).key);
3535
this._id = parseInt((rawYaml as RawMemberStatus).id);
3636
this._key = (rawYaml as RawMemberStatus).key;
3737
this._description = (rawYaml as RawMemberStatus).description;
38-
this._leader =
39-
(rawYaml as RawMemberStatus).leader === 'true' ||
40-
(rawYaml as RawMemberStatus).leader === true;
38+
this._manager =
39+
(rawYaml as RawMemberStatus).manager === 'true' ||
40+
(rawYaml as RawMemberStatus).manager === true;
4141
}
4242

4343
getRequiredKeys = (): string[] => requiredKeys;
@@ -58,8 +58,8 @@ class MemberStatus
5858
return this._description;
5959
}
6060

61-
get leader(): boolean {
62-
return this._leader;
61+
get manager(): boolean {
62+
return this._manager;
6363
}
6464
}
6565

0 commit comments

Comments
 (0)