1 /*
2 Minetest
3 Copyright (C) 2019 Jordach, Jordan Snelling <jordach.snelling@gmail.com>
4 
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU Lesser General Public License for more details.
14 
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 #pragma once
21 
22 struct SkyColor
23 {
24 	video::SColor day_sky;
25 	video::SColor day_horizon;
26 	video::SColor dawn_sky;
27 	video::SColor dawn_horizon;
28 	video::SColor night_sky;
29 	video::SColor night_horizon;
30 	video::SColor indoors;
31 };
32 
33 struct SkyboxParams
34 {
35 	video::SColor bgcolor;
36 	std::string type;
37 	std::vector<std::string> textures;
38 	bool clouds;
39 	SkyColor sky_color;
40 	video::SColor fog_sun_tint;
41 	video::SColor fog_moon_tint;
42 	std::string fog_tint_type;
43 };
44 
45 struct SunParams
46 {
47 	bool visible;
48 	std::string texture;
49 	std::string tonemap;
50 	std::string sunrise;
51 	bool sunrise_visible;
52 	f32 scale;
53 };
54 
55 struct MoonParams
56 {
57 	bool visible;
58 	std::string texture;
59 	std::string tonemap;
60 	f32 scale;
61 };
62 
63 struct StarParams
64 {
65 	bool visible;
66 	u32 count;
67 	video::SColor starcolor;
68 	f32 scale;
69 };
70 
71 // Utility class for setting default sky, sun, moon, stars values:
72 class SkyboxDefaults
73 {
74 public:
getSkyColorDefaults()75 	const SkyColor getSkyColorDefaults()
76 	{
77 		SkyColor sky;
78 		// Horizon colors
79 		sky.day_horizon = video::SColor(255, 144, 211, 246);
80 		sky.indoors = video::SColor(255, 100, 100, 100);
81 		sky.dawn_horizon = video::SColor(255, 186, 193, 240);
82 		sky.night_horizon = video::SColor(255, 64, 144, 255);
83 		// Sky colors
84 		sky.day_sky = video::SColor(255, 97, 181, 245);
85 		sky.dawn_sky = video::SColor(255, 180, 186, 250);
86 		sky.night_sky = video::SColor(255, 0, 107, 255);
87 		return sky;
88 	}
89 
getSunDefaults()90 	const SunParams getSunDefaults()
91 	{
92 		SunParams sun;
93 		sun.visible = true;
94 		sun.sunrise_visible = true;
95 		sun.texture = "sun.png";
96 		sun.tonemap = "sun_tonemap.png";
97 		sun.sunrise = "sunrisebg.png";
98 		sun.scale = 1;
99 		return sun;
100 	}
101 
getMoonDefaults()102 	const MoonParams getMoonDefaults()
103 	{
104 		MoonParams moon;
105 		moon.visible = true;
106 		moon.texture = "moon.png";
107 		moon.tonemap = "moon_tonemap.png";
108 		moon.scale = 1;
109 		return moon;
110 	}
111 
getStarDefaults()112 	const StarParams getStarDefaults()
113 	{
114 		StarParams stars;
115 		stars.visible = true;
116 		stars.count = 1000;
117 		stars.starcolor = video::SColor(105, 235, 235, 255);
118 		stars.scale = 1;
119 		return stars;
120 	}
121 };
122