/// <summary>Asks the user to confirm something.</summary> public bool confirm(object request) { // Open the dialogue: BlockingDialogue dialogue = BlockingDialogues.Open("confirm", this, request); if (dialogue == null) { // It failed to open. // E.g. because 'prevent this page from opening other dialogues' was ticked. return(false); } // Return the response received from the user: return(dialogue.OkResponse); }
/// <summary>Asks the user for some textual information.</summary> public string prompt(object request) { // Open the dialogue: BlockingDialogue dialogue = BlockingDialogues.Open("prompt", this, request); if (dialogue == null) { // It failed to open. // E.g. because 'prevent this page from opening other dialogues' was ticked. return(""); } // Return the response received from the user: if (dialogue.Response is string) { return((string)dialogue.Response); } // Empty string otherwise return(""); }
/// <summary>Alerts the given message.</summary> public void alert(object value) { // Open the dialogue: BlockingDialogues.Open("alert", this, value); }
/// <summary>Used internally - don't call this one. Startup the UI for use in the Editor with AOT Nitro.</summary> /// <param name="nitroAot">True if no gameobject should be generated.</param> public static void Start(bool nitroAot) { if (_Started) { return; } _Started = true; // Setup atlas stacks: AtlasStacks.Start(); // Hookup the wrench logging method: Dom.Log.OnLog += OnLogMessage; // Hookup the InfiniText logging method: InfiniText.Fonts.OnLog += OnLogMessage; #if !NoBIDI // Setup bidi character metadata: InfiniText.DirectionCategory.Setup(); #endif // Setup the character entities such as CharacterEntities.Setup(); // Start modules now! UI is always available so we use that: Modular.Start.Now(typeof(UI)); // Setup language metadata: Languages.globalLoader.Setup(); // Setup alert/confirm dialogues: BlockingDialogues.Setup(); // Setup input: PowerUI.Input.Setup(); // Setup the text/language service: if (Variables == null) { Variables = new FullVariableSet(); if (!nitroAot) { // Sign up to the variable on change event - whenever a custom var is changed, we need to refresh the screen. Variables.OnChange += OnVariableChange; // Sign on to the event that occurs when the language changes. Dom.Text.OnLanguageChanged += OnLanguageChange; // Sign on to the event that occurs when the gender changes. Dom.Text.OnGenderChanged += ResolveAllVariables; } } // Setup the callback queue: Callbacks.Start(); // Setup the character providers (for e.g. Emoji): CharacterProviders.Setup(); Layer = LayerMask.NameToLayer("PowerUI"); #if !NO_LAYER_CHECK if (Layer < 0) { // Invalid layer. #if UNITY_EDITOR // Create the new layer now (this will actually be a permanent change): Layer = PowerUI.LayerManager.Add(); #else // On device - make one up: Layer = 21; #endif } #endif // Default FPS: SetRate(DefaultRate); #if !NoNitroRuntime // Link up the text/javascript type by creating the engine: ScriptEngines.Add(new JavaScriptEngine()); #endif if (nitroAot) { return; } GUINode = GameObject.Find("#PowerUI"); if (GUINode == null) { // Not started yet. // Create the UI game object: GUINode = new GameObject(); GUINode.name = "#PowerUI"; // Create the camera: CameraNode = new GameObject(); CameraNode.name = "Camera"; // Create the updater: GlobalUpdater = GUINode.AddComponent <StandardUpdater>(); // Setup the camera: GUICamera = CameraNode.AddComponent <Camera>(); // Apply the new settings to the camera: GUICamera.orthographic = (CurrentCameraMode == CameraMode.Orthographic); } else { // Already started, but we might have updated. if (CameraNode == null) { // This can happen if the PowerUI assembly is actively reloaded (e.g. runtime updates). CameraNode = GameObject.Find("#PowerUI/Camera"); CameraTransform = CameraNode.transform; GUICamera = CameraNode.GetComponent <Camera>(); } else { // Already started! return; } } // Hide the PowerUI layer from all cameras other than GUICamera: Camera[] cameras = Camera.allCameras; int layerMask = ~(1 << UI.Layer); for (int i = 0; i < cameras.Length; i++) { // Grab the camera: Camera camera = cameras[i]; // Is it the GUICamera? if (camera == GUICamera) { continue; } // Hide the UI layer from it: camera.cullingMask &= layerMask; } // Setup the transform: CameraTransform = CameraNode.transform; CameraTransform.parent = GUINode.transform; GUICamera.nearClipPlane = 0.2f; GUICamera.depth = CameraDepth; GUICamera.clearFlags = CameraClearFlags.Depth; GUICamera.cullingMask = (1 << UI.Layer); GUICamera.renderingPath = RenderingPath.Forward; SetCameraDistance(60f); SetFieldOfView(60f); Renderer = new Renderman(); // Render Mesh.OutputGameObject with the GUI camera: Renderer.RenderWithCamera(UI.Layer); document = Renderer.RootDocument as HtmlDocument; document.window.top = document.window; // Fire the camera event: CameraGotCreated(GUICamera); }