Show State.h syntax highlighted
/**
**************************************************************************************
*Palisma - Secrets of the Illuminati is an open-source 2D RPG *
*Copyright (C) 2006, Tony Sparks *
* *
*This library is free software; you can redistribute it and/or *
*modify it under the terms of the GNU Lesser General Public *
*License as published by the Free Software Foundation; either *
*version 2.1 of the License, or (at your option) any later version. *
* *
*This library 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 *
*Lesser General Public License for more details. *
* *
*You should have received a copy of the GNU Lesser General Public *
*License along with this library; if not, write to the Free Software *
*Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
**************************************************************************************
*/
#pragma once
#include "../sound/SoundSource.h"
#include <iostream>
class IEntity;
// Common states
enum {
WALKING, // 0
ATTACKING1, // 1
ATTACKING2, // 2
ATTACKING3, // 3
IDLE, // 4
RUNNING, // 5
GRABBING, // 6
THROWING, // 7
THROWN, // 8
DYING, // 9
HIT, // 10
DEAD, // 11
TALKING, // 12
CARRYING, // 13
CARRIED, // 14
CARRYING_WALKING, // 15
/*-------------------------------
Weapon States
--------------------------------*/
WP_READY, // 16
WP_FIRING, // 17
WP_RELOADING, // 18
DEFAULT // ~
};
// States
const std::string ENT_STATES[] = { "WALKING", // 0
"ATTACKING1", // 1
"ATTACKING2", // 2
"ATTACKING3", // 3
"IDLE", // 4
"RUNNING", // 5
"GRABBING", // 6
"THROWING", // 7
"THROWN", // 8
"DYING", // 9
"HIT", // 10
"DEAD", // 11
"TALKING", // 12
"CARRYING", // 13
"CARRIED" , // 14
"CARRYING_WALKING", // 15
/*-------------------------------
Weapon States
--------------------------------*/
"WP_READY", // 16
"WP_FIRING", // 17
"WP_RELOADING", // 18
"" // ~
};
// common directions
enum {
NORTH = 0, // = (1 << 0),
EAST = 1, // = (1 << 1),
SOUTH = 2, // = (1 << 2),
WEST = 3 // = (1 << 3)
};
/**
=============
State in which an entity can be in
=============
*/
class State
{
public:
State():m_sound(NULL), m_scriptFile(""), m_nextUpdate(0.0f) {};
virtual void Enter(IEntity* p);
virtual void Exec(IEntity* p){};
virtual void Exit(IEntity* p){};
virtual std::string GetStateType() { return ENT_STATES[DEFAULT]; };
virtual ~State(){};
// sound to play
SoundSource* m_sound;
std::string m_scriptFile;
// duration of the state
float m_nextUpdate;
};
See more files for this project here