git repos / blockattack-game

blame: source/code/HelpCommon.cpp

normal view · raw

465d2e3f sago007 2020-06-28 08:40 1
/*
465d2e3f sago007 2020-06-28 08:40 2
===========================================================================
465d2e3f sago007 2020-06-28 08:40 3
blockattack - Block Attack - Rise of the Blocks
465d2e3f sago007 2020-06-28 08:40 4
Copyright (C) 2005-2020 Poul Sander
465d2e3f sago007 2020-06-28 08:40 5
465d2e3f sago007 2020-06-28 08:40 6
This program is free software: you can redistribute it and/or modify
465d2e3f sago007 2020-06-28 08:40 7
it under the terms of the GNU General Public License as published by
465d2e3f sago007 2020-06-28 08:40 8
the Free Software Foundation, either version 2 of the License, or
465d2e3f sago007 2020-06-28 08:40 9
(at your option) any later version.
465d2e3f sago007 2020-06-28 08:40 10
465d2e3f sago007 2020-06-28 08:40 11
This program is distributed in the hope that it will be useful,
465d2e3f sago007 2020-06-28 08:40 12
but WITHOUT ANY WARRANTY; without even the implied warranty of
465d2e3f sago007 2020-06-28 08:40 13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
465d2e3f sago007 2020-06-28 08:40 14
GNU General Public License for more details.
465d2e3f sago007 2020-06-28 08:40 15
465d2e3f sago007 2020-06-28 08:40 16
You should have received a copy of the GNU General Public License
465d2e3f sago007 2020-06-28 08:40 17
along with this program.  If not, see http://www.gnu.org/licenses/
465d2e3f sago007 2020-06-28 08:40 18
465d2e3f sago007 2020-06-28 08:40 19
Source information and contacts persons can be found at
465d2e3f sago007 2020-06-28 08:40 20
https://blockattack.net
465d2e3f sago007 2020-06-28 08:40 21
===========================================================================
465d2e3f sago007 2020-06-28 08:40 22
*/
465d2e3f sago007 2020-06-28 08:40 23
465d2e3f sago007 2020-06-28 08:40 24
#include "HelpCommon.hpp"
ec3f09de Poul Sander 2022-01-29 14:33 25
#include "MenuSystem.h"
ec3f09de Poul Sander 2022-01-29 14:33 26
#include "global.hpp"
bfb4fed7 Poul Sander 2022-02-14 19:35 27
#include "DialogBox.hpp"
465d2e3f sago007 2020-06-28 08:40 28
465d2e3f sago007 2020-06-28 08:40 29
465d2e3f sago007 2020-06-28 08:40 30
465d2e3f sago007 2020-06-28 08:40 31
template<typename T> void setHelp30FontTemplate(const sago::SagoDataHolder* holder, T& field, const char* text) {
465d2e3f sago007 2020-06-28 08:40 32
	field.SetHolder(holder);
465d2e3f sago007 2020-06-28 08:40 33
	field.SetFont("freeserif");
465d2e3f sago007 2020-06-28 08:40 34
	field.SetColor({255,255,255,255});
465d2e3f sago007 2020-06-28 08:40 35
	field.SetFontSize(30);
465d2e3f sago007 2020-06-28 08:40 36
	field.SetOutline(2, {0,0,0,255});
465d2e3f sago007 2020-06-28 08:40 37
	field.SetText(text);
465d2e3f sago007 2020-06-28 08:40 38
}
465d2e3f sago007 2020-06-28 08:40 39
465d2e3f sago007 2020-06-28 08:40 40
void setHelp30Font(const sago::SagoDataHolder* holder, sago::SagoTextField& field, const char* text) {
465d2e3f sago007 2020-06-28 08:40 41
	setHelp30FontTemplate(holder, field, text);
465d2e3f sago007 2020-06-28 08:40 42
}
465d2e3f sago007 2020-06-28 08:40 43
465d2e3f sago007 2020-06-28 08:40 44
void setHelp30Font(const sago::SagoDataHolder* holder, sago::SagoTextBox& field, const char* text) {
465d2e3f sago007 2020-06-28 08:40 45
	setHelp30FontTemplate(holder, field, text);
465d2e3f sago007 2020-06-28 08:40 46
}
46404443 sago007 2020-06-28 08:53 47
46404443 sago007 2020-06-28 08:53 48
void setHelpBoxFont(const sago::SagoDataHolder* holder, sago::SagoTextBox& field, const char* text) {
46404443 sago007 2020-06-28 08:53 49
	field.SetHolder(holder);
46404443 sago007 2020-06-28 08:53 50
	field.SetFont("freeserif");
46404443 sago007 2020-06-28 08:53 51
	field.SetColor({255,255,255,255});
46404443 sago007 2020-06-28 08:53 52
	field.SetColor({0,0,0,255});
46404443 sago007 2020-06-28 08:53 53
	field.SetFontSize(20);
46404443 sago007 2020-06-28 08:53 54
	field.SetOutline(0, {0,0,0,255});
46404443 sago007 2020-06-28 08:53 55
	field.SetText(text);
46404443 sago007 2020-06-28 08:53 56
}
ec3f09de Poul Sander 2022-01-29 14:33 57
dfebdcd4 Poul Sander 2022-01-30 18:12 58
void setHelp30FontThinOutline(const sago::SagoDataHolder* holder, sago::SagoTextField& field, const char* text) {
dfebdcd4 Poul Sander 2022-01-30 18:12 59
	setHelp30Font(holder,field, text);
dfebdcd4 Poul Sander 2022-01-30 18:12 60
	field.SetOutline(1, {128,128,128,255});
dfebdcd4 Poul Sander 2022-01-30 18:12 61
}
dfebdcd4 Poul Sander 2022-01-30 18:12 62
ec3f09de Poul Sander 2022-01-29 14:33 63
bool HelpCommonState::IsActive() {
ec3f09de Poul Sander 2022-01-29 14:33 64
	return isActive;
ec3f09de Poul Sander 2022-01-29 14:33 65
}
ec3f09de Poul Sander 2022-01-29 14:33 66
ec3f09de Poul Sander 2022-01-29 14:33 67
void HelpCommonState::ProcessInput(const SDL_Event& event, bool& processed) {
ec3f09de Poul Sander 2022-01-29 14:33 68
ec3f09de Poul Sander 2022-01-29 14:33 69
	UpdateMouseCoordinates(event, globalData.mousex, globalData.mousey);
ec3f09de Poul Sander 2022-01-29 14:33 70
ec3f09de Poul Sander 2022-01-29 14:33 71
	if (isConfirmEvent(event) || isEscapeEvent(event)) {
ec3f09de Poul Sander 2022-01-29 14:33 72
		isActive = false;
ec3f09de Poul Sander 2022-01-29 14:33 73
		processed = true;
ec3f09de Poul Sander 2022-01-29 14:33 74
	}
ec3f09de Poul Sander 2022-01-29 14:33 75
}
ec3f09de Poul Sander 2022-01-29 14:33 76
ec3f09de Poul Sander 2022-01-29 14:33 77
extern sago::SagoSprite bExit;
ec3f09de Poul Sander 2022-01-29 14:33 78
ec3f09de Poul Sander 2022-01-29 14:33 79
ec3f09de Poul Sander 2022-01-29 14:33 80
void HelpCommonState::Draw(SDL_Renderer* target) {
4b21c89c Poul Sander 2025-03-04 20:33 81
	bExit.Draw(target, SDL_GetTicks(), globalData.xsize-buttonOffset, globalData.ysize-buttonOffset, &globalData.logicalResize);
ec3f09de Poul Sander 2022-01-29 14:33 82
#if DEBUG
ec3f09de Poul Sander 2022-01-29 14:33 83
	static sago::SagoTextField mousePos;
ec3f09de Poul Sander 2022-01-29 14:33 84
	mousePos.SetHolder(&globalData.spriteHolder->GetDataHolder());
ec3f09de Poul Sander 2022-01-29 14:33 85
	mousePos.SetFontSize(16);
ec3f09de Poul Sander 2022-01-29 14:33 86
	mousePos.SetOutline(1, {128,128,128,255});
ec3f09de Poul Sander 2022-01-29 14:33 87
	mousePos.SetText(std::string("Mouse position: ")+std::to_string(globalData.mousex)+std::string(", ")+std::to_string(globalData.mousey));
ec3f09de Poul Sander 2022-01-29 14:33 88
	mousePos.Draw(target, 0,0);
ec3f09de Poul Sander 2022-01-29 14:33 89
#endif
ec3f09de Poul Sander 2022-01-29 14:33 90
}
ec3f09de Poul Sander 2022-01-29 14:33 91
bfb4fed7 Poul Sander 2022-02-14 19:35 92
void HelpTextBoxState::Draw(SDL_Renderer* target) {
bfb4fed7 Poul Sander 2022-02-14 19:35 93
	DrawBackground(target);
32aed0fd Poul Sander 2025-03-06 20:01 94
	titleField.Draw(target, 50, 50, sago::SagoTextField::Alignment::left, sago::SagoTextField::VerticalAlignment::top, &globalData.logicalResize);
32aed0fd Poul Sander 2025-03-06 20:01 95
	DrawRectYellow(target, 40, 90, 600, 900, &globalData.logicalResize);
bfb4fed7 Poul Sander 2022-02-14 19:35 96
	infoBox.SetMaxWidth(850);
32aed0fd Poul Sander 2025-03-06 20:01 97
	infoBox.Draw(target, 50, 100, sago::SagoTextField::Alignment::left, &globalData.logicalResize);
bfb4fed7 Poul Sander 2022-02-14 19:35 98
	if (filenameField.GetText().length() > 0) {
32aed0fd Poul Sander 2025-03-06 20:01 99
		DrawRectYellow(target, 40, 700, 50, 900, &globalData.logicalResize);
32aed0fd Poul Sander 2025-03-06 20:01 100
		filenameField.Draw(target, 50, 715, sago::SagoTextField::Alignment::left, &globalData.logicalResize);
bfb4fed7 Poul Sander 2022-02-14 19:35 101
	}
bfb4fed7 Poul Sander 2022-02-14 19:35 102
	HelpCommonState::Draw(target);
bfb4fed7 Poul Sander 2022-02-14 19:35 103
}
bfb4fed7 Poul Sander 2022-02-14 19:35 104
ec3f09de Poul Sander 2022-01-29 14:33 105
ec3f09de Poul Sander 2022-01-29 14:33 106
void HelpCommonState::Update() {
ec3f09de Poul Sander 2022-01-29 14:33 107
	// If the mouse button is released, make bMouseUp equal true
ec3f09de Poul Sander 2022-01-29 14:33 108
	if ( !(SDL_GetMouseState(nullptr, nullptr)&SDL_BUTTON(1)) ) {
ec3f09de Poul Sander 2022-01-29 14:33 109
		bMouseUp=true;
ec3f09de Poul Sander 2022-01-29 14:33 110
	}
ec3f09de Poul Sander 2022-01-29 14:33 111
ec3f09de Poul Sander 2022-01-29 14:33 112
	if (SDL_GetMouseState(nullptr,nullptr)&SDL_BUTTON(1) && bMouseUp) {
ec3f09de Poul Sander 2022-01-29 14:33 113
		bMouseUp = false;
ec3f09de Poul Sander 2022-01-29 14:33 114
4b21c89c Poul Sander 2025-03-04 20:33 115
		int mousex;
4b21c89c Poul Sander 2025-03-04 20:33 116
		int mousey;
4b21c89c Poul Sander 2025-03-04 20:33 117
		globalData.logicalResize.PhysicalToLogical(globalData.mousex, globalData.mousey, mousex, mousey);
4b21c89c Poul Sander 2025-03-04 20:33 118
ec3f09de Poul Sander 2022-01-29 14:33 119
		//The Score button:
4b21c89c Poul Sander 2025-03-04 20:33 120
		if ((mousex>globalData.xsize-buttonOffset) && (mousex<globalData.xsize-buttonOffset+bExit.GetWidth())
4b21c89c Poul Sander 2025-03-04 20:33 121
		        && (mousey>globalData.ysize-buttonOffset) && (mousey<globalData.ysize-buttonOffset+bExit.GetHeight())) {
ec3f09de Poul Sander 2022-01-29 14:33 122
			isActive = false;
ec3f09de Poul Sander 2022-01-29 14:33 123
		}
ec3f09de Poul Sander 2022-01-29 14:33 124
ec3f09de Poul Sander 2022-01-29 14:33 125
	}
ec3f09de Poul Sander 2022-01-29 14:33 126
}