- add: Character service now loads the data from the database and sends it in the character list packet
- add: character id list to the connection state for tracking the real character database id's for when the client requests actions on the character - fix: sql error when trying to create a character
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use tonic::transport::Channel;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use crate::database::character_service_client::CharacterServiceClient;
|
||||
use crate::database::{CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse};
|
||||
use crate::database::{CharacterRequest, Character, CharacterListRequest, CharacterListResponse, CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CharacterDbClient {
|
||||
@@ -15,6 +15,9 @@ struct Item {
|
||||
count: i32,
|
||||
durability: f32,
|
||||
slot: i32,
|
||||
gem_option: i32,
|
||||
socket: i8,
|
||||
grade: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
@@ -63,6 +66,23 @@ impl CharacterDbClient {
|
||||
Ok(Self { client })
|
||||
}
|
||||
|
||||
pub async fn get_character(&mut self, user_id: &str, char_id: &str) -> Result<Character, Box<dyn std::error::Error>> {
|
||||
let request = tonic::Request::new(CharacterRequest {
|
||||
user_id: user_id.parse().unwrap(),
|
||||
character_id: char_id.parse().unwrap(),
|
||||
});
|
||||
let response = self.client.get_character(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn get_character_list(&mut self, user_id: &str) -> Result<CharacterListResponse, Box<dyn std::error::Error>> {
|
||||
let request = tonic::Request::new(CharacterListRequest {
|
||||
user_id: user_id.parse().unwrap(),
|
||||
});
|
||||
let response = self.client.get_character_list(request).await?;
|
||||
Ok(response.into_inner())
|
||||
}
|
||||
|
||||
pub async fn create_character(&mut self, user_id: &str, name: &str, race: i32, face: i32, hair: i32, stone: i32) -> Result<CreateCharacterResponse, Box<dyn std::error::Error>> {
|
||||
let mut hatid = 221;
|
||||
if 0 == race {
|
||||
@@ -76,6 +96,9 @@ impl CharacterDbClient {
|
||||
count: 1,
|
||||
slot: 3,
|
||||
durability: 45.0,
|
||||
gem_option: 0,
|
||||
socket: 0,
|
||||
grade: 0,
|
||||
},
|
||||
Item {
|
||||
item_id: 1,
|
||||
@@ -83,6 +106,9 @@ impl CharacterDbClient {
|
||||
count: 1,
|
||||
slot: 7,
|
||||
durability: 45.0,
|
||||
gem_option: 0,
|
||||
socket: 0,
|
||||
grade: 0,
|
||||
},
|
||||
Item {
|
||||
item_id: hatid,
|
||||
@@ -90,6 +116,9 @@ impl CharacterDbClient {
|
||||
count: 1,
|
||||
slot: 12,
|
||||
durability: 45.0,
|
||||
gem_option: 0,
|
||||
socket: 0,
|
||||
grade: 0,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user