public override void Init(Transform contSoldier)
    {
        base.Init(contSoldier);

        //maxErrorToPos = SoldierGeneral.SoldierMaxErrorToPos;
        maxErrorToPos = 1;

        onPosFightInPointInfo = soldInfo.soldierGeneralInfo.defaultOnPosFightInPointInfo;

        if (soldCharInfo.FightSide == FightSideEnum.Enemy)
        {
            InitAIVoiceSitu(AIVoiceSituation.Agressive);
        }
    }
    //bool SlowlyCheckPlayerInCritStateWhileInFightInPos()
    //{
    //    time_CheckPlayerInCritStateWhileInFightInPos_Counter = MathfPlus.DecByDeltatimeToZero(time_CheckPlayerInCritStateWhileInFightInPos_Counter);

    //    if (time_CheckPlayerInCritStateWhileInFightInPos_Counter <= 0)
    //    {
    //        if (soldInfo.IsCharInViewAndTargettable(mapLogic.player))
    //            return true;
    //    }

    //    return false;
    //}

    bool CheckIsCurrentPointOkForPlayerCritState()
    {
        bool isThisFightPointStillOk = false;

        foreach (SoldierFightInPointInfo fipi in selectedFightPoint.fightInfos)
        {
            SoldierFightInPointInfo sfi = fipi;

            Vector3 rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name));

            CharRaycastResult charRayRes;

            if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes))
            {
                isThisFightPointStillOk = true;
                break;
            }

            if (fipi.playerCriticalFightInfoInCover != null)
            {
                sfi = fipi.playerCriticalFightInfoInCover;

                rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name));

                if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes))
                {
                    isThisFightPointStillOk = true;
                    break;
                }
            }

            if (fipi.playerCriticalFightInfoInShoot != null)
            {
                sfi = fipi.playerCriticalFightInfoInShoot;

                rayCastPos = SoldierStats.GetShootingRaycastPos(controlledSoldier.position, selectedFightPoint.transform.rotation, sfi.GetRaycastOffsetForGun(soldInfo.gun.name));

                if (mapLogic.IsCharacterOkAsTarget(controlledSoldier.gameObject, mapLogic.player, rayCastPos, selectedFightPoint.transform.rotation, soldInfo.fightRange, sfi.shootingStartAngle, sfi.shootingEndAngle, out charRayRes))
                {
                    isThisFightPointStillOk = true;
                    break;
                }
            }
        }

        return(isThisFightPointStillOk);
    }
Example #3
0
 public static Vector3 GetShootingRaycastPos(Vector3 _basePos, Quaternion _baseRot, SoldierFightInPointInfo _info, SoldierGun _gun)
 {
     return(GetShootingRaycastPos(_basePos, _baseRot, _info.GetRaycastOffsetForGun(_gun.name)));
 }