OpenMoHAA 0.82.0
Loading...
Searching...
No Matches
alias.h
1/*
2===========================================================================
3Copyright (C) 2015 the OpenMoHAA team
4
5This file is part of OpenMoHAA source code.
6
7OpenMoHAA source code is free software; you can redistribute it
8and/or modify it under the terms of the GNU General Public License as
9published by the Free Software Foundation; either version 2 of the License,
10or (at your option) any later version.
11
12OpenMoHAA source code is distributed in the hope that it will be
13useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with OpenMoHAA source code; if not, write to the Free Software
19Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20===========================================================================
21*/
22
23#pragma once
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29//
30// public implementation
31//
32
33enum
34{
35 MAX_ALIAS_NAME_LENGTH = 40,
36 MAX_REAL_NAME_LENGTH = 128,
37 MAX_ALIASLIST_NAME_LENGTH = 40
38};
39
40typedef struct AliasListNode_s {
41 char alias_name[MAX_ALIAS_NAME_LENGTH];
42 char real_name[MAX_REAL_NAME_LENGTH];
43 float weight;
44
45 // Static alias info
46 byte stop_flag;
47 struct AliasListNode_s* next;
48
49 // Global alias info
50 float pitch;
51 float volume;
52 float pitchMod;
53 float volumeMod;
54 float dist;
55 float maxDist;
56 int channel;
57 int streamed;
58 qboolean forcesubtitle;
59 char* subtitle;
60} AliasListNode_t;
61
62typedef struct AliasList_s
63{
64 char name[MAX_ALIASLIST_NAME_LENGTH];
65 qboolean dirty;
66 int num_in_list;
67 AliasListNode_t** sorted_list;
68 AliasListNode_t* data_list;
69} AliasList_t;
70
71#if defined(APP_MODULE)
72
73const char* Alias_Find(const char* alias);
74qboolean Alias_Add(const char* alias, const char* name, const char* parameters);
75qboolean Alias_Delete(const char* alias);
76const char* Alias_FindRandom(const char* alias, AliasListNode_t** ret);
77void Alias_Dump(void);
78void Alias_Clear(void);
79AliasList_t* Alias_GetGlobalList();
80
81int S_ChannelNameToNum( const char *pszName );
82const char *S_ChannelNumToName( int iChannel );
83
84#endif
85
86//
87// private implementation
88//
89
90typedef struct AliasActorNode_s
91{
92 int actor_number;
93
94 int number_of_times_played;
95 byte been_played_this_loop;
96 int last_time_played;
97
98 struct AliasActorNode_s* next;
99} AliasActorNode_t;
100
101void Alias_ListClearActors(AliasList_t* list);
102AliasList_t* AliasList_New(const char* name);
103const char* Alias_ListFind(AliasList_t* list, const char* alias);
104AliasListNode_t* Alias_ListFindNode(AliasList_t* list, const char* alias);
105qboolean Alias_ListAdd(AliasList_t* list, const char* alias, const char* name, const char* parameters);
106const char* Alias_ListFindRandom(AliasList_t* list, const char* alias, AliasListNode_t** ret);
107void Alias_ListDump(AliasList_t* list);
108void Alias_ListClear(AliasList_t* list);
109void Alias_ListDelete(AliasList_t* list);
110void Alias_ListSort(AliasList_t* list);
111int Alias_IsGlobal(AliasListNode_t* node, int actor_number);
112AliasActorNode_t* Alias_FindActor(AliasListNode_t* node, int actor_number);
113void Alias_ListFindRandomRange(AliasList_t* list, const char* alias, int* min_index, int* max_index, float* total_weight);
114const char* Alias_ListFindDialog(AliasList_t* list, const char* alias);
115void Alias_ListUpdateDialog(AliasList_t* list, const char* alias);
116void Alias_ListAddActorDialog(AliasList_t* list, const char* alias);
117float randweight(void);
118
119#ifdef __cplusplus
120}
121#endif
Definition alias.h:91
Definition alias.h:40
Definition alias.h:63