public void RemoveStatus(ViewStatusClass viewStatusClass) { Image imageToFree; if (_classesToStatusImages.TryGetValue(viewStatusClass, out imageToFree)) { _classesToStatusImages.Remove(viewStatusClass); PoolingManager.Free(PoolingManager.StatusImage, imageToFree.gameObject); } }
public void SetStatus(ViewStatusClass viewStatusClass, ActorStatusDefinition statusDefinition) { try { if (statusDefinition == null) { EntityUiPresenter.RemoveStatus(viewStatusClass); } else { EntityUiPresenter.SetStatus(viewStatusClass, statusDefinition); } } catch (Exception e) { Debug.LogError(e.Message + ", stack trace: " + e.StackTrace); } }
public void SetStatus(ViewStatusClass viewStatusClass, ActorStatusDefinition statusDefinition) { Image statusImage; if (_classesToStatusImages.ContainsKey(viewStatusClass)) { statusImage = _classesToStatusImages[viewStatusClass]; } else { statusImage = PoolingManager.Fetch(PoolingManager.StatusImage, _statusesGroup.transform.position, Quaternion.identity, _statusesGroup.transform) .GetComponent <Image>(); _classesToStatusImages[viewStatusClass] = statusImage; } statusImage.sprite = statusDefinition.Icon; statusImage.transform.localPosition = Vector3.zero; statusImage.transform.localScale = new Vector3(1, 1, 1); LayoutRebuilder.ForceRebuildLayoutImmediate(_statusesGroup.GetComponent <RectTransform>()); // prevents statuses from laying one on top of another }