示例#1
0
        public CakeServer(string cakeType, string id, string iid = "")
            : base(cakeType, id, iid)
        {
            var bCached = Init();

            if (!bCached)
            {
                var res = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                          .FindOneData(cakeType
                                       , ADBAccessor.filter_eq(ParamNameDefs.CollectionID, string.IsNullOrEmpty(iid) ? ObjectId.Parse(id) : ObjectId.Parse(iid)));
                if (res == null)
                {
                    var ct = ApiDateTime.SecondsFromBegin();
                    ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                    .UpdateOneData(cakeType
                                   , ADBAccessor.filter_eq(ParamNameDefs.CollectionID, string.IsNullOrEmpty(iid) ? ObjectId.Parse(id) : ObjectId.Parse(iid))
                                   , ADBAccessor.update(ParamNameDefs.CreateTime, ct), true);
                    SetValue(ParamNameDefs.CreateTime, ct.ToString());
                }
                else
                {
                    foreach (var item in res.Names)
                    {
                        SetValue(item, res[item].ToString());
                    }
                }
            }
            bInited = true;
        }
示例#2
0
        protected override bool Init()
        {
            var bCached = base.Init();

            bInited = true;
            if (!IsMulti)
            {
                if (!bCached)
                {
                    var filter = ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ObjectId.Parse(id));
                    var res    = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                                 .FindOneData(cakeType
                                              , filter);
                    if (res == null)
                    {
                        var ct = ApiDateTime.SecondsFromBegin();
                        ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                        .UpdateOneData(cakeType, filter
                                       , ADBAccessor.update(ParamNameDefs.CreateTime, ct), true);
                    }
                    else
                    {
                        foreach (var item in res.Names)
                        {
                            if (item == ParamNameDefs.CollectionID)
                            {
                                continue;
                            }
                            SetValue(item, res[item].ToString());
                        }
                    }
                }
                return(bCached);
            }
            else if (string.IsNullOrEmpty(iid))
            {
                if (!bCached)
                {
                    var filter = ADBAccessor.filter_eq(ParamNameDefs.OwnerID, id);
                    var res    = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                                 .FindManyData(cakeType, filter);
                    foreach (var r in res)
                    {
                        var cid   = r[ParamNameDefs.ContentID].ToString();
                        var cakes = new CakeServer(cakeType, id);
                        var cake  = cakes.GetSingleItem(cid);
                        foreach (var item in r.Names)
                        {
                            if (item == ParamNameDefs.CollectionID)
                            {
                                continue;
                            }
                            cake.SetValue(item, r[item].ToString());
                        }
                        subCakes.Add(cid, cake);
                    }
                }
            }
            return(bCached);
        }
示例#3
0
    public AAvatarServer OnCreateAvatar(EPartnerID ePartnerID, string uid, string avatarName, int sex, Player player)
    {
        var oid  = ObjectId.GenerateNewId();
        var inst = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(ParamNameDefs.TableAvatar
                                                                                               , ADBAccessor.filter_eq(ParamNameDefs.UID, uid) & ADBAccessor.filter_eq(ParamNameDefs.PartnerID, (int)ePartnerID) & ADBAccessor.filter_eq(ParamNameDefs.AvatarName, avatarName)
                                                                                               , ADBAccessor.updates_build(ADBAccessor.update(ParamNameDefs.AvatarSex, sex), ADBAccessor.update(ParamNameDefs.CollectionID, oid)), true);
        var a = new AAvatarServer(uid, null, oid, player);

        OnAddAvatar(a, player);
        return(a);
    }
示例#4
0
    public override void OnSave()
    {
        if (lDirtyParams.Count == 0)
        {
            return;
        }
        var u = new List <UpdateDefinition <BsonDocument> >();

        foreach (var v in lDirtyParams)
        {
            if (!dParams.ContainsKey(v))
            {
                AOutput.LogError("Cannot find param " + v);
                return;
            }
            var aparam = dParams[v];
            switch (aparam.eParamType)
            {
            case EParamType.String:
                u.Add(ADBAccessor.update(v, aparam.sParamValue));
                break;

            case EParamType.Double:
                u.Add(ADBAccessor.update(v, aparam.dParamValue));
                break;

            case EParamType.Int:
                u.Add(ADBAccessor.update(v, aparam.iParamValue));
                break;

            case EParamType.Long:
                u.Add(ADBAccessor.update(v, aparam.lParamValue));
                break;
            }
        }
        ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(ParamNameDefs.TableAvatar
                                                                                    , ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId),
                                                                                    Builders <BsonDocument> .Update.Combine(u));

        AOutput.Log("avatar " + owner.OnGetStringParamValue(ParamNameDefs.AvatarName) + " saved " + lDirtyParams.Count + " params");
        var update = new LibPacket.PktParamUpdate();

        foreach (var dp in lDirtyParams)
        {
            var info = new LibPacket.ParamInfo();
            info.paramName  = dp;
            info.paramValue = OnGetStringParamValue(dp);
            update.lInfos.Add(info);
        }
        ownerServer.OnSendToClient(update);

        lDirtyParams.Clear();
    }
    public override void OnAddItem(int itemID, int count)
    {
        base.OnAddItem(itemID, count);

        if (dItems.ContainsKey(itemID))
        {
            ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(tableName, ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId),
                                                                                        ADBAccessor.updates_build(ADBAccessor.update(ParamNameDefs.BagSlotPre + itemID, dItems[itemID])), true);
        }
        else
        {
            ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(tableName, ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId),
                                                                                        ADBAccessor.updates_build(ADBAccessor.update_unset(ParamNameDefs.BagSlotPre + itemID)));
        }
    }
