/* Blinker
Copyright 2011-2019 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project */
#ifndef BLINKER_GAME_H
#define BLINKER_GAME_H
#include <map>
#include <set>
#include <string>
#include <vector>
#include <BlinkenLib/BlinkenFrame.h>
#include "Color.h"
#include "ColorFile.h"
#include "File.h"
#include "Format.h"
#include "FormatFile.h"
#include "LockNameFile.h"
#include "Mgrs.h"
#include "Module.h"
#include "NameFile.h"
#include "OpConn.h"
#include "OutStreamFile.h"
#include "Time.h"
#include "TimeCallee.h"
#include "UIntFile.h"
namespace Blinker {
/// base class for games
class Game: public Module, public TimeCallee
{
protected:
/// raw color data matching image buffer
typedef std::vector<unsigned char> ColorData;
/// descriptor of value (e.g. a setting for the game)
struct ValueDescr {
unsigned int default_;
unsigned int minimum;
unsigned int maximum;
};
private:
/// set of operator connections
typedef std::set<OpConn *> OpConnSet;
/// sound (via sound name file) to play on operator connections