blastmud/blastmud_game/src/models/corp.rs

60 lines
1.5 KiB
Rust
Raw Normal View History

use serde::{Serialize, Deserialize};
2023-03-19 00:04:59 +11:00
use chrono::{DateTime, Utc};
2023-03-19 22:59:35 +11:00
#[derive(Serialize, Deserialize, PartialEq)]
2023-03-19 00:04:59 +11:00
pub enum CorpPermission {
Holder, // Implies all permissions.
Hire,
Fire,
ChangeJobTitle,
}
pub struct CorpId(pub i64);
#[derive(Serialize, Deserialize)]
2023-03-19 22:59:35 +11:00
#[serde(default)]
pub struct Corp {
pub name: String,
// If true, new members get allow_combat on, and members cannot turn
// allow_combat off. This will allow duly authorised corp members to
// consent to combat with other corps, and have it apply to members.
pub allow_combat_required: bool,
2023-03-19 00:04:59 +11:00
pub member_permissions: Vec<CorpPermission>,
}
impl Default for Corp {
fn default() -> Self {
Self {
name: "Unset".to_owned(),
allow_combat_required: false,
member_permissions: vec!(),
}
}
}
#[derive(Serialize, Deserialize)]
2023-03-19 22:59:35 +11:00
#[serde(default)]
2023-03-19 00:04:59 +11:00
pub struct CorpMembership {
pub invited_at: Option<DateTime<Utc>>,
pub joined_at: Option<DateTime<Utc>>,
pub permissions: Vec<CorpPermission>,
pub allow_combat: bool,
pub job_title: String,
2023-03-19 15:41:48 +11:00
pub priority: i64,
pub chat_on: bool
2023-03-19 00:04:59 +11:00
}
impl Default for CorpMembership {
fn default() -> CorpMembership {
CorpMembership {
invited_at: None,
joined_at: None,
permissions: vec!(),
allow_combat: false,
job_title: "Employee".to_owned(),
2023-03-19 15:41:48 +11:00
priority: 100,
chat_on: true,
2023-03-19 00:04:59 +11:00
}
}
}