示例#1
0
文件: DB.cs 项目: Fedorm/core-master
        void SyncComplete(object sender, ISyncEventArgs e)
        {
            ControlsContext.Current.ActionHandlerLocker.Release();

            var common = (ICommonData)_context.ValueStack.Values["common"];

            common.SyncIsOK = e.Ok;

            DbContext.Current.Database.SyncComplete(e.Ok);

            if (_handler != null)
            {
                _context.InvokeOnMainThread(() =>
                {
                    _handler.ExecuteCallback(_scriptEngine.Visitor, _state, null);
                    _state   = null;
                    _handler = null;
                });
            }

            if (!e.Ok)
            {
                LastError = e.Exception.Message;
                _context.HandleException(e.Exception);
            }
        }
示例#2
0
 void LoadComplete(object sender, ISyncEventArgs e)
 {
     _baseActivity.RunOnUiThread(() =>
     {
         if (!_disposed)
         {
             if (e.Ok)
             {
                 StartApplication();
             }
             else
             {
                 var ce = e.Exception as ConnectionException;
                 if (ce != null)
                 {
                     ReturnToStartMenu(ce.FriendlyMessage, ce.Report);
                 }
                 else
                 {
                     HandleException(e.Exception);
                     var ex = e.Exception as CustomException;
                     if (ex != null)
                     {
                         ReturnToStartMenu(ex.FriendlyMessage, ex.Report);
                     }
                 }
             }
         }
     });
 }
 private void LoadComplete(object sender, ISyncEventArgs args)
 {
     _controller.BeginInvokeOnMainThread(() =>
     {
         if (args.Ok)
         {
             OpenStartScreen(true);
             UIApplication.SharedApplication.EndBackgroundTask(_backgroundTaskId);
         }
         else
         {
             var ce = args.Exception as CustomException;
             if (ce != null)
             {
                 string msg = ce.FriendlyMessage;
                 Logon(Settings.ClearCacheOnStart, msg);
             }
             else
             {
                 HandleException(args.Exception);
             }
             UIApplication.SharedApplication.EndBackgroundTask(_backgroundTaskId);
         }
     });
 }
示例#4
0
        public static SynchronizerDto MapSynchronizer(ISyncEventArgs syncEventArgs, string userId)
        {
            var synchronizer = MapSynchronizer(syncEventArgs.SyncInfo, userId);

            synchronizer.Id            = syncEventArgs.Scene.Id;
            synchronizer.RoundsPassed  = syncEventArgs.Scene.PassedTime;
            synchronizer.Idle          = syncEventArgs.Scene.Idle;
            synchronizer.TargetX       = syncEventArgs.TargetX;
            synchronizer.TargetY       = syncEventArgs.TargetY;
            synchronizer.SkillActionId = syncEventArgs.SkillActionId;
            synchronizer.ActorId       = syncEventArgs.ActorId;
            synchronizer.Version       = syncEventArgs.Version;
            synchronizer.TurnTime      = syncEventArgs.Scene.RemainedTurnTime;
            return(synchronizer);
        }
示例#5
0
        private void SynchronizationInfoEventHandler(object sender, ISyncEventArgs e)
        {
            var battleHub = _serviceProvider.GetRequiredService <IHubContext <ArenaHub.ArenaHub> >();

            string actionName = BattleHelper.GetBattleActionMethodName(e.Action);

            var uniqueUsers = e.Scene.ShortPlayers
                              .GroupBy(key => key.UserId, res => res, (key, res) => new
            {
                UserId  = key,
                Players = res
            })
                              .ToList();

            foreach (var userPlayers in uniqueUsers)
            {
                if (userPlayers.Players.All(x => x.Left))
                {
                    continue;
                }

                var user = battleHub.Clients.User(userPlayers.UserId);
                if (user != null)
                {
                    var synchronizer = BattleHelper.MapSynchronizer(e, userPlayers.UserId);
                    foreach (var player in userPlayers.Players)
                    {
                        if (BattleHelper.CalculateReward(ref synchronizer, e.Scene, player.Id))
                        {
                            Task.Run(async() => await PayRewardAsync(synchronizer.Reward, player.UserId));
                        }
                    }

                    battleHub.Clients.User(userPlayers.UserId).SendAsync(actionName, synchronizer);
                }
            }
        }
示例#6
0
		void LoadComplete (object sender, ISyncEventArgs args)
		{
			if (args.Ok)
				_controller.BeginInvokeOnMainThread (() => {
					OpenStartScreen (true);
					UIApplication.SharedApplication.EndBackgroundTask (_backgroundTaskId);
				});
			else {

				CustomException ce = args.Exception as CustomException;
				if (ce != null) {
					string msg = ce.FriendlyMessage;
					Logon (Settings.ClearCacheOnStart, msg);
				} else
					HandleException (args.Exception);
				UIApplication.SharedApplication.EndBackgroundTask (_backgroundTaskId);
			}
		}
 void LoadComplete(object sender, ISyncEventArgs e)
 {
     _baseActivity.RunOnUiThread(() =>
     {
         if (!_disposed)
             if (e.Ok)
                 StartApplication();
             else
             {
                 var ce = e.Exception as ConnectionException;
                 if (ce != null)
                     ReturnToStartMenu(ce.FriendlyMessage, ce.Report);
                 else
                 {
                     HandleException(e.Exception);
                     var ex = e.Exception as CustomException;
                     if (ex != null)
                         ReturnToStartMenu(ex.FriendlyMessage, ex.Report);
                 }
             }
     });
 }
示例#8
0
 protected void EventHandler(object sender, ISyncEventArgs e)
 {
     SyncMessages.Add(e);
 }
示例#9
0
文件: DB.cs 项目: Fedorm/core-master
        void SyncComplete(object sender, ISyncEventArgs e)
        {
            ControlsContext.Current.ActionHandlerLocker.Release();

            var common = (ICommonData)_context.ValueStack.Values["common"];
            common.SyncIsOK = e.Ok;

            DbContext.Current.Database.SyncComplete(e.Ok);

            if (_handler != null)
                _context.InvokeOnMainThread(() =>
                {
                    _handler.ExecuteCallback(_scriptEngine.Visitor, _state, null);
                    _state = null;
                    _handler = null;
                });

            if (!e.Ok)
            {
                LastError = e.Exception.Message;
                _context.HandleException(e.Exception);
            }
        }