// by commy2
#include "script_component.hpp"

private ["_unit", "_weapon"];

_unit = _this select 0;
_weapon = _this select 1;

// 1 = primary, 2 = secondary, 3 = handgun
private "_currentWeaponType";
_currentWeaponType = 0;

private "_pointer";
_pointer = switch (_weapon) do {
	case (primaryWeapon _unit): {
		_currentWeaponType = 1;
		primaryWeaponItems _unit select 1
	};
	case (secondaryWeapon _unit): {
		_currentWeaponType = 2;
		secondaryWeaponItems _unit select 1
	};
	case (handgunWeapon _unit): {
		_currentWeaponType = 3;
		handgunItems _unit select 1
	};
	default {""};
};

if (_pointer == "") exitWith {};

private "_config";
_config = configFile >> "CfgWeapons" >> _pointer;

private "_nextPointer";
_nextPointer = getText (_config >> "ACE_nextModeClass");

if (_nextPointer == "") exitWith {};

// disable inheritance for this entry, because addons claim this as a base class for convenience
if !((_config >> "ACE_nextModeClass") in configProperties [_config, "true", false]) exitWith {};

private ["_description", "_picture"];

_description = getText (configFile >> "CfgWeapons" >> _nextPointer >> "ACE_modeDescription");
_picture = getText (configFile >> "CfgWeapons" >> _nextPointer >> "picture");

switch (_currentWeaponType) do {
	case 1: {
		_unit removePrimaryWeaponItem _pointer;
		_unit addPrimaryWeaponItem _nextPointer;
	};
	case 2: {
		_unit removeSecondaryWeaponItem _pointer;
		_unit addSecondaryWeaponItem _nextPointer;
	};
	case 3: {
		_unit removeHandgunItem _pointer;
		_unit addHandgunItem _nextPointer;
	};
};

[_description, _picture] call EFUNC(common,displayTextPicture);
playSound "ACE_Sound_Click";