SweetMacabreDream/Source/SURREALISM/JournalWidget.cpp

133 lines
3.3 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "JournalWidget.h"
#include "JournalPage.h"
#include "utils_functions.h"
void UJournalWidget::NativeConstruct()
{
Super::NativeConstruct();
// Meubler le journal
FString name = "another item";
FString desc = "Je suis un item de la liste dans le journal, je sert a tester le truc car c'est encore necessaire";
for (int i = 0; i < 25; i++) {
add_to_journal(name, desc);
}
}
void UJournalWidget::next_page()
{
if (current_page_number + 1 < current_number_of_pages)
{
current_page_number++;
}
}
void UJournalWidget::previous_page()
{
if (current_page_number - 1 >= 0)
{
current_page_number--;
}
}
void UJournalWidget::go_to_page(int page_number)
{
current_page_number = page_number;
}
void UJournalWidget::remove_page(int page_number)
{
if (page_number < current_number_of_pages)
{
journal_pages.RemoveAt(page_number);
current_number_of_pages = journal_pages.Num();
}
}
TArray<FString> UJournalWidget::get_current_page_entries_names()
{
if (current_page_number < current_number_of_pages)
{
return journal_pages[current_page_number]->get_all_entries_names();
}
return TArray<FString>();
}
FString UJournalWidget::get_entry_description(FString entry_name)
{
if (current_page_number < current_number_of_pages)
{
return journal_pages[current_page_number]->get_entry_description(entry_name);
}
return FString();
}
void UJournalWidget::clear_journal()
{
journal_pages.Empty();
UJournalPage page = UJournalPage();
journal_pages.Add(&page);
current_number_of_pages = journal_pages.Num();
}
void UJournalWidget::add_to_journal(FString item_name, FString item_description)
{
for (int i = 0; i < current_number_of_pages; i++)
{
if (journal_pages[i]->get_number_of_entries() < journal_pages[i]->max_page_entries)
{
//utils_functions::debug_print("added item to page");
journal_pages[i]->add_entry(item_name, item_description);
return;
}
}
UJournalPage* page = NewObject<UJournalPage>();
page->add_entry(item_name, item_description);
journal_pages.Add(page);
current_number_of_pages = journal_pages.Num();
return;
}
void UJournalWidget::print_current_page()
{
if (current_page_number < current_number_of_pages)
{
for (FString entry_name : journal_pages[current_page_number]->get_all_entries_names())
{
utils_functions::debug_print(TCHAR_TO_ANSI(*entry_name));
FString entry_description = journal_pages[current_page_number]->get_entry_description(entry_name);
utils_functions::debug_print(TCHAR_TO_ANSI(*entry_description));
}
}
return;
}
int UJournalWidget::get_current_number_of_page() {
return current_number_of_pages;
}
int UJournalWidget::get_number_of_entries_in_current_page() {
return journal_pages[current_page_number]->get_number_of_entries();
}
int UJournalWidget::add_page()
{
UJournalPage* page = NewObject<UJournalPage>();
journal_pages.Add(page);
current_number_of_pages = journal_pages.Num();
return current_number_of_pages;
}
int UJournalWidget::get_current_pages_number()
{
return current_page_number;
}