示例#6
0
    public void RefreshConnectedDevicesList()
    {
        AppState = CurrentAppState.DeviceSelection;
        ClearConnectedDeviceVariables();

        UIManager.Instance.DeviceSelectionToggleAll.gameObject.SetActive(false);
        UIManager.Instance.ConnectDeviceResetBtn.SetActive(false);
        UIManager.Instance.DeviceLoadingPanel.SetActive(true);
        UIManager.Instance.NoDevicePanel.SetActive(false);

        ADBManager adbManager = ADBManager.Instance;

        ProcessThreads.Add(new Thread(() => adbManager.GetConnectedDevices()));
        ProcessThreads[ProcessThreads.Count - 1].Start();

        Thread.Sleep(1);
    }
        private void GameHandler_EnterGame(IResponer responer, PktEnterGameRequest vo)
        {
            var player = APlayerManager.Instance.OnGetPlayerByConn(responer.playerConnDesc);

            if (player == null)
            {
                return;
            }

            var res = new PktEnterGameResult();
            var dbr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                , ADBAccessor.filter_eq(ParamNameDefs.PartnerID, (int)player.ePartnerID) & ADBAccessor.filter_eq(ParamNameDefs.UnionID, player.unionid));

            if (dbr != null)
            {
                var c = new CakeAvatar(dbr[ParamNameDefs.CollectionID].ToString());
                APlayerManager.Instance.OnAddAvatar(c, player);
                res.info = c.ToPkt();
            }
            responer.Response(res);
        }
        private void GameHandler_CreateAvatar(IResponer responer, PktCreateAvatarRequest vo)
        {
            var player = APlayerManager.Instance.OnGetPlayerByConn(responer.playerConnDesc);

            if (player == null)
            {
                return;
            }
            var res = new PktCreateAvatarResult();
            {
                var dbr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                    , ADBAccessor.filter_eq(ParamNameDefs.AvatarName, vo.avatarName)
                                                                                                    | ADBAccessor.filter_eq(ParamNameDefs.UnionID, player.unionid)
                                                                                                    , ADBAccessor.projections(ParamNameDefs.AvatarLevel));
                if (dbr != null)
                {
                    res.eResult = PktCreateAvatarResult.EResult.SameName;
                    responer.Response(res);
                    return;
                }
            }
            {
                var dbr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                    , ADBAccessor.filter_eq(ParamNameDefs.UnionID, player.unionid), ADBAccessor.projections(ParamNameDefs.AvatarLevel));
                if (dbr != null)
                {
                    res.eResult = PktCreateAvatarResult.EResult.MaxCount;
                    responer.Response(res);
                    return;
                }
            }
            var psid = ObjectId.GenerateNewId().ToString();
            var cake = new CakeAvatar(psid);

            cake.Create(player.unionid, player.ePartnerID, vo.avatarName, vo.sex);
            APlayerManager.Instance.OnAddAvatar(cake, player);
            res.info    = cake.ToPkt();
            res.eResult = PktCreateAvatarResult.EResult.Success;
            responer.Response(res);
        }
示例#9
0
        private void Handler_CreateAvatar(IResponer responer, PktCreateAvatarRequest vo)
        {
            var player = AAvatarManager.Instance.OnGetPlayer(responer.playerConnDesc);

            if (player == null)
            {
                return;
            }
            if (player.avatar != null)
            {
                return;
            }

            var res = new PktCreateAvatarResult();
            var dbr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                , ADBAccessor.filter_eq(ParamNameDefs.PartnerID, (int)player.ePartnerID) & ADBAccessor.filter_eq(ParamNameDefs.UID, player.uid));

            if (dbr != null)
            {
                res.eResult = PktCreateAvatarResult.EResult.MaxCount;
            }
            else
            {
                var dnr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                    , ADBAccessor.filter_eq(ParamNameDefs.AvatarName, vo.avatarName));
                if (dnr != null)
                {
                    res.eResult = PktCreateAvatarResult.EResult.SameName;
                }
                else
                {
                    res.eResult = PktCreateAvatarResult.EResult.Success;

                    var a = AAvatarManager.Instance.OnCreateAvatar(player.ePartnerID, player.uid, vo.avatarName, vo.sex, player);
                    res.info = a.ToPkt();
                }
            }
            responer.Response(res);
        }
    public override void InitComponent()
    {
        var result = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname)
                     .FindOneData(tableName, ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId), null);

        if (result != null)
        {
            foreach (var r in result)
            {
                if (r.Name.StartsWith(ParamNameDefs.BagSlotPre))
                {
                    var itemID  = r.Name.Substring(ParamNameDefs.BagSlotPre.Length);
                    var itemNum = r.Value.AsInt32;
                    DoAddItem(typeParser.intParse(itemID), itemNum);
                }
            }
        }
        else
        {
            ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(tableName, ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId)
                                                                                        , ADBAccessor.updates_build(ADBAccessor.update(ParamNameDefs.AvatarName, owner.OnGetStringParamValue(ParamNameDefs.AvatarName))), true);
        }
    }
