2022-03-21 18:34:43 -04:00
|
|
|
/**
|
|
|
|
* Furnace Tracker - multi-system chiptune tracker
|
2024-01-16 21:26:57 -05:00
|
|
|
* Copyright (C) 2021-2024 tildearrow and contributors
|
2022-03-21 18:34:43 -04:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2022-03-21 18:38:11 -04:00
|
|
|
#define _USE_MATH_DEFINES
|
2022-03-21 18:34:43 -04:00
|
|
|
#include "gui.h"
|
2022-03-21 18:38:11 -04:00
|
|
|
#include <math.h>
|
2022-03-21 18:34:43 -04:00
|
|
|
|
|
|
|
const char* aboutLine[]={
|
2024-05-29 15:41:24 -04:00
|
|
|
"tildearrow",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("is proud to present"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2022-04-01 06:20:00 -04:00
|
|
|
("Furnace " DIV_VERSION),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("the biggest multi-system chiptune tracker!"),
|
|
|
|
_N("featuring DefleMask song compatibility."),
|
2022-04-01 06:20:00 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("> CREDITS <"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- program --"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"tildearrow",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("A M 4 N (intro tune)"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"akumanatt",
|
|
|
|
"cam900",
|
|
|
|
"djtuBIG-MaliceX",
|
2023-09-06 19:30:09 -04:00
|
|
|
"Eknous",
|
2024-01-17 00:39:27 -05:00
|
|
|
"Kagamiin~",
|
2022-03-21 18:34:43 -04:00
|
|
|
"laoo",
|
2024-06-04 19:57:17 -04:00
|
|
|
"LTVA",
|
2023-07-07 16:01:19 -04:00
|
|
|
"MooingLemur",
|
2022-04-12 05:36:45 -04:00
|
|
|
"OPNA2608",
|
2024-01-25 13:33:22 -05:00
|
|
|
"scratchminer",
|
2022-03-21 18:34:43 -04:00
|
|
|
"superctr",
|
2022-10-12 16:14:28 -04:00
|
|
|
"System64",
|
2024-04-23 16:04:38 -04:00
|
|
|
"techmetx11",
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- graphics/UI design --"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"tildearrow",
|
|
|
|
"BlastBrothers",
|
2023-08-14 21:02:48 -04:00
|
|
|
"Electric Keet",
|
2022-06-18 03:00:10 -04:00
|
|
|
"Mahbod Karamoozian",
|
2022-03-25 19:16:47 -04:00
|
|
|
"Raijin",
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- documentation --"),
|
2023-09-24 18:56:33 -04:00
|
|
|
"brickblock369",
|
2022-03-21 18:34:43 -04:00
|
|
|
"cam900",
|
2023-09-24 18:56:33 -04:00
|
|
|
"DeMOSic",
|
2023-07-07 16:01:19 -04:00
|
|
|
"Electric Keet",
|
2023-09-24 18:56:33 -04:00
|
|
|
"freq-mod",
|
|
|
|
"host12prog",
|
|
|
|
"Lunathir",
|
|
|
|
"tildearrow",
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-06-04 19:57:17 -04:00
|
|
|
_N("-- localization/translation team --"),
|
2024-06-14 04:10:19 -04:00
|
|
|
"Bahasa Indonesia: ZoomTen (Zumi)",
|
2024-06-13 17:40:32 -04:00
|
|
|
"Español: CrimsonZN, ThaCuber, tildearrow",
|
2024-06-04 19:57:17 -04:00
|
|
|
"Հայերեն: Eknous",
|
2024-06-05 04:17:10 -04:00
|
|
|
"한국어: Heemin, leejh20",
|
2024-06-04 19:57:17 -04:00
|
|
|
"Nederlands: Lunathir",
|
|
|
|
"Polski: freq-mod, PoznańskiSzybkowiec",
|
|
|
|
"Português (Brasil): Kagamiin~",
|
|
|
|
"Русский: Background2982, LTVA",
|
|
|
|
"Slovenčina: Mr. Hassium",
|
|
|
|
"Svenska: RevvoBolt",
|
|
|
|
"ไทย: akumanatt",
|
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- demo songs --"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"0x5066",
|
2022-06-18 03:00:10 -04:00
|
|
|
"Abstract 64",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Aburtos",
|
2022-03-21 18:34:43 -04:00
|
|
|
"ActualNK358",
|
2022-06-18 03:00:10 -04:00
|
|
|
"akumanatt",
|
2024-04-12 15:38:44 -04:00
|
|
|
"aloelucidity",
|
2022-06-18 03:00:10 -04:00
|
|
|
"AmigaX",
|
2023-12-01 02:43:35 -05:00
|
|
|
"AquaDoesStuff",
|
2022-06-18 03:00:10 -04:00
|
|
|
"AURORA*FIELDS",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Background2982",
|
2023-01-13 12:32:38 -05:00
|
|
|
"battybeats",
|
2024-01-31 16:19:36 -05:00
|
|
|
"bbqzzd",
|
2023-07-01 18:07:45 -04:00
|
|
|
"Bernie",
|
2024-01-31 16:19:36 -05:00
|
|
|
"BlastBrothers",
|
2023-12-06 03:19:00 -05:00
|
|
|
"Blaze Weednix",
|
2022-06-18 03:00:10 -04:00
|
|
|
"BlueElectric05",
|
2022-03-21 18:34:43 -04:00
|
|
|
"breakthetargets",
|
2022-08-13 16:53:47 -04:00
|
|
|
"brickblock369",
|
2023-11-25 16:53:51 -05:00
|
|
|
"Brightonic",
|
2022-11-09 23:32:56 -05:00
|
|
|
"Burnt Fishy",
|
2022-03-21 18:34:43 -04:00
|
|
|
"CaptainMalware",
|
2023-01-17 18:12:58 -05:00
|
|
|
"Clingojam",
|
2023-11-25 16:32:29 -05:00
|
|
|
"ControlleronaHanger",
|
2023-09-01 19:33:08 -04:00
|
|
|
"Crisps",
|
2022-06-18 03:00:10 -04:00
|
|
|
"DeMOSic",
|
|
|
|
"DevEd",
|
|
|
|
"Dippy",
|
2023-01-12 16:04:18 -05:00
|
|
|
"djtuBIG-MaliceX",
|
2023-11-30 16:19:33 -05:00
|
|
|
"dmKaltsit",
|
2023-12-07 16:17:41 -05:00
|
|
|
"Dolce",
|
2022-12-19 13:50:39 -05:00
|
|
|
"dumbut",
|
2023-09-06 19:30:09 -04:00
|
|
|
"Eknous",
|
2023-07-30 05:34:24 -04:00
|
|
|
"Electric Keet",
|
2024-03-11 14:56:49 -04:00
|
|
|
"EntropyAuthor",
|
2023-01-26 23:00:39 -05:00
|
|
|
"EpicTyphlosion",
|
2022-11-02 04:52:49 -04:00
|
|
|
"FΛDE",
|
2022-06-18 03:00:10 -04:00
|
|
|
"Forte",
|
|
|
|
"Fragmare",
|
|
|
|
"freq-mod",
|
2023-05-05 02:26:12 -04:00
|
|
|
"gtr3qq",
|
2024-02-19 18:29:30 -05:00
|
|
|
"Heemin",
|
2023-06-01 16:51:39 -04:00
|
|
|
"Hortus",
|
2023-08-16 17:14:28 -04:00
|
|
|
"ifrit05",
|
2022-06-18 03:00:10 -04:00
|
|
|
"iyatemu",
|
2022-11-28 03:24:35 -05:00
|
|
|
"JayBOB18",
|
2022-12-09 02:37:18 -05:00
|
|
|
"Jimmy-DS",
|
2022-12-21 16:45:14 -05:00
|
|
|
"Kagamiin~",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Kaoru",
|
2022-03-21 18:34:43 -04:00
|
|
|
"kleeder",
|
2023-03-06 03:44:11 -05:00
|
|
|
"Korbo",
|
2022-06-18 03:00:10 -04:00
|
|
|
"jaezu",
|
|
|
|
"Laggy",
|
2024-01-18 00:44:06 -05:00
|
|
|
"leejh20",
|
2022-07-23 19:53:42 -04:00
|
|
|
"LovelyA72",
|
2024-06-04 19:57:17 -04:00
|
|
|
"LTVA",
|
2022-06-18 03:00:10 -04:00
|
|
|
"LunaMoth",
|
2022-09-10 22:46:10 -04:00
|
|
|
"Lunathir",
|
2022-08-06 23:26:18 -04:00
|
|
|
"LVintageNerd",
|
2022-03-21 18:34:43 -04:00
|
|
|
"Mahbod Karamoozian",
|
2023-12-02 03:32:34 -05:00
|
|
|
"Marisa Kirisame [DJ MasterSpark]",
|
2022-12-31 16:38:22 -05:00
|
|
|
"Martin Demsky",
|
2023-11-28 15:50:07 -05:00
|
|
|
"masicbemester",
|
2023-01-24 13:45:20 -05:00
|
|
|
"MelonadeM",
|
2022-06-18 03:00:10 -04:00
|
|
|
"Miker",
|
2024-01-30 02:47:17 -05:00
|
|
|
"Molkirill",
|
2023-11-26 15:27:40 -05:00
|
|
|
"NeoWar",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Nerreave",
|
2023-06-01 16:55:01 -04:00
|
|
|
"niffuM",
|
2024-04-15 04:45:18 -04:00
|
|
|
"Nikku4211",
|
2022-12-09 03:25:49 -05:00
|
|
|
"<nk>",
|
2023-12-02 03:30:10 -05:00
|
|
|
"Notakin",
|
2024-01-31 16:19:36 -05:00
|
|
|
"nwcr",
|
2023-03-08 01:41:26 -05:00
|
|
|
"NyaongI",
|
2023-11-26 04:04:42 -05:00
|
|
|
"Pale Moon",
|
2023-12-02 03:35:31 -05:00
|
|
|
"PeyPey",
|
2023-08-16 17:42:41 -04:00
|
|
|
"PichuMario",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Poltvick",
|
|
|
|
"PotaJoe",
|
2022-10-28 16:05:59 -04:00
|
|
|
"potatoTeto",
|
2022-09-10 22:21:08 -04:00
|
|
|
"psxdominator",
|
2022-08-21 17:53:45 -04:00
|
|
|
"Raijin",
|
2023-07-24 18:48:05 -04:00
|
|
|
"railzen7",
|
2024-05-24 03:25:55 -04:00
|
|
|
"Rancastor",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Rei8bit",
|
2023-12-05 16:23:22 -05:00
|
|
|
"RepellantMold",
|
2023-12-08 13:49:30 -05:00
|
|
|
"RetroCarrot",
|
2023-09-24 19:07:47 -04:00
|
|
|
"RevvoBolt",
|
2024-02-02 14:31:46 -05:00
|
|
|
"Rockyfan75000",
|
2024-05-02 15:17:23 -04:00
|
|
|
"Roostersox",
|
2023-12-02 03:34:17 -05:00
|
|
|
"scooblee",
|
2024-03-17 18:35:42 -04:00
|
|
|
"sheffield^2",
|
2023-11-26 04:01:48 -05:00
|
|
|
"sillygoose",
|
2024-05-01 16:16:55 -04:00
|
|
|
"Slightly Large NC",
|
2024-01-31 16:19:36 -05:00
|
|
|
"smaybius",
|
2022-09-10 22:21:08 -04:00
|
|
|
"SnugglyBun",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Spinning Square Waves",
|
2024-02-18 01:55:38 -05:00
|
|
|
"src3453",
|
2022-03-21 18:34:43 -04:00
|
|
|
"SuperJet Spade",
|
2023-12-07 15:40:10 -05:00
|
|
|
"Supper_E1",
|
2022-11-30 21:59:49 -05:00
|
|
|
"SwapXFO",
|
2023-12-07 15:36:19 -05:00
|
|
|
"System64",
|
2022-11-07 03:47:27 -05:00
|
|
|
"TakuikaNinja",
|
2023-10-01 16:52:02 -04:00
|
|
|
"tapekeep",
|
2024-03-03 02:54:05 -05:00
|
|
|
"TapeStone",
|
2023-01-12 16:04:18 -05:00
|
|
|
"TCORPStudios",
|
2023-07-27 02:12:50 -04:00
|
|
|
"Teuthida",
|
2023-09-05 06:33:23 -04:00
|
|
|
"ThaCuber",
|
2022-11-26 01:13:32 -05:00
|
|
|
"The Blender Fiddler",
|
2022-03-21 18:34:43 -04:00
|
|
|
"TheDuccinator",
|
2022-06-18 03:00:10 -04:00
|
|
|
"theloredev",
|
2023-03-08 01:35:33 -05:00
|
|
|
"The Beesh-Spweesh!",
|
2022-03-21 18:34:43 -04:00
|
|
|
"TheRealHedgehogSonic",
|
|
|
|
"tildearrow",
|
2024-01-31 16:19:36 -05:00
|
|
|
"tom_atom",
|
2024-01-30 02:41:43 -05:00
|
|
|
"traumatized",
|
2024-02-18 01:55:38 -05:00
|
|
|
"Tytanium654",
|
2022-03-21 18:34:43 -04:00
|
|
|
"Ultraprogramer",
|
2022-10-27 16:52:28 -04:00
|
|
|
"UserSniper",
|
2022-06-18 03:00:10 -04:00
|
|
|
"Weeppiko",
|
2023-06-16 19:43:33 -04:00
|
|
|
"Xan",
|
2023-03-06 03:44:11 -05:00
|
|
|
"Yuzu4K",
|
2024-01-31 16:19:36 -05:00
|
|
|
"Zabir",
|
2023-02-11 18:14:38 -05:00
|
|
|
"Zaxolotl",
|
2022-06-18 03:00:10 -04:00
|
|
|
"ZoomTen (Zumi)",
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- additional feedback/fixes --"),
|
2023-07-30 05:34:24 -04:00
|
|
|
"Electric Keet",
|
2022-03-21 18:34:43 -04:00
|
|
|
"fd",
|
2022-04-13 01:37:48 -04:00
|
|
|
"GENATARi",
|
2022-07-23 22:19:43 -04:00
|
|
|
"host12prog",
|
2023-07-07 03:21:13 -04:00
|
|
|
"jvsTSX",
|
2022-11-05 20:27:46 -04:00
|
|
|
"Lumigado",
|
2022-09-11 06:14:15 -04:00
|
|
|
"Lunathir",
|
2022-03-21 18:34:43 -04:00
|
|
|
"plane",
|
|
|
|
"TheEssem",
|
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- Metal backend test team --"),
|
2024-04-17 18:20:08 -04:00
|
|
|
"Diggo",
|
|
|
|
"konard",
|
|
|
|
"NaxeCode",
|
|
|
|
"scratchminer",
|
2024-05-31 02:41:56 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("-- DirectX 9 backend test team --"),
|
|
|
|
"EpicTyphlosion",
|
|
|
|
"Lunathir",
|
|
|
|
"Mr. Hassium",
|
|
|
|
"wbcbz7",
|
|
|
|
"Yuzu4K",
|
2024-04-17 18:20:08 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("powered by:"),
|
|
|
|
_N("Dear ImGui by Omar Cornut"),
|
|
|
|
_N("SDL2 by Sam Lantinga"),
|
2023-10-16 07:53:21 -04:00
|
|
|
#ifdef HAVE_FREETYPE
|
|
|
|
"FreeType",
|
|
|
|
#endif
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("zlib by Jean-loup Gailly"),
|
|
|
|
_N("and Mark Adler"),
|
|
|
|
_N("libsndfile by Erik de Castro Lopo"),
|
|
|
|
_N("Portable File Dialogs by Sam Hocevar"),
|
|
|
|
_N("Native File Dialog by Frogtoss Games"),
|
2023-08-30 18:38:45 -04:00
|
|
|
"PortAudio",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("Weak-JACK by x42"),
|
|
|
|
_N("RtMidi by Gary P. Scavone"),
|
|
|
|
_N("FFTW by Matteo Frigo and Steven G. Johnson"),
|
|
|
|
_N("backward-cpp by Google"),
|
|
|
|
_N("adpcm by superctr"),
|
|
|
|
_N("adpcm-xq by David Bryant"),
|
|
|
|
_N("Nuked-OPL3/OPLL/OPM/OPN2/PSG by nukeykt"),
|
|
|
|
_N("YM3812-LLE, YMF262-LLE, YMF276-LLE and YM2608-LLE by nukeykt"),
|
|
|
|
_N("ESFMu (modified version) by Kagamiin~"),
|
|
|
|
_N("ymfm by Aaron Giles"),
|
|
|
|
_N("emu2413 by Digital Sound Antiques"),
|
|
|
|
_N("MAME SN76496 by Nicola Salmoria"),
|
|
|
|
_N("MAME AY-3-8910 by Couriersud"),
|
|
|
|
_N("with AY8930 fixes by Eulous, cam900 and Grauw"),
|
|
|
|
_N("MAME SAA1099 by Juergen Buchmueller and Manuel Abadia"),
|
|
|
|
_N("MAME Namco WSG by Nicola Salmoria and Aaron Giles"),
|
|
|
|
_N("MAME RF5C68 core by Olivier Galibert and Aaron Giles"),
|
|
|
|
_N("MAME MSM5232 core by Jarek Burczynski and Hiromitsu Shioya"),
|
|
|
|
_N("MAME MSM6258 core by Barry Rodewald"),
|
|
|
|
_N("MAME YMZ280B core by Aaron Giles"),
|
|
|
|
_N("MAME GA20 core by Acho A. Tang and R. Belmont"),
|
|
|
|
_N("MAME SegaPCM core by Hiromitsu Shioya and Olivier Galibert"),
|
|
|
|
_N("SAASound by Dave Hooper and Simon Owen"),
|
|
|
|
_N("SameBoy by Lior Halphon"),
|
|
|
|
_N("Mednafen PCE, WonderSwan, T6W28 and Virtual Boy audio cores"),
|
|
|
|
_N("SNES DSP core by Blargg"),
|
|
|
|
_N("puNES (NES, MMC5 and FDS) by FHorse"),
|
|
|
|
_N("NSFPlay (NES and FDS) by Brad Smith and Brezza"),
|
|
|
|
_N("reSID by Dag Lem"),
|
|
|
|
_N("reSIDfp by Dag Lem, Antti Lankila"),
|
|
|
|
_N("and Leandro Nini"),
|
|
|
|
_N("dSID by DefleMask Team based on jsSID"),
|
|
|
|
_N("Stella by Stella Team"),
|
|
|
|
_N("QSound emulator by superctr and Valley Bell"),
|
|
|
|
_N("VICE VIC-20 sound core by Rami Rasanen and viznut"),
|
|
|
|
_N("VICE TED sound core by Andreas Boose, Tibor Biczo"),
|
|
|
|
_N("and Marco van den Heuvel"),
|
|
|
|
_N("VERA sound core by Frank van den Hoef"),
|
|
|
|
_N("mzpokeysnd POKEY emulator by Michael Borisov"),
|
|
|
|
_N("ASAP POKEY emulator by Piotr Fusik"),
|
|
|
|
_N("ported by laoo to C++"),
|
|
|
|
_N("vgsound_emu (second version, modified version) by cam900"),
|
|
|
|
_N("SM8521 emulator (modified version) by cam900"),
|
|
|
|
_N("D65010G031 emulator (modified version) by cam900"),
|
|
|
|
_N("Namco C140/C219 emulator (modified version) by cam900"),
|
|
|
|
_N("PowerNoise emulator by scratchminer"),
|
|
|
|
_N("ep128emu by Istvan Varga"),
|
|
|
|
_N("NDS sound emulator by cam900"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("greetings to:"),
|
2022-06-18 03:00:10 -04:00
|
|
|
"NEOART Costa Rica",
|
2023-08-27 05:14:50 -04:00
|
|
|
"Xenium Demoparty",
|
2024-06-15 15:28:04 -04:00
|
|
|
"@party",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("all members of Deflers of Noice!"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-06-08 02:44:39 -04:00
|
|
|
"fuckings to:",
|
|
|
|
"cream",
|
|
|
|
"Monsia",
|
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("copyright © 2021-2024 tildearrow"),
|
|
|
|
_N("(and contributors)."),
|
|
|
|
_N("licensed under GPLv2+! see"),
|
|
|
|
_N("LICENSE for more information."),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("help Furnace grow:"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"https://github.com/tildearrow/furnace",
|
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("contact tildearrow at:"),
|
2022-03-21 18:34:43 -04:00
|
|
|
"https://tildearrow.org/?p=contact",
|
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("disclaimer:"),
|
|
|
|
_N("despite the fact this program works"),
|
|
|
|
_N("with the .dmf file format, it is NOT"),
|
|
|
|
_N("affiliated with Delek or DefleMask in"),
|
|
|
|
_N("any way, nor it is a replacement for"),
|
|
|
|
_N("the original program."),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("it also comes with ABSOLUTELY NO WARRANTY."),
|
2022-03-21 18:34:43 -04:00
|
|
|
"",
|
2024-05-28 16:15:56 -04:00
|
|
|
_N("thanks to all contributors/bug reporters!")
|
2022-03-21 18:34:43 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
const size_t aboutCount=sizeof(aboutLine)/sizeof(aboutLine[0]);
|
|
|
|
|
|
|
|
void FurnaceGUI::drawAbout() {
|
|
|
|
// do stuff
|
2024-05-27 18:53:46 -04:00
|
|
|
if (ImGui::Begin("About Furnace",NULL,ImGuiWindowFlags_Modal|ImGuiWindowFlags_NoMove|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoDocking|ImGuiWindowFlags_NoTitleBar,_("About Furnace"))) {
|
2022-04-01 06:20:00 -04:00
|
|
|
ImGui::SetWindowPos(ImVec2(0,0));
|
2022-10-20 03:34:14 -04:00
|
|
|
ImGui::SetWindowSize(ImVec2(canvasW,canvasH));
|
2022-03-21 18:34:43 -04:00
|
|
|
ImGui::PushFont(bigFont);
|
|
|
|
ImDrawList* dl=ImGui::GetWindowDrawList();
|
|
|
|
float r=0;
|
|
|
|
float g=0;
|
|
|
|
float b=0;
|
2023-01-05 02:40:17 -05:00
|
|
|
float peakMix=settings.partyTime?0:0.3;
|
|
|
|
if (settings.partyTime) {
|
|
|
|
for (int j=0; j<e->getAudioDescGot().outChans; j++) {
|
|
|
|
peakMix+=peak[j];
|
|
|
|
}
|
|
|
|
peakMix/=e->getAudioDescGot().outChans;
|
|
|
|
}
|
2022-03-21 18:34:43 -04:00
|
|
|
ImGui::ColorConvertHSVtoRGB(aboutHue,1.0,0.25+MIN(0.75f,peakMix*0.75f),r,g,b);
|
2022-10-20 03:34:14 -04:00
|
|
|
dl->AddRectFilled(ImVec2(0,0),ImVec2(canvasW,canvasH),0xff000000);
|
2022-03-21 18:34:43 -04:00
|
|
|
bool skip=false;
|
|
|
|
bool skip2=false;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int i=(-80-sin(double(aboutSin)*2*M_PI/120.0)*80.0)*2*dpiScale; i<canvasW; i+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int j=(-80-cos(double(aboutSin)*2*M_PI/150.0)*80.0)*2*dpiScale; j<canvasH; j+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
2022-10-20 03:34:14 -04:00
|
|
|
dl->AddRectFilled(ImVec2(i,j),ImVec2(i+160*dpiScale,j+160*dpiScale),ImGui::GetColorU32(ImVec4(r*0.25,g*0.25,b*0.25,1.0)));
|
2022-03-21 18:34:43 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
skip=false;
|
|
|
|
skip2=false;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int i=(-80-cos(double(aboutSin)*2*M_PI/120.0)*80.0)*2*dpiScale; i<canvasW; i+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int j=(-80-sin(double(aboutSin)*2*M_PI/150.0)*80.0)*2*dpiScale; j<canvasH; j+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
2022-10-20 03:34:14 -04:00
|
|
|
dl->AddRectFilled(ImVec2(i,j),ImVec2(i+160*dpiScale,j+160*dpiScale),ImGui::GetColorU32(ImVec4(r*0.5,g*0.5,b*0.5,1.0)));
|
2022-03-21 18:34:43 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
skip=false;
|
|
|
|
skip2=false;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int i=(-160+fmod(aboutSin*2,160))*2*dpiScale; i<canvasW; i+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip2=!skip2;
|
|
|
|
skip=skip2;
|
2022-10-20 03:34:14 -04:00
|
|
|
for (int j=(-240-cos(double(aboutSin*M_PI/300.0))*240.0)*2*dpiScale; j<canvasH; j+=160*dpiScale) {
|
2022-03-21 18:34:43 -04:00
|
|
|
skip=!skip;
|
|
|
|
if (skip) continue;
|
2022-10-20 03:34:14 -04:00
|
|
|
dl->AddRectFilled(ImVec2(i,j),ImVec2(i+160*dpiScale,j+160*dpiScale),ImGui::GetColorU32(ImVec4(r*0.75,g*0.75,b*0.75,1.0)));
|
2022-03-21 18:34:43 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (size_t i=0; i<aboutCount; i++) {
|
2024-05-31 02:41:56 -04:00
|
|
|
// don't localize tildearrow, the version or an empty line
|
|
|
|
const char* nextLine=(i==0 || i==3 || aboutLine[i][0]==0)?aboutLine[i]:_(aboutLine[i]);
|
2024-05-29 15:41:24 -04:00
|
|
|
double posX=(canvasW/2.0)+(sin(double(i)*0.5+double(aboutScroll)/(90.0*dpiScale))*120*dpiScale)-(ImGui::CalcTextSize(nextLine).x*0.5);
|
2022-10-20 03:34:14 -04:00
|
|
|
double posY=(canvasH-aboutScroll+42*i*dpiScale);
|
|
|
|
if (posY<-80*dpiScale || posY>canvasH) continue;
|
2022-03-21 18:34:43 -04:00
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX+dpiScale,posY+dpiScale),
|
2024-05-29 15:41:24 -04:00
|
|
|
0xff000000,nextLine);
|
2022-03-21 18:34:43 -04:00
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX+dpiScale,posY-dpiScale),
|
2024-05-29 15:41:24 -04:00
|
|
|
0xff000000,nextLine);
|
2022-03-21 18:34:43 -04:00
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX-dpiScale,posY+dpiScale),
|
2024-05-29 15:41:24 -04:00
|
|
|
0xff000000,nextLine);
|
2022-03-21 18:34:43 -04:00
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX-dpiScale,posY-dpiScale),
|
2024-05-29 15:41:24 -04:00
|
|
|
0xff000000,nextLine);
|
2022-03-21 18:34:43 -04:00
|
|
|
dl->AddText(bigFont,bigFont->FontSize,
|
|
|
|
ImVec2(posX,posY),
|
2024-05-29 15:41:24 -04:00
|
|
|
0xffffffff,nextLine);
|
2022-03-21 18:34:43 -04:00
|
|
|
}
|
|
|
|
ImGui::PopFont();
|
|
|
|
|
|
|
|
float timeScale=60.0f*ImGui::GetIO().DeltaTime;
|
|
|
|
|
|
|
|
aboutHue+=(0.001+peakMix*0.004)*timeScale;
|
2022-10-20 03:34:14 -04:00
|
|
|
aboutScroll+=(2+(peakMix>0.78)*3)*timeScale*dpiScale;
|
2022-03-21 18:34:43 -04:00
|
|
|
aboutSin+=(1+(peakMix>0.75)*2)*timeScale;
|
|
|
|
|
|
|
|
while (aboutHue>1) aboutHue--;
|
|
|
|
while (aboutSin>=2400) aboutSin-=2400;
|
2022-10-20 03:34:14 -04:00
|
|
|
if (aboutScroll>(42*dpiScale*aboutCount+canvasH)) aboutScroll=-20*dpiScale;
|
2022-04-19 22:55:23 -04:00
|
|
|
|
2024-04-03 14:58:57 -04:00
|
|
|
if (ImGui::IsKeyPressed(ImGuiKey_Space)) {
|
2024-04-01 00:35:59 -04:00
|
|
|
aboutOpen=false;
|
|
|
|
if (modified) {
|
2024-05-28 16:15:56 -04:00
|
|
|
showWarning(_("Unsaved changes! Save changes before playing?"),GUI_WARN_CV);
|
2024-04-01 00:35:59 -04:00
|
|
|
} else {
|
|
|
|
cvOpen=true;
|
|
|
|
cvNotSerious=true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-19 22:55:23 -04:00
|
|
|
WAKE_UP;
|
2022-03-21 18:34:43 -04:00
|
|
|
}
|
|
|
|
if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_ABOUT;
|
|
|
|
ImGui::End();
|
2022-03-21 18:38:11 -04:00
|
|
|
}
|