make emotions named instead, add drop prop
This commit is contained in:
parent
989e20757b
commit
ea3b444d71
19 changed files with 1429 additions and 150 deletions
|
|
@ -5,7 +5,7 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::models::{ChannelMemberInfo, ChannelMemberWithAvatar};
|
||||
use crate::models::{ChannelMemberInfo, ChannelMemberWithAvatar, LooseProp};
|
||||
|
||||
/// Client-to-server WebSocket messages.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
|
@ -19,10 +19,10 @@ pub enum ClientMessage {
|
|||
y: f64,
|
||||
},
|
||||
|
||||
/// Update emotion (0-9).
|
||||
/// Update emotion by name.
|
||||
UpdateEmotion {
|
||||
/// Emotion slot (0-9, keyboard: e0-e9).
|
||||
emotion: u8,
|
||||
/// Emotion name (e.g., "happy", "sad", "neutral").
|
||||
emotion: String,
|
||||
},
|
||||
|
||||
/// Ping to keep connection alive.
|
||||
|
|
@ -33,6 +33,18 @@ pub enum ClientMessage {
|
|||
/// Message content (max 500 chars).
|
||||
content: String,
|
||||
},
|
||||
|
||||
/// Drop a prop from inventory to the canvas.
|
||||
DropProp {
|
||||
/// Inventory item ID to drop.
|
||||
inventory_item_id: Uuid,
|
||||
},
|
||||
|
||||
/// Pick up a loose prop from the canvas.
|
||||
PickUpProp {
|
||||
/// Loose prop ID to pick up.
|
||||
loose_prop_id: Uuid,
|
||||
},
|
||||
}
|
||||
|
||||
/// Server-to-client WebSocket messages.
|
||||
|
|
@ -79,8 +91,8 @@ pub enum ServerMessage {
|
|||
user_id: Option<Uuid>,
|
||||
/// Guest session ID (if guest).
|
||||
guest_session_id: Option<Uuid>,
|
||||
/// New emotion slot (0-9).
|
||||
emotion: u8,
|
||||
/// Emotion name (e.g., "happy", "sad", "neutral").
|
||||
emotion: String,
|
||||
/// Asset paths for all 9 positions of the new emotion layer.
|
||||
emotion_layer: [Option<String>; 9],
|
||||
},
|
||||
|
|
@ -108,8 +120,8 @@ pub enum ServerMessage {
|
|||
display_name: String,
|
||||
/// Message content.
|
||||
content: String,
|
||||
/// Current emotion of sender (0-11) for bubble styling.
|
||||
emotion: u8,
|
||||
/// Emotion name for bubble styling (e.g., "happy", "sad", "neutral").
|
||||
emotion: String,
|
||||
/// Sender's X position at time of message.
|
||||
x: f64,
|
||||
/// Sender's Y position at time of message.
|
||||
|
|
@ -117,4 +129,32 @@ pub enum ServerMessage {
|
|||
/// Server timestamp (milliseconds since epoch).
|
||||
timestamp: i64,
|
||||
},
|
||||
|
||||
/// Initial list of loose props when joining channel.
|
||||
LoosePropsSync {
|
||||
/// All current loose props in the channel.
|
||||
props: Vec<LooseProp>,
|
||||
},
|
||||
|
||||
/// A prop was dropped on the canvas.
|
||||
PropDropped {
|
||||
/// The dropped prop.
|
||||
prop: LooseProp,
|
||||
},
|
||||
|
||||
/// A prop was picked up from the canvas.
|
||||
PropPickedUp {
|
||||
/// ID of the prop that was picked up.
|
||||
prop_id: Uuid,
|
||||
/// User ID who picked it up (if authenticated).
|
||||
picked_up_by_user_id: Option<Uuid>,
|
||||
/// Guest session ID who picked it up (if guest).
|
||||
picked_up_by_guest_id: Option<Uuid>,
|
||||
},
|
||||
|
||||
/// A prop expired and was removed.
|
||||
PropExpired {
|
||||
/// ID of the expired prop.
|
||||
prop_id: Uuid,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue