Crossfire Server, Trunk  R20513
Data Structures | Typedefs | Functions
shop_inventory.c File Reference

Implementation of the shop inventory class of objects. More...

#include "global.h"
#include <stdlib.h>
#include <string.h>
#include "ob_methods.h"
#include "ob_types.h"
#include "sounds.h"
#include "sproto.h"
Include dependency graph for shop_inventory.c:

Go to the source code of this file.

Data Structures

struct  shopinv
 One item to list on the sign. More...
 

Typedefs

typedef struct shopinv shopinv
 One item to list on the sign. More...
 

Functions

static void add_shop_item (object *tmp, shopinv *items, size_t *numitems)
 Insert the item in the list. More...
 
void init_type_shop_inventory (void)
 Initializer for the SHOP_INVENTORY object type. More...
 
static method_ret shop_inventory_type_apply (ob_methods *context, object *lighter, object *applier, int aflags)
 Apply a shop inventory. More...
 
static int shop_sort (const void *a1, const void *a2)
 Sort routine for shopinv. More...
 

Detailed Description

Implementation of the shop inventory class of objects.

Definition in file shop_inventory.c.

Typedef Documentation

typedef struct shopinv shopinv

One item to list on the sign.

Function Documentation

static void add_shop_item ( object tmp,
shopinv items,
size_t *  numitems 
)
static

Insert the item in the list.

Parameters
tmpobject to insert. Must have FLAG_UNPAID set.
itemsarray of items, should have (*numitems)+1 items allocated.
numitemshow many items items contains.

Definition at line 83 of file shop_inventory.c.

References CLEAR_FLAG, FLAG_UNPAID, shopinv::item_real, shopinv::item_sort, MAX_BUF, shopinv::nrof, obj::nrof, query_base_name(), SET_FLAG, strdup_local, shopinv::type, and obj::type.

Referenced by shop_inventory_type_apply().

Here is the call graph for this function:

Here is the caller graph for this function:

void init_type_shop_inventory ( void  )

Initializer for the SHOP_INVENTORY object type.

Definition at line 34 of file shop_inventory.c.

References register_apply(), SHOP_INVENTORY, and shop_inventory_type_apply().

Referenced by register_all_ob_types().

Here is the call graph for this function:

Here is the caller graph for this function:

static method_ret shop_inventory_type_apply ( ob_methods context,
object lighter,
object applier,
int  aflags 
)
static

Apply a shop inventory.

Parameters
contextmethod context.
lighterapplied object to apply.
applierobject attempting to apply the inventory. Should be a player.
aflagsspecial flags (always apply/unapply).
Returns
METHOD_OK if applier is a player, METHOD_UNHANDLED else.

Definition at line 121 of file shop_inventory.c.

References obj::above, add_shop_item(), draw_ext_info(), draw_ext_info_format(), FLAG_UNPAID, GET_MAP_OB, shopinv::item_real, shopinv::item_sort, obj::map, MAP_HEIGHT, MAP_WIDTH, METHOD_OK, METHOD_UNHANDLED, MSG_TYPE_SHOP, MSG_TYPE_SHOP_LISTING, NDI_UNIQUE, shopinv::nrof, PLAYER, QUERY_FLAG, shop_sort(), and obj::type.

Referenced by init_type_shop_inventory().

Here is the call graph for this function:

Here is the caller graph for this function:

static int shop_sort ( const void *  a1,
const void *  a2 
)
static

Sort routine for shopinv.

There are a lot of extra casts in here just to suppress warnings - it makes it look uglier than it really it. The format of the strings we get is type:name. So we first want to sort by type (numerical) - if the same type, then sort by name.

Parameters
a1
a2items to compare.
Returns
-1 is a1 is less than a2, 1 if the opposite, 0 if equals.

Definition at line 61 of file shop_inventory.c.

References shopinv::item_sort, strcasecmp(), and shopinv::type.

Referenced by shop_inventory_type_apply().

Here is the call graph for this function:

Here is the caller graph for this function: