public void RemoveFriendlyAI(FriendlyAI ai)
 {
     if (activeAIs.Contains(ai))
     {
         activeAIs.Remove(ai);
     }
 }
示例#2
0
 private void Update()
 {
     foreach (GameObject contract in currentContracts)
     {
         FriendlyAI thisAi = contract.GetComponent <FriendlyAI>();
         if (thisAi != null)
         {
             thisAi.SetShouldMove(mousePos.mouseDown);
         }
     }
 }
    /* Bring the contract inside the ship */
    public void ImportContract(FriendlyAI contract)
    {
        //Update score
        int ThisScore = 0;

        switch (contract.GetContractWorth())
        {
        case ContractWorthAmount.TEN_K_WORTH:
            ThisScore = 10000;
            break;

        case ContractWorthAmount.TWENTY_K_WORTH:
            ThisScore = 20000;
            break;

        case ContractWorthAmount.FIFTY_K_WORTH:
            ThisScore = 50000;
            break;

        case ContractWorthAmount.SEVENTY_K_WORTH:
            ThisScore = 75000;
            break;
        }
        PlayerScore.Instance.Score += ThisScore;

        //Increase ship size
        WorldScaleManager.Instance.AddScale(ThisScore == 0 ? 0 : ThisScore / 10);

        //Work out how many contracts are in centre of ship, and don't spawn if we're at max
        int ContractsInCentre = 0;

        foreach (GameObject InShip in ContractsInside)
        {
            if (InShip.GetComponent <ContractInShip>().Assignee == ContractAssignee.NONE)
            {
                ContractsInCentre++;
            }
        }
        if (ContractsInCentre == 4)
        {
            Debug.LogWarning("Contract can't enter ship - no space!");
            return;
        }

        //We're not at max, spawn in centre
        GameObject OnBoardContract = Instantiate(friendlyObject, ContractSpawnSpot.Find(ContractsInCentre.ToString())) as GameObject;

        OnBoardContract.transform.localScale = new Vector3(1, 1, 1);
        OnBoardContract.GetComponent <ContractInShip>().ResourceRemaining = contract.GetContractValue();
        OnBoardContract.GetComponent <ContractInShip>().ResourceMax       = contract.GetContractValue();
        OnBoardContract.GetComponent <ContractInShip>().SetContractWorth(contract.GetContractWorth());
        OnBoardContract.transform.parent = ContractSpawnSpot.transform;
        ContractsInside.Add(OnBoardContract);
    }
示例#4
0
    private void OnCollisionEnter(Collision collision)
    {
        IDamageable damageable = collision.gameObject.GetComponent <IDamageable>();
        FriendlyAI  friendlyAI = collision.gameObject.GetComponent <FriendlyAI>();

        if (damageable != null && friendlyAI == null)
        {
            damageable.TakeDamage(bulletDamage);
        }
        Instantiate(explision, transform.position, Quaternion.identity);
        Destroy(gameObject, 0.1f);
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    public static IEnumerator Customization(GameObject gameObject, MeshFilter bodyLod0, MeshFilter eyeLod0, MeshFilter bodyLod1, MeshFilter eyeLod1, GameObject particlesDead, float eyeLod0UvX)
    {
        //--------------

        FriendlyAI friendlyAI = gameObject.GetComponent <FriendlyAI>();
        bool       trigger0 = false, trigger1 = false;

        //--------------

        while (friendlyAI.dead == false)
        {
            yield return(delay0);

            if (friendlyAI.aiAgr == true)
            {
                if (trigger0 == false)
                {
                    trigger0 = true;
                    trigger1 = false;
                    Class_AdditionalTools.UvMesh(eyeLod0.mesh, 0.85f, 0.25f);
                    Class_AdditionalTools.UvMesh(eyeLod1.mesh, 0.85f, 0.25f);
                }
            }
            else
            {
                if (trigger1 == false)
                {
                    trigger0 = false;
                    trigger1 = true;
                    Class_AdditionalTools.UvMesh(eyeLod0.mesh, eyeLod0UvX, 0.4f);
                    Class_AdditionalTools.UvMesh(eyeLod1.mesh, eyeLod0UvX, 0.4f);
                }
            }
        }

        //--------------

        if (friendlyAI.dead == true)
        {
            Class_AdditionalTools.UvMesh(bodyLod0.mesh, 0.15f, 0.04f);
            Class_AdditionalTools.UvMesh(bodyLod1.mesh, 0.15f, 0.04f);
            Class_AdditionalTools.UvMesh(eyeLod0.mesh, 0.85f, 0.04f);
            Class_AdditionalTools.UvMesh(eyeLod1.mesh, 0.85f, 0.04f);
            particlesDead.SetActive(true);
            yield return(delay1);

            particlesDead.SetActive(false);
        }

        //--------------
    }
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (mousePos.mouseDown && checkForContracts.currentContracts.Contains(collision.gameObject) &&
         collision.GetComponent <FriendlyAI>().GetWidth() <= transform.localScale.x)
     {
         FriendlyAI thisAI = collision.gameObject.GetComponent <FriendlyAI>();
         if (thisAI)
         {
             ShipResourceManagement.Instance.ImportContract(thisAI);
             Instantiate(PoofFX, collision.gameObject.transform.position, Quaternion.identity);
             GameObject.Destroy(collision.gameObject);
             goodSuccSound.Stop();
         }
     }
 }
示例#7
0
    IEnumerator WaitExplosion()
    {
        playerController.SetCutscene(true);
        FriendlyAI friendlyObj = GameObject.FindObjectOfType <FriendlyAI>();

        friendlyObj.SetMove(friendlyLastPos1.position);
        friendlyObj.transform.gameObject.layer = 14;
        yield return(new WaitForSeconds(1.5f));

        friendlyObj.transform.GetComponent <Animator>().enabled = false;
        friendlyObj.enabled = false;
        crowdAudio.Stop();
        explosion.Explode();
        yield return(new WaitForSeconds(8f));

        playerController.SetLastQuestion();
        Destroy(this.gameObject);
    }
    public override void ActivateAbility()
    {
        base.ActivateAbility();

        for (int i = 0; i < amountToSpawn; i++)
        {
            int        spawnIndex = (i + 1) % spawnpoints.Length;
            FriendlyAI ai         = Instantiate(aiToSpawn, spawnpoints[spawnIndex].position, spawnpoints[spawnIndex].rotation);
            activeAIs.Add(ai);

            for (int j = 0; j < GetActiveModules().Count; j++)
            {
                ai.SetModule(GetActiveModules()[i]);
            }
        }

        RemoveModules();
        TriggerCooldown();
    }
示例#9
0
文件: NPC.cs 项目: Xrocetoxtos/RPG2
    private Transform quad;         // voor de minimap icon

    private void Awake()
    {
        GameObject gh = GameObject.Find("GameHandler");

        worldObject = GetComponent <WorldObject>();
        enemyAI     = GetComponent <EnemyAI>();
        friendlyAI  = GetComponent <FriendlyAI>();
        if (enemyAI != null)
        {
            isEnemy = true;
        }

        gameHandler  = gh.GetComponent <GameHandler>();
        guiHandler   = gh.GetComponent <GUIHandler>();
        inventory    = GetComponent <Inventory>();
        healthSystem = new HealthSystem(20, 20);

        NPCSetActive(false);
        MiniMapInit();
    }
示例#10
0
    IEnumerator WaitExit()
    {
        Destroy(patientControl);
        pController.SetCutscene(true);
        teleportPlayer.SetActive(false);
        pController.StartAudio(audioExit);
        pController.transform.root.position = teleportPos.position;
        collider.enabled = false;
        Destroy(this.gameObject, audioExit.length + 1f);
        stage2.SetActive(true);
        FriendlyAI friendlyObj = GameObject.FindObjectOfType <FriendlyAI>();

        friendlyObj.SetMove(beforeExpPos.position);
        yield return(new WaitForSeconds(audioExit.length));

        RaycastHand.inCutscene = false;
        blockPlayer.SetActive(true);
        teleportPlayer.SetActive(true);
        pController.SetCutscene(false);
    }
 void Start()
 {
     healthButton = GetComponent <Button>();
     friendlyAI   = FindObjectOfType <FriendlyAI>();
 }