Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/minigame4DHS14/src/modules/mini4Dgame/Mini4DgameCenterpoint.h @ 10126

Last change on this file since 10126 was 10121, checked in by richtero, 11 years ago

finished getWinner function which checks if somebody has won and started on the AI.

File size: 6.4 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file Mini4DgameCenterpoint.h
31    @brief Declaration of the Mini4DgameCenterpoint class.
32*/
33
34#ifndef _Mini4DgameCenterpoint_H__
35#define _Mini4DgameCenterpoint_H__
36
37#include <string>
38
39#include <util/Math.h>
40
41#include "worldentities/StaticEntity.h"
42#include "mini4Dgame/Mini4DgamePrereqs.h"
43#include "mini4Dgame/Mini4Dgame.h"
44
45namespace orxonox
46{
47   
48    /**
49    @brief
50        The Mini4DgameCenterpoint implements the playing field @ref orxonox::Mini4Dgame "Mini4Dgame" takes place in and allows for many parameters of the minigame to be set.
51       
52        Various parameters can be set:
53        - The <b>dimension</b> is a vector, that defines the width and height of the playing field. The default is <em>(200, 120)</em>.
54        - The <b>balltemplate</b> is a template that is applied to the @ref orxonox::PongBall "PongBall", it can be used to attach different things to it, e.g. its @ref orxonox::Model "Model". See below for a usage example.
55        - The <b>battemplate</b> is a template that is applied to the @ref orxonox::PongBall "PongBat", it can be used to attach different things to it, e.g. its @ref orxonox::Model "Model". See below for a usage example.
56        - The <b>ballspeed</b> is the speed with which the @ref orxonox::PongBall "PongBall" moves. The default is <em>100</em>.
57        - The <b>ballaccfactor</b> is the acceleration factor for the @ref orxonox::PongBall "PongBall". The default is <em>1.0</em>.
58        - The <b>batspeed</b> is the speed with which the @ref orxonox::PongBat "PongBats" move. The default is <em>60</em>.
59        - The <b>batlength</b> is the length of the @ref orxonox::PongBat "PongBats" as the percentage of the height of the playing field. The default is <em>0.25</em>.
60    */
61    class _Mini4DgameExport Mini4DgameCenterpoint : public StaticEntity
62    {
63        public:
64            Mini4DgameCenterpoint(Context* context); //!< Constructor. Registers and initializes the object and checks whether the gametype is actually Mini4Dgame.
65            virtual ~Mini4DgameCenterpoint() {}
66
67            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method to create a Mini4DgameCenterpoint through XML.
68
69            virtual void changedGametype(); //!< Is called when the gametype has changed.
70
71            /**
72            @brief Set the template for the ball. (e.g. to attach the model of the ball, but also to attach an EventListener to it to detect, when it hits the boundaries, and e.g. display some ParticleEffets, when it does.)
73            @param balltemplate The name of the template to be set.
74
75            void setBalltemplate(const std::string& balltemplate)
76                { this->balltemplate_ = balltemplate; }
77            */
78
79            /**
80            @brief Get the template of the ball.
81            @return Returns the name of the template of the ball.
82
83            const std::string& getBalltemplate() const
84                { return this->balltemplate_; }
85            */
86
87            /**
88            @brief Set the template for the bats. (e.g. to attach the model of the bat, but also to attach CameraPositions to it, to be able to view the game from the bats perspective)
89            @param battemplate The name of the template to be set.
90
91            void setBattemplate(const std::string& battemplate)
92                { this->battemplate_ = battemplate; }
93            */
94
95            /**
96            @brief Set the dimensions of the playing field.
97            @param dimension A vector with the width of the playing field as first component, the height as second and the length as third.
98            */
99            void setFieldDimension(const Vector3& dimension)
100                { this->width_ = dimension.x; this->height_ = dimension.y; this->length_ = dimension.z;}
101            /**
102            @brief Get the dimensions of the playing field.
103            @return Returns a vector with the width of the playing field as first component, the height as second and the length as third.
104            */
105            Vector3 getFieldDimension() const
106                { return Vector3(this->width_, this->height_, this->length_); }
107
108            /**
109                    @brief checks if the move is valid
110                    @param the position where to put the stone plus the player who makes the move
111            */
112            bool isValidMove(const Vector4 move);
113
114            /**
115               @brief makes a move on the logic playboard
116                   @param the position where to put the stone plus the player who makes the move
117             */
118            void makeMove(const Vector4 move, const mini4DgamePlayerColor::color playerColor);
119
120            /**
121               @brief checks if somebody has won
122               @return the winner with the winning fields or a winner with winner.color_ == mini4DgamePlayerColor::none if nobody has won so far.
123            */
124            Mini4DgameWinner Mini4DgameCenterpoint::getWinner();
125
126        private:
127            void checkGametype(); //!< Checks whether the gametype is Mini4Dgame and if it is, sets its centerpoint.
128
129            //std::string balltemplate_; //!< The template for the ball.
130            //std::string battemplate_; //!< The template for the bats.
131
132            float width_; //!< The height of the playing field.
133            float height_; //!< The width of the playing field.
134            float length_; //!< The length of the playing field.
135            mini4DgamePlayerColor::color board[4][4][4][4]; //!< The logical board where the game takes place. board[row][column][height][number]
136    };
137}
138
139#endif /* _Mini4DgameCenterpoint_H__ */
Note: See TracBrowser for help on using the repository browser.