Beispiel #1
0
 public void RegisterNewObject(VM vm, VMEntity obj, VMAsyncPersistIDCallback callback)
 {
     //todo: sandbox servers should give things an "id"
     vm.SendCommand(new VMNetUpdatePersistStateCmd()
     {
         ObjectID  = obj.ObjectID,
         PersistID = NextPersist++
     });
 }
        public void RegisterNewObject(VM vm, VMEntity obj, VMAsyncPersistIDCallback callback)
        {
            if (obj is VMAvatar)
            {
                return;                  //???
            }
            var  objid = obj.ObjectID;
            uint guid  = obj.Object.OBJ.GUID;

            if (obj.MasterDefinition != null)
            {
                guid = obj.MasterDefinition.GUID;
            }
            var  state = ((VMTSOObjectState)obj.TSOState);
            uint?owner = state.OwnerID;

            if (owner == 0)
            {
                owner = null;
            }
            DbObject dbo = new DbObject()
            {
                owner_id      = owner,
                lot_id        = Context.DbId,
                shard_id      = Context.ShardId,
                dyn_obj_name  = "",
                budget        = 0,
                graphic       = (ushort)obj.GetValue(VMStackObjectVariable.Graphic),
                type          = guid,
                value         = (uint)obj.MultitileGroup.Price,
                upgrade_level = state.UpgradeLevel
            };

            Host.InBackground(() =>
            {
                try
                {
                    using (var db = DAFactory.Get())
                    {
                        var id = db.Objects.Create(dbo);
                        if (callback != null)
                        {
                            callback(objid, id);
                        }
                    }
                }
                catch (Exception) { callback(objid, 0); }
            });
        }