public void TakeResource()
    {
        Resource.transform.SetParent(GameObject.transform);
        Resource.transform.position = GameObject.transform.position + new Vector3(0,1,0);
        Resource.GetComponent<Collider>().enabled = false;
        state = AlienState.CARRYING;
        Debug.Log("Going back to SpaceShip");
    }
Exemple #2
0
    private void FixedUpdate()
    {
        //if we're dead don't do anything
        if (currentState == AlienState.dead)
        {
            return;
        }
        if (roverTransform == null)
        {
            currentState = AlienState.dead;
            return;
        }


        //handle movement
        switch (currentState)
        {
        case AlienState.patrolling:
            rb.MovePosition(transform.position + directionToMove * Time.fixedDeltaTime * patrolSpeed);
            break;

        case AlienState.chasing:
            rb.MovePosition(transform.position + directionToMove * Time.fixedDeltaTime * chaseSpeed);
            break;
        }
    }
Exemple #3
0
        public static void page100_Main()
        {
            Alien a;

            a.x     = 50;
            a.y     = 50;
            a.Lives = 4;
            Console.WriteLine("a {0}", a.ToString());

            Alien x = new Alien(100, 100);

            Console.WriteLine("x {0}", x.ToString());

            Alien[] swarm = new Alien[100];
            Console.WriteLine("swarm [10] {0}", swarm[10].ToString());

            Console.WriteLine("Page 101");
            AlienState alientstate = AlienState.Attacking;

            Console.WriteLine(alientstate);

            Console.WriteLine("Page 103");
            for (int i = 0; i < swarm.Length; i++)
            {
                swarm[i] = new Alien(0, 0);
                Console.WriteLine("swarm [" + i + "] {0}", swarm[i]);
            }
        }
Exemple #4
0
        // Enumerated types are used in situations where the programmer wants to specify a range of values that a given type can have.
        // Unless	specified	otherwise,	an	enumerated	type	is	based	on	the	int	type	and the	enumerated	values	are	numbered
        // starting	at	0.	You	can	modify	this	by	adding extra	information	to	the	declaration	of	the	enum.
        public void CreateEnum()
        {
            AlienState a = AlienState.Sleeping;

            Console.WriteLine(a); // prints	the	ToString result returned by the	AlienState variable, which	will output	the	string "Sleeping"
            // Also can use casting to int to have numeric value printed
        }
        static void Main(string[] args)
        {
            AlienState x = AlienState.Attacking;

            Console.WriteLine(x);
            Console.ReadKey();
        }
 private void OnCollisionEnter2D(Collision2D other)
 {
     if (other.transform.tag != "Enemy")
     {
         state = AlienState.Hit;
     }
 }
Exemple #7
0
        public void StartCommand()
        {
            StructStore xs, ys;

            ys      = new StructStore();
            ys.Data = 99;
            xs      = ys;
            xs.Data = 100;
            Console.WriteLine("xStruct: {0}", xs.Data);
            Console.WriteLine("yStruct: {0}", ys.Data);

            ClassStore xc, yc;

            yc      = new ClassStore();
            yc.Data = 99;
            xc      = yc;
            xc.Data = 100;
            Console.WriteLine("xClass: {0}", xc.Data);
            Console.WriteLine("yClass: {0}", yc.Data);

            AlienState alienState = AlienState.Attacking;

            Console.WriteLine("State of alien {0}", alienState);

            AlienBit alienBit = AlienBit.Attacking;

            Console.WriteLine("State of alien bit {0}", alienBit);

            Console.ReadKey();
        }
Exemple #8
0
        private static void CreatingAnEnumExample()
        {
            AlienState x = AlienState.Attacking;

            /* The program prints the ToString result returned by the AlienState variable, which will output the
             * string "Attacking" in this case. */
            Console.WriteLine(x);
        }
Exemple #9
0
 private void Update()
 {
     if (prevState != state)
     {
         faceRenderer.sprite = faceExpressions[state];
     }
     prevState = state;
 }
