mirror of
https://github.com/raphaelcheung/zircon-legend-server.git
synced 2026-10-29 06:04:56 +08:00
689 lines
17 KiB
C#
689 lines
17 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using Library;
|
|
using Library.SystemModels;
|
|
using MirDB;
|
|
using Zircon.Server.Models;
|
|
|
|
namespace Server.DBModels
|
|
{
|
|
[UserObject]
|
|
public sealed class CharacterInfo : DBObject
|
|
{
|
|
[Association("Characters")]
|
|
public AccountInfo Account
|
|
{
|
|
get { return _Account; }
|
|
set
|
|
{
|
|
if (_Account == value) return;
|
|
|
|
var oldValue = _Account;
|
|
_Account = value;
|
|
|
|
OnChanged(oldValue, value, "Account");
|
|
}
|
|
}
|
|
private AccountInfo _Account;
|
|
|
|
|
|
public string CharacterName
|
|
{
|
|
get { return _CharacterName; }
|
|
set
|
|
{
|
|
if (_CharacterName == value) return;
|
|
|
|
var oldValue = _CharacterName;
|
|
_CharacterName = value;
|
|
|
|
OnChanged(oldValue, value, "CharacterName");
|
|
}
|
|
}
|
|
private string _CharacterName;
|
|
|
|
public MirClass Class
|
|
{
|
|
get { return _Class; }
|
|
set
|
|
{
|
|
if (_Class == value) return;
|
|
|
|
var oldValue = _Class;
|
|
_Class = value;
|
|
|
|
OnChanged(oldValue, value, "Class");
|
|
}
|
|
}
|
|
private MirClass _Class;
|
|
|
|
public MirGender Gender
|
|
{
|
|
get { return _Gender; }
|
|
set
|
|
{
|
|
if (_Gender == value) return;
|
|
|
|
var oldValue = _Gender;
|
|
_Gender = value;
|
|
|
|
OnChanged(oldValue, value, "Gender");
|
|
}
|
|
}
|
|
private MirGender _Gender;
|
|
|
|
public int Level
|
|
{
|
|
get { return _Level; }
|
|
set
|
|
{
|
|
if (_Level == value) return;
|
|
|
|
var oldValue = _Level;
|
|
_Level = value;
|
|
|
|
OnChanged(oldValue, value, "Level");
|
|
}
|
|
}
|
|
private int _Level;
|
|
|
|
public int HairType
|
|
{
|
|
get { return _HairType; }
|
|
set
|
|
{
|
|
if (_HairType == value) return;
|
|
|
|
var oldValue = _HairType;
|
|
_HairType = value;
|
|
|
|
OnChanged(oldValue, value, "HairType");
|
|
}
|
|
}
|
|
private int _HairType;
|
|
|
|
public Color HairColour
|
|
{
|
|
get { return _HairColour; }
|
|
set
|
|
{
|
|
if (_HairColour == value) return;
|
|
|
|
var oldValue = _HairColour;
|
|
_HairColour = value;
|
|
|
|
OnChanged(oldValue, value, "HairColour");
|
|
}
|
|
}
|
|
private Color _HairColour;
|
|
|
|
public Color ArmourColour
|
|
{
|
|
get { return _ArmourColour; }
|
|
set
|
|
{
|
|
if (_ArmourColour == value) return;
|
|
|
|
var oldValue = _ArmourColour;
|
|
_ArmourColour = value;
|
|
|
|
OnChanged(oldValue, value, "ArmourColour");
|
|
}
|
|
}
|
|
private Color _ArmourColour;
|
|
|
|
public DateTime LastLogin
|
|
{
|
|
get { return _LastLogin; }
|
|
set
|
|
{
|
|
if (_LastLogin == value) return;
|
|
|
|
var oldValue = _LastLogin;
|
|
_LastLogin = value;
|
|
|
|
OnChanged(oldValue, value, "LastLogin");
|
|
}
|
|
}
|
|
private DateTime _LastLogin;
|
|
|
|
public bool Deleted
|
|
{
|
|
get { return _Deleted; }
|
|
set
|
|
{
|
|
if (_Deleted == value) return;
|
|
|
|
var oldValue = _Deleted;
|
|
_Deleted = value;
|
|
|
|
OnChanged(oldValue, value, "Deleted");
|
|
}
|
|
}
|
|
private bool _Deleted;
|
|
|
|
public DateTime CreationDate
|
|
{
|
|
get { return _CreationDate; }
|
|
set
|
|
{
|
|
if (_CreationDate == value) return;
|
|
|
|
var oldValue = _CreationDate;
|
|
_CreationDate = value;
|
|
|
|
OnChanged(oldValue, value, "CreationDate");
|
|
}
|
|
}
|
|
private DateTime _CreationDate;
|
|
|
|
public string CreationIP
|
|
{
|
|
get { return _CreationIP; }
|
|
set
|
|
{
|
|
if (_CreationIP == value) return;
|
|
|
|
var oldValue = _CreationIP;
|
|
_CreationIP = value;
|
|
|
|
OnChanged(oldValue, value, "CreationIP");
|
|
}
|
|
}
|
|
private string _CreationIP;
|
|
|
|
public Point CurrentLocation
|
|
{
|
|
get { return _CurrentLocation; }
|
|
set
|
|
{
|
|
if (_CurrentLocation == value) return;
|
|
|
|
var oldValue = _CurrentLocation;
|
|
_CurrentLocation = value;
|
|
|
|
OnChanged(oldValue, value, "CurrentLocation");
|
|
}
|
|
}
|
|
private Point _CurrentLocation;
|
|
|
|
public MapInfo CurrentMap
|
|
{
|
|
get { return _CurrentMap; }
|
|
set
|
|
{
|
|
if (_CurrentMap == value) return;
|
|
|
|
var oldValue = _CurrentMap;
|
|
_CurrentMap = value;
|
|
|
|
OnChanged(oldValue, value, "CurrentMap");
|
|
}
|
|
}
|
|
private MapInfo _CurrentMap;
|
|
|
|
public MirDirection Direction
|
|
{
|
|
get { return _Direction; }
|
|
set
|
|
{
|
|
if (_Direction == value) return;
|
|
|
|
var oldValue = _Direction;
|
|
_Direction = value;
|
|
|
|
OnChanged(oldValue, value, "Direction");
|
|
}
|
|
}
|
|
private MirDirection _Direction;
|
|
|
|
public SafeZoneInfo BindPoint
|
|
{
|
|
get { return _BindPoint; }
|
|
set
|
|
{
|
|
if (_BindPoint == value) return;
|
|
|
|
var oldValue = _BindPoint;
|
|
_BindPoint = value;
|
|
|
|
OnChanged(oldValue, value, "BindPoint");
|
|
}
|
|
}
|
|
private SafeZoneInfo _BindPoint;
|
|
|
|
public int CurrentHP
|
|
{
|
|
get { return _CurrentHP; }
|
|
set
|
|
{
|
|
if (_CurrentHP == value) return;
|
|
|
|
var oldValue = _CurrentHP;
|
|
_CurrentHP = value;
|
|
|
|
OnChanged(oldValue, value, "CurrentHP");
|
|
}
|
|
}
|
|
private int _CurrentHP;
|
|
|
|
public int CurrentMP
|
|
{
|
|
get { return _CurrentMP; }
|
|
set
|
|
{
|
|
if (_CurrentMP == value) return;
|
|
|
|
var oldValue = _CurrentMP;
|
|
_CurrentMP = value;
|
|
|
|
OnChanged(oldValue, value, "CurrentMP");
|
|
}
|
|
}
|
|
private int _CurrentMP;
|
|
|
|
public decimal Experience
|
|
{
|
|
get { return _Experience; }
|
|
set
|
|
{
|
|
if (_Experience == value) return;
|
|
|
|
var oldValue = _Experience;
|
|
_Experience = value;
|
|
|
|
OnChanged(oldValue, value, "Experience");
|
|
}
|
|
}
|
|
private decimal _Experience;
|
|
|
|
public bool CanThrusting
|
|
{
|
|
get { return _canThrusting; }
|
|
set
|
|
{
|
|
if (_canThrusting == value) return;
|
|
|
|
var oldValue = _canThrusting;
|
|
_canThrusting = value;
|
|
|
|
OnChanged(oldValue, value, "CanThrusting");
|
|
}
|
|
}
|
|
private bool _canThrusting;
|
|
|
|
public bool CanHalfMoon
|
|
{
|
|
get { return _CanHalfMoon; }
|
|
set
|
|
{
|
|
if (_CanHalfMoon == value) return;
|
|
|
|
var oldValue = _CanHalfMoon;
|
|
_CanHalfMoon = value;
|
|
|
|
OnChanged(oldValue, value, "CanHalfMoon");
|
|
}
|
|
}
|
|
private bool _CanHalfMoon;
|
|
|
|
public bool CanDestructiveSurge
|
|
{
|
|
get { return _canDestructiveSurge; }
|
|
set
|
|
{
|
|
if (_canDestructiveSurge == value) return;
|
|
|
|
var oldValue = _canDestructiveSurge;
|
|
_canDestructiveSurge = value;
|
|
|
|
OnChanged(oldValue, value, "CanDestructiveSurge");
|
|
}
|
|
}
|
|
private bool _canDestructiveSurge;
|
|
|
|
public bool CanFlameSplash
|
|
{
|
|
get { return _CanFlameSplash; }
|
|
set
|
|
{
|
|
if (_CanFlameSplash == value) return;
|
|
|
|
var oldValue = _CanFlameSplash;
|
|
_CanFlameSplash = value;
|
|
|
|
OnChanged(oldValue, value, "CanFlameSplash");
|
|
}
|
|
}
|
|
private bool _CanFlameSplash;
|
|
|
|
public Stats LastStats
|
|
{
|
|
get { return _LastStats; }
|
|
set
|
|
{
|
|
if (_LastStats == value) return;
|
|
|
|
var oldValue = _LastStats;
|
|
_LastStats = value;
|
|
|
|
OnChanged(oldValue, value, "LastStats");
|
|
}
|
|
}
|
|
private Stats _LastStats;
|
|
|
|
public Stats HermitStats
|
|
{
|
|
get { return _HermitStats; }
|
|
set
|
|
{
|
|
if (_HermitStats == value) return;
|
|
|
|
var oldValue = _HermitStats;
|
|
_HermitStats = value;
|
|
|
|
OnChanged(oldValue, value, "HermitStats");
|
|
}
|
|
}
|
|
private Stats _HermitStats;
|
|
|
|
public int SpentPoints
|
|
{
|
|
get { return _SpentPoints; }
|
|
set
|
|
{
|
|
if (_SpentPoints == value) return;
|
|
|
|
var oldValue = _SpentPoints;
|
|
_SpentPoints = value;
|
|
|
|
OnChanged(oldValue, value, "SpentPoints");
|
|
}
|
|
}
|
|
private int _SpentPoints;
|
|
|
|
public AttackMode AttackMode
|
|
{
|
|
get { return _AttackMode; }
|
|
set
|
|
{
|
|
if (_AttackMode == value) return;
|
|
|
|
var oldValue = _AttackMode;
|
|
_AttackMode = value;
|
|
|
|
OnChanged(oldValue, value, "AttackMode");
|
|
}
|
|
}
|
|
private AttackMode _AttackMode;
|
|
|
|
public PetMode PetMode
|
|
{
|
|
get { return _PetMode; }
|
|
set
|
|
{
|
|
if (_PetMode == value) return;
|
|
|
|
var oldValue = _PetMode;
|
|
_PetMode = value;
|
|
|
|
OnChanged(oldValue, value, "PetMode");
|
|
}
|
|
}
|
|
private PetMode _PetMode;
|
|
|
|
public bool Observable
|
|
{
|
|
get { return _Observable; }
|
|
set
|
|
{
|
|
if (_Observable == value) return;
|
|
|
|
var oldValue = _Observable;
|
|
_Observable = value;
|
|
|
|
OnChanged(oldValue, value, "Observable");
|
|
}
|
|
}
|
|
private bool _Observable;
|
|
|
|
public DateTime ItemReviveTime
|
|
{
|
|
get { return _ItemReviveTime; }
|
|
set
|
|
{
|
|
if (_ItemReviveTime == value) return;
|
|
|
|
var oldValue = _ItemReviveTime;
|
|
_ItemReviveTime = value;
|
|
|
|
OnChanged(oldValue, value, "ItemReviveTime");
|
|
}
|
|
}
|
|
private DateTime _ItemReviveTime;
|
|
|
|
public DateTime ReincarnationPillTime
|
|
{
|
|
get { return _ReincarnationPillTime; }
|
|
set
|
|
{
|
|
if (_ReincarnationPillTime == value) return;
|
|
|
|
var oldValue = _ReincarnationPillTime;
|
|
_ReincarnationPillTime = value;
|
|
|
|
OnChanged(oldValue, value, "ReincarnationPillTime");
|
|
}
|
|
}
|
|
private DateTime _ReincarnationPillTime;
|
|
|
|
public DateTime MarriageTeleportTime
|
|
{
|
|
get { return _MarriageTeleportTime; }
|
|
set
|
|
{
|
|
if (_MarriageTeleportTime == value) return;
|
|
|
|
var oldValue = _MarriageTeleportTime;
|
|
_MarriageTeleportTime = value;
|
|
|
|
OnChanged(oldValue, value, "MarriageTeleportTime");
|
|
}
|
|
}
|
|
private DateTime _MarriageTeleportTime;
|
|
|
|
public DateTime GroupRecallTime
|
|
{
|
|
get { return _GroupRecallTime; }
|
|
set
|
|
{
|
|
if (_GroupRecallTime == value) return;
|
|
|
|
var oldValue = _GroupRecallTime;
|
|
_GroupRecallTime = value;
|
|
|
|
OnChanged(oldValue, value, "GroupRecallTime");
|
|
}
|
|
}
|
|
private DateTime _GroupRecallTime;
|
|
|
|
public bool HideHelmet
|
|
{
|
|
get { return _HideHelmet; }
|
|
set
|
|
{
|
|
if (_HideHelmet == value) return;
|
|
|
|
var oldValue = _HideHelmet;
|
|
_HideHelmet = value;
|
|
|
|
OnChanged(oldValue, value, "HideHelmet");
|
|
}
|
|
}
|
|
private bool _HideHelmet;
|
|
|
|
public bool CanDeathDrop
|
|
{
|
|
get { return _CanDeathDrop; }
|
|
set
|
|
{
|
|
if (_CanDeathDrop == value) return;
|
|
|
|
var oldValue = _CanDeathDrop;
|
|
_CanDeathDrop = value;
|
|
|
|
OnChanged(oldValue, value, "CanDeathDrop");
|
|
}
|
|
}
|
|
private bool _CanDeathDrop;
|
|
|
|
public int Rebirth
|
|
{
|
|
get { return _Rebirth; }
|
|
set
|
|
{
|
|
if (_Rebirth == value) return;
|
|
|
|
int oldValue = _Rebirth;
|
|
_Rebirth = value;
|
|
|
|
OnChanged(oldValue, value, "Rebirth");
|
|
}
|
|
}
|
|
private int _Rebirth;
|
|
|
|
|
|
|
|
|
|
public DateTime NextDeathDropChange
|
|
{
|
|
get { return _NextDeathDropChange; }
|
|
set
|
|
{
|
|
if (_NextDeathDropChange == value) return;
|
|
|
|
var oldValue = _NextDeathDropChange;
|
|
_NextDeathDropChange = value;
|
|
|
|
OnChanged(oldValue, value, "NextDeathDropChange");
|
|
}
|
|
}
|
|
private DateTime _NextDeathDropChange;
|
|
|
|
|
|
|
|
[Association("Companion")]
|
|
public UserCompanion Companion
|
|
{
|
|
get { return _Companion; }
|
|
set
|
|
{
|
|
if (_Companion == value) return;
|
|
|
|
var oldValue = _Companion;
|
|
_Companion = value;
|
|
|
|
OnChanged(oldValue, value, "Companion");
|
|
}
|
|
}
|
|
private UserCompanion _Companion;
|
|
|
|
[Association("Items", true)]
|
|
public DBBindingList<UserItem> Items { get; set; }
|
|
|
|
[Association("BeltLinks", true)]
|
|
public DBBindingList<CharacterBeltLink> BeltLinks { get; set; }
|
|
|
|
[Association("AutoPotionLinks", true)]
|
|
public DBBindingList<AutoPotionLink> AutoPotionLinks { get; set; }
|
|
|
|
[Association("AutoFightLinks", true)]
|
|
public DBBindingList<AutoFightConfig> AutoFightLinks { get; set; }
|
|
|
|
[Association("Magics", true)]
|
|
public DBBindingList<UserMagic> Magics { get; set; }
|
|
|
|
[Association("Buffs", true)]
|
|
public DBBindingList<BuffInfo> Buffs { get; set; }
|
|
|
|
[Association("Refines", true)]
|
|
public DBBindingList<RefineInfo> Refines { get; set; }
|
|
|
|
[Association("Quests", true)]
|
|
public DBBindingList<UserQuest> Quests { get; set; }
|
|
|
|
[Association("Marriage")]
|
|
public CharacterInfo Partner
|
|
{
|
|
get { return _Partner; }
|
|
set
|
|
{
|
|
if (_Partner == value) return;
|
|
|
|
var oldValue = _Partner;
|
|
_Partner = value;
|
|
|
|
OnChanged(oldValue, value, "Partner");
|
|
}
|
|
}
|
|
private CharacterInfo _Partner;
|
|
|
|
public long TotalPlaySeconds { get; set; } = 0;
|
|
protected override void OnDeleted()
|
|
{
|
|
Account = null;
|
|
Companion = null;
|
|
Partner = null;
|
|
|
|
base.OnDeleted();
|
|
}
|
|
|
|
|
|
|
|
|
|
public PlayerObject Player;
|
|
public LinkedListNode<CharacterInfo> RankingNode;
|
|
|
|
public SelectInfo ToSelectInfo()
|
|
{
|
|
return new SelectInfo
|
|
{
|
|
CharacterIndex = Index,
|
|
CharacterName = CharacterName,
|
|
Class = Class,
|
|
Gender = Gender,
|
|
Level = Level,
|
|
Location = CurrentMap != null ? CurrentMap.Index : 0,
|
|
LastLogin = LastLogin,
|
|
};
|
|
}
|
|
|
|
protected override void OnCreated()
|
|
{
|
|
base.OnCreated();
|
|
|
|
LastStats = new Stats();
|
|
HermitStats = new Stats();
|
|
|
|
Observable = true;
|
|
}
|
|
|
|
/* protected override void OnLoaded()
|
|
{
|
|
base.OnLoaded();
|
|
|
|
if (LastStats == null)
|
|
LastStats = new Stats();
|
|
|
|
if (HermitStats == null)
|
|
HermitStats = new Stats();
|
|
}*/
|
|
|
|
public override string ToString()
|
|
{
|
|
return CharacterName;
|
|
}
|
|
}
|
|
}
|