RuneHive-Game
Loading...
Searching...
No Matches
ClanViewer.java
Go to the documentation of this file.
1package com.runehive.content.clanchannel.content;
2
3import com.runehive.Config;
4import com.runehive.content.clanchannel.ClanMember;
5import com.runehive.content.clanchannel.ClanRepository;
6import com.runehive.content.clanchannel.channel.ClanChannel;
7import com.runehive.content.clanchannel.channel.ClanChannelHandler;
8import com.runehive.game.world.entity.mob.player.Player;
9import com.runehive.game.world.items.Item;
10import com.runehive.net.packet.out.*;
11import com.runehive.util.Difficulty;
12import com.runehive.util.Utility;
13
14import java.util.*;
15
16/**
17 * Handles viewing clan information.
18 *
19 * @author Daniel
20 */
21public class ClanViewer {
22
23 public enum ClanTab {OVERVIEW, MEMBERS}
24 private final Player player;
26 public int clanIndex = 0;
27 public int memberIndex = 0;
28 public List<ClanChannel> clanList = new ArrayList<>();
29 public List<ClanMember> clanMembers = new ArrayList<>();
30 private String searchKey = "";
32
34 this.player = player;
35 }
36
37 public void open(ClanTab tab) {
38 open(viewing, tab);
39 }
40
41 public void open(ClanChannel channel, ClanTab tab) {
42 int interfaceId = 0;
43 this.viewing = channel;
44 String name = Utility.formatName(filter.name().toLowerCase().replaceAll("_", " "));
45 Item[] showcase = viewing == null ? new Item[3] : viewing.getShowcaseItems();
46
47 if (tab == ClanTab.OVERVIEW) {
50 interfaceId = 53000;
51 player.send(new SendString(name + ":", 53006));
52 } else if (tab == ClanTab.MEMBERS) {
54 interfaceId = 53500;
55 player.send(new SendString("Member List:", 53006));
56 }
57
58 player.send(new SendConfig(531, tab.ordinal()));
59 player.send(new SendString(viewing != null ? viewing.getName() : "", 53009));
60 player.send(new SendString(viewing != null ? viewing.getSlogan() : "", 53010));
61 player.send(new SendString(searchKey.isEmpty() ? "Search for clan" : searchKey, 53012));
62 player.send(new SendString(name, 53019));
63 player.send(new SendItemOnInterface(53011, showcase));
64 player.interfaceManager.open(interfaceId);
65 }
66
67 private void drawClanList(String key) {
68 Set<ClanChannel> channels = ClanRepository.getTopChanels(filter).orElse(null);
69 if (channels == null) return;
70 if (!key.isEmpty()) {
71 channels.removeIf(channel -> !channel.getName().contains(key));
72 }
73 int size = channels.size() > 13 ? channels.size() : 13;
74 Iterator<ClanChannel> iterator = channels.iterator();
75 for (int index = 0, string = 53202; index < size; index++, string += 2) {
76 if (iterator.hasNext()) {
77 ClanChannel channel = iterator.next();
78 String prefix = (index + 1) + ")";
79 player.send(new SendString((clanIndex == index ? "<col=ffffff>" : "") + prefix + " " + channel.getName(), string));
80 player.send(new SendTooltip("View " + channel.getName() + "'s clan profile", string));
81 } else {
82 player.send(new SendString("", string));
83 player.send(new SendTooltip("", string));
84 }
85 }
86 clanList = new ArrayList<>(channels);
87 player.send(new SendScrollbar(53300, size * 14));
88 }
89
90 private void drawClanDetails() {
91 String[] strings = getDetails();
92 assert strings.length != 0;
93 for (int index = 0, string = 53102; index < strings.length; index++, string += 2) {
94 player.send(new SendString(strings[index] == null ? "" : strings[index], string));
95 }
96 }
97
98 /** Gets the clan information details. */
99 private String[] getDetails() {
100 if (viewing == null)
101 return new String[10];
102 return new String[]{
103 "</col>Owner: " + viewing.getColor() + "<clan=7> " + Utility.formatName(viewing.getOwner()),
104 "</col>Established: " + viewing.getColor() + "" + viewing.getDetails().established,
105 "</col>Members: " + viewing.getColor() + "" + viewing.getMembers().size(),
106 "</col>Type: " + viewing.getColor() + viewing.getDetails().type.getIcon() + " " + Utility.formatEnum(viewing.getDetails().type.name()),
107 "</col>Level: " + viewing.getColor() + "" + Utility.formatEnum(viewing.getDetails().level.name()),
108 "</col>Tag " + viewing.getColor() + "" + (viewing.getTag().length() <= 0 ? "None" : ("[" + viewing.getTag()) + "]"),
109 "</col>Experience: " + viewing.getColor() + "" + Utility.formatDigits(viewing.getDetails().experience),
110 "</col>Points: " + viewing.getColor() + "" + Utility.formatDigits(viewing.getDetails().points),
111 "</col>Achievements Completed: " + viewing.getColor() + "NA",
112 "</col>Tasks Completed: " + viewing.getColor() + "NA",
113// (channel.modifier == null ? "None" : (channel.modifier.name) + "(" + channel.modifierDuration + " minute(s)") + ")",
114 "</col>Avg. Total: " + viewing.getColor() + "" + viewing.getDetails().getAverageTotal(),
115 };
116 }
117
118 private String[] getProfile(ClanMember member) {
119 if (member == null)
120 return new String[10];
121 return new String[]{
122 "</col>Rank: " + viewing.getColor() + "" + member.rank.getString() + " " + member.rank.name,
123 "</col>Joined: " + viewing.getColor() + "" + member.joined,
124 "</col>Exp Gained: " + viewing.getColor() + "" + Utility.formatDigits(member.expGained),
125 "</col>PvP Kills: " + viewing.getColor() + "" + member.playerKills,
126 "</col>PvM Kills: " + viewing.getColor() + "" + member.npcKills,
127 "",
128 "",
129 "",
130 "",
131 };
132 }
133
134 private void drawClanMembers() {
135 int size = 18;
136 List<ClanMember> membersList = new ArrayList<>(size);
137 if (viewing != null) {
138 viewing.forEach(o -> {
139 if (o != null)
140 membersList.add(o);
141 });
142 size = membersList.size() < 18 ? 18 : membersList.size();
143 }
144 for (int i = 0, string = 55052; i < size; i++, string += 2) {
145 boolean valid = i < membersList.size();
146 ClanMember member = valid ? membersList.get(i) : null;
147 String name = valid ? member.rank.getString() + " " + member.name : "";
148 player.send(new SendString((i == memberIndex ? "<col=ffffff>" : "") + name, string));
149 player.send(new SendTooltip(valid ? "View " + member.name + "'s clan profile" : "", string));
150 }
151 player.send(new SendScrollbar(55050, size * 18));
152 clanMembers = membersList;
153
154 if (memberIndex > membersList.size())
155 return;
156
157 ClanMember member = membersList.get(memberIndex);
158
159 if (member == null)
160 return;
161
162 String[] strings = getProfile(member);
163
164 for (int index = 0, string = 55012; index < strings.length; index++, string += 2) {
165 player.send(new SendString(strings[index] == null ? "" : strings[index], string));
166 }
167 }
168
170 if (player.interfaceManager.isInterfaceOpen(53000))
172 if (player.interfaceManager.isSidebar(Config.CLAN_TAB, 42000)) {
174 }
175 }
176
177 public void viewAchievements() {
178 ClanChannel channel = player.clanChannel;
179 int size = ClanAchievement.values().length;
180
181 Difficulty old = null;
182
183 for (int index = 0, string = 37114; index < size; index++, string++) {
184 Optional<ClanAchievement> achievement = ClanAchievement.forOrdinal(index);
185 if (achievement.isPresent()) {
186 boolean completed = channel.getDetails().completedAchievement(achievement.get());
187 Difficulty difficulty = achievement.get().difficulty;
188
189 if (old != difficulty) {
190 string++;
191 player.send(new SendString("<col=255>[" + Utility.formatEnum(difficulty.name()) + "]", string));
192 string++;
193 player.send(new SendString("", string));
194 string++;
195 }
196
197 old = difficulty;
198 int progress = channel.getDetails().getAchievementCompletion(achievement.get());
199 int goal = achievement.get().amount;
200
201 String name = (completed ? "<col=347043>" + "" : "") + achievement.get().details + " (" + Utility.getPercentageAmount(progress, goal) + "%)";
202 player.send(new SendString(name, string));
203 } else {
204 player.send(new SendString("", string));
205 }
206 }
207
208 player.send(new SendString("<col=000000>These are all the clan achievements available", 37111));
209 player.send(new SendString("<col=000000>Completed achievements will be highlighted in <col=347043>green</col>", 37112));
210 player.send(new SendString("Completed: 0/" + size, 37113));
211 player.send(new SendString("", 37114));
212 player.send(new SendString("", 37107));
213 player.send(new SendString(channel.getName() + "'s Achievements", 37103));
214 player.send(new SendScrollbar(37110, 500));
215 player.interfaceManager.open(37100);
216 }
217
225
226}
The class that contains setting-related constants for the server.
Definition Config.java:24
static final int CLAN_TAB
Definition Config.java:194
Handles the clan channel member.
ClanRank rank
The rank of the clan member.
int playerKills
The players killed by the clan member.
final String name
The name of the clan member.
double expGained
The experienced gained by the clan member.
String joined
The join date of the clan member.
int npcKills
The npcs killed by the clan member.
The repository containing all the clans and their corresponding data.
static Optional< Set< ClanChannel > > getTopChanels(ClanType type)
void open(ClanChannel channel, ClanTab tab)
String[] getDetails()
Gets the clan information details.
This class represents a character controlled by a player.
Definition Player.java:125
The container class that represents an item that can be interacted with.
Definition Item.java:21
The OutgoingPacket responsible for changing settings on a client.
The OutgoingPacket that sends a string to a Players itemcontainer in the client.
Handles miscellaneous methods.
Definition Utility.java:27
static String formatName(final String input)
Definition Utility.java:645
static String formatDigits(final int amount)
Formats digits for integers.
Definition Utility.java:41
static double getPercentageAmount(int progress, int total)
Gets a percentage amount.
Definition Utility.java:36
static String formatEnum(final String string)
Formats name of enum.
Definition Utility.java:89
final String name
The name of the clan rank.
Definition ClanRank.java:21
static Optional< ClanAchievement > forOrdinal(int ordinal)
Gets the clan achivement based on the ordinal.
Created by Daniel on 2017-11-27.