/* * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If * not, see <http://www.gnu.org/licenses/>. */ package silentium.gameserver.board.Manager; import java.util.List; import java.util.StringTokenizer; import silentium.gameserver.data.html.HtmCache; import silentium.gameserver.data.html.StaticHtmPath; import silentium.gameserver.model.L2World; import silentium.gameserver.model.actor.instance.L2PcInstance; import silentium.gameserver.tables.CharNameTable; public class FriendsBBSManager extends BaseBBSManager { protected FriendsBBSManager() { } public static FriendsBBSManager getInstance() { return SingletonHolder._instance; } @Override public void parseCmd(String command, L2PcInstance activeChar) { StringTokenizer st = new StringTokenizer(command, "_"); String cmd = st.nextToken(); if (cmd.equalsIgnoreCase("friendlist")) showFriendsList(activeChar, false); else if (cmd.startsWith("friendselect")) { Integer friendId = Integer.valueOf(cmd.split(";")[1]); if (!activeChar.getSelectedFriendList().contains(friendId)) activeChar.selectFriend(friendId); showFriendsList(activeChar, false); } else if (cmd.startsWith("frienddeselect")) { activeChar.deselectFriend(Integer.valueOf(cmd.split(";")[1])); showFriendsList(activeChar, false); } else if (cmd.startsWith("friendmail")) showMailWrite(activeChar); else separateAndSend("<html><body><br><br><center>The command: " + command + " isn't implemented.</center></body></html>", activeChar); } @Override public void parseWrite(String ar1, String ar2, String ar3, String ar4, String ar5, L2PcInstance activeChar) { } private static void showFriendsList(L2PcInstance activeChar, boolean delMsg) { String content = HtmCache.getInstance().getHtm(StaticHtmPath.BoardHtmPath + "friend/list.htm"); if (content == null) return; // Retrieve activeChar's friendlist and selected final List<Integer> list = activeChar.getFriendList(); final List<Integer> slist = activeChar.getSelectedFriendList(); // Friendlist if (list.isEmpty()) content = content.replaceAll("%friendslist%", ""); else { final StringBuilder flString = new StringBuilder(list.size() * 100); for (int id : list) { String friendName = CharNameTable.getInstance().getNameById(id); if (friendName == null) continue; L2PcInstance friend = L2World.getInstance().getPlayer(friendName); flString.append("<a action=\"bypass _friendselect;").append(id).append("\">").append(friendName).append("</a> ").append(friend == null ? "(off)" : "(on)").append("<br1>"); } content = content.replaceAll("%friendslist%", flString.toString()); } // Selected friendlist if (slist.isEmpty()) content = content.replaceAll("%selectedFriendsList%", ""); else { final StringBuilder sflString = new StringBuilder(slist.size() * 80); for (int id : slist) { String friendName = CharNameTable.getInstance().getNameById(id); if (friendName == null) continue; sflString.append("<a action=\"bypass _frienddeselect;").append(id).append("\">").append(friendName).append("</a>").append("<br1>"); } content = content.replaceAll("%selectedFriendsList%", sflString.toString()); } // Delete button. content = content.replaceAll("%deleteMSG%", (delMsg) ? "<br>\nAre you sure you want to delete all messages from your Friends List? <button value = \"OK\" action=\"bypass _bssfriend;delall\" back=\"l2ui_ch3.smallbutton2_down\" width=65 height=20 fore=\"l2ui_ch3.smallbutton2\">" : ""); separateAndSend(content, activeChar); } public static final void showMailWrite(L2PcInstance activeChar) { String content = HtmCache.getInstance().getHtm(StaticHtmPath.BoardHtmPath + "mail/mail-write.htm"); if (content == null) return; content = content.replaceAll("%maillink%", "<a action=\"bypass _friendlist\">&\\$904;</a> > &\\$915;"); content = content.replaceAll("%playerObjId%", String.valueOf(activeChar.getObjectId())); content = content.replaceAll("%postId%", "-1"); StringBuilder toList = new StringBuilder(); for (int id : activeChar.getSelectedFriendList()) { String friendName = CharNameTable.getInstance().getNameById(id); if (friendName == null) continue; if (!toList.equals("")) toList.append(";"); toList.append(friendName); } separateAndSend(content, activeChar); } @Override protected String getFolder() { return "friend/"; } private static class SingletonHolder { protected static final FriendsBBSManager _instance = new FriendsBBSManager(); } }