Skip to content

File NightSkyBattleWidget.cpp

File List > NightSkyEngine > Source > NightSkyEngine > UI > NightSkyBattleWidget.cpp

Go to the documentation of this file

// Fill out your copyright notice in the Description page of Project Settings.


#include "NightSkyBattleWidget.h"

#include "Serialization/ObjectReader.h"
#include "Serialization/ObjectWriter.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(NightSkyBattleWidget)

void UNightSkyBattleWidget::PlayStandardAnimations()
{
    PlayHealthAnim();
    PlayRecoverableHealthAnim();
    PlayTimerAnim();
    PlayMeterAnim();
    PlayGaugeAnim();
    PlayComboCounterAnim();
}

void UNightSkyBattleWidget::SetAnimationRollbackData()
{
    for (auto& [Anim, Time, bPlaying] : WidgetAnimationRollback)
    {
        if (IsAnimationPlaying(Anim))
        {
            bPlaying = true;
            Time = GetAnimationCurrentTime(Anim);
        }
    }
}

void UNightSkyBattleWidget::RollbackAnimations()
{
    for (const auto& [Anim, Time, bPlaying] : WidgetAnimationRollback)
    {
        if (bPlaying)
            PlayAnimation(Anim, Time);
        else
            SetAnimationCurrentTime(Anim, Time);
    }
}

TArray<uint8> UNightSkyBattleWidget::SaveForRollback()
{
    TArray<uint8> SaveData;
    FObjectWriter Writer(SaveData);
    Writer.ArIsSaveGame = true;
    GetClass()->SerializeBin(Writer, this);
    return SaveData;
}

void UNightSkyBattleWidget::LoadForRollback(const TArray<uint8>& InBytes)
{
    if (InBytes.Num() <= 1) return;
    FObjectReader Reader(InBytes);
    Reader.ArIsSaveGame = true;
    GetClass()->SerializeBin(Reader, this);
}