File: | src/modules/wagnis/WagnisHUDinfo.cc |
Location: | line 52, column 16 |
Description: | Access to field 'active_player' results in a dereference of a null pointer (loaded from field 'wagnisgame') |
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 | * Roman Kunz | |||||
24 | * | |||||
25 | */ | |||||
26 | ||||||
27 | #include "WagnisHUDinfo.h" | |||||
28 | ||||||
29 | #include "core/CoreIncludes.h" | |||||
30 | #include "core/XMLPort.h" | |||||
31 | #include "util/Convert.h" | |||||
32 | #include <string> | |||||
33 | ||||||
34 | namespace orxonox | |||||
35 | { | |||||
36 | RegisterClass(WagnisHUDinfo)orxonox::SI_I& _WagnisHUDinfoIdentifier = (*new orxonox:: SI_I(orxonox::registerClass<WagnisHUDinfo>("WagnisHUDinfo" , new orxonox::ClassFactoryWithContext<WagnisHUDinfo>() , true))); | |||||
37 | ||||||
38 | WagnisHUDinfo::WagnisHUDinfo(Context* context) : OverlayText(context) | |||||
39 | { | |||||
40 | RegisterObject(WagnisHUDinfo)if (ClassIdentifier<WagnisHUDinfo>::getIdentifier()-> initializeObject(this)) return; else ((void)0); | |||||
41 | ||||||
42 | this->wagnisgame = nullptr; | |||||
43 | this->bShow_ = false; | |||||
44 | } | |||||
45 | ||||||
46 | void WagnisHUDinfo::tick(float dt) | |||||
47 | { | |||||
48 | SUPER(WagnisHUDinfo, tick, dt)(*ClassIdentifier<WagnisHUDinfo>::getIdentifier()->superFunctionCaller_tick_ )(this, dt); | |||||
| ||||||
49 | if(wagnisgame==nullptr){ | |||||
50 | findWagnis(); | |||||
51 | } | |||||
52 | switch(wagnisgame->active_player){ | |||||
| ||||||
53 | case 1: setColour( colour({255,0,0}, 100.0f) ); | |||||
54 | break; | |||||
55 | case 2: setColour( colour({0,255,0}, 100.0f) ); | |||||
56 | break; | |||||
57 | case 3: setColour( colour({255,255,0}, 100.0f) ); | |||||
58 | break; | |||||
59 | case 4: setColour( colour({0,0,255}, 100.0f) ); | |||||
60 | break; | |||||
61 | case 5: setColour( colour({255,0,255}, 100.0f) ); | |||||
62 | break; | |||||
63 | case 6: setColour( colour({0,255,255}, 40.0f) ); | |||||
64 | break; | |||||
65 | case 7: setColour( colour({128,128,0}, 100.0f) ); | |||||
66 | break; | |||||
67 | case 8: setColour( colour({153,255,204}, 100.0f) ); | |||||
68 | break; | |||||
69 | case 9: setColour( colour({102,51,0}, 100.0f) ); | |||||
70 | break; | |||||
71 | } | |||||
72 | ||||||
73 | std::stringstream ss; | |||||
74 | switch(wagnisgame->gameStage){ | |||||
75 | case CHOOSE_PROVINCE_STAGE: { | |||||
76 | ss<<"Player "<<wagnisgame->active_player<<" choose a province to occupy"; | |||||
77 | setCaption( ss.str() ); | |||||
78 | break; | |||||
79 | } | |||||
80 | case REINFORCEMENT_STAGE: { | |||||
81 | ss<<"Player "<<wagnisgame->active_player<<" place your reinforcements: "<<wagnisgame->players.at(wagnisgame->active_player-1)->reinforcements; | |||||
82 | setCaption( ss.str() ); | |||||
83 | break; | |||||
84 | } | |||||
85 | case ATTACK_STAGE: { | |||||
86 | ss<<"Player "<<wagnisgame->active_player<<" you can attack now"; | |||||
87 | setCaption( ss.str() ); | |||||
88 | break; | |||||
89 | } | |||||
90 | case MOVE_STAGE: { | |||||
91 | ss<<"Player "<<wagnisgame->active_player<<" you can reorganize your troops now"; | |||||
92 | setCaption( ss.str() ); | |||||
93 | break; | |||||
94 | } | |||||
95 | case NOT_READY: { | |||||
96 | ss<<""; | |||||
97 | setCaption( ss.str() ); | |||||
98 | break; | |||||
99 | } | |||||
100 | case WINNER_STAGE: { | |||||
101 | ss<<"PLAYER "<<wagnisgame->active_player<<" WINS!!!"; | |||||
102 | setCaption( ss.str() ); | |||||
103 | break; | |||||
104 | } | |||||
105 | default: {} | |||||
106 | } | |||||
107 | } | |||||
108 | void WagnisHUDinfo::findWagnis(){ | |||||
109 | for (Wagnis* gb : ObjectList<Wagnis>()){ | |||||
110 | this->wagnisgame = gb; | |||||
111 | orxout()<<"Wagnis pointer found and added"<<endl; | |||||
112 | return; | |||||
113 | } | |||||
114 | } | |||||
115 | } |