/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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.clientpackets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.l2jserver.Config;
import com.l2jserver.gameserver.data.xml.impl.UIData;
import com.l2jserver.gameserver.model.ActionKey;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.L2GameClient.GameClientState;
/**
* Request Save Key Mapping client packet.
* @author mrTJO, Zoey76
*/
public class RequestSaveKeyMapping extends L2GameClientPacket
{
private static final String _C__D0_22_REQUESTSAVEKEYMAPPING = "[C] D0:22 RequestSaveKeyMapping";
private final Map> _keyMap = new HashMap<>();
private final Map> _catMap = new HashMap<>();
@Override
protected void readImpl()
{
int category = 0;
readD(); // Unknown
readD(); // Unknown
final int _tabNum = readD();
for (int i = 0; i < _tabNum; i++)
{
int cmd1Size = readC();
for (int j = 0; j < cmd1Size; j++)
{
UIData.addCategory(_catMap, category, readC());
}
category++;
int cmd2Size = readC();
for (int j = 0; j < cmd2Size; j++)
{
UIData.addCategory(_catMap, category, readC());
}
category++;
int cmdSize = readD();
for (int j = 0; j < cmdSize; j++)
{
int cmd = readD();
int key = readD();
int tgKey1 = readD();
int tgKey2 = readD();
int show = readD();
UIData.addKey(_keyMap, i, new ActionKey(i, cmd, key, tgKey1, tgKey2, show));
}
}
readD();
readD();
}
@Override
protected void runImpl()
{
final L2PcInstance player = getActiveChar();
if (!Config.STORE_UI_SETTINGS || (player == null) || (getClient().getState() != GameClientState.IN_GAME))
{
return;
}
player.getUISettings().storeAll(_catMap, _keyMap);
}
@Override
public String getType()
{
return _C__D0_22_REQUESTSAVEKEYMAPPING;
}
}