Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.cc @ 2911

Last change on this file since 2911 was 2911, checked in by landauf, 15 years ago

Merged r1-2096 of questsystem5 back to trunk

I hope there weren't more "hidden merge changes" in r2909 than the one in OverlayGroup (removeElement) (and related to this the adjustments in NotificationQueue).

The corresponding media commit seems not yet to be done, but it doesn't break the build.

  • Property svn:eol-style set to native
  • Property svn:mergeinfo set to (toggle deleted branches)
    /code/branches/gui/src/orxonox/objects/weaponSystem/WeaponSystem.ccmergedeligible
    /code/branches/lodfinal/src/orxonox/objects/weaponSystem/WeaponSystem.ccmergedeligible
    /code/branches/questsystem5/src/orxonox/objects/weaponSystem/WeaponSystem.ccmergedeligible
    /code/branches/weaponsystem/src/orxonox/objects/weaponSystem/WeaponSystem.ccmergedeligible
    /code/branches/buildsystem2/src/orxonox/objects/weaponSystem/WeaponSystem.cc2506-2658
    /code/branches/buildsystem3/src/orxonox/objects/weaponSystem/WeaponSystem.cc2662-2708
    /code/branches/ceguilua/src/orxonox/objects/WeaponSystem.cc1802-1808
    /code/branches/core3/src/orxonox/objects/WeaponSystem.cc1572-1739
    /code/branches/gcc43/src/orxonox/objects/WeaponSystem.cc1580
    /code/branches/gui/src/orxonox/objects/WeaponSystem.cc1635-1723
    /code/branches/input/src/orxonox/objects/WeaponSystem.cc1629-1636
    /code/branches/miniprojects/src/orxonox/objects/weaponSystem/WeaponSystem.cc2754-2824
    /code/branches/network/src/orxonox/objects/weaponSystem/WeaponSystem.cc2356
    /code/branches/network64/src/orxonox/objects/weaponSystem/WeaponSystem.cc2210-2355
    /code/branches/objecthierarchy/src/orxonox/objects/WeaponSystem.cc1911-2085,​2100
    /code/branches/objecthierarchy2/src/orxonox/objects/weaponSystem/WeaponSystem.cc2171-2479
    /code/branches/overlay/src/orxonox/objects/weaponSystem/WeaponSystem.cc2117-2385
    /code/branches/physics/src/orxonox/objects/weaponSystem/WeaponSystem.cc2107-2439
    /code/branches/physics_merge/src/orxonox/objects/weaponSystem/WeaponSystem.cc2436-2457
    /code/branches/pickups/src/orxonox/objects/WeaponSystem.cc1926-2086
    /code/branches/pickups2/src/orxonox/objects/weaponSystem/WeaponSystem.cc2107-2497
    /code/branches/presentation/src/orxonox/objects/weaponSystem/WeaponSystem.cc2369-2652,​2654-2660
    /code/branches/questsystem/src/orxonox/objects/WeaponSystem.cc1894-2088
    /code/branches/questsystem2/src/orxonox/objects/weaponSystem/WeaponSystem.cc2107-2259
    /code/branches/script_trigger/src/orxonox/objects/WeaponSystem.cc1295-1953,​1955
    /code/branches/weapon/src/orxonox/objects/WeaponSystem.cc1925-2047
    /code/branches/weapon2/src/orxonox/objects/weaponSystem/WeaponSystem.cc2107-2488
File size: 3.9 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 *      Martin Polak
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29#include "OrxonoxStableHeaders.h"
30
31#include <vector>
32
33#include "core/CoreIncludes.h"
34#include "core/XMLPort.h"
35#include "util/Debug.h"
36
37#include "WeaponSystem.h"
38
39
40/* WeaponSystem
41 *
42 *  www.orxonox.net/wiki/WeaponSystem
43 */
44
45namespace orxonox
46{
47    CreateFactory(WeaponSystem);
48
49    WeaponSystem::WeaponSystem(BaseObject* creator) : BaseObject(creator)
50    {
51        RegisterObject(WeaponSystem);
52
53        this->parentPawn_ = 0;
54    }
55
56    WeaponSystem::~WeaponSystem()
57    {
58    }
59
60    void WeaponSystem::attachWeaponPack(WeaponPack *wPack, unsigned int firemode)
61    {
62        if (firemode < this->weaponSets_.size())
63            this->weaponSets_[firemode]->attachWeaponPack(wPack);
64        this->weaponPacks_.push_back(wPack);
65    }
66
67    void WeaponSystem::attachWeaponSlot(WeaponSlot *wSlot)
68    {
69        wSlot->setParentWeaponSystem(this);
70        this->weaponSlots_.push_back(wSlot);
71    }
72
73    void WeaponSystem::attachWeaponSet(WeaponSet *wSet)
74    {
75        wSet->setParentWeaponSystem(this);
76        this->weaponSets_.push_back(wSet);
77    }
78
79    void WeaponSystem::setNewMunition(std::string munitionType, Munition * munitionToAdd)
80    {
81        this->munitionSet_[munitionType] = munitionToAdd;
82    }
83
84
85    //returns the Pointer to the munitionType, if this munitionType doesn't exist returns 0, see Weapon::attachNeededMunition
86    Munition * WeaponSystem::getMunitionType(std::string munitionType)
87    {
88        std::map<std::string, Munition *>::const_iterator it = this->munitionSet_.find(munitionType);
89        if (it != this->munitionSet_.end())
90            return it->second;
91        else
92            return 0;
93    }
94
95
96    //n is the n'th weaponSet, starting with zero
97    //SpaceShip.cc only needs to have the keybinding to a specific Set-number n (=firemode)
98    //in future this could be well defined and not only for 3 different WeaponModes
99    void WeaponSystem::fire(WeaponMode::Enum n)
100    {
101        int set = 0;
102        switch (n)
103        {
104            case WeaponMode::fire:
105                set = 0;
106                break;
107            case WeaponMode::altFire:
108                set = 1;
109                break;
110            case WeaponMode::altFire2:
111                set = 2;
112                break;
113        }
114        if (set < (int)this->weaponSets_.size())
115            this->weaponSets_[set]->fire();
116    }
117
118
119    WeaponSet * WeaponSystem::getWeaponSetPointer(unsigned int n)
120    {
121        if (n < this->weaponSets_.size())
122            return this->weaponSets_[n];
123        else
124            return 0;
125    }
126
127    WeaponSlot * WeaponSystem::getWeaponSlotPointer(unsigned int n)
128    {
129        if (n < this->weaponSlots_.size())
130            return this->weaponSlots_[n];
131        else
132            return 0;
133    }
134
135    WeaponPack * WeaponSystem::getWeaponPackPointer(unsigned int n)
136    {
137        if (n < this->weaponPacks_.size())
138            return this->weaponPacks_[n];
139        else
140            return 0;
141    }
142
143    void WeaponSystem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
144    {
145        SUPER(WeaponSystem, XMLPort, xmlelement, mode);
146    }
147
148}
Note: See TracBrowser for help on using the repository browser.