ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/socket/sounds.C
(Generate patch)

Comparing deliantra/server/socket/sounds.C (file contents):
Revision 1.31 by root, Tue Jan 3 11:25:37 2012 UTC vs.
Revision 1.38 by root, Sat Dec 1 20:22:13 2018 UTC

1/* 1/*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG. 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 * 3 *
4 * Copyright (©) 2017,2018 Marc Alexander Lehmann / the Deliantra team
4 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 5 * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * 6 *
6 * Deliantra is free software: you can redistribute it and/or modify it under 7 * Deliantra is free software: you can redistribute it and/or modify it under
7 * the terms of the Affero GNU General Public License as published by the 8 * the terms of the Affero GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your 9 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version. 10 * option) any later version.
10 * 11 *
11 * This program is distributed in the hope that it will be useful, 12 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details. 15 * GNU General Public License for more details.
15 * 16 *
16 * You should have received a copy of the Affero GNU General Public License 17 * You should have received a copy of the Affero GNU General Public License
17 * and the GNU General Public License along with this program. If not, see 18 * and the GNU General Public License along with this program. If not, see
18 * <http://www.gnu.org/licenses/>. 19 * <http://www.gnu.org/licenses/>.
19 * 20 *
20 * The authors can be reached via e-mail to <support@deliantra.net> 21 * The authors can be reached via e-mail to <support@deliantra.net>
21 */ 22 */
22 23
23/* Send bug reports to Raphael Quinet (quinet@montefiore.ulg.ac.be) */ 24/* Send bug reports to Raphael Quinet (quinet@montefiore.ulg.ac.be) */
24 25
31 32
32#include <global.h> 33#include <global.h>
33#include <sproto.h> 34#include <sproto.h>
34#include <sounds.h> 35#include <sounds.h>
35 36
36#include <tr1/unordered_map> 37#include <flat_hash_map.hpp>
37 38
38// the hashtable 39// the hashtable
39typedef std::tr1::unordered_map 40typedef ska::flat_hash_map
40 < 41 <
41 const char *, 42 const char *,
42 faceidx, 43 faceidx,
43 str_hash, 44 str_hash,
44 str_equal, 45 str_equal,
48static HT ht; 49static HT ht;
49 50
50faceidx 51faceidx
51sound_find (const char *str) 52sound_find (const char *str)
52{ 53{
53 auto (i, ht.find (str)); 54 auto i = ht.find (str);
54 55
55 if (i != ht.end ()) 56 if (i != ht.end ())
56 return i->second; 57 return i->second;
57 58
58 if (strncmp (str, "sound/", sizeof ("sound/") - 1)) 59 if (strncmp (str, "sound/", sizeof ("sound/") - 1))
62} 63}
63 64
64void 65void
65sound_set (const char *str, faceidx face) 66sound_set (const char *str, faceidx face)
66{ 67{
67 auto (i, ht.find (str)); 68 auto i = ht.find (str);
68 69
69 if (i != ht.end ()) 70 if (i != ht.end ())
70 i->second = face; 71 i->second = face;
71 else 72 else
72 ht.insert (std::make_pair (strdup (str), face)); 73 ht.insert (std::make_pair (strdup (str), face));
99 100
100 packet sl ("sc"); 101 packet sl ("sc");
101 102
102 uint8 *len = sl.cur; 103 uint8 *len = sl.cur;
103 104
104 sl << uint8 (0) // group length 105 sl << uint8 (0) // group length, decoded as BER in clients
105 << uint8 (0) // type == one-time effect 106 << uint8 (0) // type == one-time effect
106 << ber32 (sound) 107 << ber32 (sound)
107 << sint8 (dx) 108 << sint8 (dx)
108 << sint8 (dy) 109 << sint8 (dy)
109 << uint8 (vol); // 0 == silent, 255 max 110 << uint8 (vol); // 0 == silent, 255 max
110 111
111 *len = sl.cur - len; // patch in group length 112 *len = sl.cur - len - 1; // patch in group length
112 113
113 send_packet (sl); 114 send_packet (sl);
114 } 115 }
115 else if (this->sound) 116 else if (this->sound)
116 { 117 {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines