#pragma once #include "CoreMinimal.h" #include "MAICharacterBase.h" #include "MAIEnemyShooter.generated.h" class AMWeapon; UCLASS() class MECHDEFENCE_API AMAIEnemyShooter : public AMAICharacterBase { GENERATED_BODY() public: AMAIEnemyShooter(); protected: UPROPERTY(EditDefaultsOnly, BlueprintReadonly, Category = "Shooter") TSubclassOf StarterWeaponClass; UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "Shooter") bool bCanIdle; UPROPERTY(EditDefaultsOnly, BlueprintReadonly, Category = "Shooter") float PatrolRadius; UPROPERTY(VisibleAnywhere, BlueprintReadonly, Category = "Shooter", meta = (Tooltip = "The place where this actor was when the level began. Used to generate a random point within a radius when in patrol mode")) FVector StartingLocation; UPROPERTY(BlueprintReadonly, Category = "Shooter") FName WeaponSocketName; UPROPERTY(VisibleAnywhere, BlueprintReadonly, Category = "Shooter") AMWeapon* CurrentWeapon; UFUNCTION(BlueprintCallable, Category = "Shooter") FVector PickNextPartrolDestination(); virtual void BeginPlay() override; virtual UShapeComponent* GetSafeZoneOverlappingShape() override; };