mirror of
https://github.com/redstrate/Auracite.git
synced 2025-04-27 06:37:46 +00:00
Begin collecting some appearance data from the plugin
This commit is contained in:
parent
7ceaeb1798
commit
0c665679d4
8 changed files with 63 additions and 12 deletions
31
dalamud/Auracite/AppearanceStep.cs
Normal file
31
dalamud/Auracite/AppearanceStep.cs
Normal file
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
using Dalamud.Game.ClientState.Objects.Enums;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
|
||||
namespace Auracite;
|
||||
|
||||
public class AppearanceStep : IStep
|
||||
{
|
||||
public event IStep.CompletedDelegate? Completed;
|
||||
|
||||
public void Run()
|
||||
{
|
||||
if (Plugin.ClientState.LocalPlayer != null)
|
||||
{
|
||||
Plugin.package.height = Plugin.ClientState.LocalPlayer.Customize[(int)CustomizeIndex.Height];
|
||||
Plugin.package.bust_size = Plugin.ClientState.LocalPlayer.Customize[(int)CustomizeIndex.BustSize];
|
||||
}
|
||||
Completed?.Invoke();
|
||||
}
|
||||
|
||||
public string StepName()
|
||||
{
|
||||
return "Appearance";
|
||||
}
|
||||
|
||||
public string StepDescription()
|
||||
{
|
||||
return "No user action required.";
|
||||
}
|
||||
}
|
|
@ -6,6 +6,8 @@ public interface IStep
|
|||
{
|
||||
public event CompletedDelegate Completed;
|
||||
|
||||
void Run();
|
||||
|
||||
string StepName();
|
||||
string StepDescription();
|
||||
|
||||
|
|
|
@ -18,6 +18,10 @@ public class PlaytimeStep : IStep, IDisposable
|
|||
|
||||
public event IStep.CompletedDelegate? Completed;
|
||||
|
||||
public void Run()
|
||||
{
|
||||
}
|
||||
|
||||
public string StepName()
|
||||
{
|
||||
return "Playtime";
|
||||
|
|
|
@ -16,7 +16,7 @@ public sealed class Plugin : IDalamudPlugin
|
|||
private readonly WindowSystem WindowSystem = new("Auracite");
|
||||
|
||||
private readonly List<Type> _steps =
|
||||
[typeof(PlaytimeStep)];
|
||||
[typeof(AppearanceStep), typeof(PlaytimeStep)];
|
||||
|
||||
private int _stepIndex;
|
||||
|
||||
|
@ -25,6 +25,8 @@ public sealed class Plugin : IDalamudPlugin
|
|||
public class Package
|
||||
{
|
||||
public string playtime;
|
||||
public int height;
|
||||
public int bust_size;
|
||||
}
|
||||
|
||||
public static Package? package;
|
||||
|
@ -78,6 +80,7 @@ public sealed class Plugin : IDalamudPlugin
|
|||
}
|
||||
CurrentStep = (IStep)Activator.CreateInstance(_steps[_stepIndex])!;
|
||||
CurrentStep.Completed += NextStep;
|
||||
CurrentStep.Run();
|
||||
}
|
||||
|
||||
private void SendPackage()
|
||||
|
|
13
src/data.rs
13
src/data.rs
|
@ -5,19 +5,26 @@ pub struct Currencies {
|
|||
pub gil: i64,
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize)]
|
||||
pub struct Appearance {
|
||||
pub race: String,
|
||||
pub subrace: String,
|
||||
pub gender: String,
|
||||
pub height: i32,
|
||||
pub bust_size: i32
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize)]
|
||||
pub struct CharacterData {
|
||||
pub name: String,
|
||||
pub world: String,
|
||||
pub data_center: String,
|
||||
pub race: String,
|
||||
pub subrace: String,
|
||||
pub gender: String,
|
||||
pub city_state: String,
|
||||
pub nameday: String,
|
||||
pub guardian: String,
|
||||
pub currencies: Currencies,
|
||||
pub playtime: String,
|
||||
pub appearance: Appearance,
|
||||
|
||||
#[serde(skip)]
|
||||
pub face_url: String,
|
||||
|
|
|
@ -18,9 +18,9 @@ pub fn write_html(char_data: &CharacterData, file_path: &str) -> io::Result<()>
|
|||
name => char_data.name,
|
||||
world => char_data.world,
|
||||
data_center => char_data.data_center,
|
||||
race => char_data.race,
|
||||
subrace => char_data.subrace,
|
||||
gender => char_data.gender,
|
||||
race => char_data.appearance.race,
|
||||
subrace => char_data.appearance.subrace,
|
||||
gender => char_data.appearance.gender,
|
||||
nameday => char_data.nameday,
|
||||
city_state => char_data.city_state
|
||||
})
|
||||
|
|
|
@ -30,6 +30,8 @@ struct Args {
|
|||
#[derive(Default, Deserialize, Clone)]
|
||||
struct Package {
|
||||
playtime: String,
|
||||
height: i32,
|
||||
bust_size: i32,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -44,7 +46,7 @@ impl Service for PackageService<'_> {
|
|||
|
||||
fn call(&self, req: Request<Body>) -> Result<Response<Self::Body>, Self::Error> {
|
||||
*self.package.lock().unwrap() = serde_json::from_str(&String::from_utf8(req.into_body().into_bytes().unwrap()).unwrap()).unwrap();
|
||||
|
||||
|
||||
*self.wants_stop.lock().unwrap() = true;
|
||||
|
||||
Ok(Response::builder()
|
||||
|
@ -109,6 +111,8 @@ fn main() {
|
|||
let package = &*package.lock().unwrap();
|
||||
|
||||
char_data.playtime = package.playtime.parse().unwrap();
|
||||
char_data.appearance.height = package.height;
|
||||
char_data.appearance.bust_size = package.bust_size;
|
||||
}
|
||||
|
||||
let serialized = serde_json::to_string(&char_data).unwrap();
|
||||
|
|
|
@ -69,12 +69,12 @@ pub fn parse_lodestone(data: &str) -> CharacterData {
|
|||
let inner_html = block_name.inner_html();
|
||||
let captures = re.captures(&inner_html).unwrap();
|
||||
|
||||
char_data.race = captures.get(1).unwrap().as_str().to_owned();
|
||||
char_data.subrace = captures.get(2).unwrap().as_str().to_owned();
|
||||
char_data.appearance.race = captures.get(1).unwrap().as_str().to_owned();
|
||||
char_data.appearance.subrace = captures.get(2).unwrap().as_str().to_owned();
|
||||
if captures.get(3).unwrap().as_str() == "♀" {
|
||||
char_data.gender = "Female".parse().unwrap();
|
||||
char_data.appearance.gender = "Female".parse().unwrap();
|
||||
} else {
|
||||
char_data.gender = "Male".parse().unwrap();
|
||||
char_data.appearance.gender = "Male".parse().unwrap();
|
||||
}
|
||||
}
|
||||
} else if name == "City-state" {
|
||||
|
|
Loading…
Add table
Reference in a new issue