Exemple #10
0
 // constructor
 public Alien(int alienWidth, int alienHeight, int screenHeight, int screenWidth, int hitPoints)
 {
     this.alienWidth   = alienWidth;
     this.alienHeight  = alienHeight;
     this.screenHeight = screenHeight;
     this.screenWidth  = screenWidth;
     this.hitPoints    = hitPoints;
     alienState        = AlienState.ACTIVE;
 }
        public static void executeTest()
        {
            AlienState x = AlienState.Attacking;

            Console.WriteLine(x);
            AlienStateNum xn = AlienStateNum.Attacking;

            Console.WriteLine(xn);
            Console.ReadKey();
        }
Exemple #12
0
 private void Start()
 {
     faceExpressions = new Dictionary <AlienState, Sprite>();
     faceExpressions.Add(AlienState.HAPPY, faceExpressionSprites.happy);
     faceExpressions.Add(AlienState.REGULAR, faceExpressionSprites.regular);
     faceExpressions.Add(AlienState.DEAD, faceExpressionSprites.dead);
     faceExpressions.Add(AlienState.SCARED, faceExpressionSprites.scared);
     state     = AlienState.HAPPY;
     prevState = AlienState.DEAD;
 }
    // Update is called once per frame
    void Update()
    {
        if ((gameLastState != GameState.Paused && gameManagerScript.gameState == GameState.Paused) ||
            (gameLastState == GameState.Paused && gameManagerScript.gameState != GameState.Paused))
        {
            PauseToggle();
        }

        switch (state)
        {
        case AlienState.Idle:
            moveTick++;
            if (goUp)
            {
                rb.velocity = movementDirection * moveSpeed;
                if (moveTick > moveTimer * 50)
                {
                    goUp     = !goUp;
                    moveTick = 0;
                }
            }
            else
            {
                rb.velocity = -movementDirection * moveSpeed;
                if (moveTick > moveTimer * 50)
                {
                    goUp     = !goUp;
                    moveTick = 0;
                }
            }
            break;

        case AlienState.Hit:
            deathSound.Play();
            transform.parent.GetComponent <AlienTimedSpawnerScript>().spawnGrid[xPos, yPos] = false;
            gameManagerScript.ballSpeed      += gameManagerScript.ballSpeedAdded;
            gameManagerScript.currentScore   += gameManagerScript.alienPoints;
            alienTimedSpawnerScript.timerTick = 0;
            if (alienTimedSpawnerScript.alienTimer > 1.5f)
            {
                alienTimedSpawnerScript.alienTimer -= .1f;
            }
            Destroy(this.gameObject);
            break;

        case AlienState.Paused:
            if (!paused)
            {
                state = lastState;
            }
            break;
        }

        gameLastState = gameManagerScript.gameState;
    }
Exemple #14
0
    private void Update()
    {
        switch (_state)
        {
        case AlienState.Idle:
            if (Random.Range(0, 100) < 5)
            {
                State = AlienState.Walking;
            }
            break;

        case AlienState.Walking:
            float distance = Vector3.Distance(transform.position, transform.parent.position);
            transform.position = transform.parent.position;
            transform.Rotate(new Vector3(0, 0, 10 * Time.deltaTime), Space.Self);
            transform.position = transform.parent.position + transform.up * distance;

            if (_timer >= _currentTimeToWalk)
            {
                int rand = Random.Range(0, 10000);

                if (rand < 2)
                {
                    Spaceship.Intent intent = GetIntent();
                    if (intent != Spaceship.Intent.None)
                    {
                        OriginPlanet.Data.TechResource -= 10;
                        GameController.Instance.InstantiateRocketShip(this, intent);
                        _state = AlienState.InShip;
                    }
                }
                else if (rand < 100)
                {
                    State = AlienState.Applauding;
                }
                else if (rand < 200)
                {
                    State = AlienState.Idle;
                }
            }
            break;

        case AlienState.Applauding:
            if (_timer >= _timeToApplaud)
            {
                State = AlienState.Idle;
            }
            break;

        case AlienState.Angry:
            break;
        }

        _timer += Time.deltaTime;
    }
Exemple #15
0
    public void ChangeState(AlienStates state)
    {
        if (_state != null)
        {
            _state.Dispose();
            _state = null;
        }

        _state = _stateFactory.CreateState(state);
        _state.Start();
    }
 public void PauseToggle()
 {
     if (!paused)
     {
         lastState = state;
         state     = AlienState.Paused;
     }
     else
     {
         state = lastState;
     }
     paused = !paused;
 }
