Ejemplo n.º 1
0
        /// <Summary>
        /// Execute events according to event type.
        /// </Summary>
        /// <param name="eventParts">The event parts to execute.</param>
        /// <param name="eventPos">The position of event.</param>
        public void EventExecuter(AriadneEventParts eventParts, Vector2Int eventPos)
        {
            AriadneEventStrategyFactory factory        = gameController.GetComponent <AriadneEventStrategyFactory>();
            IAriadneEventStrategy       iEventExecuter = factory.GetEventExecuter(eventParts.eventCategory);

            iEventExecuter.ExecuteEvent(gameController, eventPos, eventParts);
        }
Ejemplo n.º 2
0
        /// <Summary>
        /// Returns IAriadneEventStrategy component that corresponds to the event category.
        /// </Summary>
        /// <param name="eventCategory">The event category to execute.</param>
        public IAriadneEventStrategy GetEventExecuter(AriadneEventCategory eventCategory)
        {
            Component component = (Component)gameObject.GetComponent <IAriadneEventStrategy>();

            if (component != null)
            {
                Destroy(component);
            }

            IAriadneEventStrategy iStrategy = null;

            switch (eventCategory)
            {
            case AriadneEventCategory.None:
                iStrategy = gameObject.AddComponent <EventNone>();
                break;

            case AriadneEventCategory.Door:
                iStrategy = gameObject.AddComponent <EventDoor>();
                break;

            case AriadneEventCategory.LockedDoor:
                iStrategy = gameObject.AddComponent <EventLockedDoor>();
                break;

            case AriadneEventCategory.MovePosition:
                iStrategy = gameObject.AddComponent <EventMovePosition>();
                break;

            case AriadneEventCategory.Treasure:
                iStrategy = gameObject.AddComponent <EventTreasure>();
                break;

            case AriadneEventCategory.Messenger:
                iStrategy = gameObject.AddComponent <EventMessenger>();
                break;

            case AriadneEventCategory.ExitPosition:
                iStrategy = gameObject.AddComponent <EventExitDungeon>();
                break;
            }

            return(iStrategy);
        }