| 54d2d583 |
sago007 |
2018-04-05 17:52 |
1 |
/* |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
2 |
=========================================================================== |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
3 |
blockattack - Block Attack - Rise of the Blocks |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
4 |
Copyright (C) 2005-2018 Poul Sander |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
5 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
6 |
This program is free software: you can redistribute it and/or modify |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
7 |
it under the terms of the GNU General Public License as published by |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
8 |
the Free Software Foundation, either version 2 of the License, or |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
9 |
(at your option) any later version. |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
10 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
11 |
This program is distributed in the hope that it will be useful, |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
12 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
13 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
14 |
GNU General Public License for more details. |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
15 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
16 |
You should have received a copy of the GNU General Public License |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
17 |
along with this program. If not, see http://www.gnu.org/licenses/ |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
18 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
19 |
Source information and contacts persons can be found at |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
20 |
https://blockattack.net |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
21 |
=========================================================================== |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
22 |
*/ |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
23 |
|
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
24 |
#include "HelpCommon.hpp" |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
25 |
#include "HelpGamepadState.hpp" |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
26 |
#include "global.hpp" |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
27 |
#include "common.h" |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
28 |
#include "MenuSystem.h" |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
29 |
#include "gamecontroller.h" |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
30 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
31 |
const int buttonOffset = 160; |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
32 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
33 |
|
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
34 |
static std::string getLabelForSupportedControllerNames() { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
35 |
std::string s = _("Only SDL2 compatible controllers are supported!\nSupported controllers: "); |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
36 |
for (size_t i = 0 ; i<GetSupportedControllerNames().size(); ++i ) { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
37 |
if (i != 0) { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
38 |
s+= ", "; |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
39 |
} |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
40 |
s+= GetSupportedControllerNames().at(i); |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
41 |
} |
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
42 |
return s; |
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
43 |
} |
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
44 |
|
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
45 |
|
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
46 |
HelpGamepadState::HelpGamepadState() { |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
47 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), moveLabel, _("Move cursor")); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
48 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), pushLabel, _("Push line")); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
49 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), backLabel, _("Back (Menu)")); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
50 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), switchLabel, _("Switch")); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
51 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), confirmLabel, _("Confirm")); |
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
52 |
std::string s = getLabelForSupportedControllerNames(); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
53 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), supportedControllers, s.c_str()); |
| fd7693a1 |
sago007 |
2018-04-16 19:10 |
54 |
supportedControllers.SetMaxWidth(740); |
| ceac8bf4 |
sago007 |
2018-04-07 17:41 |
55 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
56 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
57 |
HelpGamepadState::~HelpGamepadState() { |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
58 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
59 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
60 |
bool HelpGamepadState::IsActive() { |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
61 |
return isActive; |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
62 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
63 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
64 |
void HelpGamepadState::ProcessInput(const SDL_Event& event, bool& processed) { |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
65 |
UpdateMouseCoordinates(event, globalData.mousex, globalData.mousey); |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
66 |
|
| db84be96 |
sago007 |
2020-06-27 22:07 |
67 |
if (isGameControllerConnectionEvent(event)) { |
| db84be96 |
sago007 |
2020-06-27 22:07 |
68 |
UnInitGameControllers(); |
| db84be96 |
sago007 |
2020-06-27 22:07 |
69 |
InitGameControllers(); |
| db84be96 |
sago007 |
2020-06-27 22:07 |
70 |
std::string s = getLabelForSupportedControllerNames(); |
| 465d2e3f |
sago007 |
2020-06-28 08:40 |
71 |
setHelp30Font(&globalData.spriteHolder->GetDataHolder(), supportedControllers, s.c_str()); |
| 409492c9 |
sago007 |
2020-06-27 22:22 |
72 |
processed = true; |
| db84be96 |
sago007 |
2020-06-27 22:07 |
73 |
} |
| 8c5c4f5a |
Poul Sander |
2020-06-27 13:06 |
74 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
75 |
if (isConfirmEvent(event) || isEscapeEvent(event)) { |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
76 |
isActive = false; |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
77 |
processed = true; |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
78 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
79 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
80 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
81 |
extern sago::SagoSprite bExit; |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
82 |
|
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
83 |
#define OFFSETX (-512+globalData.xsize/2) |
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
84 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
85 |
void HelpGamepadState::Draw(SDL_Renderer* target) { |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
86 |
DrawBackground(target); |
| a5421912 |
sago007 |
2018-04-07 14:13 |
87 |
const sago::SagoSprite& gamepad = globalData.spriteHolder->GetSprite("help_controller"); |
| a5421912 |
sago007 |
2018-04-07 14:13 |
88 |
gamepad.Draw(target, SDL_GetTicks(), globalData.xsize/2-480/2, 100); |
| 855544ea |
Poul Sander |
2021-10-06 20:05 |
89 |
SDL_SetRenderDrawColor(target, 0, 0, 0, SDL_ALPHA_OPAQUE); |
| 21d1602a |
sago007 |
2019-04-25 17:30 |
90 |
SDL_RenderDrawLine(target, 100+OFFSETX, 210, globalData.xsize/2-480/2+130, 210); |
| 21d1602a |
sago007 |
2019-04-25 17:30 |
91 |
SDL_RenderDrawLine(target, 100+OFFSETX, 298, globalData.xsize/2-480/2+158, 298); |
| 21d1602a |
sago007 |
2019-04-25 17:30 |
92 |
SDL_RenderDrawLine(target, 100+OFFSETX, 210, 100+OFFSETX, 400); |
| 21d1602a |
sago007 |
2019-04-25 17:30 |
93 |
moveLabel.Draw(target, 100+OFFSETX, 404, sago::SagoTextField::Alignment::center); |
| 7b16a3a8 |
sago007 |
2018-06-30 13:03 |
94 |
//Push lines |
| 492b2753 |
sago007 |
2018-04-07 14:37 |
95 |
SDL_RenderDrawLine(target, globalData.xsize/2-480/2+140, 90, globalData.xsize/2-480/2+140, 105); |
| 492b2753 |
sago007 |
2018-04-07 14:37 |
96 |
SDL_RenderDrawLine(target, globalData.xsize/2+480/2-140, 90, globalData.xsize/2+480/2-140, 105); |
| 42449d2b |
sago007 |
2018-06-30 12:59 |
97 |
SDL_RenderDrawLine(target, globalData.xsize/2-480/2+140-38, 90, globalData.xsize/2+480/2-140+38, 90); |
| 42449d2b |
sago007 |
2018-06-30 12:59 |
98 |
SDL_RenderDrawLine(target, globalData.xsize/2-480/2+140-38, 90, globalData.xsize/2-480/2+140-38, 110); |
| 42449d2b |
sago007 |
2018-06-30 12:59 |
99 |
SDL_RenderDrawLine(target, globalData.xsize/2+480/2-140+38, 90, globalData.xsize/2+480/2-140+38, 110); |
| 492b2753 |
sago007 |
2018-04-07 14:37 |
100 |
SDL_RenderDrawLine(target, globalData.xsize/2, 80, globalData.xsize/2, 90); |
| 492b2753 |
sago007 |
2018-04-07 14:37 |
101 |
pushLabel.Draw(target, globalData.xsize/2, 80, sago::SagoTextField::Alignment::center, sago::SagoTextField::VerticalAlignment::bottom); |
| 7b16a3a8 |
sago007 |
2018-06-30 13:03 |
102 |
//Back lines |
| 01ca3ed9 |
Poul Sander |
2020-08-08 16:37 |
103 |
SDL_RenderDrawLine(target, 800+OFFSETX, 158, 800+OFFSETX, 207); |
| 01ca3ed9 |
Poul Sander |
2020-08-08 16:37 |
104 |
SDL_RenderDrawLine(target, 490+OFFSETX, 180, 800+OFFSETX, 180); |
| 01ca3ed9 |
Poul Sander |
2020-08-08 16:37 |
105 |
SDL_RenderDrawLine(target, 490+OFFSETX, 180, 490+OFFSETX, 195); |
| 01ca3ed9 |
Poul Sander |
2020-08-08 16:37 |
106 |
SDL_RenderDrawLine(target, 663+OFFSETX, 207, 800+OFFSETX, 207); |
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
107 |
backLabel.Draw(target, 800+OFFSETX, 156, sago::SagoTextField::Alignment::center, sago::SagoTextField::VerticalAlignment::bottom); |
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
108 |
SDL_RenderDrawLine(target, 625+OFFSETX, 241, 900+OFFSETX, 241); |
| 01ca3ed9 |
Poul Sander |
2020-08-08 16:37 |
109 |
SDL_RenderDrawLine(target, 900+OFFSETX, 241, 900+OFFSETX, 400); |
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
110 |
switchLabel.Draw(target, 900+OFFSETX, 404, sago::SagoTextField::Alignment::center); |
| 8b1ee612 |
Poul Sander |
2019-04-24 17:45 |
111 |
confirmLabel.Draw(target, 900+OFFSETX, 404+30, sago::SagoTextField::Alignment::center); |
| 4b4edc1a |
Poul Sander |
2019-04-24 17:02 |
112 |
bExit.Draw(globalData.screen, SDL_GetTicks(), globalData.xsize-buttonOffset, globalData.ysize-buttonOffset); |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
113 |
supportedControllers.Draw(target, 10, 600); |
| d2ba3cf5 |
sago007 |
2018-05-13 15:00 |
114 |
|
| ceac8bf4 |
sago007 |
2018-04-07 17:41 |
115 |
#if DEBUG |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
116 |
static sago::SagoTextField mousePos; |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
117 |
mousePos.SetHolder(&globalData.spriteHolder->GetDataHolder()); |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
118 |
mousePos.SetFontSize(16); |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
119 |
mousePos.SetOutline(1, {128,128,128,255}); |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
120 |
mousePos.SetText(std::string("Mouse position: ")+std::to_string(globalData.mousex)+std::string(", ")+std::to_string(globalData.mousey)); |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
121 |
mousePos.Draw(target, 0,0); |
| 79d765a2 |
sago007 |
2018-04-07 17:35 |
122 |
#endif |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
123 |
} |
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
124 |
|
| 54d2d583 |
sago007 |
2018-04-05 17:52 |
125 |
void HelpGamepadState::Update() { |
| d4f28be2 |
sago007 |
2018-04-24 09:33 |
126 |
// If the mouse button is released, make bMouseUp equal true |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
127 |
if ( !(SDL_GetMouseState(nullptr, nullptr)&SDL_BUTTON(1)) ) { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
128 |
bMouseUp=true; |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
129 |
} |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
130 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
131 |
if (SDL_GetMouseState(nullptr,nullptr)&SDL_BUTTON(1) && bMouseUp) { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
132 |
bMouseUp = false; |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
133 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
134 |
//The Score button: |
| 4b4edc1a |
Poul Sander |
2019-04-24 17:02 |
135 |
if ((globalData.mousex>globalData.xsize-buttonOffset) && (globalData.mousex<globalData.xsize-buttonOffset+bExit.GetWidth()) |
| 4b4edc1a |
Poul Sander |
2019-04-24 17:02 |
136 |
&& (globalData.mousey>globalData.ysize-buttonOffset) && (globalData.mousey<globalData.ysize-buttonOffset+bExit.GetHeight())) { |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
137 |
isActive = false; |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
138 |
} |
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
139 |
|
| bf4572f8 |
sago007 |
2018-04-10 22:25 |
140 |
} |
| db84be96 |
sago007 |
2020-06-27 22:07 |
141 |
} |
|
|
1970-01-01 00:00 |
142 |
|