1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Implement most of clans functionality; close #89

This commit is contained in:
NG (Graham)
2026-02-22 22:39:34 -05:00
parent e120b945c8
commit f0cca11d3c
43 changed files with 2605 additions and 26 deletions

View File

@@ -30,25 +30,84 @@ impl ClanMember {
#[repr(u8)]
#[derive(Copy, Clone)]
pub enum ClanMemberState {
Idk0,
Idk1,
Idk2,
// TODO figure out how many of these there are (and what they mean)
Invited = 0, // Invited
Confirmed = 1, // Confirmed
}
#[repr(u8)]
#[derive(Copy, Clone)]
#[derive(Copy, Clone, Debug)]
pub enum ClanMemberRank {
Member = 0,
Officer = 1,
Leader = 2,
}
impl ClanMemberRank {
#[inline]
pub fn from_core(rank: oj_rc_core::persist::user::ClanMemberRank) -> Self {
match rank {
oj_rc_core::persist::user::ClanMemberRank::Member => Self::Member,
oj_rc_core::persist::user::ClanMemberRank::Officer => Self::Officer,
oj_rc_core::persist::user::ClanMemberRank::Leader => Self::Leader,
}
}
#[inline]
pub fn to_core(self) -> oj_rc_core::persist::user::ClanMemberRank {
match self {
Self::Member => oj_rc_core::persist::user::ClanMemberRank::Member,
Self::Officer => oj_rc_core::persist::user::ClanMemberRank::Officer,
Self::Leader => oj_rc_core::persist::user::ClanMemberRank::Leader,
}
}
pub fn from_u8(num: u8) -> Option<Self> {
match num {
0 => Some(Self::Member),
1 => Some(Self::Officer),
2 => Some(Self::Leader),
_ => None,
}
}
}
#[repr(u8)]
#[derive(Copy, Clone)]
pub enum ClanType {
Open = 1,
Closed = 2,
Open = 0,
Closed = 1,
}
impl ClanType {
#[inline]
pub fn from_u8(num: u8) -> Option<Self> {
match num {
0 => Some(Self::Open),
1 => Some(Self::Closed),
_ => None
}
}
#[inline]
pub fn to_u8(self) -> u8 {
self as u8
}
#[inline]
pub fn to_core(self) -> oj_rc_core::persist::user::ClanType {
match self {
Self::Open => oj_rc_core::persist::user::ClanType::Open,
Self::Closed => oj_rc_core::persist::user::ClanType::Closed,
}
}
#[inline]
pub fn from_core(ty: oj_rc_core::persist::user::ClanType) -> Self {
match ty {
oj_rc_core::persist::user::ClanType::Open => Self::Open,
oj_rc_core::persist::user::ClanType::Closed => Self::Closed,
}
}
}
pub struct ClanInfo {