RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ClanManagement.java
1package com.osroyale.content.clanchannel.channel;
2
3import com.google.gson.JsonObject;
4import com.osroyale.content.clanchannel.ClanMember;
5import com.osroyale.content.clanchannel.ClanRank;
6import com.osroyale.game.world.entity.mob.player.Player;
7import com.osroyale.net.packet.out.SendMessage;
8import com.osroyale.net.packet.out.SendScrollbar;
9import com.osroyale.net.packet.out.SendString;
10import com.osroyale.net.packet.out.SendTooltip;
11
12import java.util.Arrays;
13import java.util.Objects;
14import java.util.Optional;
15
49
50public class ClanManagement {
51
53 static final int
54 ENTER_RANK_INDEX = 0,
55 TALK_RANK_INDEX = 1,
56 MANAGE_RANK_INDEX = 2;
57
59 private static final int SIZE = 4;
60
62 private ClanRank[] ranks = new ClanRank[SIZE];
63
65 public String name;
66
68 public String password = "";
69
71 String slogan = "";
72
74 String forum = "";
75
77 String tag = "";
78
79 String color = "<col=ffffff>";
80
82 public boolean locked;
83
85 boolean lootshare;
86
88 private final ClanChannel channel;
89
90 ClanManagement(ClanChannel channel) {
91 this.channel = channel;
92 ranks[ENTER_RANK_INDEX] = ClanRank.MEMBER;
93 ranks[TALK_RANK_INDEX] = ClanRank.MEMBER;
94 ranks[MANAGE_RANK_INDEX] = ClanRank.LEADER;
95 }
96
98 public void setEnterRank(ClanRank rank) {
99 ranks[ENTER_RANK_INDEX] = rank;
100 channel.message("The required rank to enter has changed to " + rank.getName() + ".");
101 }
102
104 public void setTalkRank(ClanRank rank) {
105 ranks[TALK_RANK_INDEX] = rank;
106 channel.message("The required rank to talk has changed to " + rank.getName() + ".");
107 }
108
110 public void setManageRank(ClanRank rank) {
111 ranks[MANAGE_RANK_INDEX] = rank;
112 }
113
114 String getRank(int index) {
115 return ranks[index].getString();
116 }
117
118 String getEnter() {
119 return ranks[ENTER_RANK_INDEX].getName();
120 }
121
122 String getTalk() {
123 return ranks[TALK_RANK_INDEX].getName();
124 }
125
126 String getManage() {
127 return ranks[MANAGE_RANK_INDEX].getName();
128 }
129
130 boolean canEnter(ClanMember member) {
131 return member.rank.greaterThanEqual(ranks[ENTER_RANK_INDEX]);
132 }
133
134 boolean canTalk(ClanMember member) {
135 return member.rank.greaterThanEqual(ranks[TALK_RANK_INDEX]);
136 }
137
138 boolean canManage(ClanMember member) {
139 return member.rank.greaterThanEqual(ranks[MANAGE_RANK_INDEX]);
140 }
141
142 void loadRanks(JsonObject object) {
143 ranks[ENTER_RANK_INDEX] = ClanRank.valueOf(object.get("enter-rank").getAsString());
144 ranks[TALK_RANK_INDEX] = ClanRank.valueOf(object.get("talk-rank").getAsString());
145 ranks[MANAGE_RANK_INDEX] = ClanRank.valueOf(object.get("manage-rank").getAsString());
146 }
147
148 void saveRanks(JsonObject object) {
149 object.addProperty("enter-rank", ranks[ENTER_RANK_INDEX].name());
150 object.addProperty("talk-rank", ranks[TALK_RANK_INDEX].name());
151 object.addProperty("manage-rank", ranks[MANAGE_RANK_INDEX].name());
152 }
153
154 public void showBanned(Player player) {
155 if (channel.bannedMembers.isEmpty()) {
156 player.send(new SendMessage("You have no banned members in your clan."));
157 return;
158 }
159 int string = 51311;
160 int size = channel.bannedMembers.size() < 10 ? 10 : channel.bannedMembers.size();
161 for (int index = 0; index < size; index++) {
162 boolean valid = index < channel.bannedMembers.size();
163 Optional<String> banned = valid ? Optional.of(channel.bannedMembers.get(index)) : Optional.empty();
164 player.send(new SendString(banned.orElse(""), string));
165 player.send(new SendTooltip(valid ? "Unban " + channel.bannedMembers.get(index) : "", string));
166 string++;
167 }
168 player.send(new SendScrollbar(51310, size * 23));
169 player.interfaceManager.open(51300);
170 }
171
172 public void toggleLootshare() {
173 lootshare = !lootshare;
174 channel.message("Lootshare has been toggled " + (lootshare ? "on!" : "off!"));
175 }
176
177 @Override
178 public boolean equals(Object obj) {
179 if (obj == this) return true;
180 if (obj instanceof ClanManagement) {
181 ClanManagement other = (ClanManagement) obj;
182 return Objects.equals(name, other.name)
183 && Objects.equals(slogan, other.slogan)
184 && Objects.equals(forum, other.forum)
185 && Objects.equals(tag, other.tag)
186 && Objects.equals(locked, other.locked)
187 && Objects.equals(lootshare, other.lootshare)
188 && Arrays.equals(ranks, other.ranks);
189 }
190 return false;
191 }
192
193}