Beispiel #1
0
        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);
        }
Beispiel #3
0
 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}");
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 public override void CleanUp()
 {
     base.CleanUp();
     Data = null;
 }