void Awake() { var text = Resources.Load <TextAsset>("ClickyText"); var lines = text.text.Split('|').Select(x => x.Trim()); foreach (var l in lines) { var id = l.Substring(0, l.IndexOf('\n')); var talkie = l.Substring(l.IndexOf('\n') + 1); Dialogue.Add(id.Trim(), talkie.Trim()); //Debug.Log("id = " + id + " | talkie = " + talkie); } Instance = this; st = gameObject.AddComponent <ScaleTransition>(); BaseScale = AssociatedWindow.transform.localScale; AssociatedWindow.transform.localScale = Vector3.zero; ClickyAvatar = AssociatedWindow.transform.Find("Image").GetComponent <Image>(); ReturnIcon = AssociatedWindow.transform.Find("Return").GetComponent <Image>(); }
public ActionResult Timer(long?timestamp) { string title = null; try { byte[] output = null; using (MemoryStream stream = new MemoryStream()) { int repeatCount = 0; //repeat forever DateTime end = Epoch.AddSeconds(timestamp ?? 0); title = end.ToString(); TimeSpan remaining = end - DateTime.UtcNow; if (remaining.TotalSeconds < 0) { remaining = TimeSpan.FromSeconds(0); } if (remaining.TotalSeconds <= 60) { repeatCount = -1; //don't repeat } using (Image background = Image.FromFile(Server.MapPath(BackgroundPath))) { using (Font font = new Font(FontName, FontSize, FontBold ? FontStyle.Bold : FontStyle.Regular, GraphicsUnit.Pixel)) { using (var disposer = new Disposer()) { var target = new SynchronizeInvokeStub(); AnimatedGifEncoder encoder = new AnimatedGifEncoder(target); encoder.RepeatCount = repeatCount; encoder.OutputStream = stream; encoder.QuantizerType = GifComponents.Quantizing.QuantizerType.Octree; { int count = 0; while (remaining.TotalSeconds >= 0 && count < 60) { Bitmap bitmap = disposer.Track(new Bitmap(background)); using (Graphics g = Graphics.FromImage(bitmap)) { StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit; string days, hours, minutes, seconds; if (remaining.Days > 99) { days = "--"; hours = "--"; minutes = "--"; seconds = "--"; count = 99; //causes the loop to end after this one } else { days = remaining.Days.ToString("00"); hours = remaining.Hours.ToString("00"); minutes = remaining.Minutes.ToString("00"); seconds = remaining.Seconds.ToString("00"); } g.DrawString(days, font, Brushes.White, new RectangleF(ImageX, ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(hours, font, Brushes.White, new RectangleF(ImageX + (ImageWidth / 4), ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(minutes, font, Brushes.White, new RectangleF(ImageX + (2 * ImageWidth / 4), ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(seconds, font, Brushes.White, new RectangleF(ImageX + (3 * ImageWidth / 4), ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(":", font, Brushes.White, new RectangleF(ImageX + (ImageWidth / 4) - ImageWidth / 8, ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(":", font, Brushes.White, new RectangleF(ImageX + (2 * ImageWidth / 4) - ImageWidth / 8, ImageY, ImageWidth / 4, ImageHeight), format); g.DrawString(":", font, Brushes.White, new RectangleF(ImageX + (3 * ImageWidth / 4) - ImageWidth / 8, ImageY, ImageWidth / 4, ImageHeight), format); } var frame = new GifFrame(bitmap); frame.Delay = 100; encoder.AddFrame(frame); count++; remaining = remaining.Subtract(OneSecond); } } encoder.Start(); encoder.WaitUntilDone(); } } } output = stream.ToArray(); } return(new FileContentResult(output, "image/gif")); } catch { return(new FilePathResult(Server.MapPath(BackgroundPath), "image/gif")); } finally { Clicky.TrackRequest(Request, ActionType.PageView, "Timer: " + title); } }