/// <summary> /// 產生一個判斷遊戲事件條件式的物件 /// </summary> /// <param name="data">遊戲事件條件資料</param> /// <returns></returns> public static GameEventCondition CreateGameEventCondition(GameEventConditionData data) { GameEventConditionType gameEventConditionType; // 決定對應到的GameEventCondtionType if (data == null) { gameEventConditionType = GameEventConditionType.None; } else { if (data.CheckType.HasValue && Enum.IsDefined(typeof(GameEventConditionType), data.CheckType.Value)) { gameEventConditionType = (GameEventConditionType)data.CheckType.Value; } else { gameEventConditionType = GameEventConditionType.None; } } switch (gameEventConditionType) { case GameEventConditionType.Mark: return new GameEventCondition_Mark(data.CheckData, data.CheckOp, data.CheckTarget); case GameEventConditionType.Level: return new GameEventCondition_Level(data.CheckData, data.CheckOp, data.CheckTarget); //case GameEventConditionType.Money: // return default: return new GameEventCondition(); } }
/// <summary> /// 將index位置的Condition資料替換成oneData,如果list數量不足,填null直到index指示的位置。 /// </summary> /// <param name="index">要替換的資料位置</param> /// <param name="oneData">新資料</param> /// <returns>是否有資料被覆蓋</returns> public bool AddOrReplaceCoditionData(int index, GameEventConditionData oneData) { if (index >= _conditionList.Count) { for (int i = _conditionList.Count; i <= index; ++i) { _conditionList.Add(GameEventCondition.CreateGameEventCondition(null)); } } bool haveData = (_conditionList[index].GetType() != typeof(GameEventCondition)); // 型別不等於base型別,表示有資料會被蓋掉 _conditionList[index] = GameEventCondition.CreateGameEventCondition(oneData); return haveData; }