Exemple #17
0
        public Mothership(int motherWidth, int motherHeight, int screenHeight, int screenWidth, float speed)
        {
            this.motherHeight = motherHeight;
            this.motherWidth  = motherWidth;
            this.screenHeight = screenHeight;
            this.screenWidth  = screenWidth;
            this.SPEED        = speed;
            alienState        = AlienState.ACTIVE;

            RandomizeMothershipSpawn();

            //Remains the same regardless of which side it spawns on.
            position.Y = motherHeight * 2;
        }
Exemple #18
0
	public override void TakeDamage(int d, object source=null)
	{
		base.TakeDamage (d, source);
		if (source != null && source is Monster) 
		{
			state = AlienState.FLEEING;

            if (!GameObject.transform.Find("Fleeing").GetComponent<MeshRenderer>().enabled)
            {
                GameObject.transform.Find("Fleeing").GetComponent<MeshRenderer>().enabled = true;
                GameObject.GetComponent<AlienHelper>().StopSignal();
            }
        }
	}
 public void PauseToggle()
 {
     if (!paused)
     {
         rb.velocity = Vector2.zero;
         lastState   = state;
         state       = AlienState.Paused;
     }
     else
     {
         state = lastState;
     }
     paused = !paused;
 }
Exemple #20
0
        static void Main(string[] args)
        {
            AlienState x = AlienState.Attacking;

            Console.WriteLine(x);

            AlienState2 y = AlienState2.Attacking;

            Console.WriteLine((byte)y);

            AlienState3 z = AlienState3.Attacking;

            Console.WriteLine((byte)z);

            Console.ReadKey();
        }
Exemple #21
0
        public static string GetAlienString(AlienState alienState)
        {
            switch (alienState)
            {
            case AlienState.happy:
                return("happy");

            case AlienState.normal:
                return("normal");

            case AlienState.sad:
                return("sad");

            default:
                return("unborn");
            }
        }
Exemple #22
0
 private void Die()
 {
     if (currentState == AlienState.dead)
     {
         return;
     }
     currentState = AlienState.dead;
     Instantiate(biologyMaterialPrefab, transform.position + (transform.up * 3), Quaternion.identity);
     if (spawnIndex != -1)
     {
         if (GameManager.instance != null)
         {
             GameManager.instance.GetComponent <AlienSpawner>().AlienDied(spawnIndex);
         }
     }
     PlayerManager.instance.GetComponent <EnergyEquipment>().energy += deathEnergyBonus;
     PlayerManager.instance.GetComponent <EnergyEquipment>().energy  = Mathf.Clamp(PlayerManager.instance.GetComponent <EnergyEquipment>().energy, 0, PlayerManager.instance.GetComponent <EnergyEquipment>().energyCapacity);
     Destroy(this.gameObject);
 }
Exemple #23
0
	public void Search()
	{
        state = AlienState.SEARCHING;

        // for initialisation
        if (target == Vector3.zero)
			target = GameObject.transform.position;

		if ((GameObject.transform.position - target).magnitude <= 3f)
		{
			Vector3 rndDir = new Vector3(GameObject.transform.forward.x * Random.Range(-1, 1),
			                             GameObject.transform.forward.y * Random.Range(-1, 1),
			                             GameObject.transform.forward.z * Random.Range(-1, 1));
			float distance = Random.Range(25, 60);
			target = GameObject.transform.position + ((rndDir) * distance);
			target = CoordinateHelper.GroundPosition(target);
			waitTimer = Time.time;
			MoveTo (target);
		}
	}
Exemple #24
0
        public static void TestAlienStruct()
        {
            Alien a;

            a.X     = 50;
            a.Y     = 50;
            a.Lives = 3;
            Console.WriteLine("a {0}", a.ToString());

            Alien x = new Alien(100, 100);

            Console.WriteLine("x {0}", x.ToString());

            Alien[] swarm = new Alien[100];
            Console.WriteLine("swarm [0] {0}", swarm[0].ToString());

            AlienState x1 = AlienState.Attacking;

            Console.WriteLine(x1);
        }
