From 9b5d0a3ddf41e686439dcda1edfe11eee51c3b07 Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Thu, 5 Jan 2017 16:19:56 +0100 Subject: Initial --- DTCompatibility.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 DTCompatibility.c (limited to 'DTCompatibility.c') diff --git a/DTCompatibility.c b/DTCompatibility.c new file mode 100644 index 0000000..d3ae922 --- /dev/null +++ b/DTCompatibility.c @@ -0,0 +1,105 @@ +/*-- Avoid errors from non-existing Engine-Functions --*/ + +#strict 2 + +static hostFeatures; +static hostTime; + +global func SetGameComment() { return _inherited(...); } +global func IsHost() { return _inherited(...); } +global func RequestHostFeature(string feature) { if(!HaveHostFeature(feature) || feature == "HostTime") return _inherited(feature, ...); } + +global func AnnounceHostFeature(string feature) +{ + hostFeatures || (hostFeatures = []); + hostFeatures[GetLength(hostFeatures)] = feature; +} + +global func HaveHostFeature(string feature) +{ + hostFeatures || (hostFeatures = []); + return GetIndexOf(feature, hostFeatures) != -1; +} + +global func ReRequestHostFeatures() +{ + if(IsNetwork()) + { + var features = hostFeatures; + hostFeatures = []; + + if(features) + { + for(var feature in features) + { + RequestHostFeature(feature); + } + } + } +} + +global func AnnounceHostTime(int time) +{ + hostTime = time; +} + +global func GetSystemTime(int what) +{ + if(HaveHostFeature("HostTime")) + { + if(what == 10) // is leap year + { + var year = GetSystemTime(0); + return !!((!(year % 4) && year % 100) || !(year % 400)); + } + if(what == 9) return hostTime; // timestamp + if(what == 8) // day of year + { + return (hostTime - (GetSystemTime(0) - 1970) * 31556926)/(3600*24) + 1; + } + if(what == 7) return 0; + if(what == 6) return hostTime % 60; + if(what == 5) return (hostTime/60) % 60; + if(what == 4) return (hostTime/3600) % 24; + if(what == 3) + { + var dayofyear = GetSystemTime(8); + var leapyear = GetSystemTime(10); + if(dayofyear < 32) return dayofyear; + else if(dayofyear < 60 + leapyear) return dayofyear - 31; + else if(dayofyear < 91 + leapyear) return dayofyear - 59; + else if(dayofyear < 121 + leapyear) return dayofyear - (90 + leapyear); + else if(dayofyear < 152 + leapyear) return dayofyear - (120 + leapyear); + else if(dayofyear < 182 + leapyear) return dayofyear - (151 + leapyear); + else if(dayofyear < 213 + leapyear) return dayofyear - (181 + leapyear); + else if(dayofyear < 244 + leapyear) return dayofyear - (212 + leapyear); + else if(dayofyear < 274 + leapyear) return dayofyear - (243 + leapyear); + else if(dayofyear < 305 + leapyear) return dayofyear - (273 + leapyear); + else if(dayofyear < 335 + leapyear) return dayofyear - (204 + leapyear); + else return dayofyear - (334 + leapyear); + } + if(what == 2) + { + return ((hostTime/86400) + 4) % 7; + } + if(what == 1) + { + var dayofyear = GetSystemTime(8); + var leapyear = GetSystemTime(10); + if(dayofyear < 32) return 1; + else if(dayofyear < 60 + leapyear) return 2; + else if(dayofyear < 91 + leapyear) return 3; + else if(dayofyear < 121 + leapyear) return 4; + else if(dayofyear < 152 + leapyear) return 5; + else if(dayofyear < 182 + leapyear) return 6; + else if(dayofyear < 213 + leapyear) return 7; + else if(dayofyear < 244 + leapyear) return 8; + else if(dayofyear < 274 + leapyear) return 9; + else if(dayofyear < 305 + leapyear) return 10; + else if(dayofyear < 335 + leapyear) return 11; + else return 12; + } + if(what == 0) return 1970 + ((hostTime + 31556926 * 2)/(31556926)) - 2; + } + else return _inherited(what, ...); +} -- cgit v1.2.3-54-g00ecf