Example #1
0
    public override bool Display(Verb verb, Actor actor, GameObject target, FrameworkContentElement span)
    {
        CheckResult check = verb.Check(target);

        if (check >= CheckResult.VALID)
        {
            Dictionary <TextBlock, ContextMenuAction> items = new Dictionary <TextBlock, ContextMenuAction>();

            Dictionary <string, object> data = new Dictionary <string, object>();
            data["gameObject"] = verb.self;
            data["verb"]       = verb;
            data["label"]      = verb.displayLabel;

            items.Add(WaywardTextParser.ParseAsBlock("Custom..."), delegate { return(DisplayDialog(verb)); });
            data["duration"] = 10.0;
            items.Add(WaywardTextParser.ParseAsBlock("10"), delegate { return(verb.Register(data, true)); });
            data["duration"] = 100.0;
            items.Add(WaywardTextParser.ParseAsBlock("100"), delegate { return(verb.Register(data, true)); });
            data["duration"] = 500.0;
            items.Add(WaywardTextParser.ParseAsBlock("500"), delegate { return(verb.Register(data, true)); });
            data["duration"] = 1000.0;
            items.Add(WaywardTextParser.ParseAsBlock("1000"), delegate { return(verb.Register(data, true)); });

            ContextMenuHelper.AddContextMenuHeader(span, WaywardTextParser.ParseAsBlock(verb.displayLabel), items, true);
        }

        return(true);
    }
Example #2
0
    bool ParseDrop(Verb verb, InputEventArgs inputEventArgs)
    {
        PhysicalAttachmentPoint inventory = null;

        try {
            inventory = (PhysicalAttachmentPoint)verb.blackboard["inventory"];
        } catch (SystemException e) {
            WaywardManager.instance.Log($@"<red>GrabVerb of GameObject '{verb.self.GetName()}' failed in ParseDrop:</red> {e}");
            return(true);
        }

        if (inventory.GetAttachedCount() == 0)
        {
            WaywardManager.instance.DisplayMessage($"You are not holding anything.");
            return(true);
        }

        if (inputEventArgs.parameters.Length <= 0)
        {
            if (inventory.GetAttachedCount() == 1)
            {
                verb.Register(new Dictionary <string, object>()
                {
                    { "target", inventory.GetAttached(0) }
                }, true);
            }
            else
            {
                WaywardManager.instance.DisplayMessage($"Drop what?");
            }

            return(true);
        }

        GameObject foundObject = GetInputTarget(verb, inputEventArgs);

        if (foundObject == null)
        {
            return(true);
        }
        if (foundObject == verb.self)
        {
            WaywardManager.instance.DisplayMessage($"You get a hold of yourself.");
            return(true);
        }

        if (verb.Check(foundObject) == CheckResult.VALID)
        {
            verb.Register(new Dictionary <string, object>()
            {
                { "target", foundObject }
            }, true);
            return(true);
        }
        else
        {
            WaywardManager.instance.DisplayMessage($"Could not grab {foundObject.GetData("name").text}.");
            return(false);
        }
    }
Example #3
0
    public override bool Display(Verb verb, Actor actor, GameObject target, FrameworkContentElement span)
    {
        CheckResult check = verb.Check(target);

        if (check >= CheckResult.VALID)
        {
            ContextMenuHelper.AddContextMenuItem(span, verb.displayLabel, delegate { DisplayDialog(verb); return(false); });
        }

        return(true);
    }
Example #4
0
    bool ParseGrap(Verb verb, InputEventArgs inputEventArgs)
    {
        Physical physicalSelf = null;

        try {
            physicalSelf = (Physical)verb.blackboard["physicalSelf"];
        } catch (SystemException e) {
            WaywardManager.instance.Log($@"<red>GrabVerb of GameObject '{verb.self.GetName()}' failed in ParseGrab:</red> {e}");
            return(true);
        }

        if (inputEventArgs.parameters.Length <= 0)
        {
            WaywardManager.instance.DisplayMessage($"Grab what?");
            return(true);
        }

        GameObject foundObject = GetInputTarget(verb, inputEventArgs);

        if (foundObject == null)
        {
            return(true);
        }
        if (foundObject == verb.self)
        {
            WaywardManager.instance.DisplayMessage($"You get a hold of yourself.");
            return(true);
        }

        if (verb.Check(foundObject) == CheckResult.VALID)
        {
            Physical physical = foundObject as Physical;
            if (physical != null && physicalSelf.Contains(physical))
            {
                WaywardManager.instance.DisplayMessage($"You are already holding {foundObject.GetData("name").text}.");
                return(true);
            }
            else
            {
                verb.Register(new Dictionary <string, object>()
                {
                    { "target", foundObject }
                }, true);
                return(true);
            }
        }
        else
        {
            WaywardManager.instance.DisplayMessage($"Could not grab {foundObject.GetData("name").text}.");
            return(true);
        }
    }
