/* * 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 . */ package com.l2jserver.gameserver.network.serverpackets; import java.util.List; import com.l2jserver.gameserver.model.L2UIKeysSettings; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.entity.ActionKey; /** * * @author mrTJO */ public class ExUISetting extends L2GameServerPacket { private final L2UIKeysSettings _uiSettings; private int buffsize, categories; public ExUISetting(L2PcInstance player) { _uiSettings = player.getUISettings(); calcSize(); } /** * @see com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket#getType() */ @Override public String getType() { return null; } private void calcSize() { int size = 16; //initial header and footer int category = 0; int numKeyCt = _uiSettings.getKeys().size(); for (int i = 0; i < numKeyCt; i++) { size++; if (_uiSettings.getCategories().containsKey(category)) { List catElList1 = _uiSettings.getCategories().get(category); size = size + catElList1.size(); } category++; size++; if (_uiSettings.getCategories().containsKey(category)) { List catElList2 = _uiSettings.getCategories().get(category); size = size + catElList2.size(); } category++; size = size+4; if (_uiSettings.getKeys().containsKey(i)) { List keyElList = _uiSettings.getKeys().get(i); size = size + (keyElList.size()*20); } } buffsize = size; categories = category; } /** * @see com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket#writeImpl() */ @Override protected void writeImpl() { writeC(0xFE); writeH(0x70); writeD(buffsize); writeD(categories); int category = 0; int numKeyCt = _uiSettings.getKeys().size(); writeD(numKeyCt); for (int i = 0; i < numKeyCt; i++) { if (_uiSettings.getCategories().containsKey(category)) { List catElList1 = _uiSettings.getCategories().get(category); writeC(catElList1.size()); for (int cmd : catElList1) { writeC(cmd); } } else { writeC(0x00); } category++; if (_uiSettings.getCategories().containsKey(category)) { List catElList2 = _uiSettings.getCategories().get(category); writeC(catElList2.size()); for (int cmd : catElList2) { writeC(cmd); } } else { writeC(0x00); } category++; if (_uiSettings.getKeys().containsKey(i)) { List keyElList = _uiSettings.getKeys().get(i); writeD(keyElList.size()); for (ActionKey akey : keyElList) { writeD(akey.getCommandId()); writeD(akey.getKeyId()); writeD(akey.getToogleKey1()); writeD(akey.getToogleKey2()); writeD(akey.getShowStatus()); } } else { writeD(0x00); } } writeD(0x11); writeD(0x10); } }