Exemple #25
0
        static void Main(string[] args)
        {
            AlienStruct myAS;

            myAS.X     = 50;
            myAS.Y     = 50;
            myAS.Lives = 3;
            Console.WriteLine($"myAS has {myAS.ToString()}");
            AlienStruct x = new AlienStruct(40, 60);

            Console.WriteLine($"myAS has {x.ToString()}");
            AlienStruct[] swarm = new AlienStruct[100];
            Console.WriteLine($"myAS has {swarm[0].ToString()}");
            AlienState X  = AlienState.dead;
            string     cs = Enum.GetName(typeof(AlienState), 2);

            Console.WriteLine(X);
            Console.WriteLine(cs);
            Constructas ca = new Constructas(3);

            Console.WriteLine(ca.ToString());
            IndexersProp ip = new IndexersProp();

            ip[0] = 99;
            Console.WriteLine(ip[0]);
            var items = Enumerable.Range(0, 10);

            foreach (var i in items)
            {
                Console.WriteLine(i);
            }

            var stringEnumarator = "Hello Smart".GetEnumerator();

            while (stringEnumarator.MoveNext())
            {
                Console.WriteLine(stringEnumarator.Current);
            }
        }
Exemple #26
0
	public void Flee()
    {
        state = AlienState.FLEEING;
		if(Resource) DropResource ();
		movingToResource = false;
		ReturnToShip (false);

		// Alien is back at SpaceShip, waits for WAITTIME seconds
		if ((GameObject.transform.position - target).magnitude <= 5f && waitTimer == -1f)
			waitTimer = Time.time;

		if (waitTimer != -1f && Time.time - waitTimer > WAITTIME) 
		{
			state = AlienState.SEARCHING;
			waitTimer = -1f;
		}
			
    }
        public override void Update(GameTime gameTime)
        {
            int x = RandomGenerator.getNextRandomNumber(0, 2000);
            int condition = x % 16;//condition variable  to fire immune green bullets

            if (this.alienType!=0)
            {
                //code to fire immune green bullets if player opts to play without
                //horizontal movement
                float change;
                if (curPlayerTime == 0)
                {
                    prevPlayerX = SpaceGame.playerX;
                }
                curPlayerTime += gameTime.ElapsedRealTime.Milliseconds;

                if (curPlayerTime > 1000)
                {
                    change = prevPlayerX - SpaceGame.playerX;
                    if (change < 0)
                        change *= -1;
                    if (change < 50)
                        fireBullet = true;
                    else
                        fireBullet = false;
                    curPlayerTime = 0;

                }
                if (fireBullet == true)
                    condition = x % 2;
            }
            else
            {
                condition = 1;
            }
            //if condition == 0 green bullet is fired

                if (condition == 0 && bulletSprite.Visible == false && alienType>=1)
                {

                        bulletSprite = new Bullet();
                        bulletSprite.Load(mContentManager, IMMUNE_BULLET);

                }

            else if (bulletSprite.Visible == false)
            {
                bulletSprite = new Bullet();
                bulletSprite.Load(mContentManager, NORMAL_BULLET);
            }

            UpdateBullet(gameTime);
            if (state == AlienState.EXPLODED)
            {
                if (currentTime == 0)
                    SoundPlayer.soundBank.PlayCue("explosion1");

                currentTime += gameTime.ElapsedGameTime.Milliseconds;
                explosionSprite.Update(gameTime);

                if (currentTime > 1000)
                {

                    state = AlienState.DIE;

                    currentTime = 0;

                }
            }
            base.Update(gameTime);
        }
