summaryrefslogtreecommitdiffstats
path: root/DTCompatibility.c
diff options
context:
space:
mode:
Diffstat (limited to 'DTCompatibility.c')
-rw-r--r--DTCompatibility.c105
1 files changed, 105 insertions, 0 deletions
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, ...);
+}