Exemple #1
0
    /// <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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
        }
    }