예제 #1
0
        private void LevelVertexButtonPressed(IEventArgument arg)
        {
            var argument       = arg as LevelVertexButtonPressEventArg;
            var playerData     = playerDataManagerEntity.PlayerData;
            var levelDataState = playerData.GetLevelData(argument.ButtonIndex).LevelState;

            if (levelDataState == PlayerData.LevelData.LevelStateEnum.Opened || levelDataState == PlayerData.LevelData.LevelStateEnum.InProgress)
            {
                playerData.CurrentLevelIndex = argument.ButtonIndex;
                EventsManager.CallEvent <SavePlayerDataEventType>();
                EventsManager.CallEvent <LoadLevelEventType>();
            }
        }
예제 #2
0
 public static void CallEvent(Events key, IEventArgument argument)
 {
     if (actionsWithArgument.TryGetValue(key, out var action))
     {
         var valueTuple = new ValueTuple <Action <IEventArgument>, IEventArgument>(action, argument);
         actionsToCallArgument.Enqueue(valueTuple);
     }
     #if UNITY_EDITOR
     else
     {
         Debug.LogError($"Listener with {key} key not found | Call with argument");
     }
     #endif
 }
예제 #3
0
        public static void CallEventImmediate <T>(IEventArgument argument) where T : struct, IEventType
        {
            var key = EventTypeKeys <T> .EventTypeKey;

            if (actionsWithArgument.TryGetValue(key, out var action))
            {
                action.Invoke(argument);
            }
            #if UNITY_EDITOR
            else
            {
                Debug.LogWarning($"Listener with {key} key not found | CallEventImmediate with argument");
            }
            #endif
        }
예제 #4
0
        public static void CallEvent <T>(IEventArgument argument) where T : struct, IEventType
        {
            var key = EventTypeKeys <T> .EventTypeKey;

            if (actionsWithArgument.TryGetValue(key, out var action))
            {
                var value = new ActionEventArg(action, argument);
                if (!actionsToCallArgument.Contains(value))
                {
                    actionsToCallArgument.Enqueue(value);
                }
            }
            #if UNITY_EDITOR
            else
            {
                Debug.LogWarning($"Listener with {key} key not found | Call with argument");
            }
            #endif
        }
예제 #5
0
 public void OnNext(IEventArgument eventArgument)
 {
     this.OnNext(eventArgument as TArg);
 }
예제 #6
0
        private void OnLivesLeftChangeText(IEventArgument arg)
        {
            var argument = arg as LivesLeftChangeTextEventArg;

            field.SetText(fieldFormat, argument.LivesLeft);
        }
예제 #7
0
        private static void OnStaticEventTrigger(IEventArgument argument)
        {
            var objectID = ((GameObjectEventArgument)argument).objectID;

            objects[objectID].OnEventTrigger();
        }
예제 #8
0
 public void OnNext(IEventArgument eventArgument)
 {
     this.Handler(null);
 }
예제 #9
0
 public void OnNext(IEventArgument <TArg> eventArgument)
 {
     this.Handler(eventArgument.Subject);
 }
예제 #10
0
 public void OnNext(IEventArgument argument)
 {
     this.OnNext((TArg)argument);
 }
예제 #11
0
        private void OnPlayNote(IEventArgument argument)
        {
            var note = ((NoteArgument)argument).note;

            PlaySound(notes[note]);
        }
예제 #12
0
 public ActionEventArg(Action <IEventArgument> action, IEventArgument arg)
 {
     this.action = action;
     this.arg    = arg;
 }