示例#1
0
    private void SelectNextScarecrow(bool forward)
    {
        // create queue, ordered depending on whether we are searching forward or backward
        var scarecrows = new Queue <Scarecrow>(forward ? _scarecrowManager.ScarecrowsLeftToRight : _scarecrowManager.ScarecrowsRightToLeft);

        // rotate queue so the current scarecrow is last
        if (scarecrows.Contains(_scarecrowSelected))
        {
            var scarecrow = scarecrows.Dequeue();
            while (scarecrow != _scarecrowSelected)
            {
                scarecrows.Enqueue(scarecrow);
                scarecrow = scarecrows.Dequeue();
            }
            scarecrows.Enqueue(scarecrow);
        }

        // select the next scarecrow
        _scarecrowSelected = scarecrows.Dequeue();

        // if this scarecrow is not intact, keep looking
        while (!_scarecrowSelected.IsIntact && scarecrows.Any())
        {
            _scarecrowSelected = scarecrows.Dequeue();
        }

        UpdateSelection();
    }
示例#2
0
    private void Awake()
    {
        //if (spriteRenderer == null) spriteRenderer = transform.parent.parent.GetComponent<SpriteRenderer>();

        durability = MaxDurability;
        Scarecrow  = transform.parent.parent.GetComponent <Scarecrow>();
    }
示例#3
0
    private void Start()
    {
        _scarecrowManager = Utility.ScarecrowManager;
        _seasonManager    = Utility.SeasonManager;
        _spriteRenderer   = GetComponent <SpriteRenderer>();

        _scarecrowSelected = _scarecrowManager.ScarecrowsLeftToRight.First();
        UpdateSelection();
    }
示例#4
0
 // Use this for initialization
 void Start()
 {
     point = transform.TransformPoint(Vector3.up * 3);
     scarecrow = FindObjectOfType(typeof(Scarecrow)) as Scarecrow;
     forceMultiplier = 150f;
     if(SystemInfo.deviceType == DeviceType.Handheld) {
         Input.multiTouchEnabled = false;
     }
 }
示例#5
0
 public Scarecrow poolScarecrow(int SC_type)
 {
     if (SC_type == 2)
     {
         if (sc_pool_002.Count == 0)
         {
             GameObject newObject = Instantiate(scarecrow_002_prefab);
             Scarecrow  newSC     = newObject.GetComponent <Scarecrow>();
             newSC.setPrefabBank(this);
             newSC.setEnemyManager(enemyManager);
             newSC.setSpawningManager(spawningManager);
             return(newSC);
         }
         else
         {
             Scarecrow newSC = sc_pool_002.Pop();
             return(newSC);
         }
     }
     else if (SC_type == 3)
     {
         if (sc_pool_003.Count == 0)
         {
             GameObject newObject = Instantiate(scarecrow_003_prefab);
             Scarecrow  newSC     = newObject.GetComponent <Scarecrow>();
             newSC.setPrefabBank(this);
             newSC.setEnemyManager(enemyManager);
             newSC.setSpawningManager(spawningManager);
             return(newSC);
         }
         else
         {
             Scarecrow newSC = sc_pool_003.Pop();
             return(newSC);
         }
     }
     else
     {
         if (sc_pool_001.Count == 0)
         {
             GameObject newObject = Instantiate(scarecrow_001_prefab);
             Scarecrow  newSC     = newObject.GetComponent <Scarecrow>();
             newSC.setPrefabBank(this);
             newSC.setEnemyManager(enemyManager);
             newSC.setSpawningManager(spawningManager);
             return(newSC);
         }
         else
         {
             Scarecrow newSC = sc_pool_001.Pop();
             return(newSC);
         }
     }
 }
示例#6
0
    public void takeOutScarecrow(Scarecrow val, int SC_type)
    {
        if (SC_type == 1)
        {
            sc_pool_001.Push(val);
        }
        else if (SC_type == 2)
        {
            sc_pool_002.Push(val);
        }
        else if (SC_type == 3)
        {
            sc_pool_003.Push(val);
        }

        val.gameObject.SetActive(false);
    }
示例#7
0
    public void spawnScareCrow(int val)
    {
        if (isSpawnPossible(val))
        {
            Scarecrow newSC = prefabBank.poolScarecrow(val);

            int posIdx = findSCPosition();

            newSC.gameObject.transform.position = spawningVectors[posIdx];
            slots[posIdx] = false;
            newSC.setSlot(posIdx);

            roots.spendWater(prefabBank.waterCosts[val - 1]);
            foliage.spendSun(prefabBank.sunCosts[val - 1]);

            newSC.init();
        }
    }
