Example #1
0
	void Awake ()
	{
		if (Instance != null && Instance != this)
		{
			Destroy(gameObject);
		}
		Instance = this;

		DontDestroyOnLoad(gameObject);

		startTime = Time.time;

		Tasks = Resources.Load<TasksResource>("Tasks");

		Grid = new GridDefinition();

		ClockGO = GameObject.Find("Time");
		ClockText = ClockGO.GetComponent<TextMesh>();
		DayGO = GameObject.Find("Day");
		DayText = DayGO.GetComponent<TextMesh>();
		TimeBarGO = GameObject.Find("TimeBar");

		scoreText = ScoreObject.GetComponent<UnityEngine.UI.Text>();
		highScoreText = HighScoreObject.GetComponent<UnityEngine.UI.Text>();
		completedTasksText = CompletedTasksObject.GetComponent<UnityEngine.UI.Text>();

		highScore = ReadHighScore();

		highScoreText.text = "High Score: " + highScore.ToString();

		lastSpawnTime = 0.0f;
	}
    public static void CreateMyAsset()
    {
        TasksResource asset = new TasksResource();  //scriptable object
		string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath("Assets/Resources/" + "Tasks.asset");
		AssetDatabase.CreateAsset(asset, assetPathAndName);
        AssetDatabase.SaveAssets();
    }
        public TaskActivityWatcher Execute(MazeTask mazeTask, ICommandDescription commandDescription)
        {
            var task = TasksResource.Execute(mazeTask, _taskComponentResolver, _xmlSerializerCache, _restClient);

            var watcher = _serviceProvider.GetRequiredService <TaskActivityWatcher>();

            watcher.InitializeWatch(mazeTask.Id);

            PendingCommands.Insert(0, new PendingCommandViewModel(commandDescription, task, mazeTask, watcher));
            return(watcher);
        }
Example #4
0
        public async Task Execute()
        {
            await _taskManager.Initialize();

            if (_restClient == null)
            {
                return;
            }

            var tasks = await TasksResource.GetSyncInfo(_restClient);

            await _taskManager.Synchronize(tasks, _restClient);
        }
Example #5
0
        public async Task <TaskSessionsInfo> BizActionAsync(MazeTask inputData)
        {
            var builder = new TaskSessionInfoBuilder(inputData.Id);

            builder.TaskSessionAdded   += BuilderOnTaskSessionAdded;
            builder.TaskExecutionAdded += BuilderOnTaskExecutionAdded;
            builder.TaskResultAdded    += BuilderOnTaskResultAdded;

            var storage = new MemoryTaskResultStorage();

            //trigger locally
            await _management.TriggerNow(inputData, SessionKey.Create("Execute"), storage);

            builder.Add(new TaskSessionsInfo
            {
                Sessions   = storage.Sessions,
                Executions = storage.Executions,
                Results    = storage.CommandResults
            }, TargetId.ServerId);

            //trigger on clients
            var audienceFilter = new AudienceFilter(inputData.Audience);
            var clients        = (await _dbContext.Clients.Select(x => x.ClientId).ToListAsync()).ToHashSet();

            var onlineClients = _connectionManager.ClientConnections.Where(x => clients.Contains(x.Key));

            var tasks = new Dictionary <Task <TaskSessionsInfo>, int>();

            foreach (var onlineClient in onlineClients)
            {
                if (audienceFilter.Invoke(onlineClient.Key))
                {
                    //add all at once because the tasks don't do anything except waiting for the completion source anyways
                    var task = TasksResource.ExecuteTask(inputData, _taskComponentResolver, _xmlSerializerCache, onlineClient.Value);
                    tasks.Add(task, onlineClient.Key);
                }
            }

            while (tasks.Any())
            {
                var task = await Task.WhenAny(tasks.Keys);

                builder.Add(task.Result, new TargetId(tasks[task]));

                tasks.Remove(task);
            }

            return(builder.Build());
        }
Example #6
0
        public async Task BizActionAsync(Guid inputData)
        {
            var task = (await _taskDirectory.LoadTasks()).FirstOrDefault(x => x.Id == inputData);

            if (task == null)
            {
                AddValidationResult(TaskErrors.TaskNotFound);
                return;
            }

            var sessionKey = SessionKey.CreateUtcNow("ManualTrigger");
            await _management.TriggerNow(task, sessionKey, new DatabaseTaskResultStorage(_serviceProvider));

            foreach (var status in _activeTasksManager.ActiveCommands.Where(x => !x.Key.IsServer))
            {
                if (status.Value.Tasks.Any(x => x.TaskId == inputData))
                {
                    if (_connectionManager.ClientConnections.TryGetValue(status.Key.ClientId, out var connection))
                    {
                        await TasksResource.TriggerTask(inputData, sessionKey, connection);
                    }
                }
            }
        }
 /// <summary>Constructs a new service.</summary>
 /// <param name="initializer">The service initializer.</param>
 public TaskqueueService(Google.Apis.Services.BaseClientService.Initializer initializer)
     : base(initializer)
 {
     taskqueues = new TaskqueuesResource(this);
     tasks      = new TasksResource(this);
 }