[Orxonox-commit 7245] r11859 - code/branches/3DPacman_FS18/src/modules/Pacman
dreherm at orxonox.net
dreherm at orxonox.net
Thu Apr 12 16:12:25 CEST 2018
Author: dreherm
Date: 2018-04-12 16:12:25 +0200 (Thu, 12 Apr 2018)
New Revision: 11859
Added:
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.cc
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.h
Removed:
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.cc
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.h
Modified:
code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.cc
code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.h
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.cc
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.h
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.cc
code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.h
Log:
Moving ghosts
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.cc 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.cc 2018-04-12 14:12:25 UTC (rev 11859)
@@ -33,6 +33,9 @@
#include "3DPacman.h"
#include "core/CoreIncludes.h"
+#include "PacmanGelb.h"
+#include "PacmanGhost.h"
+#include "PacmanPointSphere.h"
namespace orxonox
{
@@ -42,101 +45,81 @@
{
RegisterObject(3DPacman);
- bEndGame = false;
- lives = 1;
+ lives = 3;
+ point = 0:
level = 1;
- point = 0;
- bShowLevel = false;
- multiplier = 1;
- b_combo = false;
- counter = 5000;
- pattern = 1;
- lastPosition = 0;
- // spawn enemy every 3.5 seconds
- //enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&DodgeRace::spawnEnemy, this)));
- comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&DodgeRace::comboControll, this)));
- this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
- this->center_ = nullptr;
- this->setHUDTemplate("DodgeRaceHUD");
}
- void DodgeRace::levelUp()
+ void 3DPacman::levelUp()
{
- level++;
- if (getPlayer() != nullptr)
- {
- for (int i = 0; i < 7; i++)
- {
- WeakPtr<ExplosionPart> chunk5 = new ExplosionPart(this->center_->getContext());
- chunk5->setPosition(Vector3(600, 0, 100.f * i - 300));
- chunk5->setVelocity(Vector3(1000, 0, 0)); //player->getVelocity()
- chunk5->setScale(10);
- chunk5->setEffect1("Orxonox/explosion2b");
- chunk5->setEffect2("Orxonox/smoke6");
- chunk5->Explode();
+ this->end();
+ }
- }
+
+ PacmanGhost[4] ghosts;
+ PacmanPointSphere[1] spheres;
+
+
+ void 3DPacman::tick(float dt)
+ {
+ int i = 0;
+ for(PacmanGhost* nextghost : ObjectList<PacmanGhost>()){
+ ghosts[i] = nextghost;
+ i++;
}
- addPoints(multiplier * 42);
- multiplier *= 2;
- toggleShowLevel();
- showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&DodgeRace::toggleShowLevel, this)));
- }
- void DodgeRace::tick(float dt)
- {
- DodgeRaceShip* player = this->getPlayer();
+ i = 0:
+ for(PacmanPointSphere* nextsphere : ObjectList<PacmanPointSphere>()){
+ spheres[i] = nextsphere;
+ i++;
+ }
+
+ player = this->getPlayer();
if (player != nullptr)
{
- currentPosition = player->getWorldPosition().x;
- counter = counter + (currentPosition - lastPosition);
- lastPosition = currentPosition;
- point = (int) currentPosition;
- player->speed = 830.0f - (point / 1000);
+ currentPosition = player->getWorldPosition();
+ }
- for(unsigned int i=0; i < cubeList.size();i++)
- {
- if(cubeList.at(i)->getPosition().x < currentPosition-3000)
- {
- cubeList.at(i)->destroy();
- cubeList.erase(cubeList.begin()+i);
- }
- }
+ bool bcolli = false;
+ for(int nrghost = 0, (nrghost<3) && (!bcolli), ++nrghost){
+ bcolli = collis(ghosts[nrghost]->getPosition(), currentPosition)
+ }
+ if(collis){
+ this->catched();
+ }
- if(counter >= 3000)
- {
- counter = 0;
- for(int i = 0; i<6; i++)
- {
- DodgeRaceCube* cube = new DodgeRaceCube(this->center_->getContext());
- cubeList.push_back(cube);
- switch(pattern)
- {
- case 1: cube->addTemplate("DodgeRaceCube01");
- break;
- case 2: cube->addTemplate("DodgeRaceCube02");
- break;
+ SUPER(3DPacman, tick, dt);
- }
+ }
- cube->setPosition(player->getWorldPosition() + Vector3(5000.0f, 0.0f, -3600.0f + (i*1200)));
- //stEntity->setScale3D(50,50,50);
- }
- pattern %= 2;
- pattern ++;
+ bool 3DPacman::collis(Vector3 one, Vector3 other){
+ if((abs(one.x-other.x)<0.1) && (abs(one.x-other.x)<0.1) && (abs(one.x-other.x)<0.1))
+ return true;
+ return false;
+ }
- }
+ void 3DPacman::catched(){
+ if(lives) this->end();
+ --lives;
+ this->posreset();
+ }
+ void 3DPacman::posreset(){
+ int i = 0;
+ for(PacmanGhost* nextghost : ObjectList<PacmanGhost>()){
+ ghosts[i] = nextghost;
+ i++;
}
- SUPER(DodgeRace, tick, dt);
+
}
- DodgeRaceShip* DodgeRace::getPlayer()
+
+ PacmanGelb* 3DPacman::getPlayer()
{
- for (DodgeRaceShip* ship : ObjectList<DodgeRaceShip>())
+ for (PacmanGelb* ship : ObjectList<PacmanGelb>())
{
return ship;
}
@@ -143,46 +126,15 @@
return nullptr;
}
- void DodgeRace::costLife()
- {
- //endGameTimer.setTimer(8.0f, false, createExecutor(createFunctor(&DodgeRace::end, this)));
- lives = 0;
- };
- void DodgeRace::comboControll()
+ void 3DPacman::start()
{
- if (b_combo)
- multiplier++;
- // if no combo was performed before, reset multiplier
- else
- multiplier = 1;
- b_combo = false;
- }
-
- void DodgeRace::start()
- {
orxout() << "start" << endl;
- for(unsigned int i=0; i< cubeList.size();i++)
- {
- cubeList.at(i)->destroy();
- cubeList.erase(cubeList.begin()+i);
-
- }
- cubeList.clear();
- // Set variable to temporarily force the player to spawn.
- this->bForceSpawn_ = false;
-
- if (this->center_ == nullptr) // abandon mission!
- {
- orxout(internal_error) << "DodgeRace: No Centerpoint specified." << endl;
- GSLevel::startMainMenu();
- return;
- }
- // Call start for the parent class.
+
Deathmatch::start();
}
- void DodgeRace::playerPreSpawn(PlayerInfo* player)
+ void 3DPacman::playerPreSpawn(PlayerInfo* player)
{
this->playerInfo_ = player;
if(lives <= 0)
@@ -189,32 +141,10 @@
{
this->end();
}
-
- // Reset all the cubes
- /*
- orxout() << "prespawn" << endl;
- for(int i=0; i< cubeList.size();i++)
- {
- cubeList.at(i)->destroy();
- cubeList.erase(cubeList.begin()+i);
- }
- cubeList.clear();
- lives = 1;
- point = 0;
- lastPosition = 0;
- */
}
- void DodgeRace::addPoints(int numPoints)
- {
- if (!bEndGame)
- {
- point += numPoints * multiplier;
- b_combo = true;
- }
- }
- void DodgeRace::end()
+ void 3DPacman::end()
{
// DON'T CALL THIS!
// Deathmatch::end();
@@ -223,7 +153,7 @@
if (Highscore::exists())
{
int score = this->getPoints();
- Highscore::getInstance().storeScore("Dodge Race", score, this->playerInfo_);
+ Highscore::getInstance().storeScore("3DPacman", score, this->playerInfo_);
}
GSLevel::startMainMenu();
}
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.h 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/3DPacman.h 2018-04-12 14:12:25 UTC (rev 11859)
@@ -41,6 +41,7 @@
//#include "DodgeRaceShip.h" DO NOT include in Header. Will cause forward declaration issues
//#include "DodgeRaceHUDinfo.h"
+#include "PacmanGelb.h"
#include "core/EventIncludes.h"
@@ -62,10 +63,10 @@
namespace orxonox
{
- class _DodgeRaceExport DodgeRace : public Deathmatch
+ class _3DPacmanExport 3DPacman : public Deathmatch
{
public:
- DodgeRace(Context* context);
+ 3DPacman(Context* context);
virtual void start() override;
virtual void end() override;
@@ -99,6 +100,12 @@
float lastPosition;
private:
+ PacmanGelb* player;
+ PacmanGhost[]
+ Vector3 currentPosition;
+
+
+
Timer endGameTimer;
DodgeRaceShip* getPlayer();
Added: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.cc (rev 0)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.cc 2018-04-12 14:12:25 UTC (rev 11859)
@@ -0,0 +1,65 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file DodgeRaceShip.cc
+ @brief Implementation of the DodgeRaceShip class.
+*/
+
+#include "PacmanGelb.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+ RegisterClass(PacmanGelb);
+
+ PacmanGelb::PacmanGelb(Context* context) : SpaceShip(context)
+ {
+ RegisterObject(PacmanGelb);
+ }
+
+ void PacmanGelb::tick(float dt)
+ {
+ //bring player back to ground
+ actuelposition = this->getPosition();
+ actuelposition.y = 0;
+ this->setPosition(actuelposition);
+
+ // Camera
+ Camera* camera = this->getCamera();
+ if (camera != nullptr)
+ {
+ actuelorient = camera->getOrientation();
+ actuelorient.y = 0;
+ camera->setOrientation(actuelorient);
+ }
+
+ SUPER(PacmanGelb, tick, dt);
+ }
+}
+
\ No newline at end of file
Property changes on: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.cc
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.h (rev 0)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.h 2018-04-12 14:12:25 UTC (rev 11859)
@@ -0,0 +1,60 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file DodgeRaceShip.h
+ @brief Declaration of the DodgeRaceShip class.
+*/
+
+#ifndef _PacmanGelb_H__
+#define _PacmanGelb_H__
+
+
+#include "dodgerace/DodgeRacePrereqs.h"
+
+#include "core/XMLPort.h"
+#include "worldentities/pawns/SpaceShip.h"
+#include "graphics/Camera.h"
+
+namespace orxonox
+{
+ class _PacmanGelbExport PacmanGelb : public SpaceShip
+ {
+ public:
+ PacmanGelb(Context* context);
+
+ virtual void tick(float dt);
+
+ private:
+ Vector3 actuelposition;
+ btQuaternion actuelorient;
+
+ }
+}
+
+#endif
\ No newline at end of file
Property changes on: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGelb.h
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.cc 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.cc 2018-04-12 14:12:25 UTC (rev 11859)
@@ -45,9 +45,6 @@
{
RegisterObject(PacmanGhost);
- this->localLinearAcceleration_.setValue(1, 1, 1);
- this->localAngularAcceleration_.setValue(1, 1, 1);
-
this->velocity = Vector3(0, 0, 0);
this->setCollisionType(CollisionType::Dynamic);
@@ -78,15 +75,12 @@
{
SUPER(PacmanGhost, XMLPort, xmlelement, mode);
- XMLPortParam(PacmanGhost, "primaryThrust", setPrimaryThrust, getPrimaryThrust, xmlelement, mode);
- XMLPortParam(PacmanGhost, "auxiliaryThrust", setAuxiliaryThrust, getAuxiliaryThrust, xmlelement, mode);
- XMLPortParam(PacmanGhost, "rotationThrust", setRotationThrust, getRotationThrust, xmlelement, mode);
XMLPortParam(PacmanGhost, "resetposition", setResetPosition, getResetPosition, xmlelement, mode);
}
- Vector3 possibleposition[] = {Vector3(0,10,245),Vector3(215,0,240)};
+ Vector3 possibleposition[] = {Vector3(0,10,245),Vector3(215,10,245),Vector3(215,10,220)};
/**
@brief
@@ -98,35 +92,23 @@
{
SUPER(PacmanGhost, tick, dt);
- this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() * getMass() * this->auxiliaryThrust_);
- this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() * getMass() * this->auxiliaryThrust_);
- if (this->localLinearAcceleration_.z() > 0)
- this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->auxiliaryThrust_);
- else
- this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->primaryThrust_);
- this->physicalBody_->applyCentralForce(physicalBody_->getWorldTransform().getBasis() * this->localLinearAcceleration_);
- this->localLinearAcceleration_.setValue(0, 0, 0);
+ //setorientation
- this->localAngularAcceleration_ *= this->getLocalInertia() * this->rotationThrust_;
- this->physicalBody_->applyTorque(physicalBody_->getWorldTransform().getBasis() * this->localAngularAcceleration_);
- this->localAngularAcceleration_.setValue(0, 0, 0);
-
-
this->actuelposition = this->getPosition();
//Stop, if target arrived
- if(((this->actuelposition.x - this->target_x)<0.1) && ((this->actuelposition.z - this->target_z)<0.1)){
+ if((abs(this->actuelposition.x - this->target_x)<0.1) && (abs(this->actuelposition.z - this->target_z)<0.1)){
this->ismoving = false;
}
//Move, if ghost hasn't arrived yet
if(this->ismoving){
- if(!((this->actuelposition.z-target_z)<0.1)) {
- velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),-sgn(this->actuelposition.y),-sgn(this->actuelposition.z-this->target_z));
+ if(!(abs(this->actuelposition.z-target_z)<0.1)) {
+ velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),0,-sgn(this->actuelposition.z-this->target_z));
move(dt, actuelposition, velocity);
}
- if(!((this->actuelposition.x-target_x)<0.1)){
- velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),-sgn(this->actuelposition.y),-sgn(this->actuelposition.z-this->target_z));
+ if(!(abs(this->actuelposition.x-target_x)<0.1)){
+ velocity = Vector3(-sgn(this->actuelposition.x-this->target_x),0,-sgn(this->actuelposition.z-this->target_z));
move(dt, actuelposition, velocity);
}
}
@@ -133,16 +115,42 @@
//Check on which position ghost has arrived and set new target
else{
- if(((this->actuelposition.x - possibleposition[0].x)<0.1) && ((this->actuelposition.z - possibleposition[0].z)<0.1)){
- this->target_x = possibleposition[1].x;
- this->target_z = possibleposition[1].z;
- this->ismoving = true;
+ if((abs(this->actuelposition.x - possibleposition[0].x)<0.1) && (abs(this->actuelposition.z - possibleposition[0].z)<0.1)){
+ decision = rand()%1;
+ switch(decision){
+ case 0:
+ this->target_x = possibleposition[1].x;
+ this->target_z = possibleposition[1].z;
+ this->ismoving = true;
}
- else if(((actuelposition.x - possibleposition[1].x)<0.1) && ((actuelposition.z - possibleposition[1].z)<0.1)){
- this->target_x = possibleposition[0].x;
- this->target_z = possibleposition[0].z;
- this->ismoving = true;
+
}
+ else if((abs(actuelposition.x - possibleposition[1].x)<0.1) && (abs(actuelposition.z - possibleposition[1].z)<0.1)){
+ decision = rand()%2;
+ switch(decision){
+ case 0:
+ this->target_x = possibleposition[0].x;
+ this->target_z = possibleposition[0].z;
+ this->ismoving = true;
+ break;
+ case 1:
+ this->target_x = possibleposition[2].x;
+ this->target_z = possibleposition[2].z;
+ this->ismoving = true;
+ }
+
+ }
+ if((abs(this->actuelposition.x - possibleposition[2].x)<0.1) && (abs(this->actuelposition.z - possibleposition[2].z)<0.1)){
+ decision = rand()%1;
+ switch(decision){
+ case 0:
+ this->target_x = possibleposition[1].x;
+ this->target_z = possibleposition[1].z;
+ this->ismoving = true;
+ }
+
+ }
+
else{
} //End of Position table
}
@@ -150,77 +158,11 @@
}
-
void PacmanGhost::move(float dt, Vector3 actuelposition, Vector3 velocity){
-
- this->setPosition(Vector3(actuelposition.x+velocity.x*dt,actuelposition.y+velocity.y*dt ,actuelposition.z+velocity.z*dt));
+ this->setPosition(Vector3(actuelposition.x+20*velocity.x*dt,10,actuelposition.z+20*velocity.z*dt));
}
-
- /**
- @brief
- Moves the AutonomousDrone in the negative z-direction (Front/Back) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveFrontBack(const Vector2& value)
- {
- //this->setPosition(dt*(actuelposition + velocity_));
+ void PacmanGhost::resetGhost(){
+ this->setPosition(resetposition);
}
-
- /**
- @brief
- Moves the AutonomousDrone in the x-direction (Right/Left) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveRightLeft(const Vector2& value)
- {
- this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() + value.x);
- }
-
- /**
- @brief
- Moves the AutonomousDrone in the y-direction (Up/Down) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveUpDown(const Vector2& value)
- {
- this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() + value.x);
- }
-
- /**
- @brief
- Rotates the AutonomousDrone around the y-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotateYaw(const Vector2& value)
- {
- this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() - value.x);
- }
-
- /**
- @brief
- Rotates the AutonomousDrone around the x-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotatePitch(const Vector2& value)
- {
- this->localAngularAcceleration_.setX(this->localAngularAcceleration_.x() + value.x);
- }
-
- /**
- @brief
- Rotates the AutonomousDrone around the z-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotateRoll(const Vector2& value)
- {
- this->localAngularAcceleration_.setZ(this->localAngularAcceleration_.z() + value.x);
- }
-
}
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.h 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhost.h 2018-04-12 14:12:25 UTC (rev 11859)
@@ -46,79 +46,12 @@
virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating an AutonomousDrone through XML.
virtual void tick(float dt); //!< Defines which actions the AutonomousDrone has to take in each tick.
- virtual void moveFrontBack(const Vector2& value);
- virtual void moveRightLeft(const Vector2& value);
- virtual void moveUpDown(const Vector2& value);
-
- virtual void rotateYaw(const Vector2& value);
- virtual void rotatePitch(const Vector2& value);
- virtual void rotateRoll(const Vector2& value);
-
void move(float dt, Vector3 actuelposition, Vector3 velocity);
- //virtual void resetGhost();
- /**
- @brief Moves the Drone in the Front/Back-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveFrontBack(float value)
- { this->moveFrontBack(Vector2(value, 0)); }
- /**
- @brief Moves the Drone in the Right/Left-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveRightLeft(float value)
- { this->moveRightLeft(Vector2(value, 0)); }
- /**
- @brief Moves the Drone in the Up/Down-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveUpDown(float value)
- { this->moveUpDown(Vector2(value, 0)); }
+ void resetGhost();
- /**
- @brief Rotates the Drone around the y-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotateYaw(float value)
- { this->rotateYaw(Vector2(value, 0)); }
- /**
- @brief Rotates the Drone around the x-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotatePitch(float value)
- { this->rotatePitch(Vector2(value, 0)); }
- /**
- @brief Rotates the Drone around the z-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotateRoll(float value)
- { this->rotateRoll(Vector2(value, 0)); }
-
- /**
- @brief Sets the primary thrust to the input amount.
- @param thrust The amount of thrust.
- */
- inline void setPrimaryThrust( float thrust )
- { this->primaryThrust_ = thrust; }
- inline void setAuxiliaryThrust( float thrust )
- { this->auxiliaryThrust_ = thrust; }
- inline void setRotationThrust( float thrust )
- { this->rotationThrust_ = thrust; }
-
inline void setResetPosition(Vector3 rpos)
{ this->resetposition = rpos; }
-
- /**
- @brief Gets the primary thrust to the input amount.
- @return The amount of thrust.
- */
- inline float getPrimaryThrust()
- { return this->primaryThrust_; }
- inline float getAuxiliaryThrust()
- { return this->auxiliaryThrust_; }
- inline float getRotationThrust()
- { return this->rotationThrust_; }
inline Vector3 getResetPosition()
{ return this->resetposition; }
@@ -126,17 +59,8 @@
private:
-
- btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the AutonomousDrone the next tick.
- btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the AutonomousDrone the next tick.
- float primaryThrust_=100; //!< The amount of primary thrust. This is just used, when moving forward.
- float auxiliaryThrust_=100; //!< The amount of auxilliary thrust. Used for all other movements (except for rotations).
- float rotationThrust_=100; //!< The amount of rotation thrust. Used for rotations only.s
- //Vector3 resetposition; //Start position for Ghost
-
- PacmanGhost* myGhost = nullptr;
-
bool ismoving = false;
+ int decision = 0; //Gives the random which way information to the ghost.
int target_x = 0;
int target_z = 0;
Vector3 actuelposition;
Deleted: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.cc 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.cc 2018-04-12 14:12:25 UTC (rev 11859)
@@ -1,122 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Oli Scheuss
- * Co-authors:
- * Damian 'Mozork' Frick
- *
- */
-
-#include "PacmanGhostController.h"
-
-#include "PacmanGhost.h"
-#include "util/Math.h"
-
-namespace orxonox
-{
- // Create the factory for the drone controller.
- RegisterClass(PacmanGhostController);
-
- /**
- @brief
- Constructor.
- @param context
- The context of this object.
- */
- PacmanGhostController::PacmanGhostController(Context* context) : Controller(context)
- {
- RegisterObject(PacmanGhostController);
-
- PacmanGhost* myGhost = nullptr;
- this->actuelposition = myGhost.getPosition();
-
- bool ismoving = false;
- this->target_x = actuelposition.x;
- this->target_z = actuelposition.z;
- }
-
- void PacmanGhostController::setGhost(PacmanGhost ghost){
- this->myGhost = ghost;
- }
-
- /**
- @brief
- Destructor.
- */
- PacmanGhostController::~PacmanGhostController()
- {
-
- }
-
-
- static Vector3[] possibleposition = [new Vector3(0,10,245), new Vector3(215,0,240)];
- /**
- @brief
- The controlling happens here. This method defines what the controller has to do each tick.
- @param dt
- The duration of the tick.
- */
- void PacmanGhostController::tick(float dt)
- {
- /* NOTE: Ugly hack by Sandro to make the tutorial work for the moment.
- * This will be reverted once the framework update is complete
- */
- //AutonomousDrone *myDrone = static_cast<AutonomousDrone*>(this->getControllableEntity());
- ObjectList<PacmanGhost> objectList;
- ObjectList<PacmanGhost>::iterator it = objectList.begin();
- PacmanGhost* myDrone = *it;
-
- if (this->myGhost != nullptr)
- {
-
- this->actuelposition = this->myGhost.getPosition();
-
- if(((this->actuelposition.x - this->target_x)<0.1) && ((this->actuelposition.z - this->target_z)<0.1)){
- this->ismoving = false;
- }
-
- if(this->ismoving){
- if(!((this->actuelposition.z-target_z)<0.1))
- moveFrontBack(sgn(this->actuelposition.z-this->target_z)*dt*100);
- if(!((this->actuelposition.x-target_x)<0.1))
- moveRightLeft(sgn(this->actuelposition.x-this->target_x)*dt*100); //Assume dt is quite small
- }
-
- else{ //Check on which position ghost is
- if(((this->actuelposition.x - possibleposition[0].x)<0.1) && ((this->actuelposition.z - possibleposition[1].z)<0.1)){
- this->target_x = possibleposition[1].x;
- this->target_z = possibleposition[1].z;
- this->ismoving = true;
- }
- else if(((actuelposition.x - possibleposition[0].x)<0.1) && ((actuelposition.z - possibleposition[1].z)<0.1)){
- this->target_x = 0
- this->target_z =
- this->ismoving = true;
- }
- else{
- }
- } //End of Position table
-
- }
- }
-
-}
Deleted: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.h 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanGhostController.h 2018-04-12 14:12:25 UTC (rev 11859)
@@ -1,54 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Oli Scheuss
- * Co-authors:
- * Damian 'Mozork' Frick
- *
- */
-
-#ifndef _PacmanGhostController_H__
-#define _PacmanGhostController_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include "Controller.h"
-#include "tools/interfaces/Tickable.h"
-
-namespace orxonox
-{
-
- class _OrxonoxExport PacmanGhostController : public Controller, public Tickable
- {
- public:
- PacmanGhostController(Context* context);
- virtual ~PacmanGhostController();
-
- virtual void tick(float dt);
-
- protected:
-
- private:
- };
-}
-
-#endif
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.cc 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.cc 2018-04-12 14:12:25 UTC (rev 11859)
@@ -26,7 +26,7 @@
*
*/
-#include "PacmanGhost.h"
+#include "PacmanPointSphere.h"
#include "core/CoreIncludes.h"
#include "BulletDynamics/Dynamics/btRigidBody.h"
@@ -33,7 +33,7 @@
namespace orxonox
{
- RegisterClass(PacmanGhost);
+ RegisterClass(PacmanPointSphere);
/**
@brief
@@ -41,19 +41,10 @@
@param creator
The creator of this object.
*/
- PacmanGhost::PacmanGhost(Context* context) : ControllableEntity(context)
+ PacmanPointSphere::PacmanPointSphere(Context* context) : ControllableEntity(context)
{
- RegisterObject(PacmanGhost);
-
- this->myController_ = NULL;
-
- this->localLinearAcceleration_.setValue(0, 0, 0);
- this->localAngularAcceleration_.setValue(0, 0, 0);
- this->primaryThrust_ = 100;
- this->auxiliaryThrust_ = 100;
- this->rotationThrust_ = 10;
-
- this->setCollisionType(CollisionType::Dynamic);
+ RegisterObject(PacmanPointSphere);
+ this->setCollisionType(CollisionType::none);
}
/**
@@ -60,11 +51,9 @@
@brief
Destructor. Destroys controller, if present.
*/
- PacmanGhost::~PacmanGhost()
+ PacmanPointSphere::~PacmanPointSphere()
{
// Deletes the controller if the object was initialized and the pointer to the controller is not NULL.
- if( this->isInitialized() && this->myController_ != NULL )
- delete this->myController_;
}
/**
@@ -71,107 +60,31 @@
@brief
Method for creating a AutonomousDrone through XML.
*/
- void PacmanGhost::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ void PacmanPointSphere::XMLPort(Element& xmlelement, XMLPort::Mode mode)
{
- // This calls the XMLPort function of the parent class
- SUPER(PacmanGhost, XMLPort, xmlelement, mode);
+ SUPER(PacmanPointSphere, XMLPort, xmlelement, mode);
- XMLPortParam(PacmanGhost, "primaryThrust", setPrimaryThrust, getPrimaryThrust, xmlelement, mode);
- // Make sure you add the variables auxiliaryThrust_ and rotationThrust_ to XMLPort.
- // Variables can be added by the following command
- // XMLPortParam(Classname, "xml-attribute-name (i.e. variablename)", setFunctionName, getFunctionName, xmlelement, mode);
- // Also make sure that you also create the get- and set-functions in AutonomousDrone.h. As you can see, the get- and set-functions for the variable primaryThrust_ has already been specified there, so you can get your inspiration from there.
+ XMLPortParam(PacmanPointSphere, "resetposition", setResetPosition, getResetPosition, xmlelement, mode);
}
- /**
- @brief
- Defines which actions the AutonomousDrone has to take in each tick.
- @param dt
- The length of the tick.
- */
- void PacmanGhost::tick(float dt)
+
+ void PacmanPointSphere::tick(float dt)
{
SUPER(PacmanGhost, tick, dt);
-
- this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() * getMass() * this->auxiliaryThrust_);
- this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() * getMass() * this->auxiliaryThrust_);
- if (this->localLinearAcceleration_.z() > 0)
- this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->auxiliaryThrust_);
- else
- this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() * getMass() * this->primaryThrust_);
- this->physicalBody_->applyCentralForce(physicalBody_->getWorldTransform().getBasis() * this->localLinearAcceleration_);
- this->localLinearAcceleration_.setValue(0, 0, 0);
-
- this->localAngularAcceleration_ *= this->getLocalInertia() * this->rotationThrust_;
- this->physicalBody_->applyTorque(physicalBody_->getWorldTransform().getBasis() * this->localAngularAcceleration_);
- this->localAngularAcceleration_.setValue(0, 0, 0);
-
}
- /**
- @brief
- Moves the AutonomousDrone in the negative z-direction (Front/Back) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveFrontBack(const Vector2& value)
+ bool PacmanPointSphere::taken(Vector3 playerpos)
{
- this->localLinearAcceleration_.setZ(this->localLinearAcceleration_.z() - value.x);
- }
+ if((abs(this->resetposition.x - playerpos.x)<0.1) && (abs(this->resetposition.z - playerpos.z)<0.1)){
+ this->setPosition(Vector3(resetposition.x, -50, resetposition.z));
+ return true;
+ }
- /**
- @brief
- Moves the AutonomousDrone in the x-direction (Right/Left) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveRightLeft(const Vector2& value)
- {
- this->localLinearAcceleration_.setX(this->localLinearAcceleration_.x() + value.x);
+ return false;
}
- /**
- @brief
- Moves the AutonomousDrone in the y-direction (Up/Down) by an amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the movement.
- */
- void PacmanGhost::moveUpDown(const Vector2& value)
- {
- this->localLinearAcceleration_.setY(this->localLinearAcceleration_.y() + value.x);
- }
- /**
- @brief
- Rotates the AutonomousDrone around the y-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotateYaw(const Vector2& value)
- {
- this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() - value.x);
+ void PacmanPointSphere::resetPacmanPointSphere(){
+ this->setPosition(resetposition);
}
-
- /**
- @brief
- Rotates the AutonomousDrone around the x-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotatePitch(const Vector2& value)
- {
- this->localAngularAcceleration_.setX(this->localAngularAcceleration_.x() + value.x);
- }
-
- /**
- @brief
- Rotates the AutonomousDrone around the z-axis by the amount specified by the first component of the input 2-dim vector.
- @param value
- The vector determining the amount of the angular movement.
- */
- void PacmanGhost::rotateRoll(const Vector2& value)
- {
- this->localAngularAcceleration_.setZ(this->localAngularAcceleration_.z() + value.x);
- }
-
}
Modified: code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.h 2018-04-12 14:10:00 UTC (rev 11858)
+++ code/branches/3DPacman_FS18/src/modules/Pacman/PacmanPointSphere.h 2018-04-12 14:12:25 UTC (rev 11859)
@@ -26,99 +26,38 @@
*
*/
-#ifndef _PacmanGhost_H__
-#define _PacmanGhost_H__
+#ifndef _PacmanPointSphere_H__
+#define _PacmanPointSphere_H__
#include "OrxonoxPrereqs.h"
#include "core/XMLPort.h"
-#include "controllers/PacmanGhostController.h"
-#include "ControllableEntity.h"
+#include "worldentities/ControllableEntity.h"
namespace orxonox {
- class _OrxonoxExport PacmanGhost : public ControllableEntity
+ class _OrxonoxExport PacmanPointSphere : public ControllableEntity
{
public:
- PacmanGhost(Context* context);
- virtual ~PacmanGhost();
+ PacmanPointSphere(Context* context);
+ virtual ~PacmanPointSphere();
virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating an AutonomousDrone through XML.
virtual void tick(float dt); //!< Defines which actions the AutonomousDrone has to take in each tick.
- virtual void moveFrontBack(const Vector2& value);
- virtual void moveRightLeft(const Vector2& value);
- virtual void moveUpDown(const Vector2& value);
+ bool taken(Vector3 playerpos);
+ void resetPacmanPointSphere();
- virtual void rotateYaw(const Vector2& value);
- virtual void rotatePitch(const Vector2& value);
- virtual void rotateRoll(const Vector2& value);
-
- /**
- @brief Moves the Drone in the Front/Back-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveFrontBack(float value)
- { this->moveFrontBack(Vector2(value, 0)); }
- /**
- @brief Moves the Drone in the Right/Left-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveRightLeft(float value)
- { this->moveRightLeft(Vector2(value, 0)); }
- /**
- @brief Moves the Drone in the Up/Down-direction by the specifed amount.
- @param value The amount by which the drone is to be moved.
- */
- inline void moveUpDown(float value)
- { this->moveUpDown(Vector2(value, 0)); }
-
- /**
- @brief Rotates the Drone around the y-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotateYaw(float value)
- { this->rotateYaw(Vector2(value, 0)); }
- /**
- @brief Rotates the Drone around the x-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotatePitch(float value)
- { this->rotatePitch(Vector2(value, 0)); }
- /**
- @brief Rotates the Drone around the z-axis by the specifed amount.
- @param value The amount by which the drone is to be rotated.
- */
- inline void rotateRoll(float value)
- { this->rotateRoll(Vector2(value, 0)); }
-
- /**
- @brief Sets the primary thrust to the input amount.
- @param thrust The amount of thrust.
- */
- inline void setPrimaryThrust( float thrust )
- { this->primaryThrust_ = thrust; }
- //TODO: Place your set-functions here.
- // Hint: auxiliary thrust, rotation thrust.
+ inline void setResetPosition(Vector3 rpos)
+ { this->resetposition = rpos; }
- /**
- @brief Gets the primary thrust to the input amount.
- @return The amount of thrust.
- */
- inline float getPrimaryThrust()
- { return this->primaryThrust_; }
- //TODO: Place your get-functions here.
+ inline Vector3 getResetPosition()
+ { return this->resetposition; }
private:
- PacmanGhostController *myController_; //!< The controller of the AutonomousDrone.
-
- btVector3 localLinearAcceleration_; //!< The linear acceleration that is used to move the AutonomousDrone the next tick.
- btVector3 localAngularAcceleration_; //!< The linear angular acceleration that is used to move the AutonomousDrone the next tick.
- float primaryThrust_; //!< The amount of primary thrust. This is just used, when moving forward.
- float auxiliaryThrust_; //!< The amount of auxiliary thrust. Used for all other movements (except for rotations).
- float rotationThrust_; //!< The amount of rotation thrust. Used for rotations only.s
-
+
+ Vector3 resetposition;
};
}
More information about the Orxonox-commit
mailing list