extern crate gamesense;
extern crate anyhow;
extern crate serde_json;
use anyhow::{Result};
use gamesense::client::GameSenseClient;
use gamesense::handler::screen;
use serde_json::json;
fn main() -> Result<()> {
let mut client = GameSenseClient::new("EVENT_SCREEN", "Example OLED Event", "ptrstr", None)?;
let handler = screen::ScreenHandler::new("screened", "one",
screen::ScreenDataDefinition::StaticScreenDataDefinition(screen::StaticScreenDataDefinition(
vec!(
screen::ScreenFrameData::SingleLineFrameData(screen::SingleLineFrameData {
frame_modifiers_data: Some(screen::FrameModifiersData {
length_millis: Some(1000),
icon_id: Some(screen::Icon::Kill),
repeats: None
}),
line: screen::LineData {
type_options: screen::LineDataType::TextModifiersData(screen::TextModifiersData {
has_text: true,
prefix: Some(String::from("")),
suffix: Some(String::from(" kills")),
bold: None,
wrap: None
}),
data_accessor_data: Some(screen::DataAccessorData {
arg: None,
context_frame_key: Some(String::from("kills"))
})
}
}),
screen::ScreenFrameData::SingleLineFrameData(screen::SingleLineFrameData {
frame_modifiers_data: Some(screen::FrameModifiersData {
length_millis: Some(1000),
icon_id: Some(screen::Icon::Headshot),
repeats: Some(screen::Repeat::Bool(true))
}),
line: screen::LineData {
type_options: screen::LineDataType::TextModifiersData(screen::TextModifiersData {
has_text: true,
prefix: Some(String::from("")),
suffix: Some(String::from(" headshots")),
bold: None,
wrap: None
}),
data_accessor_data: Some(screen::DataAccessorData {
arg: None,
context_frame_key: Some(String::from("headshots"))
})
}
})
)
))
);
client.bind_event("EVENT", None, None, None, None, vec![handler])?;
client.start_heartbeat();
client.trigger_event_frame("EVENT", 0, json!({
"kills": 23,
"headshots": 7,
}))?;
std::thread::sleep(std::time::Duration::from_secs(7));
client.trigger_event_frame("EVENT", 0, json!({
"kills": 24,
"headshots": 8,
}))?;
client.stop_heartbeat()?;
Ok(())
}