Beispiel #1
0
        void SetArea(IntRect rect)
        {
            Area = rect;

            TeleportationBB = new EBoundingBox(this, EBoundingBoxType.Event, Area.Left, Area.Top, Area.Right, Area.Bottom);
            TeleportationEvent = new ObjectEvent(ObjectEventType.In);
            TeleportationEvent.AddAction(new WarpAction(MapName, WarpPointName));
            TeleportationBB.AddEvent(TeleportationEvent);
            AddEventBoundingBox(TeleportationBB, EventBoundingBoxType.Internal);
        }
Beispiel #2
0
        protected override Dictionary<String, Object> OnValidate()
        {
            ObjectEvent objectEvent = new ObjectEvent(
                (ObjectEventType)Enum.Parse(typeof(ObjectEventType),
                TypeDownList.GetCurrent()),
                ActionKeyModeCheckBox.IsChecked,
                (InputType)Enum.Parse(typeof(InputType), ActionKeyDownList.GetCurrent()));

            foreach (BlazeraLib.Action action in Actions.Values)
                objectEvent.AddAction(action);

            return new Dictionary<String, Object>()
            {
                { "Event", objectEvent }
            };
        }
Beispiel #3
0
        public void BindTo(Door door)
        {
            if (Binding != null || door == null)
                return;

            Binding = door;

            // teleporter associate to the door
            Teleporter = Create.Teleporter("Invisible");
            Teleporter.SetSetting(Binding.Map.Type, Binding.WarpPoint.Name, Area);
            Teleporter.SetMap(Map, Position.X, Position.Y, Z);

            OnMove += new MoveEventHandler(Door_OnMove);

            // block BB when the door is closed
            BlockBB = new BBoundingBox(this, 0, 42, 32, 46);
            AddBoundingBox(BlockBB);

            // sides block BB
            AddBoundingBox(new BBoundingBox(this, 0, 42, 2, 46));
            AddBoundingBox(new BBoundingBox(this, 30, 42, 32, 46));

            // switch open/close state event BB
            EBoundingBox doorBB = new EBoundingBox(this, EBoundingBoxType.Event, 0 - 5, 44, 32 + 5, 56);
            AddEventBoundingBox(doorBB, EventBoundingBoxType.Internal);
            ObjectEvent doorEvt = new ObjectEvent(ObjectEventType.Normal, true, InputType.Action);
            doorBB.AddEvent(doorEvt);

            doorEvt.AddAction(new DefaultAction((args) =>
            {
                if (IsLocked() && args.Player.DirectionHandler.IsFacing(this))
                    LaunchLockedMessage();

                if (IsLocked() || IsClosing() || IsOpening())
                    return;

                if (args.Player.DirectionHandler.IsFacing(this))
                {
                    if (IsOpen())
                        Close();
                    else
                        Open();
                }
            }));

            TrySetState("Open");

            // anti loop event
            if (ANTI_LOOP_CHECK_IS_ACTIVE)
                SetAntiLoop();
        }