コード例 #1
0
ファイル: TaskManager.cs プロジェクト: tobiasbruch/GGJ2018
    public void CompleteTask(TaskToComplete task)
    {
        if (completedCount == 0)
        {
            Locator.Get <Timer>().Countdown();
        }

        completedCount++;
        House targetHouse = null;

        foreach (var house in houses)
        {
            if (house.id == task.targetId)
            {
                targetHouse = house;
                break;
            }
        }
        if (targetHouse)
        {
            Instantiate(_receiveSpeechBubble[Random.Range(0, _receiveSpeechBubble.Length)], targetHouse.transform.position + Vector3.up, Quaternion.identity);
        }
        hate += hateIncrement;
        Locator.Get <Resources>().AddCoins(task.coinsReward);
        Locator.Get <Timer>().Bounce();
        droppedTasks.Remove(task);
        Destroy(task.gameObject);
        ResetParticles();
        Locator.Get <Game>().AddTime();
    }
コード例 #2
0
 public void Run()
 {
     StartedOn = DateTime.Now;
     OnStartedTask?.Invoke(this, new ThreadTaskEventArgs());
     try
     {
         TaskToComplete.Invoke();
     }
     catch (Exception e)
     {
         IsError   = true;
         Exception = e;
         OnErrorTask?.Invoke(this, new ThreadTaskEventArgs(e));
     }
     CompletedOn = DateTime.Now;
     OnCompletedTask?.Invoke(this, new ThreadTaskEventArgs());
 }
コード例 #3
0
ファイル: House.cs プロジェクト: tobiasbruch/GGJ2018
    // Update is called once per frame
    void Update()
    {
        var player = Locator.Get <PlayerMomentumMovement>();

        if (player == null)
        {
            return;
        }

        if (availableTask != null && Vector3.Distance(player.transform.position, availableTask.transform.position) < completeAtDistance)
        {
            if (availableTask != null && Locator.Get <TaskManager>().activeTask == null)
            {
                Locator.Get <TaskManager>().PickupTask(availableTask);
                availableTask = null;
            }
        }
    }
コード例 #4
0
ファイル: House.cs プロジェクト: tobiasbruch/GGJ2018
 public void GiveTask(TaskToComplete task)
 {
     this.availableTask = task;
 }
コード例 #5
0
ファイル: TaskManager.cs プロジェクト: tobiasbruch/GGJ2018
    public void PickupTask(TaskToComplete task)
    {
        //Create Speechbubble
        int hateLevel = 0;

        for (int i = 0; i < _hateThresholds.Length; i++)
        {
            if (_hateThresholds[i] > hate)
            {
                hateLevel = i;
                break;
            }
        }
        RequestSpeechBubbles speechbubbles = null;

        foreach (RequestSpeechBubbles item in _requestSpeechBubbles)
        {
            if (item._id == task.targetId)
            {
                speechbubbles = item;
                break;
            }
        }
        if (speechbubbles != null)
        {
            Instantiate(_requestSpeechBubblePrefab, task.transform.position - new Vector3(1, 0, 0), Quaternion.identity).
            GetComponentInChildren <SpriteRenderer>().sprite = speechbubbles._speechBubbles[Mathf.Min(hateLevel, speechbubbles._speechBubbles.Length)];
        }

        activeTasks.Add(task);

        var last = activeTasks.LastOrDefault();

        var pos = new Vector3();

        if (taskListContainer.transform.childCount > 0)
        {
            pos.y = taskListContainer.transform.GetChild(taskListContainer.transform.childCount - 1)
                    .transform.localPosition.y - .7f;
        }

        //if(last != null)
        //	pos.y = last.transform.position.y - 20;
        //task.transform.SetParent(taskListContainer.transform);

        //task.transform.DOLocalMove(pos, .5f).SetEase(Ease.InOutSine);
        var p = Locator.Get <PlayerMovement>();

        p.ConnectItem(task.GetComponent <Joint2D>());
        task.transform.position    = p.transform.position;
        task.transform.localScale *= .6f;
        task.PickedUp();

        var otherHouse = houses.Find(t => t.id == task.targetId);

        if (completedCount == 0)
        {
            otherHouse.LightUp();
        }


        _audioSource.PlayOneShot(_pickUpLetterClips[Random.Range(0, _pickUpLetterClips.Length)]);
    }
コード例 #6
0
 public Tasks(GameObject gameObject, TaskToComplete taskToComplete, bool complete)
 {
     interactingWith = gameObject;
     task            = taskToComplete;
     Complete        = complete;
 }