示例#8
0
文件: Game.cs 项目: tabacco/crowbot
    // Use this for initialization
    void Start()
    {
        mScarecrow 	= FindObjectOfType(typeof(Scarecrow)) as Scarecrow;
        mCrow		= FindObjectOfType(typeof(Crow)) as Crow;
        mCornStalks = FindObjectsOfType(typeof(CornStalk)) as CornStalk[];

        dialogMesh = FindObjectOfType(typeof(TextMesh)) as TextMesh;
        dialogMesh.renderer.enabled = false;
        dialogTimeDisplayed = 0f;
        lastDialogDay = 0;
        lastDialogLine = 0;

        batteryIcon = (Texture2D) Resources.Load("PowerIcon", typeof(Texture2D));

        batteryMeterColor = Color.green;
        hungerMeterColor = Color.green;
        stressMeterColor = Color.green;

        batteryMeterTexture = GetMeterTexture(batteryMeterColor);
        hungerMeterTexture = GetMeterTexture(hungerMeterColor);
        stressMeterTexture = GetMeterTexture(stressMeterColor);

        dnc = FindObjectOfType(typeof(DayNightCycle)) as DayNightCycle;

        crowKnownDead = false;
        robotKnownDead = false;
        cornKnownDead = false;

        crowDeadLines = new string[18];
        crowDeadLines[0] = "Oh God! What have I done!?";
        crowDeadLines[1] = "Filbert. I had named him Filbert.";
        crowDeadLines[2] = "What do I do now?";
        crowDeadLines[3] = "I'm so sorry Filbert. I'm so sorry...";
        crowDeadLines[4] = "I... don't know what to do...";
        crowDeadLines[5] = "Thought up a song for Filbert today.\nHe would have liked it, I think";
        crowDeadLines[6] = "Why did you have to die?";
        crowDeadLines[7] = "I miss you...";
        crowDeadLines[8] = "Was this all I was created for?";
        crowDeadLines[9] = "Where do I go from here?";
        crowDeadLines[10] = "Filbert... Filbert... where are you...";
        crowDeadLines[11] = "Where are you God?";
        crowDeadLines[12] = "Why am I here?";
        crowDeadLines[13] = "Life is meaningless...";
        crowDeadLines[14] = "The corn does not need me.";
        crowDeadLines[15] = "The corn does not want me.";
        crowDeadLines[16] = "I don't want this anymore.";
        crowDeadLines[17] = "What's the point?";

        audio.clip = kNormalMusic;
        audio.Play();

        menuTimer = 0f;
    }
示例#9
0
    private void Update()
    {
        if (scarecrows.Count > 0)
        {
            foreach (var scarecrow in scarecrows)
            {
                if (Vector2.Distance(transform.position, scarecrow.transform.position) < 50)
                {
                    scareCrowToChase = scarecrow;
                    myState          = PriestState.Chase;
                }
            }

            if (scareCrowToChase == null)
            {
                if (Vector2.Distance(player.transform.position, transform.position) < 50)
                {
                    myState = PriestState.Chase;
                }
                else
                {
                    myState = PriestState.Roam;
                }
            }
        }
        else
        {
            if (Vector2.Distance(player.transform.position, transform.position) < 50)
            {
                myState = PriestState.Chase;
            }
            else
            {
                myState = PriestState.Roam;
            }

            scareCrowToChase = null;
        }

        switch (myState)
        {
        case PriestState.Idle:
            Idle();
            break;

        case PriestState.Roam:
            Roam();
            break;

        case PriestState.Chase:
            Chase();
            break;

        default:
            break;
        }

        if (Move.Equals(Vector2.zero))
        {
            animator.SetBool("walk", false);
        }
        animator.SetBool("walk", true);

        if (scareCrowToChase == null)
        {
            if (Move.x < 0)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }
        }

        rb.velocity = Move * speed;
    }
示例#10
0
文件: Crow.cs 项目: tabacco/crowbot
 public CrowState_Fleeing()
 {
     mStateID = CrowStates.Fleeing;
     mCrow = GameObject.FindObjectOfType( typeof( Crow ) ) as Crow;
     mScarecrow = GameObject.FindObjectOfType( typeof( Scarecrow ) ) as Scarecrow;
     mSafePoints = GameObject.FindGameObjectsWithTag( "SafePoints" );
 }
