完善角色配置UI
This commit is contained in:
parent
3c6679032d
commit
6d457c9ca2
Binary file not shown.
@ -37,7 +37,7 @@ void SCharacterWindow::Construct(const FArguments& InArgs)
|
||||
SelectedCharacter = *CharacterInfo;
|
||||
|
||||
this->CharacterWidget_Name->SetInputText(SelectedCharacter.name);
|
||||
this->CharacterWidget_Age->SetInputText(FString::FromInt(SelectedCharacter.age));
|
||||
this->CharacterWidget_Age->SetNumber(SelectedCharacter.age);
|
||||
this->CharacterWidget_Personality->SetInputText(SelectedCharacter.personality);
|
||||
this->CharacterWidget_Profession->SetInputText(SelectedCharacter.profession);
|
||||
this->CharacterWidget_BG->SetInputText(SelectedCharacter.characterBackground);
|
||||
@ -56,9 +56,10 @@ void SCharacterWindow::Construct(const FArguments& InArgs)
|
||||
.AutoHeight()
|
||||
.Padding(0, 10, 0, 0)
|
||||
[
|
||||
SAssignNew(CharacterWidget_Age, SConfigItem_Text)
|
||||
SAssignNew(CharacterWidget_Age, SConfigItem_NumberSpin<int32>)
|
||||
.Title(LOCTEXT("CharacterAge", "角色年龄"))
|
||||
.HintText(LOCTEXT("HintCharacterName", "请输入角色年龄"))
|
||||
.MinNumber(1)
|
||||
.MaxNumber(99)
|
||||
]
|
||||
+SVerticalBox::Slot()
|
||||
.AutoHeight()
|
||||
@ -92,6 +93,18 @@ void SCharacterWindow::Construct(const FArguments& InArgs)
|
||||
.Title(LOCTEXT("CharacterName", "角色对话风格"))
|
||||
.HintText(LOCTEXT("HintCharacterName", "请输入角色对话风格"))
|
||||
]
|
||||
+ SVerticalBox::Slot()
|
||||
.AutoHeight()
|
||||
.Padding(0, 10, 0, 0)
|
||||
[
|
||||
SNew( SButton)
|
||||
.Text(LOCTEXT("AddCharacter", "添加角色到服务器中"))
|
||||
.OnClicked_Lambda([this]()
|
||||
{
|
||||
AddCharacterToServer();
|
||||
return FReply::Handled();
|
||||
})
|
||||
]
|
||||
];
|
||||
// 注册绘制后回调
|
||||
RegisterActiveTimer(0.f,
|
||||
@ -148,4 +161,27 @@ void SCharacterWindow::HandleReceiveData(FNetProtocol protocol)
|
||||
}
|
||||
}
|
||||
|
||||
void SCharacterWindow::AddCharacterToServer()
|
||||
{
|
||||
FAIGCModule* ModulePtr = FModuleManager::GetModulePtr<FAIGCModule>("AIGC");
|
||||
if (ModulePtr)
|
||||
{
|
||||
//生成角色信息
|
||||
FCharacterInfo CharacterInfo;
|
||||
CharacterInfo.name = CharacterWidget_Name->GetInputText();
|
||||
CharacterInfo.age = CharacterWidget_Age->GetNumber();
|
||||
CharacterInfo.personality = CharacterWidget_Personality->GetInputText();
|
||||
CharacterInfo.profession = CharacterWidget_Profession->GetInputText();
|
||||
CharacterInfo.characterBackground = CharacterWidget_BG->GetInputText();
|
||||
CharacterInfo.chat_style = CharacterWidget_Style->GetInputText();
|
||||
|
||||
FString CharacterJson;
|
||||
FJsonObjectConverter::UStructToJsonObjectString(CharacterInfo, CharacterJson);
|
||||
|
||||
UWebSocketManager* WebSocketManager = ModulePtr->GetWebSocketManager();
|
||||
WebSocketManager->SendData(FNetCommand::AddCharacter, CharacterJson);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#undef LOCTEXT_NAMESPACE
|
@ -23,6 +23,7 @@ void SConfigItem_Text::Construct(const FArguments& InArgs)
|
||||
[
|
||||
SNew(SEditableTextBox)
|
||||
.HintText( InArgs._HintText)
|
||||
.VirtualKeyboardType(InArgs._KeyboardType)
|
||||
.Text_Lambda([this, InArgs]() {
|
||||
return FText::FromString(InputText);
|
||||
})
|
||||
|
@ -3,6 +3,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "ConfigItem_NumberSpin.h"
|
||||
#include "ConfigItem_Text.h"
|
||||
#include "Definations.h"
|
||||
|
||||
@ -20,10 +21,11 @@ public:
|
||||
EActiveTimerReturnType OnPostPaint(double X, float Arg);
|
||||
|
||||
void HandleReceiveData(FNetProtocol protocol);
|
||||
void AddCharacterToServer();
|
||||
protected:
|
||||
TSharedPtr<SComboBox<TSharedPtr<FCharacterInfo>>> CharacterComboBox;
|
||||
TSharedPtr<SConfigItem_Text> CharacterWidget_Name; //角色名称
|
||||
TSharedPtr<SConfigItem_Text> CharacterWidget_Age; //角色年龄
|
||||
TSharedPtr<SConfigItem_NumberSpin<int32>> CharacterWidget_Age; //角色年龄
|
||||
TSharedPtr<SConfigItem_Text> CharacterWidget_Personality; //角色性格
|
||||
TSharedPtr<SConfigItem_Text> CharacterWidget_Profession; //角色专业
|
||||
TSharedPtr<SConfigItem_Text> CharacterWidget_BG; //角色背景
|
||||
@ -34,3 +36,5 @@ protected:
|
||||
TArray<TSharedPtr<FCharacterInfo>> CharacterInfos;
|
||||
FCharacterInfo SelectedCharacter;
|
||||
};
|
||||
|
||||
|
||||
|
@ -53,11 +53,10 @@ public:
|
||||
];
|
||||
}
|
||||
NumericType GetNumber() const { return InputValue; }
|
||||
|
||||
void SetNumber(NumericType InValue) { InputValue = InValue; }
|
||||
private:
|
||||
void OnValueChanged(NumericType NewValue)
|
||||
{
|
||||
UE_LOG(LogTemp, Display, TEXT("OnValueChanged newvalue = %d"), (int32)NewValue);
|
||||
InputValue = NewValue;
|
||||
Invalidate(EInvalidateWidget::Layout);
|
||||
}
|
||||
|
@ -13,11 +13,12 @@ public:
|
||||
: _Title()
|
||||
, _HintText()
|
||||
, _DefaultText()
|
||||
,_KeyboardType(EKeyboardType::Keyboard_Default)
|
||||
{}
|
||||
SLATE_ARGUMENT(FText, Title) // 标题参数
|
||||
SLATE_ARGUMENT(FText, HintText) // 默认值参数
|
||||
SLATE_ARGUMENT(FText, DefaultText) // 默认值参数
|
||||
|
||||
SLATE_ARGUMENT(EKeyboardType, KeyboardType)
|
||||
SLATE_END_ARGS()
|
||||
|
||||
void Construct(const FArguments& InArgs);
|
||||
|
Loading…
x
Reference in New Issue
Block a user