mirror of
https://github.com/love2d/love.git
synced 2026-08-15 15:51:12 +02:00
5b30c7fcfe
The audio module was not really stable in 0.6.0, it takes very little messing around to cause OpenAL to do horrible things. It should now be much more stable, and you *should* be able to play/stop/pause/resume/rewind/loop like a madman without disasters. Seek and tell, however, are still not tested and verified for all decoders, but that's less important. Also, all objects now have object:type() and object:typeOf(), which returns the type name of the object, and checks whether an object is of a certain type, respectively.
150 lines
5.2 KiB
C++
150 lines
5.2 KiB
C++
/**
|
|
* Copyright (c) 2006-2009 LOVE Development Team
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
* claim that you wrote the original software. If you use this software
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
* appreciated but is not required.
|
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
* misrepresented as being the original software.
|
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
**/
|
|
|
|
#ifndef LOVE_TYPES_H
|
|
#define LOVE_TYPES_H
|
|
|
|
// STD
|
|
#include <bitset>
|
|
|
|
namespace love
|
|
{
|
|
enum Type
|
|
{
|
|
INVALID_ID = 0,
|
|
// Cross-module types.
|
|
OBJECT_ID,
|
|
DATA_ID,
|
|
MODULE_ID,
|
|
|
|
// Filesystem.
|
|
FILESYSTEM_FILE_ID,
|
|
FILESYSTEM_FILE_DATA_ID,
|
|
|
|
// Font
|
|
FONT_GLYPH_DATA_ID,
|
|
FONT_RASTERIZER_ID,
|
|
|
|
// Graphics
|
|
GRAPHICS_DRAWABLE_ID,
|
|
GRAPHICS_IMAGE_ID,
|
|
GRAPHICS_QUAD_ID,
|
|
GRAPHICS_GLYPH_ID,
|
|
GRAPHICS_FONT_ID,
|
|
GRAPHICS_PARTICLE_SYSTEM_ID,
|
|
GRAPHICS_SPRITE_BATCH_ID,
|
|
GRAPHICS_VERTEX_BUFFER_ID,
|
|
|
|
// Image
|
|
IMAGE_IMAGE_DATA_ID,
|
|
|
|
// Audio
|
|
AUDIO_SOURCE_ID,
|
|
|
|
// Sound
|
|
SOUND_SOUND_DATA_ID,
|
|
SOUND_DECODER_ID,
|
|
|
|
// Physics
|
|
PHYSICS_WORLD_ID,
|
|
PHYSICS_CONTACT_ID,
|
|
PHYSICS_BODY_ID,
|
|
PHYSICS_SHAPE_ID,
|
|
PHYSICS_CIRCLE_SHAPE_ID,
|
|
PHYSICS_POLYGON_SHAPE_ID,
|
|
PHYSICS_JOINT_ID,
|
|
PHYSICS_MOUSE_JOINT_ID,
|
|
PHYSICS_DISTANCE_JOINT_ID,
|
|
PHYSICS_PRISMATIC_JOINT_ID,
|
|
PHYSICS_REVOLUTE_JOINT_ID,
|
|
PHYSICS_PULLEY_JOINT_ID,
|
|
PHYSICS_GEAR_JOINT_ID,
|
|
|
|
// The modules themselves. Only add abstracted modules here.
|
|
MODULE_FILESYSTEM_ID,
|
|
MODULE_IMAGE_ID,
|
|
MODULE_SOUND_ID,
|
|
|
|
// Count the number of bits needed.
|
|
TYPE_MAX_ENUM
|
|
};
|
|
|
|
typedef std::bitset<TYPE_MAX_ENUM> bits;
|
|
|
|
const bits INVALID_T = bits(1) << INVALID_ID;
|
|
|
|
const bits OBJECT_T = bits(1) << OBJECT_ID;
|
|
const bits DATA_T = (bits(1) << DATA_ID) | OBJECT_T;
|
|
const bits MODULE_T = (bits(1) << MODULE_ID) | OBJECT_T;
|
|
|
|
// Filesystem.
|
|
const bits FILESYSTEM_FILE_T = (bits(1) << FILESYSTEM_FILE_ID) | OBJECT_T;
|
|
const bits FILESYSTEM_FILE_DATA_T = (bits(1) << FILESYSTEM_FILE_DATA_ID) | DATA_T;
|
|
|
|
const bits FONT_GLYPH_DATA_T = (bits(1) << FONT_GLYPH_DATA_ID) | DATA_T;
|
|
const bits FONT_RASTERIZER_T = (bits(1) << FONT_RASTERIZER_ID) | OBJECT_T;
|
|
|
|
// Graphics.
|
|
const bits GRAPHICS_DRAWABLE_T = (bits(1) << GRAPHICS_DRAWABLE_ID) | OBJECT_T;
|
|
const bits GRAPHICS_IMAGE_T = (bits(1) << GRAPHICS_IMAGE_ID) | GRAPHICS_DRAWABLE_T;
|
|
const bits GRAPHICS_QUAD_T = (bits(1) << GRAPHICS_QUAD_ID) | OBJECT_T;
|
|
const bits GRAPHICS_GLYPH_T = (bits(1) << GRAPHICS_GLYPH_ID) | GRAPHICS_DRAWABLE_T;
|
|
const bits GRAPHICS_FONT_T = (bits(1) << GRAPHICS_FONT_ID) | OBJECT_T;
|
|
const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T;
|
|
const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T;
|
|
const bits GRAPHICS_VERTEX_BUFFER_T = (bits(1) << GRAPHICS_VERTEX_BUFFER_ID) | GRAPHICS_DRAWABLE_T;
|
|
|
|
// Image.
|
|
const bits IMAGE_IMAGE_DATA_T = (bits(1) << IMAGE_IMAGE_DATA_ID) | DATA_T;
|
|
|
|
// Audio.
|
|
const bits AUDIO_SOURCE_T = (bits(1) << AUDIO_SOURCE_ID) | OBJECT_T;
|
|
|
|
// Sound.
|
|
const bits SOUND_SOUND_DATA_T = (bits(1) << SOUND_SOUND_DATA_ID) | DATA_T;
|
|
const bits SOUND_DECODER_T = bits(1) << SOUND_DECODER_ID;
|
|
|
|
// Physics.
|
|
const bits PHYSICS_WORLD_T = (bits(1) << PHYSICS_WORLD_ID) | OBJECT_T;
|
|
const bits PHYSICS_CONTACT_T = (bits(1) << PHYSICS_CONTACT_ID) | OBJECT_T;
|
|
const bits PHYSICS_BODY_T = (bits(1) << PHYSICS_BODY_ID) | OBJECT_T;
|
|
const bits PHYSICS_SHAPE_T = (bits(1) << PHYSICS_SHAPE_ID) | OBJECT_T;
|
|
const bits PHYSICS_CIRCLE_SHAPE_T = (bits(1) << PHYSICS_CIRCLE_SHAPE_ID) | PHYSICS_SHAPE_T;
|
|
const bits PHYSICS_POLYGON_SHAPE_T = (bits(1) << PHYSICS_POLYGON_SHAPE_ID) | PHYSICS_SHAPE_T;
|
|
const bits PHYSICS_JOINT_T = (bits(1) << PHYSICS_JOINT_ID) | OBJECT_T;
|
|
const bits PHYSICS_MOUSE_JOINT_T = (bits(1) << PHYSICS_MOUSE_JOINT_ID) | PHYSICS_JOINT_T;
|
|
const bits PHYSICS_DISTANCE_JOINT_T = (bits(1) << PHYSICS_DISTANCE_JOINT_ID) | PHYSICS_JOINT_T;
|
|
const bits PHYSICS_PRISMATIC_JOINT_T = (bits(1) << PHYSICS_PRISMATIC_JOINT_ID) | PHYSICS_JOINT_T;
|
|
const bits PHYSICS_REVOLUTE_JOINT_T = (bits(1) << PHYSICS_REVOLUTE_JOINT_ID) | PHYSICS_JOINT_T;
|
|
const bits PHYSICS_PULLEY_JOINT_T = (bits(1) << PHYSICS_PULLEY_JOINT_ID) | PHYSICS_JOINT_T;
|
|
const bits PHYSICS_GEAR_JOINT_T = (bits(1) << PHYSICS_GEAR_JOINT_ID) | PHYSICS_JOINT_T;
|
|
|
|
// Modules.
|
|
const bits MODULE_FILESYSTEM_T = (bits(1) << MODULE_FILESYSTEM_ID) | MODULE_T;
|
|
const bits MODULE_IMAGE_T = (bits(1) << MODULE_IMAGE_ID) | MODULE_T;
|
|
const bits MODULE_SOUND_T = (bits(1) << MODULE_SOUND_ID) | MODULE_T;
|
|
|
|
bool getType(const char * in, Type & out);
|
|
bool getType(Type in, const char *& out);
|
|
|
|
} // love
|
|
|
|
#endif // LOVE_TYPES_H
|