private void Start()
        {
            // Create Kill Button
            killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
            killButtonManager.gameObject.SetActive(true);
            killButtonManager.TimerText.enabled = false;
            UnityEngine.Object.Destroy(killButtonManager.GetComponent <SpriteRenderer>());
            PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener((UnityEngine.Events.UnityAction)listner);
            void listner()
            {
                if ((!showDead && Player.Data.IsDead) || BlackList.Any(item => item.PlayerId == Player.PlayerId))
                {
                    return;
                }

                StopPlayerSelection();
                OnClick();
            }

            if (killButtonManager.transform.localPosition.x > 0f)
            {
                killButtonManager.transform.localPosition = new Vector3((killButtonManager.transform.localPosition.x + 1.3f) * -1, killButtonManager.transform.localPosition.y, killButtonManager.transform.localPosition.z) + new Vector3(PositionOffset.x, PositionOffset.y);
            }

            // Create Text for Button.
            TextPlaynerName       = TextRendererExtensions.AddTextRenderer(new GameObject("PlayerName"));
            TextPlaynerName.Text  = Player.Data.PlayerName;
            TextPlaynerName.Color = Palette.PlayerColors[Player.Data.ColorId];
            TextPlaynerName.transform.SetParent(killButtonManager.transform);
            TextPlaynerName.transform.localPosition = new Vector2(0, -0.25f);
            TextPlaynerName.transform.localScale    = new Vector3(0.8f, 0.8f, 1f);
            TextPlaynerName.Centered = true;
            TextPlaynerName.GetComponent <MeshRenderer>().sortingOrder = 100;

            // PlayerIcon
            herePoint.gameObject.transform.SetParent(killButtonManager.transform);
            herePoint.transform.localPosition = Vector2.zero;
            herePoint.transform.localScale    = new Vector2(2.5f, 2.5f);

            // If Player is dead, and you don't want to show dead.
            if ((!showDead && Player.Data.IsDead) || BlackList.Any(item => item.PlayerId == Player.PlayerId))
            {
                TextPlaynerName.Color = new Color(TextPlaynerName.Color.r, TextPlaynerName.Color.g, TextPlaynerName.Color.b, 0.3f);
                herePoint.color       = new Color(herePoint.color.r, herePoint.color.g, herePoint.color.b, 0.3f);
            }
        }
        private void Start()
        {
            killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
            startColorButton  = killButtonManager.renderer.color;
            startColorText    = killButtonManager.TimerText.Color;
            killButtonManager.gameObject.SetActive(true);
            killButtonManager.renderer.enabled = true;
            Texture2D tex      = new Texture2D(2, 2, TextureFormat.ARGB32, false);
            Assembly  assembly = Assembly.GetExecutingAssembly();

            tex.LoadImage(assembly.GetManifestResourceStream(ResourceName).ReadFully(), false);
            killButtonManager.renderer.sprite = tex.CreateSprite();
            PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);
            void listener()
            {
                if (Timer < 0f && canUse)
                {
                    killButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                    if (hasEffectDuration)
                    {
                        isEffectActive = true;
                        Timer          = EffectDuration;
                        killButtonManager.TimerText.Color = new Color(0, 255, 0);
                    }
                    OnClick();
                }
            }
        }
    private void Start()
    {
        killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
        startColorButton  = killButtonManager.renderer.color;
        startColorText    = killButtonManager.TimerText.Color;
        killButtonManager.gameObject.SetActive(true);
        killButtonManager.renderer.enabled = true;
        Texture2D tex      = GUIExtensions.CreateEmptyTexture();
        Assembly  assembly = Assembly.GetExecutingAssembly();
        Stream    myStream = assembly.GetManifestResourceStream(ResourceName);

        byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(myStream);
        ImageConversion.LoadImage(tex, buttonTexture, false);
        killButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex);
        PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

        button.OnClick.RemoveAllListeners();
        button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);
        void listener()
        {
            if (Timer < 0f && canUse)
            {
                killButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                if (hasEffectDuration)
                {
                    isEffectActive = true;
                    Timer          = EffectDuration;
                    killButtonManager.TimerText.Color = new Color(0, 255, 0);
                }
                OnClick();
            }
        }
    }
        private void CreateButton(HudManager hudManager)
        {
            if (killButtonManager != null || !hudManager?.KillButton /*|| imageData == null*/)
            {
                return;
            }

            killButtonManager = Object.Instantiate(hudManager.KillButton, hudManager.transform);

            PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener(new Action(() =>
            {
                if (!IsUsable)
                {
                    return;
                }

                PerformMorph();
            }));

            killButtonManager.gameObject.SetActive(HudVisible && Visible);
            killButtonManager.renderer.enabled = HudVisible && Visible;
        }
        /// <summary>
        /// Call in HudManager.Start
        /// </summary>
        private CooldownButton(Assembly asm, Action onClick, float cooldown, string embeddedResourcePath /*, float pixelsPerUnit*/, Vector2 positionOffset, ButtonCategory category, HudManager hudManager, bool hasEffectDuration, float effectDuration, Action onEffectEnd)
        {
            OnEffectEnd    = onEffectEnd;
            PositionOffset = positionOffset;
            EffectDuration = effectDuration;
            Category       = category;
            //PixelsPerUnit = pixelsPerUnit;
            MaxTimer = cooldown;
            Timer    = MaxTimer;

            Buttons.Add(this);

            string embeddedResourceFullPath = asm.GetManifestResourceNames().FirstOrDefault(resourceName => resourceName.EndsWith(embeddedResourcePath, StringComparison.Ordinal));

            if (string.IsNullOrEmpty(embeddedResourceFullPath))
            {
                throw new ArgumentNullException(nameof(embeddedResourcePath), $"The embedded resource \"{embeddedResourcePath}\" was not found in assembly \"{asm.GetName().Name}\".");
            }

            Stream resourceStream = asm.GetManifestResourceStream(embeddedResourceFullPath);

            KillButtonManager = Object.Instantiate(hudManager.KillButton, hudManager.transform);

            //StartColorButton = killButtonManager.renderer.color;
            StartColorText = KillButtonManager.TimerText.Color;

            KillButtonManager.gameObject.SetActive(true);
            KillButtonManager.renderer.enabled = true;

            Texture2D tex = GUIExtensions.CreateEmptyTexture();

            byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(resourceStream);
            ImageConversion.LoadImage(tex, buttonTexture, false);
            KillButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex);

            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener(new Action(() =>
            {
                if (Timer < 0f && CanUse)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);

                    if (hasEffectDuration)
                    {
                        IsEffectActive = true;

                        Timer = EffectDuration;

                        KillButtonManager.TimerText.Color = new Color(0, 255, 0);
                    }

                    onClick();
                }
            }));
        }
