Beispiel #1
0
 public static void CancelNotification()
 {
     try
     {
         if (NotificationTask != null)
         {
             NotificationTask.Dispose();
             Text.SetActive(false);
             NotificationTask = null;
         }
     }
     catch { }
 }
Beispiel #2
0
        public static void ShowNotification(string text, long time)
        {
            if (Text == null)
            {
                Text = new CustomText(TextX, TextY, text);
                Text.TextRenderer.Centered = true;
                Text.TextRenderer.scale    = TextScale;
            }

            Text.Text = text;

            if (IsNotifying)
            {
                return;
            }

            IsNotifying = true;

            Task.Run(async() =>
            {
                Text.SetActive(true);
                Text.Color = new UnityEngine.Color(1, 1, 1, 0);

                CustomStopwatch stopwatch = new CustomStopwatch(true);

                while (stopwatch.ElapsedMilliseconds < time)
                {
                    float a = stopwatch.ElapsedMilliseconds / (time / 2f);

                    if (stopwatch.ElapsedMilliseconds > (time / 2))
                    {
                        a = (time - stopwatch.ElapsedMilliseconds) / (time / 2f);
                    }

                    Text.Color = new UnityEngine.Color(1, 1, 1, a);

                    await Task.Delay(1);

                    if (CancelNotification)
                    {
                        CancelNotification = false;

                        Text.SetActive(false);
                        return;
                    }
                }

                IsNotifying = false;
            });
        }
