[Orxonox-commit 7004] r11623 - in code/branches/SOBv2_HS17: data/levels src/modules/superorxobros

varxth at orxonox.net varxth at orxonox.net
Mon Dec 4 14:34:08 CET 2017


Author: varxth
Date: 2017-12-04 14:34:08 +0100 (Mon, 04 Dec 2017)
New Revision: 11623

Added:
   code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.cc
   code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.h
Modified:
   code/branches/SOBv2_HS17/data/levels/SOB.oxw
   code/branches/SOBv2_HS17/src/modules/superorxobros/CMakeLists.txt
   code/branches/SOBv2_HS17/src/modules/superorxobros/SOBPrereqs.h
Log:
SOBGumbaBoss

Modified: code/branches/SOBv2_HS17/data/levels/SOB.oxw
===================================================================
--- code/branches/SOBv2_HS17/data/levels/SOB.oxw	2017-12-04 13:01:31 UTC (rev 11622)
+++ code/branches/SOBv2_HS17/data/levels/SOB.oxw	2017-12-04 13:34:08 UTC (rev 11623)
@@ -116,7 +116,7 @@
 
 
 
-					<SOBGumba collisionType="dynamic" speed=40 position = "240,0,0">
+					<SOBGumbaBoss collisionType="dynamic" speed=40 position = "240,0,0">
 						<attached>
 							<Model mesh="Goomba.mesh" position="0,0,1" scale=3 pitch=90/> 
 							
@@ -124,7 +124,7 @@
 						<collisionShapes>
 							<BoxCollisionShape position="0,0,0" halfExtents="5,5,3" /> 			
 						</collisionShapes>
-					</SOBGumba>
+					</SOBGumbaBoss>
 
 					<SOBGumba collisionType="dynamic" speed=30 position = "420,0,0">
 						<attached>

Modified: code/branches/SOBv2_HS17/src/modules/superorxobros/CMakeLists.txt
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/CMakeLists.txt	2017-12-04 13:01:31 UTC (rev 11622)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/CMakeLists.txt	2017-12-04 13:34:08 UTC (rev 11623)
@@ -12,6 +12,7 @@
   SOBFlagstone.cc
   SOBCastlestone.cc
   SOBCoin.cc
+  SOBGumbaBoss.cc
 
 )
 

Added: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.cc
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.cc	                        (rev 0)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.cc	2017-12-04 13:34:08 UTC (rev 11623)
@@ -0,0 +1,137 @@
+/*
+ *   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:
+ *      Noah Zarro
+ *      Theo von Arx
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBGumbaBoss.cc
+    @brief All items in this minigame inherit from this class. Items can move around like platforms and enemies.
+*/
+
+#include "SOB.h"
+#include "SOBGumba.h"
+#include "SOBGumbaBoss.h"
+#include "SOBFireball.h"
+#include "SOBFigure.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Output.h"
+#include <BulletCollision/NarrowPhaseCollision/btManifoldPoint.h>
+
+
+
+namespace orxonox
+{
+    RegisterClass(SOBGumbaBoss);
+
+    SOBGumbaBoss::SOBGumbaBoss(Context* context) : SOBGumba(context)
+    {
+        RegisterObject(SOBGumbaBoss);
+
+        gumbaMaxTime_ = 10;
+        gumbaTime_ = 0;
+        
+    }
+
+
+
+    
+    bool SOBGumbaBoss::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
+
+        //Every object with mass -1 does not change the direction of the GumbaBoss. For example the ground floor! The other objects switch the direction of the GumbaBoss.
+        if (changeAllowed_ && otherObject->getMass() != -1) {
+            goesRight_ = !goesRight_;
+            changeAllowed_ = false;
+        }
+
+        return true;
+    }
+
+
+
+
+    void SOBGumbaBoss::tick(float dt)
+    {
+        SUPER(SOBGumbaBoss, tick, dt);
+
+        if (!changeAllowed_) {
+            changedOn_+= dt;
+            // After a collision, we don't listen for collisions for 200ms - that's because one wall can cause several collisions!
+            if (changedOn_> 0.200) {
+                changeAllowed_ = true;
+                changedOn_ = 0.0;
+
+            }
+        }
+    
+        gumbaTime_ += dt;
+        orxout() << "gumbaTime_ = " << gumbaTime_ << endl;
+
+        if(gumbaTime_ > gumbaMaxTime_){
+            spawnFireball();
+            orxout() << "shoot" << endl;
+            gumbaTime_ = 0;
+        }
+
+        int dir = 1;
+        if (!goesRight_)
+            dir = -1;
+
+        Vector3 velocity = getVelocity();
+        velocity.z -= gravityAcceleration_*dt;
+        velocity.x = dir*speed_;
+        setVelocity(velocity);
+
+        lastPos_ = getPosition();
+
+    }
+    void SOBGumbaBoss::spawnFireball() {
+        SOBCenterpoint* center_ = ((SOB*)getGametype())->center_;
+
+         SOBFireball* ball = new SOBFireball(center_->getContext());
+         Vector3 spawnpos = this->getWorldPosition();
+         spawnpos.z += 0;
+
+        if (ball != nullptr && center_ != nullptr)
+        {
+            ball->addTemplate("fireball");
+            bool direction = ((this->getWorldOrientation().getRoll().valueRadians())>-1.6&&(this->getWorldOrientation().getRoll().valueRadians()<1.6));
+            ball->setDirection(direction);
+            if(direction)
+            {
+                spawnpos.x+=10;
+            }
+            else
+            {
+                spawnpos.x-=10;
+            }
+            ball->setPosition(spawnpos);
+
+        }
+     }
+}

Added: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.h
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.h	                        (rev 0)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBGumbaBoss.h	2017-12-04 13:34:08 UTC (rev 11623)
@@ -0,0 +1,62 @@
+/*
+ *   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:
+ *      Noah Zarro
+ *      Theo von Arx
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBGumbaBoss.h
+    @brief Declaration of the SOBGumbaBoss class. GumbaBosss are the enemie mushrooms - pretty sure it's written Goomba but, naaah
+    @ingroup SOB
+*/
+
+#ifndef _SOBGumbaBoss_H__
+#define _SOBGumbaBoss_H__
+
+#include "superorxobros/SOBPrereqs.h"
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+    class _SOBExport SOBGumbaBoss : public SOBGumba
+    {
+        public:
+            SOBGumbaBoss(Context* context);
+            virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+            virtual void tick(float dt) override;
+
+            void spawnFireball();
+
+
+        protected:
+            float gumbaTime_;
+            float gumbaMaxTime_;
+           
+    };
+}
+
+#endif /* _SOBGumbaBoss_H__ */

Modified: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBPrereqs.h
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBPrereqs.h	2017-12-04 13:01:31 UTC (rev 11622)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBPrereqs.h	2017-12-04 13:34:08 UTC (rev 11623)
@@ -75,6 +75,7 @@
     class SOBMushroom;
     class SOBHUDInfo;
     class SOBGumba;
+    class SOBGumbaBoss;
     class SOBFlagstone;
     class SOBCastlestone;
     class SOBCoin;



More information about the Orxonox-commit mailing list