Spring.SetActiveCommand(index,1,left,right,alt,ctrl,meta,shift)
doesn't execute a command or so , it just says , the next active Command is said command. But I don't get it then, who actually executes the command ? I suppose in the case of move and attack it's an onMouseClick() or onMouseRelease(), but what about state commands like Cloak ? Who executes those commands , and how do I intercept the call there ? Any info you can give me on this ?
Bleh I don''t get it agian this was my latest attempt
K I believe I know what I was doing wrong
Spring.SetActiveCommand(index,1,left,right,alt,ctrl,meta,shift)
doesn't execute a command or so , it just says , the next active Command is said command. But I don't get it then, who actually executes the command ? I suppose in the case of move and attack it's an onMouseClick() or onMouseRelease(), but what about state commands like Cloak ? Who executes those commands , and how do I intercept the call there ? Any info you can give me on this ?
Bleh I don''t get it agian this was my latest attempt
Code: Select all
function ClickFunc(button) 
	local _,_,left,_,right = Spring.GetMouseState()
	local alt,ctrl,meta,shift = Spring.GetModKeyState()
	local index = Spring.GetCmdDescIndex(button.cmdid)
	if (left) then
		Spring.Echo("active command set to ", button.cmdid)
		Spring.SetActiveCommand(index,1,left,right,alt,ctrl,meta,shift)
	end
	if (right) then
		Spring.Echo("active command set to ", button.cmdid)
		Spring.SetActiveCommand(index,3,left,right,alt,ctrl,meta,shift)
	end
end
function widget:UnitCmdDone(unitID, unitDefID, unitTeam, cmdID, cmdTag)
	Spring.Echo("unit command is done",unitID, unitDefID, unitTeam, cmdID, cmdTag)
	--see if cmd is a state command
	local idx, cmd_id, cmd_type, cmd_name = spGetActiveCommand()
	Spring.Echo("active command",idx, cmd_id, cmd_type, cmd_name)
	if (not cmd_id) then return end	
	
	Spring.Echo("active command found")
	local cmdDesc = spGetActiveCmdDesc( idx )
	local isState = (cmdDesc.type == CMDTYPE.ICON_MODE and #cmdDesc.params > 1)
	
	Spring.Echo("isState=", isState)
	-- if state then update state text on button in main window, step one will be finding the right button
	if isState then
		local buttons = window0.children
		local buttonToUpdate
		for i=1, #buttons do
			if(buttons[i].cmdid == cmdID)then
				Spring.Echo("Update button found")
				buttonToUpdate = buttons[i]
				break;
			end
		end
		buttonToUpdate.caption = cmdDesc.params[cmdDesc.params[1]+2]
		window0:RemoveChild(buttonToUpdate)
		window0:AddChild(buttonToUpdate)
	end
end
Code: Select all
[f=0000156] active command set to , 95
[f=0000157] unit command is done, 1255, 2, 0, 70, 1
[f=0000157] active command, 0, nil, nil, nil




