예제 #1
0
 public void AddEvent(string key, GameObject gameObject, PlayEvent playEvent, EventReady eventReady)
 {
     if (!timers[key].HasEventFor(gameObject))
     {
         timers[key].AddEvent(gameObject, playEvent, eventReady);
     }
 }
예제 #2
0
        /// <summary>
        /// Playing the audio (Check if initialized & paused)
        /// </summary>
        /// <param name="file"></param>
        /// <param name="volume"></param>
        public void Play(string file, int volume)
        {
            PlayEvent?.Invoke(null, file);

            if (Bass.BASS_ChannelIsActive(Stream) != BASSActive.BASS_ACTIVE_PAUSED)
            {
                Stop(); //Stopping existing stream
                if (InitBass(HZ))
                {
                    Stream = Bass.BASS_StreamCreateFile(file, 0, 0, BASSFlag.BASS_DEFAULT); //Loading in audio file into stream
                    if (Stream != 0)
                    {
                        Volume = volume;
                        Bass.BASS_ChannelSetAttribute(Stream, BASSAttribute.BASS_ATTRIB_VOL, Volume / 100F); //Initializing channel volume attribute
                        Bass.BASS_ChannelPlay(Stream, false);                                                //Start playing the stream
                    }
                }
            }
            else
            {
                Bass.BASS_ChannelPlay(Stream, false);
            }
            EqEnable(_eqEnabled); // Enabling EQ based on _eqEnabled state
            activeState = PlayerState.Playing;
        }
예제 #3
0
 private void Log(PlayEvent playEvent, int second)
 {
     Logger.Debug(string.Format("{4} Start Second {0} => S {1} E {2} D {3} PoI {5} Ha {6} Cs {7} Home {8}",
                                second.ToClockTime(), playEvent.StartTime.ToClockTime(), playEvent.EndTime.ToClockTime(),
                                playEvent.Description, _gameId, _penaltyBox.PlayersOnIce, _homeTeamAdvantage, _scoreBoard.CurrentScore,
                                playEvent.HomeTeam));
 }
예제 #4
0
            public void OnEvent(bool isAccept)
            {
                //Debug.Log("Close event");
                //_playerHolder.IsClassroom = true;
                //OnClose();
                if (_currEvent == null || _currEvent.Buttons.Count < 2)
                {
                    Debug.Log("Close event");
                    _playerHolder.IsClassroom = true;
                    OnClose();
                }
                Page page;

                if (isAccept)
                {
                    page = _currEvent?.Buttons[0]?.OnClickFunc(_context);
                }
                else
                {
                    page = _currEvent?.Buttons[1]?.OnClickFunc(_context);
                }
                ConcreteView.SetEventText(page?.Title);
                Debug.Log(page?.Title);
                _currEvent = null;
            }
예제 #5
0
        public static IEnumerable <PlayEvent> SplitIntoMultiplePenalties(this IList <PlayEvent> penalties)
        {
            var penaltyList = new List <PlayEvent>();

            penaltyList.AddRange(penalties.Where(p => !p.PenaltyIsDouble));

            foreach (var playEvent in penalties.Where(p => p.PenaltyIsDouble))
            {
                var extraPenalty = new PlayEvent(playEvent);
                if (playEvent.Description.Contains("2 + 2"))
                {
                    var endTime = playEvent.StartTime + 120;
                    playEvent.EndTime      = endTime;
                    extraPenalty.StartTime = endTime;
                }
                if (playEvent.Description.Contains("2 + 10"))
                {
                    var endTime = playEvent.StartTime + 120;
                    playEvent.EndTime      = endTime;
                    extraPenalty.StartTime = endTime;
                    extraPenalty.EndTime   = extraPenalty.StartTime + 600;
                }
                if (playEvent.Description.Contains("5 + GM"))
                {
                    var endTime = playEvent.StartTime + 300;
                    playEvent.EndTime      = endTime;
                    extraPenalty.StartTime = endTime;
                    extraPenalty.EndTime   = extraPenalty.StartTime + 1200;
                }
                penaltyList.Add(playEvent);
                penaltyList.Add(extraPenalty);
            }

            return(penaltyList);
        }
예제 #6
0
        private void EmitEvent(decimal?position = null)
        {
            position = position ?? (decimal)CurrentPositionInSeconds;
            var @event = new PlayEvent(position, State);

            _EventEmitter.OnNext(@event);
        }
