Exemple #1
0
T_void Hash32Remove(T_hash32Item hashItem)
{
    T_hash32ItemStruct *p_item ;
    T_doubleLinkList list ;

    DebugRoutine("Hash32Remove") ;

    /* Check to see if the item is bad. */
    DebugCheck(hashItem != HASH32_ITEM_BAD) ;
    if (hashItem != HASH32_ITEM_BAD)  {
        /* Get a quick pointer. */
        p_item = (T_hash32ItemStruct *)hashItem ;

        /* See if the tag is correct. */
        DebugCheck(p_item->tag == HASH32_ITEM_TAG) ;
        if (p_item->tag == HASH32_ITEM_TAG)  {
            /* Yes, this is a proper item, remove it. */
            DoubleLinkListRemoveElement(p_item->elementInBigList) ;
            DoubleLinkListRemoveElement(p_item->elementInHashList) ;

            /* Mark this object as no longer. */
            p_item->tag = HASH32_ITEM_DEAD_TAG ;

            /* Delete this item. */
            MemFree(p_item) ;
        }
    }

    DebugEnd() ;
}
/* removes a player name from the list of players for the selected game */
T_void GuildUIRemovePlayer (T_byte8 *playerName)
{
    T_doubleLinkListElement element;
    T_byte8 *name;
    T_word32 size;
    DebugRoutine ("GuildUIRemovePlayer");

    size=TxtboxCanFit(G_displayBoxes[GUILD_GAME_DESC],playerName);
    element=DoubleLinkListGetFirst(G_playerList);

    while (element != DOUBLE_LINK_LIST_ELEMENT_BAD)
    {
        name=(T_byte8 *)DoubleLinkListElementGetData(element);
        if (strncmp(name,playerName,size)==0)
        {
            /* remove element */
            MemFree(name);
            DoubleLinkListRemoveElement(element);
            break;
        }
        element=DoubleLinkListElementGetNext(element);
    }

    GuildUIDrawPlayerList();

    DebugEnd();
}
/* removes a game from the list of active 'open' games */
T_void GuildUIRemoveGame (T_word16 mapNumber, T_gameGroupID groupID)
{
    T_gameDescriptionStruct *p_game;
    T_doubleLinkListElement element,nextElement;
    DebugRoutine ("GuildUIRemoveGame");

    element=DoubleLinkListGetFirst(G_gameList);

    while (element != DOUBLE_LINK_LIST_ELEMENT_BAD)
    {
        nextElement=DoubleLinkListElementGetNext(element);
        p_game=(T_gameDescriptionStruct *)DoubleLinkListElementGetData(element);

        if ((p_game->mapNumber==mapNumber) &&
            (CompareGameGroupIDs(p_game->groupID, groupID)))
        {
            /* remove this one */
            MemFree(p_game);
            DoubleLinkListRemoveElement(element);
            break;
        }

        element=nextElement;
    }

    /* Only redraw the list if we are not joining or creating a game. */
    if (PeopleHereGetOurState() == 0)
        GuildUIDrawGameList();

    DebugEnd();
}
Exemple #4
0
/**
 *  DoubleLinkListDestroy goes through a list of double link list nodes
 *  and detaches the data with them and then deletes all the nodes.
 *
 *  NOTE:
 *  The calling routine must realize that this routine does not
 *  deallocate memory attached to a node, it is assumed that the calling
 *  routine will do this.
 *
 *  @param linkList -- Handle to link list to destroy
 *
 *<!-----------------------------------------------------------------------*/
T_void DoubleLinkListDestroy(T_doubleLinkList linkList)
{
    T_doubleLinkListStruct *p_head ;

    DebugRoutine("DoubleLinkListDestroy") ;
    DebugCheck(linkList != DOUBLE_LINK_LIST_BAD) ;

#ifdef COMPILE_OPTION_DOUBLE_LINK_OUTPUT
printf("!F 1 list_%s\n", DebugGetCallerName()) ;
#endif
    /* Get a quick pointer. */
    p_head = (T_doubleLinkListStruct *)linkList ;
    DebugCheck(p_head->tag == DOUBLE_LINK_LIST_TAG) ;

    /* Remove all items in the list.  Hopefully */
    /* all attached data is not allocated memory or is being */
    /* managed by someone else. */
    while (p_head->p_next != p_head)
        DoubleLinkListRemoveElement((T_doubleLinkListElement)p_head->p_next) ;

    /* Destroy this element now. */
    IDestroyNode(p_head) ;

    DebugEnd() ;
}
/**
 *  MousePopEventHandler restores the last handler on the stack
 *  (if there is one).
 *
 *<!-----------------------------------------------------------------------*/