Exemple #6
0
        private void CreateButton(HudManager hudManager)
        {
            if (killButtonManager != null || !hudManager?.KillButton)
            {
                return;
            }

            killButtonManager = Object.Instantiate(hudManager.KillButton, hudManager.transform);

            // Load texture and create sprites
            texture = new Texture2D(MorphButtonImage.Width, MorphButtonImage.Height, TextureFormat.RGBA32, false);//, TextureFormat.RGBA32, Texture.GenerateAllMips, false, IntPtr.Zero);
            texture.LoadRawTextureData(MorphButtonImage.Data);
            texture.Apply(true, true);

            int numSprites = MorphButtonImage.NumberOfSprites;
            int cols       = MorphButtonImage.Cols;
            int rows       = MorphButtonImage.Rows;

            sprites = new Sprite[numSprites];
            for (int i = 0; i < numSprites; i++)
            {
                int j = i % (numSprites / rows);
                //int j = 1;
                int k = i / (numSprites / rows);

                //Metamorphosis.Logger.LogMessage($"Create button: color id: {i}, ({j}, {k})");

                sprites[i] = Sprite.Create(texture, new Rect(j * MorphButtonImage.Width / cols, k * MorphButtonImage.Height / rows, MorphButtonImage.Width / cols, MorphButtonImage.Height / rows), new Vector2(0.5f, 0.5f));
            }
            //killButtonManager.renderer.sprite = sprites[0];

            PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener((UnityAction)(() =>
            {
                if (!IsUsable)
                {
                    return;
                }

                PerformMorph();
            }));

            killButtonManager.gameObject.SetActive(HudVisible && Visible);
            killButtonManager.renderer.enabled = HudVisible && Visible;
        }