예제 #7
0
        private void OnPlay(Player p, PlayEvent playEvent)
        {
            if (!p.IsAceAllowed(Permission.Play))
            {
                p.AddChatMessage($"You are not permitted to play on this screen. missing ace: \"{Permission.Play}\"");
                return;
            }

            if (!playEvent.IsValid)
            {
                p.AddChatMessage($"Play \"{playEvent.Url}\" on screen \"{playEvent.Url}\" failed. Reason: Invalid url");
                return;
            }

            var screen = this.screenCollection.FindOne(s => s.Name == playEvent.Screen.Name);

            if (screen == null)
            {
                p.AddChatMessage($"Play on screen \"{playEvent.Screen.Name}\" failed. screen not found");
                return;
            }

            Logger.Debug($"playing: {playEvent.Url} on \"{playEvent.Screen.Name}\"");

            this.Play.Invoke(null, playEvent);

            this.screenStateManager.OnPlay(screen, playEvent.Url);
        }
예제 #8
0
        // Called through export
        private void OnPlay(string screenName, string videoUrl)
        {
            var screen = this.screenCollection.FindOne(s => s.Name == screenName);

            if (screen == null)
            {
                Logger.Error($"play on screen \"{screenName}\" failed. Screen not found");
                return;
            }

            var playEvent = new PlayEvent()
            {
                Screen = screen, Url = videoUrl
            };

            if (!playEvent.IsValid)
            {
                Logger.Error($"play \"{playEvent.Url}\" on screen \"{playEvent.Url}\" failed. Reason: Invalid url");
                return;
            }

            this.Play.Invoke(null, playEvent);

            this.screenStateManager.OnPlay(screen, videoUrl);

            Logger.Debug($"playing: {playEvent.Url} on \"{playEvent.Screen.Name}\"");
        }
예제 #9
0
        private CallbackDelegate OnPlay(IDictionary <string, object> args, CallbackDelegate callback)
        {
            var videoUrl = ArgsReader.GetArgKeyValue <string>(args, "videoUrl");
            var screen   = ArgsReader.GetArgKeyValue <Screen>(args, "screen");

            if (string.IsNullOrEmpty(videoUrl))
            {
                callback("ERROR", "missing videoUrl");
                return(callback);
            }

            if (screen == null)
            {
                callback("ERROR", "missing screen");
                return(callback);
            }

            var playEvent = new PlayEvent()
            {
                Screen = screen, Url = videoUrl
            };

            this.Play.Invoke(playEvent);

            callback("OK");
            return(callback);
        }
예제 #10
0
        private async void OnPlay(PlayEvent playEvent)
        {
            var player = this.videoPlayers.FirstOrDefault(p => p.PlayerName == playEvent.Screen.Name);

            if (player == null)
            {
                player = await this.CreateVideoPlayer(playEvent.Screen);

                if (player == null)
                {
                    ClientScript.AddChatMessage("Playback failed. Check logs for more information.");
                    return;
                }

                player.InitDuiBrowser();
                player.Play(playEvent.Url);

                await BaseScript.Delay(500);

                this.videoPlayers.Add(player);

                Logger.Debug($"created a new player for screen: \"{playEvent.Screen.Name}\"");
                return;
            }

            player.Play(playEvent.Url);
        }
예제 #11
0
 private void CallEventCallback(PlayEvent ev)
 {
     if (m_playEventCb != null)
     {
         m_playEventCb(ev);
     }
 }
예제 #12
0
 protected override void ButtonPush()
 {
     AudioManager.GetInstance().PlaySoundAtPosition(buttonClickSound, transform);
     PlayEvent?.Invoke();
     ClearRemaingObjects();
     SetPlayState(true);
 }
예제 #13
0
        public override Card Instantiate()
        {
            var card = new BlackMagician();

            card.Initialize();
            PlayEvent.Subscribe(card, 10, OnPlay);
            return(card);
        }
예제 #14
0
 public void Initialize()
 {
     AttackEvent.Subscribe(this, 0, Attack);
     DamageEvent.Subscribe(this, 0, Damage);
     DeathEvent.Subscribe(this, 0, Death);
     PlayEvent.Subscribe(this, 0, Play);
     TurnEvent.Subscribe(this, 0, NewTurn);
 }
예제 #15
0
        private void botonPlayMM_Click(object sender, EventArgs e)
        {
            //Go to LogIn Screen
            PlayEvent playEvent = new PlayEvent();

            playEvent.Event(sender, e, null);
            this.Hide();
        }
예제 #16
0
 public PlayEvent(PlayEvent originalPenalty)
 {
     _originalPenalty = originalPenalty;
     Class            = originalPenalty.Class;
     Description      = "Extra " + originalPenalty.Description;
     StartTime        = originalPenalty.StartTime;
     EndTime          = originalPenalty.EndTime;
     HomeTeam         = originalPenalty.HomeTeam;
 }
