コード例 #1
0
        UIViewController CreateControllerForConversation(ConversationItem[] items, int currentItem, Entity speaker)
        {
            var item = items [currentItem];

            /*
             * if (item.DependencyScripts != null) {
             *  foreach (var script in item.DependencyScripts) {
             *      LuaEngine.ExecuteScript (script, item);
             *  }
             * }
             */
            var text  = string.Join("\n", item.Character);
            var alert = UIAlertController.Create(speaker.Model.Name, text, UIAlertControllerStyle.Alert);

            // Don't want to evaluate the ids everytime
            var ids = item.ResponseIds;

            if (ids == null || ids.Length == 0)
            {
                Console.WriteLine("No responses");
                return(alert);
            }

            foreach (var responseId in ids)
            {
                var localResponseId = responseId - 1;
                var responseItem    = items [localResponseId];

                var a = UIAlertAction.Create(responseItem.Player[0], 0, async(obj) => {
                    controller.DismissViewController(false, null);

                    if (responseItem.ActionScripts != null)
                    {
                        foreach (var script in responseItem.ActionScripts)
                        {
                            LuaEngine.ExecuteScript(script, responseItem);
                        }
                    }

                    if (responseItem.Character == null)
                    {
                        return;
                    }

                    controller.PresentViewController(CreateControllerForConversation(items, localResponseId, speaker), false, null);

                    if (responseItem.ResponseIds == null)
                    {
                        await Task.Delay(2500);

                        controller.DismissViewController(false, null);
                    }
                });
                alert.AddAction(a);
            }

            return(alert);
        }
コード例 #2
0
ファイル: LookHandler.cs プロジェクト: polytronicgr/Iceland
        async void HandleLookNotification(NSNotification note)
        {
            var userInfo = note.UserInfo;

            var itemEntity = (Entity)userInfo [ItemEntityKey];

            var description = (string)LuaEngine.ExecuteScript(itemEntity.Model.LookCommand)[0];

            var alert = UIAlertController.Create("", description, UIAlertControllerStyle.Alert);

            controller.PresentViewController(alert, false, null);

            await Task.Delay(5000);

            controller.DismissViewController(false, null);
        }
コード例 #3
0
        async void HandleCollectNotification(NSNotification note)
        {
            var userInfo = note.UserInfo;

            var itemEntity   = (Entity)userInfo [ItemEntityKey];
            var playerEntity = (Entity)userInfo [PlayerEntityKey];

            var invComponent = playerEntity.GetComponent <InventoryComponent> ();

            if (invComponent == null)
            {
                throw new InvalidOperationException("No inventory component");
            }

            bool add = true;

            if (!string.IsNullOrEmpty(itemEntity.Model.CollectCommand))
            {
                Console.WriteLine($"{itemEntity.Model.CollectCommand}");
                var results = LuaEngine.ExecuteScript(itemEntity.Model.CollectCommand);
                Console.WriteLine("Parsed");
                add = (bool)results [1];

                Console.WriteLine($"{add}");
                if (!string.IsNullOrEmpty((string)results [0]))
                {
                    var alert = UIAlertController.Create("", (string)results [0], UIAlertControllerStyle.Alert);
                    controller.PresentViewController(alert, false, null);

                    await Task.Delay(5000);

                    controller.DismissViewController(false, null);
                }
            }

            if (add)
            {
                invComponent.AddItem(itemEntity);
            }
        }