public void ShowMessageDialog(FDCreature creature, MessageId messageId) { // Canvas if (currentDialog != null) { Destroy(currentDialog); currentDialog = null; } // Move the map to corresponding location // Show dialog int animationId = creature?.Definition?.AnimationId ?? 0; string message = LocalizedStrings.GetMessageString(messageId); if (messageId.MessageType == MessageId.MessageTypes.Confirm) { PromptDialog dialog = GameObjectExtension.CreateFromPrefab <PromptDialog>("Prefabs/PromptDialog"); dialog.Initialize(uiCamera, animationId, message, (index) => { this.OnDialogCallback(index); }); currentDialog = dialog.gameObject; } else { Vector2 popupPosition = Vector2.zero; if (creature != null) { UICreature uiCreature = GetUICreature(creature.CreatureId); popupPosition = mainCamera.WorldToScreenPoint(uiCreature.transform.position); } MessageDialog dialog = GameObjectExtension.CreateFromPrefab <MessageDialog>("Prefabs/MessageDialog"); dialog.Initialize(uiCamera, popupPosition, animationId, message, (index) => { this.OnDialogCallback(index); }); currentDialog = dialog.gameObject; } /* * currentDialog = new GameObject(); * MessageDialog dialog = currentDialog.AddComponent<MessageDialog>(); * * int animationId = (creature != null) ? creature.Definition.AnimationId : 0; * dialog.Initialize(this.GameCanvas, animationId, messageId, * (index) => { this.OnDialogCallback(index); }); */ }