Example #5
0
    public override bool Action(Verb verb, Dictionary <string, object> data)
    {
        GameObject target = null;

        if (data.ContainsKey("target"))
        {
            target = data["target"] as GameObject;
        }
        if (target == null)
        {
            return(false);
        }

        if (verb.Check(target) != CheckResult.VALID)
        {
            return(false);
        }

        bool drop = target.container.GetParent() == verb.self;

        if (drop)
        {
            verb.self.container.Attach(target);
        }
        else
        {
            try {
                PhysicalAttachmentPoint inventory = (PhysicalAttachmentPoint)verb.blackboard["inventory"];
                inventory.Attach(target);
            } catch (SystemException e) {
                WaywardManager.instance.Log($@"<red>GrabVerb of GameObject '{verb.self.GetName()}' failed in Action:</red> {e}");
                return(false);
            }
        }

        // Message for Verbose pages
        string label = drop ? "drop" : "pickup";

        data["message"] = new ObservableText($"[0] { label } [1].",
                                             new Tuple <GameObject, string>(verb.self, "name top"),
                                             new Tuple <GameObject, string>(target, "name")
                                             );
        data["displayAfter"] = false;

        TimelineManager.instance.OnAction(data);

        return(true);
    }
Example #6
0
    public override bool ParseInput(Verb verb, InputEventArgs inputEventArgs)
    {
        if (inputEventArgs.parsed)
        {
            return(true);
        }
        if (inputEventArgs.parameters.Length <= 0)
        {
            WaywardManager.instance.DisplayMessage("Phase where?");
            return(true);
        }

        if (CheckForOutInput(verb, inputEventArgs))
        {
            return(true);
        }

        GameObject foundObject = GetInputTarget(verb, inputEventArgs);

        if (foundObject == null)
        {
            return(true);
        }
        if (foundObject == verb.self)
        {
            WaywardManager.instance.DisplayMessage($"You cannot phase into yourself.");
            return(true);
        }

        if (verb.Check(foundObject) == CheckResult.VALID)
        {
            verb.Action(new Dictionary <string, object>()
            {
                { "target", foundObject }
            });
            return(true);
        }
        else
        {
            WaywardManager.instance.DisplayMessage($"Could not phase into {foundObject.GetData("name").text}.");
        }

        return(false);
    }
Example #7
0
    public override bool Display(Verb verb, Actor actor, GameObject target, FrameworkContentElement span)
    {
        CheckResult check = verb.Check(target);

        if (check >= CheckResult.RESTRICTED)
        {
            if (check == CheckResult.RESTRICTED)
            {
                ContextMenuHelper.AddContextMenuItem(span, WaywardTextParser.ParseAsBlock($@"<gray>{verb.displayLabel}</gray>"), null, false);
            }
            else
            {
                ContextMenuHelper.AddContextMenuItem(span, WaywardTextParser.ParseAsBlock(verb.displayLabel), delegate { return(verb.Register(new Dictionary <string, object>()
                    {
                        { "target", target }
                    }, true)); });
            }
        }

        return(true);
    }
Example #8
0
    public virtual bool Display(Verb verb, Actor actor, GameObject target, FrameworkContentElement span)
    {
        CheckResult check = verb.Check(target);

        if (check >= CheckResult.RESTRICTED)
        {
            Dictionary <TextBlock, ContextMenuAction> items = new Dictionary <TextBlock, ContextMenuAction>();
            if (check == CheckResult.RESTRICTED)
            {
                items.Add(WaywardTextParser.ParseAsBlock($@"<gray>{verb.displayLabel}</gray>"), null);
            }
            else
            {
                items.Add(WaywardTextParser.ParseAsBlock(verb.displayLabel), delegate { return(verb.Register(new Dictionary <string, object>()
                    {
                        { "target", target }
                    }, true)); });
            }
            ContextMenuHelper.AddContextMenuHeader(span, new TextBlock(verb.self.GetData("name upper").span), items, check != CheckResult.RESTRICTED);
        }

        return(true);
    }
Example #9
0
    public override bool Action(Verb verb, Dictionary <string, object> data)
    {
        GameObject target = null;

        if (data.ContainsKey("target"))
        {
            target = data["target"] as GameObject;
        }
        if (target == null)
        {
            return(false);
        }

        if (verb.Check(target) != CheckResult.VALID)
        {
            return(false);
        }

        bool      success   = false;
        Container container = target as Container;

        if (container != null)
        {
            success = EnterContainer(verb, container, data);
        }

        if (!success)
        {
            Connection connection = target as Connection;
            if (connection != null)
            {
                success = EnterConnection(verb, connection, data);
            }
        }

        return(success);
    }
Example #10
0
    private bool CheckForOutInput(Verb verb, InputEventArgs inputEventArgs)
    {
        if (inputEventArgs.parameters[0].ToLower() != "out")
        {
            return(false);
        }

        if (verb.self.container != null)
        {
            GameObject container = verb.self.container.GetParent();
            if (container.container != null &&
                verb.Check(container.container.GetParent()) == CheckResult.VALID)
            {
                verb.Action(new Dictionary <string, object>()
                {
                    { "target", container.container.GetParent() }
                });
                return(true);
            }
        }

        WaywardManager.instance.DisplayMessage("Could not phase out.");
        return(true);
    }