Beispiel #3
0
        public override void Loop()
        {
            base.Loop();

            GameModeSettingsAddition =
                $"\nAbility Active Period: {Functions.ColorPurple}{OnTime}s[]\n" +
                $"Ability Cooldown: {Functions.ColorPurple}{UseCooldown}s[]";

            if (!IsInGame)
            {
                return;
            }

            if (!PlayerController.LocalPlayer.PlayerData.IsImpostor)
            {
                return;
            }

            if (EnableDisableCollision == null)
            {
                EnableDisableCollision = new CustomButton(ButtonOffsetX, ButtonOffsetY, Functions.LoadSpriteFromAssemblyResource(Assembly.GetExecutingAssembly(), "QuantumTunnelingGameMode.Assets.collision.png"));
            }

            if (CollisionTextRenderer == null)
            {
                CollisionTextRenderer = new CustomText(TextOffsetX, TextOffsetY, $"{UseCooldown}");
                CollisionTextRenderer.TextRenderer.scale    = 2;
                CollisionTextRenderer.TextRenderer.Centered = true;
                CollisionTextRenderer.SetActive(false);
            }

            if (PlayerController.LocalPlayer.PlayerData.IsDead)
            {
                if (CollisionTextRenderer.Active)
                {
                    CollisionTextRenderer.SetActive(false);
                }

                if (EnableDisableCollision.Active)
                {
                    EnableDisableCollision.SetActive(false);
                }

                return;
            }

            string toDisplay = "--- [7a31f7ff]Quantum Tunneling[]---\n";

            if (IsEnabled)
            {
                toDisplay += $"Collision in [11c5edff]{ OnTime - (Functions.GetUnixTime() - LastEnabled) }s[]";

                CollisionTextRenderer.SetActive(true);
                CollisionTextRenderer.Text  = $"{ OnTime - (Functions.GetUnixTime() - LastEnabled) }";
                CollisionTextRenderer.Color = new Color(0, 1, 0);

                if (OnTime - (Functions.GetUnixTime() - LastEnabled) <= 0)
                {
                    PlayerController ctrl = PlayerController.LocalPlayer;
                    IsEnabled = false;

                    RpcManager.SendRpc(QuantumTunneling.QuantumTunnelingRpc, new byte[] { 2, ctrl.PlayerId, Convert.ToByte(IsEnabled) });
                    PlayerHudManager.HudManager.ShadowQuad.gameObject.SetActive(!IsEnabled);

                    ctrl.HasCollision = !IsEnabled;
                }
            }
            else
            {
                bool CanEnable = LastEnabled + OnTime + UseCooldown <= Functions.GetUnixTime();

                if (CanEnable)
                {
                    // ----- Can enable demat -----
                    if (((EnableDisableCollision.InBounds && Functions.GetKey(KeyCode.Mouse0)) || Functions.GetKey(UseKey)) && PlayerController.LocalPlayer.Moveable)
                    {
                        // ----- User pressed key -----
                        LastEnabled = Functions.GetUnixTime();

                        PlayerController ctrl = PlayerController.LocalPlayer;
                        IsEnabled = true;

                        EnableDisableCollision.SpriteRenderer.color = new Color(0.75f, 0.75f, 0.75f, 0.75f);

                        RpcManager.SendRpc(QuantumTunneling.QuantumTunnelingRpc, new byte[] { 2, ctrl.PlayerId, Convert.ToByte(IsEnabled) });
                        PlayerHudManager.HudManager.ShadowQuad.gameObject.SetActive(!IsEnabled);

                        ctrl.HasCollision = !IsEnabled;
                    }
                    else
                    {
                        // ----- Display can press key -----
                        toDisplay += $"Use [11c5edff]The Button[] to activate.";
                        EnableDisableCollision.SpriteRenderer.color = new Color(1, 1, 1);
                        CollisionTextRenderer.gameObject.SetActive(false);
                    }
                }
                else
                {
                    // ----- Cannot enable demat -----
                    toDisplay += $"Cooldown: [11c5edff]{ (UseCooldown + OnTime) - (Functions.GetUnixTime() - LastEnabled) }s[]";

                    CollisionTextRenderer.Text  = $"{ (UseCooldown + OnTime) - (Functions.GetUnixTime() - LastEnabled) }";
                    CollisionTextRenderer.Color = new Color(1, 1, 1);
                }
            }

            string curText = PlayerHudManager.TaskText;

            if (!curText.Contains(Delimiter))
            {
                PlayerHudManager.TaskText = toDisplay + Delimiter + PlayerHudManager.TaskText;
            }
            else if (!curText.Contains(toDisplay))
            {
                string toReplace = curText.Split(new string[] { Delimiter }, StringSplitOptions.None)[0];

                PlayerHudManager.TaskText = curText.Replace(toReplace, toDisplay);
            }
        }
        public override void Loop()
        {
            base.Loop();

            GameModeSettingsAddition =
                $"\nAbility Active Period: {Functions.ColorPurple}{OnTime}s[]\n" +
                $"Ability Cooldown: {Functions.ColorPurple}{UseCooldown}s[]";

            if (!IsInGame)
            {
                return;
            }

            foreach (var playerId in InvisiblePlayers)
            {
                PlayerController player = PlayerController.FromPlayerId(playerId);

                if (PlayerController.LocalPlayer.PlayerData.IsImpostor || PlayerController.LocalPlayer.PlayerData.IsDead)
                {
                    player.SetOpacity(0.5f);
                }
                else
                {
                    player.IsVisible = false;
                }
            }

            if (!PlayerController.LocalPlayer.PlayerData.IsImpostor)
            {
                return;
            }

            if (EnableDisableInvisibility == null)
            {
                EnableDisableInvisibility = new CustomButton(ButtonOffsetX, ButtonOffsetY, Functions.LoadSpriteFromAssemblyResource(Assembly.GetExecutingAssembly(), "ImpostorInvisibility.Assets.invisibility.png"));
            }

            if (InvisibilityTextRenderer == null)
            {
                InvisibilityTextRenderer = new CustomText(TextOffsetX, TextOffsetY, $"{UseCooldown}");
                InvisibilityTextRenderer.TextRenderer.scale    = 2;
                InvisibilityTextRenderer.TextRenderer.Centered = true;
                InvisibilityTextRenderer.SetActive(false);
            }

            if (PlayerController.LocalPlayer.PlayerData.IsDead)
            {
                if (InvisibilityTextRenderer.Active)
                {
                    InvisibilityTextRenderer.SetActive(false);
                }

                if (EnableDisableInvisibility.Active)
                {
                    EnableDisableInvisibility.SetActive(false);
                }

                return;
            }

            string toDisplay = "--- [7a31f7ff]Impostor Invisibility[]---\n";

            if (IsEnabled)
            {
                toDisplay += $"Visible in [11c5edff]{ OnTime - (Functions.GetUnixTime() - LastEnabled) }s[]";

                InvisibilityTextRenderer.SetActive(true);
                InvisibilityTextRenderer.Text  = $"{ OnTime - (Functions.GetUnixTime() - LastEnabled) }";
                InvisibilityTextRenderer.Color = new Color(0, 1, 0);

                if (OnTime - (Functions.GetUnixTime() - LastEnabled) <= 0)
                {
                    PlayerController ctrl = PlayerController.LocalPlayer;
                    IsEnabled = false;

                    RpcManager.SendRpc(ImpostorInvisibility.ImpostorInvisibilityRpc, new byte[] { 2, ctrl.PlayerId, Convert.ToByte(IsEnabled) });

                    if (IsEnabled)
                    {
                        InvisiblePlayers.Add(ctrl.PlayerId);
                    }
                    else if (InvisiblePlayers.Contains(ctrl.PlayerId))
                    {
                        InvisiblePlayers.Remove(ctrl.PlayerId);

                        var player = PlayerController.FromPlayerId(ctrl.PlayerId);
                        player.SetOpacity(1);

                        if (!player.PlayerControl.inVent)
                        {
                            player.IsVisible = true;
                        }
                    }
                }
            }
            else
            {
                bool CanEnable = LastEnabled + OnTime + UseCooldown <= Functions.GetUnixTime();

                if (CanEnable)
                {
                    // ----- Can enable demat -----
                    if (((EnableDisableInvisibility.InBounds && Functions.GetKey(KeyCode.Mouse0)) || Functions.GetKey(UseKey)) && PlayerController.LocalPlayer.Moveable)
                    {
                        // ----- User pressed key -----
                        LastEnabled = Functions.GetUnixTime();

                        PlayerController ctrl = PlayerController.LocalPlayer;
                        IsEnabled = true;

                        EnableDisableInvisibility.SpriteRenderer.color = new Color(0.75f, 0.75f, 0.75f, 0.75f);

                        RpcManager.SendRpc(ImpostorInvisibility.ImpostorInvisibilityRpc, new byte[] { 2, ctrl.PlayerId, Convert.ToByte(IsEnabled) });

                        if (IsEnabled)
                        {
                            InvisiblePlayers.Add(ctrl.PlayerId);
                        }
                        else if (InvisiblePlayers.Contains(ctrl.PlayerId))
                        {
                            InvisiblePlayers.Remove(ctrl.PlayerId);

                            var player = PlayerController.FromPlayerId(ctrl.PlayerId);
                            player.SetOpacity(1);

                            if (!player.PlayerControl.inVent)
                            {
                                player.IsVisible = true;
                            }
                        }
                    }
                    else
                    {
                        // ----- Display can press key -----
                        toDisplay += $"Use [11c5edff]{ UseKey }[] to activate.";
                        EnableDisableInvisibility.SpriteRenderer.color = new Color(1, 1, 1);
                        InvisibilityTextRenderer.gameObject.SetActive(false);
                    }
                }
                else
                {
                    // ----- Cannot enable demat -----
                    toDisplay += $"Cooldown: [11c5edff]{ (UseCooldown + OnTime) - (Functions.GetUnixTime() - LastEnabled) }s[]";

                    InvisibilityTextRenderer.Text  = $"{ (UseCooldown + OnTime) - (Functions.GetUnixTime() - LastEnabled) }";
                    InvisibilityTextRenderer.Color = new Color(1, 1, 1);
                }
            }

            string curText = PlayerHudManager.TaskText;

            if (!curText.Contains(Delimiter))
            {
                PlayerHudManager.TaskText = toDisplay + Delimiter + PlayerHudManager.TaskText;
            }
            else if (!curText.Contains(toDisplay))
            {
                string toReplace = curText.Split(new string[] { Delimiter }, StringSplitOptions.None)[0];

                PlayerHudManager.TaskText = curText.Replace(toReplace, toDisplay);
            }
        }