1 /* 2 Minetest 3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation; either version 2.1 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License along 16 with this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #pragma once 21 22 #include <set> 23 #include <string> 24 #include "util/serialize.h" 25 #include "irrlichttypes_bloated.h" 26 27 struct SimpleSoundSpec 28 { 29 SimpleSoundSpec(const std::string &name = "", float gain = 1.0f, 30 float fade = 0.0f, float pitch = 1.0f) : nameSimpleSoundSpec31 name(name), 32 gain(gain), fade(fade), pitch(pitch) 33 { 34 } 35 existsSimpleSoundSpec36 bool exists() const { return !name.empty(); } 37 38 // Take cf_version from ContentFeatures::serialize to 39 // keep in sync with item definitions serializeSimpleSoundSpec40 void serialize(std::ostream &os, u8 cf_version) const 41 { 42 os << serializeString16(name); 43 writeF32(os, gain); 44 writeF32(os, pitch); 45 writeF32(os, fade); 46 // if (cf_version < ?) 47 // return; 48 } 49 deSerializeSimpleSoundSpec50 void deSerialize(std::istream &is, u8 cf_version) 51 { 52 name = deSerializeString16(is); 53 gain = readF32(is); 54 pitch = readF32(is); 55 fade = readF32(is); 56 } 57 58 std::string name; 59 float gain = 1.0f; 60 float fade = 0.0f; 61 float pitch = 1.0f; 62 }; 63