Exemple #28
0
    public void CarryResource()
    {
        state = AlienState.CARRYING;

		ReturnToShip (false);

        // Alien is back at SpaceShip, reinit Search
		if ((GameObject.transform.position - target).magnitude <= 5f)
			ResetTarget ();
        
    }
    void BehaviourState()
    {
        if ((gameLastState != GameState.Paused && gameManagerScript.gameState == GameState.Paused) ||
            (gameLastState == GameState.Paused && gameManagerScript.gameState != GameState.Paused))
        {
            PauseToggle();
        }

        switch (state)
        {
        case AlienState.Initiated:
            //Transitions
            if (initialState == AlienState.Closed)
            {
                state = AlienState.Closed;
                openModel.SetActive(false);
            }
            if (initialState == AlienState.Open)
            {
                state = AlienState.Open;
                closedModel.SetActive(false);
            }
            break;

        case AlienState.Closed:
            closedTick++;
            projectileTick++;
            if (projectileTick > projectileRate * 50)
            {
                FireProjectile();
            }

            //Transitions
            if (closedTick > closedTimer * 50)
            {
                state      = AlienState.Open;
                closedTick = 0;
            }
            break;

        case AlienState.Open:
            openTick++;
            //Transitions
            if (openTick > openTimer * 50)
            {
                state    = AlienState.Closed;
                openTick = 0;
            }
            if (ballCaptured)
            {
                GrabBall();
                angle = Random.Range(-180, 180);
                state = AlienState.BallGrab;
            }
            break;

        case AlienState.BallGrab:
            if (angle > 0)
            {
                transform.Rotate(Vector3.forward, grabSpeed);
            }
            else
            {
                transform.Rotate(Vector3.forward, -grabSpeed);
            }
            //Transitions
            if (Mathf.Abs(Mathf.DeltaAngle(angle, transform.rotation.eulerAngles.z)) < 1)
            {
                state = AlienState.BallRelease;
                ReleaseBall();
            }
            break;

        case AlienState.BallRelease:
            if (transform.rotation.eulerAngles.z < 180)
            {
                transform.Rotate(Vector3.forward, -releaseSpeed);
            }
            else
            {
                transform.Rotate(Vector3.forward, releaseSpeed);
            }
            //Transitions
            if (Mathf.Abs(Mathf.DeltaAngle(0f, transform.rotation.eulerAngles.z)) < 1)
            {
                state = AlienState.Open;
            }
            break;

        case AlienState.Hit:
            if (ballCaptured)
            {
                ReleaseBall();
            }
            Destroy(this.gameObject, deathTimer);
            break;

        case AlienState.Paused:
            if (!paused)
            {
                state = lastState;
            }
            break;
        }
    }
 private void OnCollisionEnter2D(Collision2D other)
 {
     state = AlienState.Hit;
 }
Exemple #31
0
	public Alien(int health, float speed, int range) : base(health, speed, range){
		state = AlienState.SEARCHING;
		Infected = false;
	}
 /// <summary>
 /// Calls the Mothership class' SetAlienState method.
 /// </summary>
 /// <param name="state">The alien state.</param>
 public void SetAlienState(AlienState state)
 {
     mothership.SetAlienState(state);
 }
Exemple #33
0
 /// <summary>
 /// Sets the alien state.
 /// </summary>
 /// <param name="state">The alien state</param>
 public void SetAlienState(AlienState state)
 {
     this.alienState = state;
 }
Exemple #34
0
 /// <summary>
 /// Calls the Mothership class' SetAlienState method.
 /// </summary>
 /// <param name="state">The alien state.</param>
 public void SetAlienState(AlienState state)
 {
     alienState = state;
 }
        public override void Draw(SpriteBatch spriteBatch)
        {
            int pathIndex;
            int spriteX;
            int rand;

                if (state == AlienState.ALIVE)
                {

                    if (this.SpritePosition.Y >= MAX_Y)
                    {
                        pathIndex = this.currentPath;

                        rand = RandomGenerator.getNextRandomNumber(0, 10);
                        if (path[rand] == false)
                        {
                            int SpriteY;
                            SpriteY = RandomGenerator.getNextRandomNumber(-200, 20);
                            path[rand] = true;
                            spriteX = rand * 80;
                            this.currentPath = rand;
                            path[pathIndex] = false;

                            this.SpritePosition = new Vector2(spriteX, SpriteY);

                            this.Speed = RandomGenerator.getNextRandomNumber(200, 450);
                        }
                    }

                    if (this.SpritePosition.X >= MAX_X-50)
                    {
                        if (alienType == 3)
                        {
                            this.Direction = new Vector2(-1, 0);

                        }
                        else
                        {
                            int x = RandomGenerator.getNextRandomNumber(-200, 200);
                            this.SpritePosition = new Vector2(x, this.SpritePosition.Y);

                        }
                        this.Speed = RandomGenerator.getNextRandomNumber(200, 450);
                    }
                    if (alienType == 3 && this.SpritePosition.X < 0)
                    {
                        this.Direction = new Vector2(1, 0);

                        this.Speed = RandomGenerator.getNextRandomNumber(200, 450);

                    }
                    base.Draw(spriteBatch);
                }
                else if (state == AlienState.EXPLODED)
                {

                    explosionSprite.SpritePosition = this.SpritePosition;
                    explosionSprite.PlayOnlyOnce = true;
                    explosionSprite.Draw(spriteBatch);

                }
                else if (state == AlienState.DIE)
                {
                    SpaceGame.playerScore += (10 + ((SpaceGame.gameLevel - 1) * 5));
                    if (this.alienType == 2)
                        SpaceGame.playerScore += (25*SpaceGame.gameLevel);

                        Visible = true;
                        state = AlienState.ALIVE;
                        this.SpritePosition = new Vector2(this.SpritePosition.X, 20);
                        this.SpriteSourceRectangle = new Rectangle(0, 0, 68, 40);
                        explosionSprite.Reset();

                }

                bulletSprite.Draw(spriteBatch);
        }
 public void Explode()
 {
     Visible = false;
     state = AlienState.EXPLODED;
 }
