X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fdaynightratio.h;h=3375133ef207b0e434953e032b683166c866c766;hb=65c09a96f41705bb8e75fc5ff4276342be91ed11;hp=1b075c4faedfd0af4022a791f21e7e8ac16b19b5;hpb=2e90ed07acd295387c0da6c0689d14665b6c125d;p=minetest.git diff --git a/src/daynightratio.h b/src/daynightratio.h index 1b075c4fa..3375133ef 100644 --- a/src/daynightratio.h +++ b/src/daynightratio.h @@ -1,18 +1,18 @@ /* -Minetest-c55 -Copyright (C) 2010-2012 celeron55, Perttu Ahola +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola 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 +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 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. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser 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. */ @@ -20,23 +20,49 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef DAYNIGHTRATIO_HEADER #define DAYNIGHTRATIO_HEADER -inline u32 time_to_daynight_ratio(u32 time_of_day) +inline u32 time_to_daynight_ratio(float time_of_day, bool smooth) { - s32 t = time_of_day%24000; - if(t < 4500 || t >= 19500) - return 150; - else if(t < 4750 || t >= 19250) - return 250; - else if(t < 5000 || t >= 19000) - return 350; - else if(t < 5250 || t >= 18750) - return 500; - else if(t < 5500 || t >= 18500) - return 675; - else if(t < 5750 || t >= 18250) - return 875; - else + float t = time_of_day; + if(t < 0) + t += ((int)(-t)/24000)*24000; + if(t >= 24000) + t -= ((int)(t)/24000)*24000; + if(t > 12000) + t = 24000 - t; + float values[][2] = { + {4250+125, 150}, + {4500+125, 150}, + {4750+125, 250}, + {5000+125, 350}, + {5250+125, 500}, + {5500+125, 675}, + {5750+125, 875}, + {6000+125, 1000}, + {6250+125, 1000}, + }; + if(!smooth){ + float lastt = values[0][0]; + for(u32 i=1; i