예제 #1
0
    public void ForceTimeSet(float newTime)
    {
        Debug.Log("Set Time to: " + newTime);

        Game.EffectHandler.Play(resetEffect, gameObject);
        time = newTime;
        OnTimeUpdate?.Invoke(newTime);
        OnForceTimeReset?.Invoke(newTime);
    }
예제 #2
0
 public void Reset(OnTimeUpdate onUpdate, float updateFrequence, bool timeScale)
 {
     this.currentAccumulate = 0f;
     this.updateFrequence   = updateFrequence;
     this.onUpdate          = onUpdate;
     this.isPause           = false;
     this.timeScale         = timeScale;
     this.isVaild           = true;
 }
예제 #3
0
 void Update()
 {
     currentTime         = currentTime - Time.deltaTime;
     goombaLastKillTimer = goombaLastKillTimer + Time.deltaTime;
     OnTimeUpdate?.Invoke((int)currentTime);
     if (currentTime <= 0)
     {
         SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
     }
 }
예제 #4
0
    public void StartNewSequence(Sequence newSequence, bool startFromBeginning = true)
    {
        timeMin   = newSequence.minTime;
        timeMax   = newSequence.maxTime;
        timeStart = newSequence.startTime;
        timeEnd   = newSequence.endTime;

        time = startFromBeginning ? newSequence.startTime : newSequence.startReversedTime;
        OnTimeUpdate?.Invoke(time);
        OnTimeChange?.Invoke(time);
    }
예제 #5
0
 public void IncreaseTime(int amount)
 {
     if (time + amount <= timeMax)
     {
         time += amount;
         Game.SoundPlayer.Play(rearrangeClip, null, volume: 0.25f, randomPitchRange: 0.5f);
         OnTimeUpdate?.Invoke(time);
         OnTimeChange?.Invoke(time);
     }
     else if (time + amount >= timeMax)
     {
         Debug.Log("time: " + time + " +" + amount + " = " + (time + amount) + " /  " + timeMax);
         Game.SequenceHandler.TryPlayAfter();
     }
 }
예제 #6
0
 public void OnDispose()
 {
     onUpdate = null;
 }
예제 #7
0
 public TimerTask(string taskName, OnTimeUpdate onUpdate, float updateFrequence, bool timeScale)
 {
     this.taskName = taskName;
     Reset(onUpdate, updateFrequence, timeScale);
 }
예제 #8
0
        public Multiplayer(string Server, string Channel, string Username)
        {
            this.Channel  = Channel;
            this.Username = Username;

            socket = new WebSocket(Server);

            socket.OnOpen += (sender, e) =>
            {
                MessageConnect connect = new MessageConnect()
                {
                    Channel  = this.Channel,
                    Username = this.Username,
                    Version  = Shared.Version
                };

                socket.Send(JsonConvert.SerializeObject(connect));
            };

            socket.OnClose += (sender, e) =>
            {
                if (!ManualClose && !string.IsNullOrWhiteSpace(e.Reason))
                {
                    OnConnectionFailed?.Invoke(this, new ConnectionFailedEventArgs());
                }
            };

            socket.OnMessage += (sender, e) =>
            {
                MessageType messageType = JsonConvert.DeserializeObject <MessageType>(e.Data);
                if (messageType.Type == 0) // Connection Successful
                {
                    MessageConnectionSuccessful connectionSuccessful = JsonConvert.DeserializeObject <MessageConnectionSuccessful>(e.Data);

                    IsHost = connectionSuccessful.IsHost;

                    ConnectionSuccessfulEventArgs succ = new ConnectionSuccessfulEventArgs()
                    {
                        IsHost       = connectionSuccessful.IsHost,
                        HostUsername = connectionSuccessful.HostUsername
                    };

                    OnConnectionSuccessful?.Invoke(this, succ);
                }
                else if (messageType.Type == 1) // Username in use
                {
                    OnUsernameInUse?.Invoke(this, new UsernameInUseEventArgs());
                    socket.Close();
                }
                else if (messageType.Type == 2) // Host left the channel
                {
                    OnHostLeftChannel?.Invoke(this, new HostLeftChannelEventArgs());
                    socket.Close();
                }
                else if (messageType.Type == 3)
                {
                    MessageVersionMismatch mismatch = JsonConvert.DeserializeObject <MessageVersionMismatch>(e.Data);

                    var args = new VersionMismatchEventArgs()
                    {
                        Version = mismatch.Version
                    };

                    OnVersionMismatch?.Invoke(this, args);
                }
                // -------
                else if (messageType.Type == 10) // User Joined
                {
                    MessageUserJoined user = JsonConvert.DeserializeObject <MessageUserJoined>(e.Data);

                    var args = new UserJoinedEventArgs()
                    {
                        Username = user.Username
                    };

                    OnUserJoined?.Invoke(this, args);
                }
                else if (messageType.Type == 11) // User Left
                {
                    MessageUserLeft user = JsonConvert.DeserializeObject <MessageUserLeft>(e.Data);

                    var args = new UserLeftEventArgs()
                    {
                        Username = user.Username
                    };

                    OnUserLeft?.Invoke(this, args);
                }
                else if (messageType.Type == 12) // Chat Message
                {
                    MessageChatMessage chatMessage = JsonConvert.DeserializeObject <MessageChatMessage>(e.Data);

                    var args = new ChatMessageEventArgs()
                    {
                        Username = chatMessage.Username,
                        Message  = chatMessage.Message
                    };

                    OnChatMessage?.Invoke(this, args);
                }
                // -------
                else if (messageType.Type == 20) // Time Update
                {
                    MessageTimeUpdate timeUpdate = JsonConvert.DeserializeObject <MessageTimeUpdate>(e.Data);

                    var args = new TimeUpdateEventArgs()
                    {
                        Remaining = timeUpdate.Remaining,
                        Total     = timeUpdate.Total
                    };

                    OnTimeUpdate?.Invoke(this, args);
                }
                else if (messageType.Type == 21) // Send Effect
                {
                    MessageEffect effect = JsonConvert.DeserializeObject <MessageEffect>(e.Data);

                    var args = new EffectEventArgs()
                    {
                        Word     = effect.Word,
                        Duration = effect.Duration,
                        Voter    = effect.Voter,
                        Seed     = effect.Seed
                    };

                    OnEffect?.Invoke(this, args);
                }
                else if (messageType.Type == 22) // Votes
                {
                    MessageVotes votes = JsonConvert.DeserializeObject <MessageVotes>(e.Data);

                    var args = new VotesEventArgs()
                    {
                        Effects    = votes.Effects,
                        Votes      = votes.Votes,
                        LastChoice = votes.LastChoice
                    };

                    OnVotes?.Invoke(this, args);
                }
            };
        }
예제 #9
0
 private void TimeUpdate(float time)
 {
     OnTimeUpdate?.Invoke(time);
 }