Exemple #37
0
    // Update is called once per frame
    void Update()
    {
        if (Time.time - lastNoiseTime >= noiseDelay)
        {
            GetComponent <AudioSource>().Play();
            lastNoiseTime = Time.time;
            noiseDelay    = Random.Range(6f, 20f);
        }

        //if we're dead don't do anything
        if (currentState == AlienState.dead)
        {
            return;
        }
        if (roverTransform == null)
        {
            currentState = AlienState.dead;
            return;
        }

        //if we can see the rover then start chasing
        if (Vector3.SqrMagnitude(transform.position - roverTransform.position) <= viewRange * viewRange)
        {
            if (currentState != AlienState.chasing)
            {
                currentState = AlienState.chasing;
            }
        }
        else
        {
            //if we can no longer see the rover then stop chasing
            if (currentState == AlienState.chasing)
            {
                currentState = AlienState.patrolling;
            }
        }

        RaycastHit hit; //this variable is used when checking the surface normal of the ground

        switch (currentState)
        {
        case AlienState.patrolling:
            if (hasWaypoint)
            {
                //if we are close enough to the current waypoint, then generate a new waypoint
                if (Vector3.SqrMagnitude(transform.position - currentWaypoint) < patrolWaypointBuffer * patrolWaypointBuffer)
                {
                    hasWaypoint = false;
                    FindNewWaypoint();
                    break;
                }

                directionToMove = (currentWaypoint - transform.position).normalized;
                //We want to ensure our move direction is parallel to the surface of the planet
                if (Physics.Raycast(transform.position, directionToMove, out hit, 5f, planetLayer))
                {
                    directionToMove = Vector3.ProjectOnPlane(directionToMove, hit.normal);
                }
                //look where we are going
                transform.rotation = Quaternion.LookRotation(directionToMove, Vector3.up);

                //this makes sure that we are still aligned with the surface of the planet.
                transform.rotation = Quaternion.FromToRotation(transform.up, (transform.position - planet.transform.position).normalized) * transform.rotation;
            }
            break;

        case AlienState.chasing:

            //if we are within attack range, then attack the rover
            if (Vector3.SqrMagnitude(transform.position - roverTransform.position) <= attackRange * attackRange)
            {
                //delay the attacks to make it fair for the player
                if (Time.time - GameManager.instance.worldStartTime - lastAttackTime >= attackDelay)
                {
                    PlayerManager.instance.TakeDamage(attackDamage);
                    lastAttackTime = Time.time - GameManager.instance.worldStartTime;
                }
            }

            directionToMove = (roverTransform.position - transform.position).normalized;
            //We want to ensure our move direction is parallel to the surface of the planet
            if (Physics.Raycast(transform.position, directionToMove, out hit, 5f, planetLayer))
            {
                directionToMove = Vector3.ProjectOnPlane(directionToMove, hit.normal);
            }
            //look where we are going
            transform.rotation = Quaternion.LookRotation(directionToMove, Vector3.up);

            //this makes sure that we are still aligned with the surface of the planet.
            transform.rotation = Quaternion.FromToRotation(transform.up, (transform.position - planet.transform.position).normalized) * transform.rotation;
            break;
        }
    }
 /// <summary>
 /// Calls the Alien class' SetAlienState method.
 /// </summary>
 /// <param name="state">The alien state.</param>
 public void SetAlienState(AlienState state)
 {
     alien.SetAlienState(state);
 }