forked from Warzone2100/warzone2100
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaud.cpp
107 lines (90 loc) · 2.81 KB
/
aud.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
This file is part of Warzone 2100.
Copyright (C) 1999-2004 Eidos Interactive
Copyright (C) 2005-2012 Warzone 2100 Project
Warzone 2100 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Warzone 2100 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Warzone 2100; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
*
* Warzone audio wrapper functions.
*/
#include "lib/framework/frame.h"
#include "lib/sound/aud.h"
#include "lib/sound/tracklib.h"
#include "display3d.h"
#include "map.h"
bool audio_ObjectDead(SIMPLE_OBJECT *psSimpleObj)
{
/* check is valid simple object pointer */
if (psSimpleObj == NULL)
{
debug( LOG_NEVER, "audio_ObjectDead: simple object pointer invalid" );
return true;
}
/* check projectiles */
if (isProjectile(psSimpleObj))
{
return castProjectile(psSimpleObj)->state == PROJ_POSTIMPACT;
}
else
{
/* check base object */
return psSimpleObj->died;
}
}
// @FIXME we don't need to do this, since we are not using qsound.
Vector3f audio_GetPlayerPos(void)
{
Vector3f pos;
pos.x = player.p.x;
pos.y = player.p.z;
pos.z = player.p.y;
// Invert Y to match QSOUND axes
// @NOTE What is QSOUND? Why invert the Y axis?
pos.y = world_coord(mapHeight) - pos.y;
return pos;
}
/**
* get the angle, and convert it from fixed point PSX crap to a float and then convert that to radians
*/
void audio_Get3DPlayerRotAboutVerticalAxis(float *angle)
{
*angle = ((float) player.r.y / DEG_1)* M_PI / 180.0f;
}
/**
* Get QSound axial position from world (x,y)
@FIXME we don't need to do this, since we are not using qsound.
*/
void audio_GetStaticPos(SDWORD iWorldX, SDWORD iWorldY, SDWORD *piX, SDWORD *piY, SDWORD *piZ)
{
*piX = iWorldX;
*piZ = map_TileHeight(map_coord(iWorldX), map_coord(iWorldY));
/* invert y to match QSOUND axes */
*piY = world_coord(mapHeight) - iWorldY;
}
// @FIXME we don't need to do this, since we are not using qsound.
void audio_GetObjectPos(SIMPLE_OBJECT *psBaseObj, SDWORD *piX, SDWORD *piY, SDWORD *piZ)
{
/* check is valid pointer */
ASSERT( psBaseObj != NULL,
"audio_GetObjectPos: game object pointer invalid" );
*piX = psBaseObj->pos.x;
*piZ = map_TileHeight(map_coord(psBaseObj->pos.x), map_coord(psBaseObj->pos.y));
/* invert y to match QSOUND axes */
*piY = world_coord(mapHeight) - psBaseObj->pos.y;
}
UDWORD sound_GetGameTime()
{
return gameTime;
}