/// <summary> /// 將index位置的TrueEffect資料替換成oneData,如果list數量不足,填null直到index指示的位置。 /// </summary> /// <param name="index">要替換的資料位置</param> /// <param name="oneData">新資料</param> /// <returns>是否有資料被覆蓋</returns> public bool AddOrReplaceTrueEffectData(int index, GameEventEffectData oneData) { if (index >= _trueEffect.Count) { for (int i = _trueEffect.Count; i <= index; ++i) { _trueEffect.Add(GameEventEffect.CreateGameEventEffect(null)); } } bool haveData = (_trueEffect[index].GetType() != typeof(GameEventEffect)); // 型別不等於base型別,表示有資料會被蓋掉 _trueEffect[index] = GameEventEffect.CreateGameEventEffect(oneData); return haveData; }
// ushort? type, ushort?[] para) public static GameEventEffect CreateGameEventEffect(GameEventEffectData data) { GameEventEffectType gameEventEffectType; if (data == null) { gameEventEffectType = GameEventEffectType.None; } else { if (data.EffectType.HasValue && Enum.IsDefined(typeof(GameEventEffectType), data.EffectType.Value)) { gameEventEffectType = (GameEventEffectType)data.EffectType.Value; } else { gameEventEffectType = GameEventEffectType.None; } } switch (gameEventEffectType) { case GameEventEffectType.Transport: return new GameEventEffect_Transport(data.EffectParameter); default: return new GameEventEffect(); } }