/// <summary> /// 检查任务是不是需要采集 /// </summary> protected bool CheckTask() { curTarTaskInfo = GameCenter.taskMng.CurfocusTask; //SceneType sceneType = GameCenter.curGameStage.SceneType; if (curTarTaskInfo == null || curTarTaskInfo.ConditionRefList.Count <= 0) { return(false); } TaskConditionType conditionType = curTarTaskInfo.ConditionRefList[0].sort; if ((conditionType != TaskConditionType.CollectSceneItem && conditionType != TaskConditionType.CollectAnyItem) || curTarTaskInfo.ProgressConditionList[0] >= curTarTaskInfo.ConditionRefList[0].number) { return(false); } return(true); }
protected SceneItem GetTarSceneItem() { TaskInfo taskInfo = GameCenter.taskMng.CurfocusTask; if (taskInfo == null) { return(null); } TaskConditionType conditionType = taskInfo.ConditionRefList[0].sort; if (conditionType != TaskConditionType.CollectSceneItem && conditionType != TaskConditionType.CollectAnyItem) { return(null); } List <SceneItem> sceneItems = GameCenter.curGameStage.GetSceneItems(); float distance = float.MaxValue; SceneItem tarSceneItem = null; for (int i = 0, max = sceneItems.Count; i < max; i++) { SceneItem item = sceneItems[i]; if (item.IsTouchType != TouchType.TOUCH || item.isDummy) { continue; } if (conditionType == TaskConditionType.CollectSceneItem && item.ConfigID == taskInfo.ConditionRefList[0].data) { float sqr = (thisPlayer.transform.position - item.transform.position).sqrMagnitude; if (sqr < distance) { distance = sqr; tarSceneItem = item; } } if (conditionType == TaskConditionType.CollectAnyItem) { float sqr = (thisPlayer.transform.position - item.transform.position).sqrMagnitude; if (sqr < distance) { distance = sqr; tarSceneItem = item; } } } return(tarSceneItem); }
public static int GetCurrentValueFromConfig(TaskConditionConfigData configData) { TaskConditionType conditionType = configData.ConditionType; switch (conditionType) { case TaskConditionType.ConstructBuildingCondition: { BuildingType type = (BuildingType)configData.Value1; int result = 0; List <BuildingLogicData> buildings = LogicController.Instance.GetBuildings(type); foreach (BuildingLogicData building in buildings) { if (building.Level != 0) { result++; } } return(result); } case TaskConditionType.DestroyBuildingCondition: { BuildingType type = (BuildingType)configData.Value1; return(LogicController.Instance.PlayerData.GetDestroyBuilding(type)); } case TaskConditionType.HonourCondition: { return(LogicController.Instance.PlayerData.Honour); } case TaskConditionType.PlunderCondition: { if ((int)configData.Value1 == 0) { return(LogicController.Instance.PlayerData.PlunderTotalGold); } else if ((int)configData.Value1 == 1) { return(LogicController.Instance.PlayerData.PlunderTotalFood); } else { return(LogicController.Instance.PlayerData.PlunderTotalOil); } } case TaskConditionType.ProduceArmyCondition: { ArmyType armyType = (ArmyType)configData.Value1; return(LogicController.Instance.PlayerData.GetProduceArmyCount(armyType)); } case TaskConditionType.RemoveObjectCondition: { return(LogicController.Instance.PlayerData.RemoveTotalObject); } case TaskConditionType.UpgradeArmyCondition: { ArmyType armyType = (ArmyType)configData.Value1; return(LogicController.Instance.PlayerData.GetArmyLevel(armyType)); } case TaskConditionType.UpgradeBuildingCondition: { BuildingType buildingType = (BuildingType)configData.Value1; List <BuildingLogicData> buildings = LogicController.Instance.GetBuildings(buildingType); int result = 0; foreach (BuildingLogicData building in buildings) { if (building.Level > result) { result = building.Level; } } return(result); } case TaskConditionType.HireMercenaryCondition: { MercenaryType mercenaryType = (MercenaryType)configData.Value1; return(LogicController.Instance.PlayerData.GetMercenaryStartNO(mercenaryType)); } default: return(0); } }