Skip to content

Tiny optimization potential in Gadget_Push_Button_Input #1090

@xezon

Description

@xezon
WindowMsgHandledType Gadget_Push_Button_Input(
    GameWindow *push_button, unsigned int message, unsigned int data_1, unsigned int data_2)
{
    WinInstanceData *instance_data = push_button->Win_Get_Instance_Data();

    switch (message) {
...
        case GWM_LEFT_DOWN: {
            _PushButtonData *data = static_cast<_PushButtonData *>(push_button->Win_Get_User_Data());
            AudioEventRTS click;

            if (data != nullptr && data->m_altSound.Is_Not_Empty()) {
                click.Set_Event_Name(data->m_altSound);
            } else {
                click.Set_Event_Name("GUIClick");
            }

            if (g_theAudio != nullptr) {
                g_theAudio->Add_Audio_Event(&click);
            }
...
        case GWM_RIGHT_DOWN: {
            _PushButtonData *data = static_cast<_PushButtonData *>(push_button->Win_Get_User_Data());
            AudioEventRTS click;

            if (data != nullptr && data->m_altSound.Is_Not_Empty()) {
                click.Set_Event_Name(data->m_altSound);
            } else {
                click.Set_Event_Name("GUIClick");
            }

            if ((instance_data->Get_Status() & WIN_STATUS_RIGHT_CLICK) == 0) {
                return MSG_IGNORED;
            }

            if (g_theAudio != nullptr) {
                g_theAudio->Add_Audio_Event(&click);
            }
...

Code is all over the place. AudioEventRTS click creation can be moved into g_theAudio test. And WIN_STATUS_RIGHT_CLICK status can be tested much earlier:

WindowMsgHandledType Gadget_Push_Button_Input(
    GameWindow *push_button, unsigned int message, unsigned int data_1, unsigned int data_2)
{
    WinInstanceData *instance_data = push_button->Win_Get_Instance_Data();

    switch (message) {
...
        case GWM_LEFT_DOWN: {
            _PushButtonData *data = static_cast<_PushButtonData *>(push_button->Win_Get_User_Data());

            if (g_theAudio != nullptr) {
                AudioEventRTS click;

                if (data != nullptr && data->m_altSound.Is_Not_Empty()) {
                    click.Set_Event_Name(data->m_altSound);
                } else {
                    click.Set_Event_Name("GUIClick");
                }
                g_theAudio->Add_Audio_Event(&click);
            }
...
        case GWM_RIGHT_DOWN: {
            if ((instance_data->Get_Status() & WIN_STATUS_RIGHT_CLICK) == 0) {
                return MSG_IGNORED;
            }

            _PushButtonData *data = static_cast<_PushButtonData *>(push_button->Win_Get_User_Data());

            if (g_theAudio != nullptr) {
                AudioEventRTS click;

                if (data != nullptr && data->m_altSound.Is_Not_Empty()) {
                    click.Set_Event_Name(data->m_altSound);
                } else {
                    click.Set_Event_Name("GUIClick");
                }
                g_theAudio->Add_Audio_Event(&click);
            }
...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions