Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/invaders/src/modules/invader/Invader.cc @ 9777

Last change on this file since 9777 was 9777, checked in by zifloria, 11 years ago

enemies

File size: 3.1 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 *      Florian Zinggeler
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file Invader.cc
31    @brief Implementation of the Invader class.
32*/
33
34#include "Invader.h"
35
36#include "core/CoreIncludes.h"
37#include "core/EventIncludes.h"
38#include "core/command/Executor.h"
39#include "core/config/ConfigValueIncludes.h"
40
41#include "gamestates/GSLevel.h"
42#include "chat/ChatManager.h"
43
44// ! HACK
45#include "infos/PlayerInfo.h"
46
47#include "InvaderCenterPoint.h"
48#include "InvaderShip.h"
49
50#include "core/command/ConsoleCommand.h"
51
52namespace orxonox
53{
54    RegisterUnloadableClass(Invader);
55
56    Invader::Invader(Context* context) : Deathmatch(context)
57    {
58        RegisterObject(Invader);
59        this->center_ = 0;
60
61        this->console_addEnemy = createConsoleCommand( "spawnEnemy", createExecutor( createFunctor(&Invader::spawnEnemy, this) ) );
62        //this->context = context;
63
64        enemySpawnTimer.setTimer(2.0f, true, createExecutor(createFunctor(&Invader::spawnEnemy, this)));
65    }
66
67    Invader::~Invader()
68    {
69    }
70
71    void Invader::spawnEnemy()
72    {
73        if (player == NULL)
74        {
75            for (ObjectList<InvaderShip>::iterator it = ObjectList<InvaderShip>::begin(); it != ObjectList<InvaderShip>::end(); ++it)
76                player = *it;
77        }
78        if (player == NULL)
79            return;
80
81        Pawn* newPawn = new Pawn(this->center_->getContext());
82        newPawn->addTemplate("enemyinvader");
83
84        newPawn->setPosition(player->getPosition() + Vector3(1000, 0, 0));
85    }
86
87    // inject custom player controller
88 /**   void Invader::spawnPlayer(PlayerInfo* player)
89    {
90        assert(player);
91
92        //player->startControl(new InvaderShip(this->center_->getContext() ) );
93    }*/
94
95    void Invader::start()
96    {
97        // Set variable to temporarily force the player to spawn.
98        this->bForceSpawn_ = true;
99
100        if (this->center_ == NULL)  // abandon mission!
101        {
102            orxout(internal_error) << "Invader: No Centerpoint specified." << endl;
103            GSLevel::startMainMenu();
104            return;
105        }
106        // Call start for the parent class.
107        Deathmatch::start();
108    }
109
110    void Invader::end()
111    {
112        // Call end for the parent class.
113        Deathmatch::end();
114    }
115}
Note: See TracBrowser for help on using the repository browser.