public void Sync(CompStateValues syncFrom) { PowerLevel = syncFrom.PowerLevel; Online = syncFrom.Online; Overload = syncFrom.Overload; Message = syncFrom.Message; Heat = syncFrom.Heat; ShootOn = syncFrom.ShootOn; ClickShoot = syncFrom.ClickShoot; CurrentPlayerControl = syncFrom.CurrentPlayerControl; CurrentCharge = syncFrom.CurrentCharge; CurrentBlockGroup = syncFrom.CurrentBlockGroup; OtherPlayerTrackingReticle = syncFrom.OtherPlayerTrackingReticle; for (int i = 0; i < syncFrom.Weapons.Length; i++) { Weapons[i].ShotsFired = syncFrom.Weapons[i].ShotsFired; Weapons[i].ManualShoot = syncFrom.Weapons[i].ManualShoot; Weapons[i].SingleShotCounter = syncFrom.Weapons[i].SingleShotCounter; Weapons[i].Sync.Charging = syncFrom.Weapons[i].Sync.Charging; Weapons[i].Sync.CurrentAmmo = syncFrom.Weapons[i].Sync.CurrentAmmo; Weapons[i].Sync.CurrentCharge = syncFrom.Weapons[i].Sync.CurrentCharge; Weapons[i].Sync.CurrentMags = syncFrom.Weapons[i].Sync.CurrentMags; Weapons[i].Sync.Heat = syncFrom.Weapons[i].Sync.Heat; Weapons[i].Sync.Overheated = syncFrom.Weapons[i].Sync.Overheated; Weapons[i].Sync.Reloading = syncFrom.Weapons[i].Sync.Reloading; } }
public bool LoadState() { if (Block.Storage == null) { return(false); } CompStateValues loadedState = null; string rawData; bool loadedSomething = false; if (Block.Storage.TryGetValue(Comp.Session.LogicStateGuid, out rawData)) { try { var base64 = Convert.FromBase64String(rawData); loadedState = MyAPIGateway.Utilities.SerializeFromBinary <CompStateValues>(base64); } catch (Exception e) { //Log.Line("Invalid State Loaded, Re-init"); } } if (loadedState != null && loadedState.Version == VersionControl) { Value = loadedState; loadedSomething = true; } else { Value = new CompStateValues { Weapons = new WeaponStateValues[Comp.Platform.Weapons.Length] }; for (int i = 0; i < Value.Weapons.Length; i++) { Value.Weapons[i] = new WeaponStateValues { Sync = new WeaponSyncValues() { WeaponId = i } }; } Value.CurrentPlayerControl = new PlayerControl(); } for (int i = 0; i < Comp.Platform.Weapons.Length; i++) { Comp.Platform.Weapons[i].State = Value.Weapons[i]; } return(loadedSomething); }
public void Sync(WeaponComponent comp, CompStateValues sync, Caller caller) { if (sync.Revision > Revision) { Revision = sync.Revision; TrackingReticle = sync.TrackingReticle; PlayerId = sync.PlayerId; Control = sync.Control; TerminalAction = sync.TerminalAction; for (int i = 0; i < sync.Weapons.Length; i++) { comp.Platform.Weapons[i].State.Sync(sync.Weapons[i]); } } //else Log.Line($"CompStateValues older revision: {sync.Revision} > {Revision} - caller:{caller}"); }
public bool Sync(WeaponComponent comp, CompStateValues sync, Caller caller) { if (sync.Revision > Revision || caller == Caller.CompData) { Revision = sync.Revision; TrackingReticle = sync.TrackingReticle; PlayerId = sync.PlayerId; Control = sync.Control; TerminalAction = sync.TerminalAction; for (int i = 0; i < sync.Weapons.Length; i++) { comp.Platform.Weapons[i].State.Sync(sync.Weapons[i]); } return(true); } return(false); }
public override void CleanUp() { base.CleanUp(); Data = null; }