# @name EggTimer # @desc Eieruhr Kurzzeitimer # @author Töm (taschenserver im Discord) # @version 0.1 # @config TMin number "Timer Min." default=5 maxlen=99 unit=Min. # @config TSek number "Timer Sek." default=0 maxlen=59 unit=Sek. # @config TextColor color "Textfarbe" default=0xFFFFFF # @config ProgressBar bool "Fortschrittsbalken" default=true # @config HoldDisplay bool "Laufender Timer wird ständig angezeigt" default=true # @config StartStop bool "STart/Stop" default=false # Eieruhr # Bedienung über Buttons Mitte Start/Stop, Rechts Minuten hoch, Links Sekunden hoch, Beide äußeren auf 00:00 # Icon 42893 Uhr läuft, 44960 Uhr beendet, 19105 Uhr läuft nicht class EggTimer var TStat, TMin, TSek, StartStop, timer_duration, timer_end, timer, dclick def init() self.TStat = 0 # 0-Stop, 1-Läuft, 2-Beendet self.timer = 0 self.dclick = 0 self.timer_duration = 0 self.TMin = store.get("TMin", 5) self.TSek = store.get("TSek", 0) self.StartStop = store.get("StartStop",false) end def loop() var v if self.StartStop == true && self.TStat == 0 self.timer_duration = (self.TMin*60*1000)+(self.TSek*1000) self.timer_end = now_ms()+self.timer_duration self.TStat = 1 end if self.StartStop == true self.timer = self.timer_end-now_ms() if self.timer < 0 self.timer = 0 end v = self.timer / 1000 self.TMin = int(v / 60) self.TSek = int((v - (self.TMin*60))) end #self.TMin = store.get("TMin", 5) #self.TSek = store.get("TSek", 0) #self.StartStop = store.get("StartStop",false) #store.set("TMin", self.TMin) #store.set("TSek", self.TSek) #store.set("StartStop",self.StartStop) end def draw() var lmin = (self.TMin < 10 ? "0":"")+str(self.TMin) var lsek = (self.TSek < 10 ? "0":"")+str(self.TSek) clear() if self.StartStop == true && self.timer == 0 icon("44960",0,0) elif self.StartStop == true icon("42893",0,0) else icon("19105",0,0) end text(12, 6, lmin+":"+lsek, store.get("TextColor", 0xFFFFFF)) if store.get("ProgressBar",true) == true var pal = [0xFF0000, 0xFF1200, 0xFF2400, 0xFF3600, 0xFF4800, 0xFF5A00, 0xFF6C00, 0xFF7E00, 0xFF9000, 0xFFA200, 0xFFB400, 0xFFC600, 0xFFD800, 0xFFEA00, 0xFCFF00, 0xDAFF00, 0xB8FF00, 0x96FF00, 0x74FF00, 0x52FF00, 0x30FF00, 0x00FF00] var p if (self.timer_duration == 0 || self.timer == 0) && self.StartStop == false p = 31 elif (self.timer_duration == 0 || self.timer == 0) && self.StartStop == true p = 9 else p = 31-(22-int(22/real(self.timer_duration)*self.timer)) end for i : 0 .. 21 pixel( 9+i, 7, pal[i] ) end line(31,7, p, 7,0x000000) end end def duration() if self.StartStop == true if self.timer == nil self.timer = 0 end return self.timer+20000 else return 10000 end end def on_button(btn) if btn == "select" if now_ms()-self.dclick < 1000 if self.StartStop == true self.StartStop = false log("dclick") self.TStat = 0 self.TMin = store.get("TMin", 5) self.TSek = store.get("TSek", 0) self.timer_duration = (self.TMin*60*1000)+(self.TSek*1000) self.timer_end = now_ms()+self.timer_duration end else if self.StartStop == false self.timer_end = now_ms()+(self.TMin*60*1000)+(self.TSek*1000) end self.StartStop = self.StartStop == false ? true : false end self.dclick = now_ms() store.set("StartStop",self.StartStop) end if btn == "left" && self.StartStop == false self.TMin = self.TMin == 99 ? 0 : self.TMin + 1 store.set("TMin",self.TMin) store.set("TSek",self.TSek) end if btn == "right" && self.StartStop == false self.TSek = self.TSek == 59 ? 0 : self.TSek + 1 store.set("TMin",self.TMin) store.set("TSek",self.TSek) end if btn == "left" && self.StartStop == true self.StartStop = self.StartStop == false ? true : false self.timer = 0 self.TStat = 0 end end end return EggTimer()