room notes, etc #139
| @ -2,3 +2,4 @@ pub mod gateway; | ||||
| pub mod account; | ||||
| pub mod character; | ||||
| pub mod item; | ||||
| pub mod room; | ||||
|  | ||||
							
								
								
									
										87
									
								
								src/entity/room.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/entity/room.rs
									
									
									
									
									
										Normal file
									
								
							| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user