2022-12-17 13:32:43 +01:00
|
|
|
/***
|
2013-08-30 13:34:05 -07:00
|
|
|
*
|
|
|
|
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
|
|
|
*
|
|
|
|
* This product contains software technology licensed from Id
|
|
|
|
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Use, distribution, and modification of this source code and/or resulting
|
|
|
|
* object code is restricted to non-commercial enhancements to products from
|
|
|
|
* Valve LLC. All other use, distribution, or modification is prohibited
|
|
|
|
* without written permission from Valve LLC.
|
|
|
|
*
|
|
|
|
****/
|
|
|
|
// Customization.h
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "const.h"
|
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
#define MAX_QPATH 64 // Must match value in quakedefs.h
|
2013-08-30 13:34:05 -07:00
|
|
|
|
|
|
|
/////////////////
|
|
|
|
// Customization
|
|
|
|
// passed to pfnPlayerCustomization
|
|
|
|
// For automatic downloading.
|
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
t_sound = 0,
|
|
|
|
t_skin,
|
|
|
|
t_model,
|
|
|
|
t_decal,
|
|
|
|
t_generic,
|
|
|
|
t_eventscript,
|
2021-11-28 16:54:48 +01:00
|
|
|
t_world, // Fake type for world, is really t_model
|
2013-08-30 13:34:05 -07:00
|
|
|
} resourcetype_t;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
2021-11-28 16:54:48 +01:00
|
|
|
int size;
|
2013-08-30 13:34:05 -07:00
|
|
|
} _resourceinfo_t;
|
|
|
|
|
|
|
|
typedef struct resourceinfo_s
|
|
|
|
{
|
2021-11-28 16:54:48 +01:00
|
|
|
_resourceinfo_t info[8];
|
2013-08-30 13:34:05 -07:00
|
|
|
} resourceinfo_t;
|
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
#define RES_FATALIFMISSING (1 << 0) // Disconnect if we can't get this file.
|
|
|
|
#define RES_WASMISSING (1 << 1) // Do we have the file locally, did we get it ok?
|
|
|
|
#define RES_CUSTOM (1 << 2) // Is this resource one that corresponds to another player's customization \
|
|
|
|
// or is it a server startup resource.
|
|
|
|
#define RES_REQUESTED (1 << 3) // Already requested a download of this one
|
|
|
|
#define RES_PRECACHED (1 << 4) // Already precached
|
|
|
|
#define RES_ALWAYS (1 << 5) // download always even if available on client
|
|
|
|
#define RES_CHECKFILE (1 << 7) // check file on client
|
2013-08-30 13:34:05 -07:00
|
|
|
|
|
|
|
#include "crc.h"
|
|
|
|
|
|
|
|
typedef struct resource_s
|
|
|
|
{
|
2021-11-28 16:54:48 +01:00
|
|
|
char szFileName[MAX_QPATH]; // File name to download/precache.
|
|
|
|
resourcetype_t type; // t_sound, t_skin, t_model, t_decal.
|
|
|
|
int nIndex; // For t_decals
|
|
|
|
int nDownloadSize; // Size in Bytes if this must be downloaded.
|
|
|
|
unsigned char ucFlags;
|
2013-08-30 13:34:05 -07:00
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
// For handling client to client resource propagation
|
|
|
|
unsigned char rgucMD5_hash[16]; // To determine if we already have it.
|
|
|
|
unsigned char playernum; // Which player index this resource is associated with, if it's a custom resource.
|
2013-08-30 13:34:05 -07:00
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
unsigned char rguc_reserved[32]; // For future expansion
|
|
|
|
struct resource_s* pNext; // Next in chain.
|
|
|
|
struct resource_s* pPrev;
|
2013-08-30 13:34:05 -07:00
|
|
|
} resource_t;
|
|
|
|
|
|
|
|
typedef struct customization_s
|
|
|
|
{
|
2021-11-28 16:54:48 +01:00
|
|
|
qboolean bInUse; // Is this customization in use;
|
|
|
|
resource_t resource; // The resource_t for this customization
|
|
|
|
qboolean bTranslated; // Has the raw data been translated into a useable format?
|
|
|
|
// (e.g., raw decal .wad make into texture_t *)
|
|
|
|
int nUserData1; // Customization specific data
|
|
|
|
int nUserData2; // Customization specific data
|
|
|
|
void* pInfo; // Buffer that holds the data structure that references the data (e.g., the cachewad_t)
|
|
|
|
void* pBuffer; // Buffer that holds the data for the customization (the raw .wad data)
|
|
|
|
struct customization_s* pNext; // Next in chain
|
2013-08-30 13:34:05 -07:00
|
|
|
} customization_t;
|
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
#define FCUST_FROMHPAK (1 << 0)
|
|
|
|
#define FCUST_WIPEDATA (1 << 1)
|
|
|
|
#define FCUST_IGNOREINIT (1 << 2)
|
2013-08-30 13:34:05 -07:00
|
|
|
|
2021-11-28 16:54:48 +01:00
|
|
|
void COM_ClearCustomizationList(struct customization_s* pHead, qboolean bCleanDecals);
|
|
|
|
qboolean COM_CreateCustomization(struct customization_s* pListHead, struct resource_s* pResource, int playernumber, int flags,
|
|
|
|
struct customization_s** pCustomization, int* nLumps);
|
|
|
|
int COM_SizeofResourceList(struct resource_s* pList, struct resourceinfo_s* ri);
|