1
This commit is contained in:
@@ -143,6 +143,7 @@ use crate::module_bindings::{
|
||||
BigFishDraftCompileInput as BindingBigFishDraftCompileInput,
|
||||
BigFishGameDraft as BindingBigFishGameDraft,
|
||||
BigFishLevelBlueprint as BindingBigFishLevelBlueprint,
|
||||
BigFishMessageFinalizeInput as BindingBigFishMessageFinalizeInput,
|
||||
BigFishMessageSubmitInput as BindingBigFishMessageSubmitInput,
|
||||
BigFishPublishInput as BindingBigFishPublishInput,
|
||||
BigFishRunGetInput as BindingBigFishRunGetInput,
|
||||
@@ -302,6 +303,7 @@ use crate::module_bindings::{
|
||||
drag_puzzle_piece_or_group_procedure::drag_puzzle_piece_or_group as _,
|
||||
execute_custom_world_agent_action_procedure::execute_custom_world_agent_action as _,
|
||||
fail_ai_task_and_return_procedure::fail_ai_task_and_return as _,
|
||||
finalize_big_fish_agent_message_turn_procedure::finalize_big_fish_agent_message_turn as _,
|
||||
finalize_custom_world_agent_message_turn_procedure::finalize_custom_world_agent_message_turn as _,
|
||||
finalize_puzzle_agent_message_turn_procedure::finalize_puzzle_agent_message_turn as _,
|
||||
generate_big_fish_asset_procedure::generate_big_fish_asset as _,
|
||||
@@ -1574,6 +1576,35 @@ impl SpacetimeClient {
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn finalize_big_fish_agent_message(
|
||||
&self,
|
||||
input: BigFishMessageFinalizeRecordInput,
|
||||
) -> Result<BigFishSessionRecord, SpacetimeClientError> {
|
||||
let procedure_input = BindingBigFishMessageFinalizeInput {
|
||||
session_id: input.session_id,
|
||||
owner_user_id: input.owner_user_id,
|
||||
assistant_message_id: input.assistant_message_id,
|
||||
assistant_reply_text: input.assistant_reply_text,
|
||||
stage: parse_big_fish_creation_stage_record(input.stage.as_str())?,
|
||||
progress_percent: input.progress_percent,
|
||||
anchor_pack_json: input.anchor_pack_json,
|
||||
error_message: input.error_message,
|
||||
updated_at_micros: input.updated_at_micros,
|
||||
};
|
||||
|
||||
self.call_after_connect(move |connection, sender| {
|
||||
connection
|
||||
.procedures()
|
||||
.finalize_big_fish_agent_message_turn_then(procedure_input, move |_, result| {
|
||||
let mapped = result
|
||||
.map_err(|error| SpacetimeClientError::Procedure(error.to_string()))
|
||||
.and_then(map_big_fish_session_procedure_result);
|
||||
send_once(&sender, mapped);
|
||||
});
|
||||
})
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn compile_big_fish_draft(
|
||||
&self,
|
||||
session_id: String,
|
||||
@@ -5300,6 +5331,21 @@ fn format_big_fish_creation_stage(value: BindingBigFishCreationStage) -> &'stati
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_big_fish_creation_stage_record(
|
||||
value: &str,
|
||||
) -> Result<BindingBigFishCreationStage, SpacetimeClientError> {
|
||||
match value.trim() {
|
||||
"collecting_anchors" => Ok(BindingBigFishCreationStage::CollectingAnchors),
|
||||
"draft_ready" => Ok(BindingBigFishCreationStage::DraftReady),
|
||||
"asset_refining" => Ok(BindingBigFishCreationStage::AssetRefining),
|
||||
"ready_to_publish" => Ok(BindingBigFishCreationStage::ReadyToPublish),
|
||||
"published" => Ok(BindingBigFishCreationStage::Published),
|
||||
other => Err(SpacetimeClientError::Runtime(format!(
|
||||
"未知 big fish creation stage: {other}"
|
||||
))),
|
||||
}
|
||||
}
|
||||
|
||||
fn format_big_fish_anchor_status(value: BindingBigFishAnchorStatus) -> &'static str {
|
||||
match value {
|
||||
BindingBigFishAnchorStatus::Confirmed => "confirmed",
|
||||
@@ -6445,6 +6491,19 @@ pub struct BigFishMessageSubmitRecordInput {
|
||||
pub submitted_at_micros: i64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct BigFishMessageFinalizeRecordInput {
|
||||
pub session_id: String,
|
||||
pub owner_user_id: String,
|
||||
pub assistant_message_id: Option<String>,
|
||||
pub assistant_reply_text: Option<String>,
|
||||
pub stage: String,
|
||||
pub progress_percent: u32,
|
||||
pub anchor_pack_json: String,
|
||||
pub error_message: Option<String>,
|
||||
pub updated_at_micros: i64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct BigFishAssetGenerateRecordInput {
|
||||
pub session_id: String,
|
||||
|
||||
Reference in New Issue
Block a user