Beispiel #1
0
        public IEnumerator CreateGmAccount(Coroutine co,
                                           string name,
                                           string pwd,
                                           int priority,
                                           AsyncReturnValue <int> status)
        {
            status.Value = 0;
            var uuid = GameMasterServer.Instance.DB.GetNextId(co, (int)DataCategory.GameMaster);

            yield return(uuid);

            if (uuid.Status != DataStatus.Ok)
            {
                yield break;
            }

            var gmController = new GMAccountController
            {
                DbData = new DBGmAccount
                {
                    Id        = uuid.Data,
                    Name      = name,
                    Pwd       = pwd,
                    Priority  = priority,
                    FoundTime = DateTime.Now.ToBinary()
                }
            };

            var returnValue = AsyncReturnValue <int> .Create();

            var co1 = CoroutineFactory.NewSubroutine(gmController.SaveDbName, co, returnValue);

            if (co1.MoveNext())
            {
                yield return(co1);
            }
            if (returnValue.Value != 1)
            {
                Logger.Error("gmController.SaveDbName Error! GM name = " + gmController.DbData.Name);
                yield break;
            }

            co1 = CoroutineFactory.NewSubroutine(gmController.SaveDb, co, returnValue);
            if (co1.MoveNext())
            {
                yield return(co1);
            }
            if (returnValue.Value != 1)
            {
                Logger.Error("gmController.SaveDb Error! GM name = " + gmController.DbData.Name);
                yield break;
            }
            returnValue.Dispose();
            AddGM(gmController.DbData.Id, gmController);

            status.Value = 1;
        }
Beispiel #2
0
        public void AddGM(ulong clientId, GMAccountController gm)
        {
            if (GetGM(clientId) != null)
            {
                return;
            }

            GameMasterManager.Gms[clientId] = gm;
        }
Beispiel #3
0
        public IEnumerator SaveDb(Coroutine co, GMAccountController _this, AsyncReturnValue <int> ret)
        {
            var retSet = GameMasterServer.Instance.DB.Set(co, DataCategory.GameMaster, _this.DbData.Id, _this.DbData);

            yield return(retSet);

            if (retSet.Status != DataStatus.Ok)
            {
                Logger.Error("Save GM DB Error! GM name = " + _this.DbData.Name);
                yield break;
            }
            Logger.Info("Save GM DB OK! GM name = " + _this.DbData.Name);
            ret.Value = 1;
        }
Beispiel #4
0
        public IEnumerator LoadGM(Coroutine coroutine,
                                  string name,
                                  AsyncReturnValue <ulong> gmId,
                                  AsyncReturnValue <int> ret)
        {
            var dbAccoutGuid = GameMasterServer.Instance.DB.Get <DBUlong>(coroutine, DataCategory.GameMaster,
                                                                          name);

            yield return(dbAccoutGuid);

            if (dbAccoutGuid.Data == null)
            {
                yield break;
            }

            gmId.Value = dbAccoutGuid.Data.Value;
            if (GetGM(gmId.Value) != null)
            {
                ret.Value = 1;
                yield break;
            }

            var dbAccout = GameMasterServer.Instance.DB.Get <DBGmAccount>(coroutine, DataCategory.GameMaster,
                                                                          dbAccoutGuid.Data.Value);

            yield return(dbAccout);

            if (dbAccout.Data == null)
            {
                yield break;
            }
            var gmController = new GMAccountController();

            gmController.DbData = dbAccout.Data;
            AddGM(gmController.DbData.Id, gmController);

            ret.Value = 1;

            /*
             * OneAccent acc = new OneAccent() { Name = dbAccout.Data.Name };
             * LoginAllAccounts allAcc = new LoginAllAccounts();
             * allAcc.acc.Add (acc);
             * CoroutineFactory.NewCoroutine(GameMasterManager.NofifyAllAccounts, (ulong)0, allAcc).MoveNext ();
             */
        }
Beispiel #5
0
        public IEnumerator ModifyGmAccount(Coroutine co, GMAccountController gmController, AsyncReturnValue <int> status)
        {
            status.Value = 0;
            var returnValue = AsyncReturnValue <int> .Create();

            var co1 = CoroutineFactory.NewSubroutine(gmController.SaveDb, co, returnValue);

            if (co1.MoveNext())
            {
                yield return(co1);
            }
            if (returnValue.Value != 1)
            {
                Logger.Error("gmController.SaveDb Error! GM name = " + gmController.DbData.Name);
                yield break;
            }

            AddGM(gmController.DbData.Id, gmController);

            returnValue.Dispose();
            status.Value = 1;
        }
Beispiel #6
0
 public static IEnumerator ModifyGmAccount(Coroutine co,
                                           GMAccountController gmController,
                                           AsyncReturnValue <int> status)
 {
     return(mStaticImpl.ModifyGmAccount(co, gmController, status));
 }
Beispiel #7
0
 public static void AddGM(ulong clientId, GMAccountController gm)
 {
     mStaticImpl.AddGM(clientId, gm);
 }