From 525c73cc3264cc5815c63056708d0beaac77edf7 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sun, 19 Jun 2011 10:52:39 +0100 Subject: [PATCH] SAVE YOUR FUCKING WORK, DUDES --- potlatch2.mxml | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/potlatch2.mxml b/potlatch2.mxml index 4754b11b..0c3e996d 100644 --- a/potlatch2.mxml +++ b/potlatch2.mxml @@ -101,6 +101,8 @@ import mx.managers.PopUpManager; import flash.system.Security; import flash.net.*; + import flash.utils.Timer; + import flash.events.TimerEvent; import flash.events.MouseEvent; import flash.display.Sprite; import mx.core.IChildList; @@ -123,6 +125,8 @@ private var savecount:uint=0; private var loadcount:uint=0; + private var saveLabel:String='Save'; + private var saveTimer:Timer; include "version.as"; @@ -150,6 +154,9 @@ Globals.vars.nocache = loaderInfo.parameters['nocache'] == 'true'; Globals.vars.flashvars = loaderInfo.parameters; + // Remember localised Save text, because we change this dynamically + saveLabel=saveButton.label; + // populate sharedObject with loaderInfo parameters if supplied var obj:SharedObject = SharedObject.getLocal("user_state"); var objChanged:Boolean = false; @@ -432,15 +439,37 @@ if (ExternalInterface.available) { ExternalInterface.call("markChanged", false); } + if (!saveTimer || !saveTimer.running) { + saveTimer=new Timer(60*1000,0); + saveTimer.addEventListener(TimerEvent.TIMER,saveTimeUpdate); + saveTimer.start(); + } } private function onDataClean(event:Event):void { saveButton.enabled=false; if (ExternalInterface.available) { ExternalInterface.call("markChanged", true); } + if (saveTimer && saveTimer.running) { + saveTimer.stop(); + saveTimer.removeEventListener(TimerEvent.TIMER,saveTimeUpdate); + saveTimeWrite(0); + } + } + private function saveTimeUpdate(event:TimerEvent):void { + var timer:Timer=Timer(event.target); + saveTimeWrite(uint(timer.delay*timer.currentCount/1000/60)); + } + private function saveTimeWrite(minutes:uint):void { + if (minutes<5) { + saveButton.label=saveLabel; + } else { + saveButton.label=saveLabel+" ("+minutes+"m"+")"; + if (minutes>=20 && minutes/5==int(minutes/5)) { + theController.dispatchEvent(new AttentionEvent(AttentionEvent.ALERT, null, minutes+"m since last save - please save regularly")); + } + } } - - private function scaleHandler(event:MapEvent):void { dispatchEvent(new Event("rescale")); -- 2.30.0