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(); } })); }
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; }
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); }
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); } }