示例#1
0
    protected override bool IsMainTransfer(ArmyWithTask army)
    {
        NavyArmy navyArmy = army as NavyArmy;

        if (navyArmy != null)
        {
            NavyTask_Reinforcement navyTask_Reinforcement = navyArmy.NavyLayer.FindTask <NavyTask_Reinforcement>((NavyTask_Reinforcement match) => match.TargetGuid == army.Garrison.GUID);
            if (navyTask_Reinforcement == null || navyTask_Reinforcement.AssignedArmy == null || navyTask_Reinforcement.AssignedArmy.Garrison == null || navyTask_Reinforcement.AssignedArmy.Garrison.GUID != army.MainAttackableTarget.GUID)
            {
                return(true);
            }
        }
        return(base.IsMainTransfer(army));
    }
示例#2
0
    protected bool HasReinforcementClose(BaseNavyArmy army)
    {
        NavyArmy navyArmy = army as NavyArmy;

        if (navyArmy == null || navyArmy.NavyLayer == null)
        {
            return(false);
        }
        NavyTask_Reinforcement navyTask_Reinforcement = navyArmy.NavyLayer.FindTask <NavyTask_Reinforcement>((NavyTask_Reinforcement match) => match.TargetGuid == army.Garrison.GUID);

        if (navyTask_Reinforcement != null && navyTask_Reinforcement.AssignedArmy != null)
        {
            float        num          = (float)this.worldPositionService.GetDistance(navyTask_Reinforcement.AssignedArmy.Garrison.WorldPosition, army.Garrison.WorldPosition);
            BaseNavyArmy baseNavyArmy = navyTask_Reinforcement.AssignedArmy as BaseNavyArmy;
            float        num2         = num / baseNavyArmy.GetMaximumMovement();
            if (num2 < 2f)
            {
                return(true);
            }
        }
        return(false);
    }