Files
Fortis/Source/FORTIS_Taktika/Public/ResComApartmentManager.h
T
2024-04-02 14:53:13 +05:00

210 lines
4.4 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "ResComPoint.h"
#include "Engine/Texture2DDynamic.h"
#include "CoreMinimal.h"
//#include "GameFramework/Actor.h"
#include "ResComApartmentManager.generated.h"
USTRUCT(BlueprintType)
struct FApartmentLocation
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 locHouse = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 locEntrance = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 locFloor = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 locApartment = 0;
bool operator==(FApartmentLocation& loc) const
{
return (loc.locHouse == locHouse) && (loc.locFloor == locFloor) && (loc.locEntrance == locEntrance) && (loc.locApartment == locApartment);
}
int32 AsNum() const
{
return (locHouse * 10000 + locEntrance * 1000 + locFloor * 100 + locApartment);
}
};
USTRUCT(BlueprintType)
struct FApartmentQuantities
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 rooms = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 toilets = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 bedrooms = 0;
};
UENUM(BlueprintType)
enum RoomType
{
room UMETA(DisplayName = "room"),
bedroom UMETA(DisplayName = "bedroom"),
toilet UMETA(DisplayName = "toilet"),
bathroom UMETA(DisplayName = "bathroom"),
wardrobe UMETA(DisplayName = "wardrobe"),
hallway UMETA(DisplayName = "hallway"),
balcony UMETA(DisplayName = "balcony"),
kitchen UMETA(DisplayName = "kitchen"),
livingRoom UMETA(DisplayName = "livingRoom"),
kitchen_livingRoom UMETA(DisplayName = "kitchen_livingRoom"),
};
UENUM(BlueprintType)
enum ApartmentType
{
default_ UMETA(DisplayName = "default"),
studio UMETA(DisplayName = "studio"),
duplex UMETA(DisplayName = "duplex"),
};
USTRUCT(BlueprintType)
struct FRoomArea
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TEnumAsByte<RoomType> type = RoomType::room;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float meters = 0.0f;
};
USTRUCT(BlueprintType)
struct FApartmentAreas
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float full = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FRoomArea> rooms;
};
USTRUCT(BlueprintType)
struct FApartmentCosts
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float full = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float month = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float meter = 0.0f;
};
USTRUCT(BlueprintType)
struct FApartmentReferences
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<UTexture2DDynamic*> textures;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
AResComPoint* point = nullptr;
};
USTRUCT(BlueprintType)
struct FApartment
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 id = -1;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString nameRC;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FApartmentLocation loc;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool favorite = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TEnumAsByte<ApartmentType> type;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FApartmentReferences references;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FApartmentQuantities quantities;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FApartmentAreas areas;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FApartmentCosts costs;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FString> properties;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString description;
};
UCLASS(BlueprintType)
class FORTIS_TAKTIKA_API UResComApartmentManager : public UObject
{
GENERATED_BODY()
private:
TArray<FApartment> apartments;
FApartment notValid;
public:
UResComApartmentManager();
// valid
UFUNCTION(BlueprintCallable = "valid")
bool IsValid(FApartment apartment) const;
//modify
UFUNCTION(BlueprintCallable = "modify")
void Push(FApartment apartment);
UFUNCTION(BlueprintCallable = "modify")
void ClearFavorites();
// get
UFUNCTION(BlueprintCallable, Category = "get")
FApartment& GetByID(int32 id);
UFUNCTION(BlueprintCallable, Category = "get")
FApartment& GetByLoc(FApartmentLocation loc);
UFUNCTION(BlueprintCallable, Category = "get")
TArray<FApartment> GetFavorites();
//sort
UFUNCTION(BlueprintCallable, Category = "sort")
void SortByLoc();
UFUNCTION(BlueprintCallable, Category = "sort")
void SortByID();
};