示例#11
0
文件: Crow.cs 项目: tabacco/crowbot
    //----------------------------------------------------------------------------------------------------
    // Use this for initialization
    //----------------------------------------------------------------------------------------------------
    void Start()
    {
        mHunger = 0.5f;
        mStress = 0f;

        // set up the AI
        mStateMachine = new StateMachine();
        mStateMachine.AddState( new CrowState_Idle() );
        mStateMachine.AddState( new CrowState_Dead() );
        mStateMachine.AddState( new CrowState_Eating() );
        mStateMachine.AddState( new CrowState_Fleeing() );
        mStateMachine.AddState( new CrowState_FlyingToCorn() );
        mStateMachine.AddState( new CrowState_WaitingForStress() );

        // find the scarecrow
        mScarecrow = FindObjectOfType(typeof(Scarecrow)) as Scarecrow;

        // start moving
        FlyToCorn();

        // pick the next time for the caw sound to play
        mNextCawSoundTime = Time.time + Random.Range( 0f, 2f );
    }
示例#12
0
        /// <summary>
        /// Maakt de blok aan
        /// </summary>
        /// <param name="id">Afhankelijk van de id zullen we een bepaalde blok aanmaken</param>
        /// <param name="content">ContentManager object dat we gebruiken om textures te laden</param>
        /// <returns>De aangemaakt blok</returns>
        protected override GameObject CreateBlock(int id, ContentManager content)
        {
            GameObject b = null;

            if (id == 1)
            {
                b = new DirtBlock(content, "01");
            }
            else if (id == 2)
            {
                b = new GrassTopBlock(content, "04");
            }
            else if (id == 3)
            {
                b = new GrassRightBLock(content, "08");
            }
            else if (id == 4)
            {
                b = new LeftTopCornerBlock(content, "03");
            }
            else if (id == 5)
            {
                b = new RightTopCornerBlock(content, "02");
            }
            else if (id == 6)
            {
                b = new AcidMudLeftAndBottomBlock(content, "19");
            }
            else if (id == 7)
            {
                b = new AcidMudBottomBlock(content, "15");
            }
            else if (id == 8)
            {
                b = new AcidMudRightAndBottomBlock(content, "22");
            }
            else if (id == 9)
            {
                b = new GrassLeftBlock(content, "07");
            }
            else if (id == 10)
            {
                b = new LeftBottomCornerBlock(content, "10");
            }
            else if (id == 11)
            {
                b = new RightBottomCornerBlock(content, "09");
            }
            else if (id == 12)
            {
                b = new PlatformBlock(content, "plate1");
            }
            else if (id == 13)
            {
                b = new BoxFirstVariant(content, "box1");
            }
            else if (id == 14)
            {
                b = new BoxSecondVariant(content, "box2");
            }
            else if (id == 15)
            {
                b = new Scarecrow(content, "scarecrow");
            }
            else if (id == 16)
            {
                b = new Pointer(content, "pointer");
            }
            else if (id == 17)
            {
                b = new OrangeTree(content, "tree1");
            }
            else if (id == 18)
            {
                b = new YellowTree(content, "tree2");
            }
            else if (id == 19)
            {
                b = new MovingBlock(content, "plate1");
            }
            else if (id == 20)
            {
                b = new MovingBlock(content, "plate1")
                {
                    Invert = true
                }
            }
            ;
            else if (id == 21)
            {
                b = new StarCollectable(content, "star");
            }
            else if (id == 22)
            {
                b = new BouncingAcidBall(content, "LavaFireballSprite");
            }
            else if (id == 23)
            {
                b = new UpUnderBlock(content, "bovenonder");
            }
            else if (id == 24)
            {
                b = new LeftOverRoofBlock(content, "linksoverkaping");
            }
            else if (id == 25)
            {
                b = new RightOverRoofBlock(content, "rechtsoverkaping");
            }
            else if (id == 26)
            {
                b = new UnderBlock(content, "13");
            }
            else if (id == 27)
            {
                b = new FullBlock(content, "11");
            }
            else if (id == 30)
            {
                b = new GreenGoblin(content, "GreenGoblinSprite");
            }
            else if (id == 31)
            {
                b = new Giant(content, "GiantSprite");
            }
            else if (id == 32)
            {
                b = new Orc(content, "BlackGoblin");
            }
            else if (id == 33)
            {
                b = new BlueGoblin(content, "BlueMonster");
            }
            else if (id == 40)
            {
                b = new InvisibleBlock(content, "legeBlok");
            }
            else if (id == 50)
            {
                b = new ButtonNextLevel(content, "button");
            }
            return(b);
        }