public void OnMissionAccepted(EventArgs args) { if (args is MissionAcceptedEA ma) { MissionDisplayElement mde = Instantiate(_missionDisplayElementPrefab, transform); mde.Initialize(ma.Mission); float yLocalPosition = 0; for (int i = 0; i < _elements.Count; ++i) { yLocalPosition += _elements[i].Size.y; } mde.transform.localPosition = new Vector3(0, -yLocalPosition, 0); _elements.Add(mde); } else { Log.Instance.WriteException(new InvalidEventArgsException()); } }
public void OnMissionCompleted(EventArgs args) { if (args is MissionCompletedEA mc) { MissionDisplayElement mde = _elements.FirstOrDefault(x => x.Mission == mc.Mission); int index = _elements.FindIndex(0, x => x == mde); for (; index < _elements.Count; ++index) { _elements[index].transform.Translate(new Vector3(0, mde.Size.y)); } if (mde != null) { mde.Dispose(); _elements.Remove(mde); Destroy(mde.gameObject); } } else { Log.Instance.WriteException(new InvalidEventArgsException()); } }