/// <summary> /// Called on update /// </summary> /// <param name="universe"></param> /// <param name="avatarController"></param> public void Update(Universe universe, AvatarController avatarController) { ControlHintVerbs controlHints = avatarController.GetControlHintVerbs(); if (!this._prevControlHints.Equals(controlHints)) { this.ChangeControlHints(controlHints); this._prevControlHints = controlHints; } }
/// <summary> /// Pass the changed control hints to the UI /// </summary> /// <param name="controlHints"></param> public void ChangeControlHints(ControlHintVerbs controlHints) { bool hasMain = !string.IsNullOrEmpty(controlHints.VerbMain); bool hasAlt = !string.IsNullOrEmpty(controlHints.VerbAlt); string hintMain = ""; string hintAlt = ""; ControlHintContext context = default(ControlHintContext); if (hasMain) { if (controlHints.Rotate) { if (ClientContext.InputSource.TryGetControlHintContext(GameLogicalButton.Next, "staxel.controlHint.itemWheel.Rotate", out context)) { hintMain = context.Class; } else if (ClientContext.InputSource.TryGetControlHintContext(GameLogicalButton.Previous, "staxel.controlHint.itemWheel.Rotate", out context)) { hintMain = context.Class; } } else if (ClientContext.InputSource.TryGetControlHintContext(GameLogicalButton.Main, "staxel.controlHint.itemWheel.Main", out context)) { hintMain = context.Class; } } if (hasAlt && ClientContext.InputSource.TryGetControlHintContext(GameLogicalButton.Alt, "staxel.controlHint.itemWheel.Alt", out context)) { hintAlt = context.Class; } string verbMain = hasMain ? ClientContext.LanguageDatabase.GetTranslationString(controlHints.VerbMain) : ""; string verbAlt = hasAlt ? ClientContext.LanguageDatabase.GetTranslationString(controlHints.VerbAlt) : ""; Quad <string, string, string, string> key = new Quad <string, string, string, string>(hintMain, hintAlt, verbMain, verbAlt); string commandString = default(string); if (!this.ControlHintJsonCache.TryGetValue(key, out commandString)) { Blob blob = BlobAllocator.Blob(true); blob.SetString("hintMain", hintMain); blob.SetString("hintAlt", hintAlt); blob.SetString("verbMain", verbMain); blob.SetString("verbAlt", verbAlt); commandString = ClientContext.WebOverlayRenderer.PrepareCallFunction("updateControlHint", blob.ToString()); this.ControlHintJsonCache.Add(key, commandString); Blob.Deallocate(ref blob); } ClientContext.WebOverlayRenderer.CallPreparedFunction(commandString); }