示例#11
0
        private void Handler_EnterGame(IResponer responer, PktEnterGameRequest vo)
        {
            var player = AAvatarManager.Instance.OnGetPlayer(responer.playerConnDesc);

            if (player == null)
            {
                return;
            }

            var res = new PktEnterGameResult();
            var dbr = ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).FindOneData(ParamNameDefs.TableAvatar
                                                                                                , ADBAccessor.filter_eq(ParamNameDefs.PartnerID, (int)player.ePartnerID) & ADBAccessor.filter_eq(ParamNameDefs.UID, player.uid));

            if (dbr != null)
            {
                var a = AAvatarManager.Instance.OnGetAvatar(player.uid);
                if (a == null)
                {
                    a = AAvatarManager.Instance.OnCreateAvatar(player.uid, dbr, player);
                }
                res.info = a.ToPkt();
            }
            responer.Response(res);
        }
示例#12
0
 // Use this for initialization
 void Start()
 {
     Instance = this;
 }
示例#13
0
        public static void Tick()
        {
            if (CakeCache.dIDDirtyParams.Count > 0)
            {
                foreach (var idk in CakeCache.dIDDirtyParams)
                {
                    var filter = ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ObjectId.Parse(idk.Key));
                    foreach (var cakeTypek in idk.Value)
                    {
                        var lupdate = new List <UpdateDefinition <BsonDocument> >();
                        var vs      = cakeTypek.Value.Values.ToArray();
                        foreach (var pv in vs)
                        {
                            lupdate.Add(pv.GetUpdate());
                        }
                        ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(cakeTypek.Key, filter
                                                                                                    , Builders <BsonDocument> .Update.Combine(lupdate));
                    }

                    if (!dAccessTimes.ContainsKey(idk.Key))
                    {
                        dAccessTimes.Add(idk.Key, DateTime.Now);
                    }
                    else
                    {
                        dAccessTimes[idk.Key] = DateTime.Now;
                    }
                }
                CakeCache.dIDDirtyParams.Clear();
            }
            if (CakeCache.dIIDDirtyParams.Count > 0)
            {
                foreach (var idk in CakeCache.dIIDDirtyParams)
                {
                    var ll = idk.Value.ToArray();
                    foreach (var iidk in ll)
                    {
                        var filter = ADBAccessor.filter_eq(ParamNameDefs.OwnerID, idk.Key)
                                     & ADBAccessor.filter_eq(ParamNameDefs.ContentID, iidk.Key);
                        var lll = iidk.Value.ToArray();
                        foreach (var cakeTypek in lll)
                        {
                            var lupdate = new List <UpdateDefinition <BsonDocument> >();
                            var llll    = cakeTypek.Value.ToArray();
                            foreach (var pv in llll)
                            {
                                lupdate.Add(pv.Value.GetUpdate());
                            }
                            lupdate.Add(ADBAccessor.update(ParamNameDefs.ContentID, iidk.Key));
                            lupdate.Add(ADBAccessor.update(ParamNameDefs.OwnerID, idk.Key));
                            ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(cakeTypek.Key, filter
                                                                                                        , Builders <BsonDocument> .Update.Combine(lupdate), true);
                        }
                    }

                    if (!dAccessTimes.ContainsKey(idk.Key))
                    {
                        dAccessTimes.Add(idk.Key, DateTime.Now);
                    }
                    else
                    {
                        dAccessTimes[idk.Key] = DateTime.Now;
                    }
                }
                CakeCache.dIIDDirtyParams.Clear();
            }
            var remove = new List <string>();

            foreach (var dk in dAccessTimes)
            {
                if (APlayerManager.Instance.IsOnline(dk.Key))
                {
                    continue;
                }
                if ((DateTime.Now - dk.Value).TotalSeconds > 30)
                {
                    remove.Add(dk.Key);
                }
            }
            foreach (var r in remove)
            {
                dAccessTimes.Remove(r);
                if (CakeCache.dIDDirtyParams.ContainsKey(r))
                {
                    CakeCache.dIDDirtyParams.Remove(r);
                }
                if (CakeCache.dIIDDirtyParams.ContainsKey(r))
                {
                    CakeCache.dIIDDirtyParams.Remove(r);
                }
            }
        }