Пример #1
0
        public object DOMParse(XmlElement element, params object[] parameters)
        {
            GeoAction r;

            switch (element.Name)
            {
            default:
            case "exit-action":
                ExitAction exit = new ExitAction();
                exit.OnlyFromInside = bool.Parse(element.SelectSingleNode("only-from-inside").InnerText);
                r = exit;
                break;

            case "enter-action":
                EnterAction enter = new EnterAction();
                enter.OnlyFromOutside = bool.Parse(element.SelectSingleNode("only-from-outside").InnerText);
                r = enter;
                break;

            case "lookto-action":
                LookToAction lookto = new LookToAction();
                lookto.Inside = bool.Parse(element.SelectSingleNode("inside").InnerText);
                var centerNode = element.SelectSingleNode("center");
                lookto.Center = false;
                if (centerNode != null)
                {
                    lookto.Center = bool.Parse(centerNode.InnerText);
                }
                if (!lookto.Center)
                {
                    var components = element.SelectSingleNode("direction").InnerText.Split(' ');
                    lookto.Direction = new Vector2(float.Parse(components[0]), float.Parse(components[1]));
                }
                r = lookto;
                break;

            case "inspect-action":
                InspectAction inspect = new InspectAction();
                inspect.Inside = bool.Parse(element.SelectSingleNode("inside").InnerText);
                r = inspect;
                break;
            }

            ParseBasic(element, r, parameters);

            return(r);
        }
Пример #2
0
            protected override bool CustomChecks()
            {
                LookToAction ea = Action as LookToAction;
                var          r  = false;

                if (!ea.Inside || Holder.Geometry.InsideInfluence(LatLon))
                {
                    if (ea.Center)
                    {
                        r = Holder.player.IsLookingTo(Holder.Geometry.Center);
                    }
                    else
                    {
                        r = Holder.player.IsLookingTowards(ea.Direction.ToVector2d());
                    }
                }

                return(r);
            }