public override void ExecuteStateAction()
    {
        myTask = _taskController.currentTask();
        if (FarFromTask())
        {
            //Calculate direction vector to following and set new destination
            Vector3 dirToTask = npc.transform.position - myTask.location;
            Vector3 newPos    = npc.transform.position - dirToTask;

            if (npc.navAgent.destination != newPos)
            {
                npc.navAgent.SetDestination(newPos);
            }
        }
        else
        {
            if (!myTask.active && !myTask.done)
            {
                myTask.StartTask();
                npc.animateWorking();
            }
            else if (myTask.active)
            {
                npc.animateWorking();
            }
        }
    }
Beispiel #2
0
 void Awake()
 {
     cameraFollow   = GameObject.Find("Main Camera").GetComponent <CameraFollow>();
     gameManager    = GameObject.Find("GameController").GetComponent <GameManager>();
     npcTask        = GameObject.Find("NPC").GetComponent <NPCTask>();
     characterImage = characterImageObj.GetComponent <Image>();
     otherImage     = otherImageObj.GetComponent <Image>();
 }
Beispiel #3
0
    void SetupNPC(GameObject obj, NPCTypes type)
    {
        NPCManager manager = obj.GetComponent <NPCManager>();
        NPCTask    task    = obj.GetComponent <NPCTask>();

        manager.SetCharacterType(obj, type, manager, task);
        //Destroy(obj.GetComponent<NPCTask>());
    }
    void InitNeedList()
    {
        NPCTask task = _npcData.CurNpcTask;

        if (task != null)
        {
            // 生成需求道具
            for (int i = 0; i < task.Require.Count; i++)
            {
                var need = GameObject.Instantiate(objNeedSlot) as GameObject;
                need.name = objNeedSlot.name;
                need.transform.SetParent(trsNeedListRoot);
                need.transform.localScale = Vector3.one;

                need.AddMissingComponent <Button> ().onClick.AddListener(() => {
                    OnItemClicked(objNeedSlot);
                });

                Debug.Log("NpcId = " + GameData.nCurNpcTag + " ,taskId = " + task.ID + " ,task.requireid = " + task.Require [i].strId);

                Item item = DataCenter.Instance.dictItem [task.Require [i].strId];
                need.GetComponent <SlotMissionNeed> ().UpdataItemInfo(item, task.Require [i].nCount);

                // TODO::太粗暴,要改,检查需求数量是否足够
                int count = 0;
                for (int j = 0; j < GameData.lstBagItems.Count; j++)
                {
                    if (GameData.lstBagItems [j].ID == task.Require [i].strId)
                    {
                        count++;
                    }
                }
                if (count < task.Require [i].nCount)
                {
                    _bIsTaskOk = false;
                }
            }


            // 生成奖励
            for (int i = 0; i < task.Reward.Count; i++)
            {
                var need = GameObject.Instantiate(objRewardItem) as GameObject;
                need.name = objRewardItem.name;
                need.transform.SetParent(trsRewardRoot);
                need.transform.localScale = Vector3.one;

                Item item = DataCenter.Instance.dictItem [task.Reward [i].strId];

                Debug.Log("NpcId = " + GameData.nCurNpcTag + " ,taskId = " + task.ID + " :  task.requireid : " + task.Reward [i].strId);

                need.GetComponent <SlotNpcTaskReward> ().imgIcon.sprite = item.IconSprite;
                need.GetComponent <SlotNpcTaskReward> ().txtNum.text    = task.Reward [i].nCount.ToString();
            }
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     task_order = Enumerable.Range(0, tasks.Count).ToArray();
     task_order = shuffleArray(task_order);
     activeTask = tasks[task_order[TaskCounter % tasks.Count]];
     if (activeTask == null)
     {
         nullTasksAssigned = true;
     }
 }
 private void SetNextTask()
 {
     TaskCounter += 1;
     activeTask   = tasks[task_order[TaskCounter % tasks.Count]];
     if (TaskCounter % tasks.Count == 0)
     {
         RestTaskList();
     }
     CancelInvoke("SetNextTask");
     restingAfterDone = false;
 }
Beispiel #7
0
    public void SetCharacterType(GameObject npc, NPCTypes type, NPCManager manager, NPCTask task)
    {
        switch (type)
        {
        case NPCTypes.CoalMiner:
            Character = new CoalMiner(npc);
            break;

        case NPCTypes.Blacksmith:
            Character = new Blacksmith(npc);
            break;

        case NPCTypes.WaterGatherer:
            Character = new WaterGatherer(npc);
            break;

        case NPCTypes.WaterPurifier:
            Character = new WaterPurifier(npc);
            break;

        case NPCTypes.LumberJack:
            Character = new LumberJack(npc);
            break;

        case NPCTypes.StoneBuilder:
            Character = new StoneBuilder(npc);
            break;

        case NPCTypes.Cook:
            Character = new Cook(npc);
            break;

        case NPCTypes.Farmer:
            Character = new Farmer(npc);
            break;

        case NPCTypes.Hunter:
            Character = new Hunter(npc);
            break;

        default:
            Destroy(this);
            return;
        }
        Type = type;
        manager.Character.Task = task;
    }
Beispiel #8
0
    public GameObject col; //碰撞器開關

    void Start()
    {
        Joystick.isMove       = true;
        StaticObject.nowClass = 0;
        if (StaticObject.nowClass == 0) //目前第一關(初始)
        {
            //產生物件
            currentLine = 1;
            endAtLine   = 10;

            //StaticObject.whoCharacter = 1;
            if (StaticObject.whoCharacter == 1)
            {
                TextAsset textFile1 = Resources.Load("Text/bother") as TextAsset;
                textFile      = textFile1;
                playerName    = "卡特";
                sister_angry  = Resources.Load("characterImage/bother/bother_angry", typeof(Sprite)) as Sprite;
                sister_happy  = Resources.Load("characterImage/bother/bother_happy", typeof(Sprite)) as Sprite;
                sister_normal = Resources.Load("characterImage/bother/bother_normal", typeof(Sprite)) as Sprite;
                sister_oops   = Resources.Load("characterImage/bother/bother_oops", typeof(Sprite)) as Sprite;
                sister_sad    = Resources.Load("characterImage/bother/bother_sad", typeof(Sprite)) as Sprite;
                sister_smile  = Resources.Load("characterImage/bother/bother_normal", typeof(Sprite)) as Sprite;
                vsBother.SetActive(true);
            }
            else if (StaticObject.whoCharacter == 2)
            {
                TextAsset textFile1 = Resources.Load("Text/sister") as TextAsset;
                textFile      = textFile1;
                playerName    = "緹緹";
                sister_angry  = Resources.Load("characterImage/sister/sister_angry", typeof(Sprite)) as Sprite;
                sister_happy  = Resources.Load("characterImage/sister/sister_happy", typeof(Sprite)) as Sprite;
                sister_normal = Resources.Load("characterImage/sister/sister_normal", typeof(Sprite)) as Sprite;
                sister_oops   = Resources.Load("characterImage/sister/sister_oops", typeof(Sprite)) as Sprite;
                sister_sad    = Resources.Load("characterImage/sister/sister_sad", typeof(Sprite)) as Sprite;
                sister_smile  = Resources.Load("characterImage/sister/sister_smile", typeof(Sprite)) as Sprite;
                vsSister.SetActive(true);
            }

            cameraFollow      = GameObject.Find("Main Camera").GetComponent <CameraFollow>();
            gameManager       = GameObject.Find("GameController").GetComponent <GameManager>();
            npcTask           = GameObject.Find("NPC").GetComponent <NPCTask>();
            EnemyController   = GameObject.Find("BossEnemy").GetComponent <DG_EnemyController>();
            MonsterController = GameObject.Find("MonsterEnemy").GetComponent <DG_EnemyController>();
            characterImage    = characterImageObj.GetComponent <Image>();
            otherImage        = otherImageObj.GetComponent <Image>();


            markAni            = markObj.GetComponent <Animator>();
            markCollider       = markObj.GetComponent <BoxCollider2D>();
            attackColliderCol  = attackCollider.GetComponent <BoxCollider2D>();
            monsterColliderCol = monsterCollider.GetComponent <BoxCollider2D>();
            statueCollider     = statueObj.GetComponent <BoxCollider2D>();
            vine3Collider      = vine3.GetComponent <BoxCollider2D>();
            mark2Collider      = mark2Obj.GetComponent <BoxCollider2D>();
            mark2Ani           = mark2Obj.GetComponent <Animator>();

            if (currentLine > endAtLine)
            {
                isActive = false;
                textBox.SetActive(false);
                GameEnd = false;
            }
            if (textFile != null)
            {
                textLines = (textFile.text.Split('\n'));
            }
            if (endAtLine == 0)
            {
                endAtLine = textLines.Length - 1;
            }

            if (isActive)
            {
                EnableTextBox();
            }
            else
            {
                DisableTextBox();
            }

            StaticObject.nowClass = 1f;
            PlayerPrefs.SetFloat("StaticObject.nowClass", StaticObject.nowClass);
        }
        StaticObject.chichi = 1;
        PlayerPrefs.SetInt("StaticObject.chichi", StaticObject.chichi);
        //usually.TransitionTo(10f);
        fadeOut = FadeOut.GetComponent <Animator>();
        StartCoroutine("fadeIn");
    }