Exemple #7
0
        private void Update()
        {
            KillButtonManager.transform.localPosition = _positionOffset;
            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);
            void listener()
            {
                if (Timer < 0f && _canUse && _enabled && HasTarget() && PlayerControl.LocalPlayer.CanMove)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                    Timer = MaxTimer;
                    OnClick();
                }
            }

            KillButtonManager.renderer.sprite = Sprite;
            if (Timer < 0f)
            {
                if (_enabled && HasTarget() && PlayerControl.LocalPlayer.CanMove)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 1f);
                }
                else
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, .3f);
                }
            }
            else
            {
                if (_canUse && PlayerControl.LocalPlayer.CanMove)
                {
                    Timer -= Time.deltaTime;
                }
                KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                KillButtonManager.renderer.material.SetFloat("_Desat", 0f);
            }
            KillButtonManager.gameObject.SetActive(_canUse && MeetingHud.Instance == null);
            KillButtonManager.renderer.enabled = _canUse && MeetingHud.Instance == null;
            if (_canUse)
            {
                KillButtonManager.renderer.material.SetFloat("_Desat", 0f);
                KillButtonManager.SetCoolDown(Timer, MaxTimer);
            }
        }
        /// <summary>
        /// Creates an instance of <see cref="KillButtonManager"/> when one does not exist.
        /// </summary>
        private void CreateButton()
        {
            if (KillButtonManager != null || !HudManager.Instance?.KillButton || ImageData == null)
            {
                return;
            }

            KillButtonManager = Object.Instantiate(HudManager.Instance.KillButton, HudManager.Instance.transform);

            KillButtonManager.gameObject.SetActive(HudVisible && Visible);
            KillButtonManager.renderer.enabled = HudVisible && Visible;

            Texture2D tex = GUIExtensions.CreateEmptyTexture();

            ImageConversion.LoadImage(tex, ImageData, false);

            KillButtonManager.renderer.sprite = ButtonSprite = tex.CreateSprite();

            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener(new Action(() =>
            {
                if (!IsUsable)
                {
                    return;
                }

                CancelEventArgs args = new CancelEventArgs();
                OnClick?.SafeInvoke(this, args, nameof(OnClick));

                if (args.Cancel)
                {
                    return;              // Click was cancelled.
                }
                if (HasEffect)
                {
                    StartEffect();

                    return;
                }

                ApplyCooldown();
            }));
        }
    public CustomButton(Action OnClick, Func <bool> HasButton, Func <bool> CouldUse, Action OnMeetingEnds, Sprite Sprite, Vector3 PositionOffset, HudManager hudManager, bool HasEffect, float EffectDuration, Action OnEffectEnds, bool mirror = false)
    {
        this.hudManager     = hudManager;
        this.OnClick        = OnClick;
        this.HasButton      = HasButton;
        this.CouldUse       = CouldUse;
        this.PositionOffset = PositionOffset;
        this.OnMeetingEnds  = OnMeetingEnds;
        this.HasEffect      = HasEffect;
        this.EffectDuration = EffectDuration;
        this.OnEffectEnds   = OnEffectEnds;
        this.Sprite         = Sprite;
        this.mirror         = mirror;
        Timer = 16.2f;
        buttons.Add(this);
        killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
        PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

        button.OnClick.RemoveAllListeners();
        button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);

        void listener()
        {
            if (this.Timer < 0f && HasButton() && CouldUse())
            {
                killButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                this.OnClick();

                if (this.HasEffect && !this.isEffectActive)
                {
                    this.Timer = this.EffectDuration;
                    killButtonManager.TimerText.color = new Color(0F, 0.8F, 0F);
                    this.isEffectActive = true;
                }
            }
        }

        setActive(false);
    }
    public CustomButton(Action OnClick, Func <bool> HasButton, Func <bool> CouldUse, Action OnMeetingEnds, Sprite Sprite, Vector3 PositionOffset, HudManager hudManager, KeyCode?hotkey, bool HasEffect, float EffectDuration, Action OnEffectEnds, bool mirror = false)
    {
        this.hudManager     = hudManager;
        this.OnClick        = OnClick;
        this.HasButton      = HasButton;
        this.CouldUse       = CouldUse;
        this.PositionOffset = PositionOffset;
        this.OnMeetingEnds  = OnMeetingEnds;
        this.HasEffect      = HasEffect;
        this.EffectDuration = EffectDuration;
        this.OnEffectEnds   = OnEffectEnds;
        this.Sprite         = Sprite;
        this.mirror         = mirror;
        this.hotkey         = hotkey;
        Timer = 16.2f;
        buttons.Add(this);
        killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
        PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

        button.OnClick = new Button.ButtonClickedEvent();
        button.OnClick.AddListener((UnityEngine.Events.UnityAction)onClickEvent);

        setActive(false);
    }
Exemple #11
0
        private void Update()
        {
            if (KillButtonManager.transform.localPosition.x > 0f)
            {
                KillButtonManager.transform.localPosition = new Vector3((KillButtonManager.transform.localPosition.x + 1.3f) * -1, KillButtonManager.transform.localPosition.y, KillButtonManager.transform.localPosition.z) + new Vector3(PositionOffset.x, PositionOffset.y);
            }
            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);
            void listener()
            {
                if (Timer < 0f && CanUse_ && Enabled)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                    if (HasEffectDuration)
                    {
                        IsEffectActive = true;
                        Timer          = EffectDuration;
                        KillButtonManager.TimerText.color = new Color(0, 255, 0);
                    }
                    else
                    {
                        Timer = MaxTimer;
                    }
                    OnClick();
                }
            }

            KillButtonManager.renderer.sprite = this.Sprite_;
            if (Timer < 0f)
            {
                if (Enabled)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 1f);
                }
                else
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, .3f);
                }
                if (IsEffectActive)
                {
                    KillButtonManager.TimerText.color = new Color(255, 255, 255);
                    Timer          = MaxTimer;
                    IsEffectActive = false;
                    OnEffectEnd();
                }
            }
            else
            {
                if (CanUse_ && (PlayerControl.LocalPlayer.CanMove || IsEffectActive))
                {
                    Timer -= Time.deltaTime;
                }
                KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
            }
            KillButtonManager.gameObject.SetActive(CanUse_);
            KillButtonManager.renderer.enabled = CanUse_;
            if (CanUse_)
            {
                KillButtonManager.renderer.material.SetFloat("_Desat", 0f);
                KillButtonManager.SetCoolDown(Timer, MaxTimer);
            }
        }