예제 #17
0
 public override void Open(Dictionary <string, object> callData)
 {
     _playerHolder.IsClassroom = false;
     _currEvent = _eventsStore.GetEvent();
     if (_currEvent != null)
     {
         ConcreteView.SetEventText(_currEvent.Title);
     }
 }
예제 #18
0
 public PlayEvent(PlayEvent originalPenalty)
 {
     _originalPenalty = originalPenalty;
     Class = originalPenalty.Class;
     Description = "Extra " + originalPenalty.Description;
     StartTime = originalPenalty.StartTime;
     EndTime = originalPenalty.EndTime;
     HomeTeam = originalPenalty.HomeTeam;
 }
예제 #19
0
        public static void HandleOriginalPenaltyIsKvittad(this PlayEvent penalty)
        {
            if (!penalty.PenaltyIsMinor || !penalty.OriginalPenalty.PenaltyIsMinor || !penalty.OriginalPenalty.IsKvittad)
            {
                return;
            }

            penalty.StartTime = penalty.OriginalPenalty.StartTime;
            penalty.EndTime   = penalty.OriginalPenalty.EndTime;
        }
예제 #20
0
        public virtual Card Instantiate()
        {
            var card = new Card(name, description, MANA, ATTACK, HEALTH);

            AttackEvent.Subscribe(card, 0, Attack);
            DamageEvent.Subscribe(card, 0, Damage);
            DeathEvent.Subscribe(card, 0, Death);
            PlayEvent.Subscribe(card, 0, Play);
            TurnEvent.Subscribe(card, 0, NewTurn);
            return(card);
        }
예제 #21
0
        private PlayEvent GetPenaltyThatExpiresForPowerPlayGoal(PlayEvent powerPlayGoal)
        {
            var penalties = _penalties
                            .WithoutKvittningar()
                            .OrderBy(p => p.PenaltyTime)
                            .Where(p => p.PenaltyIsMinor)
                            .Where(p => p.HomeTeam != powerPlayGoal.HomeTeam)
                            .Where(p => p.StartTime <= powerPlayGoal.StartTime && p.EndTime >= powerPlayGoal.StartTime);

            return(penalties.FirstOrDefault());
        }
예제 #22
0
        public int GetAdditionalPlayEventScore(PlayEvent playEvent, GameStatus status)
        {
            if (playEvent.Type == PlayEventType.CookieClicked)
            {
                var multiplier = (Energized ? 0.5 : 0) + (Entertained ? 0.3 : 0);

                return((int)(status.ScoreRate * multiplier));
            }

            return(0);
        }
예제 #23
0
    void Start()
    {
        instance     = this;
        currentState = States.START;

        game     += Game;
        pause    += Pause;
        play     += Play;
        backmenu += BackMenu;
        gameOver += GameOver;
        exitGame += ExitGame;
    }
예제 #24
0
 public LogPlayData(int appSession, JourneyPosition journeyPosition, MiniGameCode miniGameCode, PlayEvent playEvent, PlaySkill playSkill, float score, string additionalData)
 {
     AppSession     = appSession;
     Stage          = journeyPosition.Stage;
     LearningBlock  = journeyPosition.LearningBlock;
     PlaySession    = journeyPosition.PlaySession;
     MiniGameCode   = miniGameCode;
     PlayEvent      = playEvent;
     PlaySkill      = playSkill;
     Score          = score;
     AdditionalData = additionalData;
     Timestamp      = GenericHelper.GetTimestampForNow();
 }
예제 #25
0
        private GameStatus CalculateNext(GameStatus gameStatus, PlayEvent playEvent)
        {
            var properties = PlayEventProperties.GetByType(playEvent.Type);
            var eventType  = playEvent.Type;

            var additionalScore = gameStatus.PlayerStatus.GetAdditionalPlayEventScore(playEvent, gameStatus);

            var newStatus = gameStatus
                            .WithScore(gameStatus.Score + _eventStatusScoreCalculator.CalculateScoreForEvent(playEvent, gameStatus) + additionalScore)
                            .WithScorePerSecond(gameStatus.ScoreRate + _eventStatusScoreCalculator.CalculateScoreForTick(playEvent, gameStatus));

            var withAdditionalEffects = properties.AdditionalEffects(newStatus);

            return(withAdditionalEffects);
        }
