4
Copyright (C) 2005-2010 Julien Jorge, Sebastien Angibaud
6
This program is free software; you can redistribute it and/or modify it
7
under the terms of the GNU General Public License as published by the
8
Free Software Foundation; either version 2 of the License, or (at your
9
option) any later version.
11
This program is distributed in the hope that it will be useful, but WITHOUT
12
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16
You should have received a copy of the GNU General Public License along
17
with this program; if not, write to the Free Software Foundation, Inc.,
18
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
contact: plee-the-bear@gamned.org
22
Please add the tag [PTB] in the subject of your mails.
26
* \brief The class describing a frog.
27
* \author S�bastien Angibaud
29
#ifndef __PTB_FROG_HPP__
30
#define __PTB_FROG_HPP__
32
#include "engine/model.hpp"
33
#include "engine/base_item.hpp"
35
#include "engine/export.hpp"
40
* \brief The class describing a frog.
42
* The valid fields for this item are
43
* - any field supported by the parent classes.
45
* \author S�bastien Angibaud
48
public bear::engine::model<bear::engine::base_item>
50
DECLARE_BASE_ITEM(frog);
53
/** \brief The type of the parent class. */
54
typedef bear::engine::model<bear::engine::base_item> super;
57
typedef void (frog::*progress_function_type)(bear::universe::time_type);
65
void progress( bear::universe::time_type elapsed_time );
66
bool set_real_field( const std::string& name, double value );
69
void execute_function( const std::string& name );
71
( bear::engine::base_item& that, bear::universe::collision_info& info );
74
void progress_idle( bear::universe::time_type elapsed_time );
75
void progress_jump( bear::universe::time_type elapsed_time );
76
void progress_fall( bear::universe::time_type elapsed_time );
77
void progress_explose( bear::universe::time_type elapsed_time );
85
void choose_idle_action();
87
bool scan_no_wall_in_direction
88
( const bear::universe::position_type& origin,
89
const bear::universe::vector_type& dir ) const;
92
bool test_bottom_contact();
95
bool can_jump() const;
96
void create_floating_score() const;
99
/** \brief Current progress function. */
100
progress_function_type m_progress;
102
/** \brief Initial position. */
103
bear::universe::position_type m_initial_position;
105
/** \brief The maximum distance of the initial position. */
106
bear::universe::coordinate_type m_max_distance;
108
/** \brief The last index of player on the frog. */
109
unsigned int m_last_player_index;
113
#endif // __PTB_FROG_HPP__