Browse Source

initial room entities

pull/139/head
jake 2 years ago
parent
commit
3ba0cc9c55
  1. 1
      src/entity/mod.rs
  2. 87
      src/entity/room.rs

1
src/entity/mod.rs

@ -2,3 +2,4 @@ pub mod gateway;
pub mod account; pub mod account;
pub mod character; pub mod character;
pub mod item; pub mod item;
pub mod room;

87
src/entity/room.rs

@ -0,0 +1,87 @@
use serde::{Serialize, Deserialize};
use crate::entity::character::{CharacterEntityId, SectionID};
use crate::ship::room::{Episode, Difficulty, RoomMode};
#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash, PartialOrd, Ord, Serialize, Deserialize)]
pub struct RoomEntityId(pub u32);
#[derive(Debug, Copy, Clone)]
pub enum RoomEntityMode {
Single,
Multi,
Challenge,
Battle,
}
#[derive(Debug, Clone)]
pub struct RoomEntity {
pub id: RoomEntityId,
pub name: String,
pub section_id: SectionID,
pub mode: RoomEntityMode,
pub episode: Episode,
pub difficulty: Difficulty,
}
#[derive(Debug, Clone)]
pub struct NewRoomEntity {
pub name: String,
pub section_id: SectionID,
pub mode: RoomEntityMode,
pub episode: Episode,
pub difficulty: Difficulty,
}
impl NewRoomEntity {
fn new(name: String, section_id: SectionID, mode: RoomMode) -> NewRoomEntity {
NewRoomEntity {
name: name,
section_id: section_id,
mode: match mode {
RoomMode::Single {..} => RoomEntityMode::Single,
RoomMode::Multi {..} => RoomEntityMode::Multi,
RoomMode::Challenge {..} => RoomEntityMode::Challenge,
RoomMode::Battle {..} => RoomEntityMode::Battle,
},
episode: match mode {
RoomMode::Single { episode, .. } => episode,
RoomMode::Multi { episode, ..} => episode ,
RoomMode::Challenge { episode, ..} => episode,
RoomMode::Battle { episode, ..} => episode,
},
difficulty: match mode {
RoomMode::Single { difficulty, .. } => difficulty,
RoomMode::Multi { difficulty, ..} => difficulty ,
RoomMode::Challenge {..} => Difficulty::Normal,
RoomMode::Battle { difficulty, ..} => difficulty,
},
}
}
}
#[derive(Debug, Copy, Clone)]
pub enum RoomNote {
Create {
character_id: CharacterEntityId,
},
PlayerJoin {
character_id: CharacterEntityId,
},
PlayerLeave {
character_id: CharacterEntityId,
},
QuestStart {
// quest id
},
QuestComplete {
// quest id
},
}
Loading…
Cancel
Save