예제 #26
0
 public ActionResult Delete(int id, PlayEvent playEvent)
 {
     try
     {
         // TODO: Add delete logic here
         PlayEvent playEventToDelete = context.PlayEvents.Where(u => u.PlayEventId == id).FirstOrDefault();
         context.PlayEvents.Remove(playEventToDelete);
         context.SaveChanges();
         return(RedirectToAction("Index"));
     }
     catch
     {
         return(View());
     }
 }
예제 #27
0
        public ActionResult JoinPlayEvent(int id)
        {
            PlayEvent     playEvent     = context.PlayEvents.Where(p => p.PlayEventId == id).FirstOrDefault();
            string        Userid        = User.Identity.GetUserId();
            User          user          = context.Users.Where(u => u.ApplicationId == Userid).FirstOrDefault();
            UserPlayEvent userPlayEvent = new UserPlayEvent()
            {
                UserId      = user.UserId,
                PlayEventId = playEvent.PlayEventId
            };

            context.UserPlayEvents.Add(userPlayEvent);
            context.SaveChanges();
            return(RedirectToAction("ViewPlayEvents", "PlayEvents"));
        }
예제 #28
0
        private void PlayRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            PlayDoWorkResult r = new PlayDoWorkResult();

            r.hr = 0;

            if (!e.Cancelled)
            {
                r = e.Result as PlayDoWorkResult;
            }

            PlayEventType t  = (e.Cancelled) ? PlayEventType.Canceled : PlayEventType.Finished;
            var           ev = new PlayEvent(t, r.hr, m_playWorker);

            CallEventCallback(ev);
        }
예제 #29
0
        public void HandlePowerPlayGoal(PlayEvent powerPlayGoal)
        {
            var penaltyThatExpiresForPowerPlayGoal = GetPenaltyThatExpiresForPowerPlayGoal(powerPlayGoal);

            if (penaltyThatExpiresForPowerPlayGoal == null)
            {
                Logger.Debug(string.Format("{1} No expiring Penalty for PP Second {0}", powerPlayGoal.StartTime.ToClockTime(), _gameId));
                return;
            }

            Logger.Debug(string.Format("{4} Penalty for PP Second {0} => S {1} E {2} D {3}", powerPlayGoal.StartTime.ToClockTime(), penaltyThatExpiresForPowerPlayGoal.StartTime.ToClockTime(), penaltyThatExpiresForPowerPlayGoal.EndTime.ToClockTime(), penaltyThatExpiresForPowerPlayGoal.Description, _gameId));
            penaltyThatExpiresForPowerPlayGoal.EndTime = powerPlayGoal.StartTime;
            ExpirePenalties(new List <PlayEvent> {
                penaltyThatExpiresForPowerPlayGoal
            });
        }
예제 #30
0
        private bool Validate(GameStatus gameStatus, PlayEvent playEvent)
        {
            var properties           = PlayEventProperties.GetByType(playEvent.Type);
            var eventType            = playEvent.Type;
            var canBuy               = gameStatus.Score + _eventStatusScoreCalculator.CalculateScoreForEvent(playEvent, gameStatus) >= 0;
            var additionalValidation = properties.AdditionalValidation(gameStatus);

            var isValid = canBuy && additionalValidation;

            if (!isValid)
            {
                _logger.LogInformation("Play event is invalid for current game status", gameStatus, playEvent);
            }

            return(canBuy && additionalValidation);
        }
예제 #31
0
        public void play()
        {
            lock (EmotionModel.svmFeature)
            {
                EmotionModel.svmFeature[0].Value = 1;
                EmotionModel.svmFeature[1].Value = 0;
            }
            // 创建PlayEvent
            PlayEvent e = (PlayEvent)EventFactory.createMomentEvent(curSession.SessionID, (int)mPlayer.GetPlayTime(), MomentEventType.PLAY);

            storeModule.saveMomentEvent(e);
            // For Debug
            Console.WriteLine(JsonConvert.SerializeObject(e));

            mPlayer.Play();
            isPlaying = true;
        }
예제 #32
0
 private void assertEvents(PlayEvent<StubModel> expectedEvt, PlayEvent<StubModel> actualEvt)
 {
     Assert.AreEqual(expectedEvt.Id.Value, actualEvt.Id.Value);
     Assert.AreEqual(expectedEvt.Version, actualEvt.Version);
 }
 private void SetChanges(string modelId, PlayEvent<StubModel> evt)
 {
     using (var redisClient = new RedisClient())
     {
         var redis = redisClient.GetTypedClient<PlayEvent<StubModel>>();
         redis.Lists["urn:changes:" + modelId].Append(evt);
         Console.Write(evt.ToString());
     }
 }