T_void MousePopEventHandler(T_void)
{
    T_doubleLinkListElement first ;
    T_mouseEventHandler handler ;

    DebugRoutine("MousePopEventHandler") ;

    /* Get the old event handler. */
    first = DoubleLinkListGetFirst(G_eventStack) ;
    DebugCheck(first != DOUBLE_LINK_LIST_ELEMENT_BAD) ;

    if (first != DOUBLE_LINK_LIST_ELEMENT_BAD)  {
        handler = (T_mouseEventHandler)
                      DoubleLinkListElementGetData(first) ;

        MouseSetEventHandler(handler) ;
        DoubleLinkListRemoveElement(first) ;
    }

    DebugEnd() ;
}
/* clears all player names from the player list box */
T_void GuildUIClearPlayers (T_void)
{
    T_doubleLinkListElement element,nextElement;
    T_byte8 *p_name;
    T_byte8 *test;
    DebugRoutine ("GuildUIClearPlayers");

    element=DoubleLinkListGetFirst(G_playerList);
    while (element != DOUBLE_LINK_LIST_ELEMENT_BAD)
    {
        nextElement=DoubleLinkListElementGetNext(element);
        p_name=(T_byte8 *)DoubleLinkListElementGetData(element);
        MemFree(p_name);
        DoubleLinkListRemoveElement(element);
        element=nextElement;
    }

    test=TxtboxGetData(G_displayBoxes[GUILD_GAME_DESC]);
    if (test != NULL) TxtboxSetData(G_displayBoxes[GUILD_GAME_DESC],"");

    DebugEnd();
}
Exemple #7
0
T_void FormPop(T_void)
{
    T_formObjectID *p_formObjs;
    T_doubleLinkListElement element;
    T_void *p_state;
    T_formVariousValues *p_values;

    DebugRoutine("FormPop");

    /* Recover the form callback */
    element = DoubleLinkListGetFirst(G_formStack);
    p_values = (T_formVariousValues *)DoubleLinkListElementGetData(element);
    formcallback = p_values->callback;
    G_formHasTextBoxes = p_values->hasText;
    G_formHasButtons = p_values->hasButtons;
    MemFree(p_values);
    DoubleLinkListRemoveElement(element);

    /* Recover the list of text boxes */
    element = DoubleLinkListGetFirst(G_formStack);
    p_state = DoubleLinkListElementGetData(element);
    TxtboxSetStateBlock(p_state);
    MemFree(p_state);
    DoubleLinkListRemoveElement(element);

    /* Recover the list of sliders */
    element = DoubleLinkListGetFirst(G_formStack);
    p_state = DoubleLinkListElementGetData(element);
    SliderSetStateBlock(p_state);
    MemFree(p_state);
    DoubleLinkListRemoveElement(element);

    /* Recover the list of graphics */
    element = DoubleLinkListGetFirst(G_formStack);
    p_state = DoubleLinkListElementGetData(element);
    GraphicSetStateBlock(p_state);
    MemFree(p_state);
    DoubleLinkListRemoveElement(element);

    /* Recover the list of buttons */
    element = DoubleLinkListGetFirst(G_formStack);
    p_state = DoubleLinkListElementGetData(element);
    ButtonSetStateBlock(p_state);
    MemFree(p_state);
    DoubleLinkListRemoveElement(element);

    /* Recover the list of form objects */
    element = DoubleLinkListGetFirst(G_formStack);
    p_formObjs = DoubleLinkListElementGetData(element);
    memcpy(G_formObjectArray, p_formObjs, sizeof(G_formObjectArray));
    MemFree(p_formObjs);
    DoubleLinkListRemoveElement(element);

    /* If the list is empty, destroy it. */
    if (DoubleLinkListGetNumberElements(G_formStack) == 0) {
        DoubleLinkListDestroy(G_formStack);
        G_formStack = DOUBLE_LINK_LIST_BAD;
    }

    DebugEnd();
}