summaryrefslogtreecommitdiffstats
path: root/DDate.vala
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2010-06-03 02:37:25 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2010-06-03 02:37:25 +0200
commitcf74195121a2cfc4537cb64c965fa1945c57ffae (patch)
treed8c5868cd9175160e80e4ae0fce767ec9a2da9d6 /DDate.vala
downloaddclock-cf74195121a2cfc4537cb64c965fa1945c57ffae.tar
dclock-cf74195121a2cfc4537cb64c965fa1945c57ffae.zip
Initial commit
Diffstat (limited to 'DDate.vala')
-rw-r--r--DDate.vala98
1 files changed, 98 insertions, 0 deletions
diff --git a/DDate.vala b/DDate.vala
new file mode 100644
index 0000000..54c1064
--- /dev/null
+++ b/DDate.vala
@@ -0,0 +1,98 @@
+using GLib;
+
+public enum DDateMonth {
+ CHAOS = 0, DISCORD = 1, CONFUSION = 2, BUREAUCRACY = 3, THE_AFTERMATH = 4, ST_TIBS_DAY;
+
+ public string to_short_string() {
+ switch(this) {
+ case CHAOS:
+ return "Chs";
+ case DISCORD:
+ return "Dsc";
+ case CONFUSION:
+ return "Cfn";
+ case BUREAUCRACY:
+ return "Bcy";
+ case THE_AFTERMATH:
+ return "Afm";
+ default:
+ return "St. Tib's Day";
+ }
+ }
+}
+
+public enum DDateWeekday {
+ SWEETMORN = 0, BOOMTIME = 1, PUNGENDAY = 2, PRICKLE_PRICKLE = 3, SETTING_ORANGE = 4, ST_TIBS_DAY;
+
+ public string to_short_string() {
+ switch(this) {
+ case SWEETMORN:
+ return "SM";
+ case BOOMTIME:
+ return "BT";
+ case PUNGENDAY:
+ return "PD";
+ case PRICKLE_PRICKLE:
+ return "PP";
+ case SETTING_ORANGE:
+ return "SO";
+ default:
+ return "St. Tib's Day";
+ }
+ }
+}
+
+public struct DDate {
+ private GLib.Date date;
+
+ private uint get_day_of_year() {
+ if (date.get_year().is_leap_year() && date.get_day_of_year() > 60)
+ return date.get_day_of_year()-1;
+ else
+ return date.get_day_of_year();
+ }
+
+ public DDate(GLib.Date date0) {
+ date = date0;
+ }
+
+ public DDate.with_time_t(time_t time) {
+ date = Date();
+ date.set_time_t(time);
+ }
+
+ public bool is_st_tibs_day() {
+ return (date.get_month() == GLib.DateMonth.FEBRUARY && date.get_day() == 29);
+ }
+
+ public uchar get_day() {
+ return (uchar)(get_day_of_year() % 73);
+ }
+
+ public DDateMonth get_month() {
+ if(is_st_tibs_day())
+ return DDateMonth.ST_TIBS_DAY;
+
+ return (DDateMonth)(get_day_of_year()/73);
+ }
+
+ public DDateWeekday get_weekday() {
+ if(is_st_tibs_day())
+ return DDateWeekday.ST_TIBS_DAY;
+
+ return (DDateWeekday)((get_day_of_year()-1)%5);
+ }
+
+ public string to_string() {
+ string ret = "";
+
+ if(is_st_tibs_day()) {
+ ret = "St. Tib's Day";
+ }
+ else {
+ ret = get_weekday().to_short_string() + ", " + get_day().to_string() + ". " + get_month().to_short_string();
+ }
+
+ return ret;
+ }
+}