示例#1
0
        public void ShowConversationDialog(FDCreature creature, ConversationId conversation)
        {
            // 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.GetConversationString(conversation);
            //Debug.Log("Showing message dialog: " + message);
            Vector3 popupPosition = Vector3.zero;

            if (creature != null)
            {
                UICreature uiCreature = GetUICreature(creature.CreatureId);
                Vector3    viewPoint  = mainCamera.WorldToViewportPoint(uiCreature.transform.position);

                RectTransform canvasRect = GameCanvas.GetComponent <RectTransform>();

                popupPosition = new Vector3(
                    viewPoint.x * canvasRect.sizeDelta.x - canvasRect.sizeDelta.x * 0.5f,
                    viewPoint.y * canvasRect.sizeDelta.y - canvasRect.sizeDelta.y * 0.5f,
                    0);
            }
            MessageDialog messageDialog = GameObjectExtension.CreateFromPrefab <MessageDialog>("Prefabs/MessageDialog");

            messageDialog.Initialize(uiCamera, popupPosition, animationId, message, (index) => { this.OnDialogCallback(index); }, this.ChapterId);
            currentDialog = messageDialog.gameObject;
        }
 public override void Start(IGameInterface gameInterface)
 {
     foreach (int creatureId in creatureIds)
     {
         UICreature creature = gameInterface.GetUICreature(creatureId);
         creature.SetAnimateState(UICreature.AnimateStates.Dying);
     }
 }
示例#3
0
        public void RefreshAllCreatures()
        {
            foreach (GameObject creatureObj in this.fieldObjectsRoot.gameObject.FindChildrenByName("creature_"))
            {
                UICreature creatureCom = creatureObj.GetComponent <UICreature>();
                if (creatureCom == null)
                {
                    continue;
                }

                creatureCom.SetHasActioned(false);
            }
        }
        public override void Update(IGameInterface gameInterface)
        {
            bool allGone = true;

            foreach (int creatureId in creatureIds)
            {
                UICreature creature = gameInterface.GetUICreature(creatureId);
                if (creature != null)
                {
                    allGone = false;
                }
            }

            if (allGone)
            {
                this.HasFinished = true;
            }
        }
示例#5
0
        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); });
             */
        }
示例#6
0
        public void TouchCreature(int creatureId)
        {
            if (currentDialog != null)
            {
                return;
            }

            UICreature creature         = GetUICreature(creatureId);
            FDPosition creaturePosition = creature.GetCurrentPosition();
            FDPosition cursorPosition   = FieldTransform.GetObjectUnitPosition(gameCursor.transform.localPosition);

            if (!creaturePosition.AreSame(cursorPosition))
            {
                gameCursor.transform.localPosition = FieldTransform.GetObjectPixelPosition(FieldTransform.FieldObjectLayer.Ground, creaturePosition.X, creaturePosition.Y);
            }
            else
            {
                // Do the actuall game event
                gameManager.HandleOperation(creaturePosition);
            }
        }
示例#7
0
        public void RefreshCreature(FDCreature creature)
        {
            if (creature == null)
            {
                throw new ArgumentNullException("creature");
            }

            UICreature uiCreature = GetUICreature(creature.CreatureId);

            if (uiCreature == null)
            {
                Debug.LogError("Cannot find creature on UI: creatureId = " + creature.CreatureId);
                return;
            }

            // Update position
            uiCreature.transform.localPosition = FieldTransform.GetCreaturePixelPosition(creature.Position);


            // Update status
            uiCreature.SetHasActioned(creature.HasActioned);
        }
示例#8
0
        public void DisposeCreature(int creatureId)
        {
            UICreature creature = GetUICreature(creatureId);

            Destroy(creature.gameObject);
        }