Example #1
0
    public int CompareTo(Mission missionB)
    {
        Mission missionA = this;

        int timeA = missionA.missionEndTime;
        int timeB = missionB.missionEndTime;

        if (missionA.factory.nearestEnemy != null)
        {
            timeA += missionA.factory.nearestEnemyDistance;
        }

        if (missionB.factory.nearestEnemy != null)
        {
            timeB += missionB.factory.nearestEnemyDistance;
        }

        int endTime = Math.Max(timeA, timeB);

        MissionReward rewardA = MissionReward.CalculateReward(missionA, endTime);
        MissionReward rewardB = MissionReward.CalculateReward(missionB, endTime);

        //Console.Error.WriteLine(missionA.factory.id + "-" + missionB.factory.id + ": " +
        //    rewardA.combinedReward + "-" + rewardB.combinedReward);

        foreach (var mission in missionA.prereqs)
        {
            if (missionB == mission)
            {
                return(rewardA.combinedReward.CompareTo(
                           rewardA.combinedReward + rewardB.combinedReward));
            }
        }

        foreach (var mission in missionB.prereqs)
        {
            if (missionA == mission)
            {
                return((rewardA.combinedReward + rewardB.combinedReward).CompareTo(rewardB));
            }
        }

        return(rewardA.combinedReward.CompareTo(rewardB.combinedReward));
    }
Example #2
0
    public static int CompareTo(Mission missionA, Mission missionB)
    {
        int timeA = missionA.missionEndTime;
        int timeB = missionB.missionEndTime;

        if (missionA.factory.nearestEnemy != null)
        {
            timeA += missionA.factory.nearestEnemyDistance;
        }

        if (missionB.factory.nearestEnemy != null)
        {
            timeB += missionB.factory.nearestEnemyDistance;
        }

        int endTime = Math.Max(timeA, timeB);

        MissionReward rewardA = MissionReward.CalculateReward(missionA, endTime);
        MissionReward rewardB = MissionReward.CalculateReward(missionB, endTime);

        return(rewardA.combinedReward - rewardB.combinedReward);

        //
    }