Exemplo n.º 1
0
    public StateGoriyaWalk(Goriya _g, SpriteRenderer _renderer) {
        g = _g;
        renderer = _renderer;
        rb = g.GetComponent<Rigidbody>();

        g.GoToMiddleOfTile();
        cooldownTimer = (Random.value * g.maxWalkTime) + g.minWalkTime;

        do {
            direction = Utils.RandomDirection4();
            nextCell = new Vector3((int)g.transform.position.x + (direction.x), (int)g.transform.position.y + (direction.y), 0);
        } while (Tile.Unwalkable(nextCell) || Utils.CollidingWithAnyWall(nextCell));

        if(direction.x == 1) {
            g.current_direction = Direction.EAST;
            animation = g.walkRight;
        }
        else if(direction.x == -1) {
            g.current_direction = Direction.WEST;
            animation = g.walkLeft;
        }
        else if(direction.y == 1) {
            g.current_direction = Direction.NORTH;
            animation = g.walkUp;
        }
        else if(direction.y == -1) {
            g.current_direction = Direction.SOUTH;
            animation = g.walkDown;
        }
    }
    public StateGoriyaBoomerangForward(Goriya _p, GoriyaBoomerang _b, float _speed)
    {
        b     = _b;
        speed = _speed;

        p = _p;
        if (p.current_direction == Direction.NORTH)
        {
            direction_offset = new Vector3(0, 1, 0);
        }
        else if (p.current_direction == Direction.EAST)
        {
            direction_offset = new Vector3(1, 0, 0);
        }
        else if (p.current_direction == Direction.SOUTH)
        {
            direction_offset = new Vector3(0, -1, 0);;
        }
        else if (p.current_direction == Direction.WEST)
        {
            direction_offset = new Vector3(-1, 0, 0);
        }

        b.GetComponent <Rigidbody>().velocity = direction_offset * speed;
    }
    //Changed this

    public StateGoriyaBoomerangReturning(Goriya _p, GoriyaBoomerang _b, float _speed, GameObject _pickedUpObject = null) {
        b = _b;
        speed = _speed;
        p = _p;
        pickedUpObject = _pickedUpObject;

        b.GetComponent<BoxCollider>().isTrigger = true;
    }
    //Changed this

    public StateGoriyaBoomerangReturning(Goriya _p, GoriyaBoomerang _b, float _speed, GameObject _pickedUpObject = null)
    {
        b              = _b;
        speed          = _speed;
        p              = _p;
        pickedUpObject = _pickedUpObject;

        b.GetComponent <BoxCollider>().isTrigger = true;
    }
Exemplo n.º 5
0
        private IEntity CreateEnemy(String type, Vector2 startingPos, Vector2 abstractPos)
        {
            IEntity newEnemy = new Keese(game, startingPos);

            switch (type)
            {
            case "Aquamentus":
                newEnemy = new Aquamentus(game, startingPos);
                break;

            case "BoggusBoss":
                newEnemy = new BoggusBoss(game, startingPos);
                break;

            case "MarioBoss":
                newEnemy = new MarioBoss(game, startingPos);
                break;

            case "Dodongo":
                newEnemy = new Dodongo(game, startingPos);
                break;

            case "Gel":
                newEnemy = new Gel(game, startingPos);
                break;

            case "Zol":
                newEnemy = new Zol(game, startingPos);
                break;

            case "Goriya":
                newEnemy = new Goriya(game, startingPos);
                break;

            case "Keese":
                newEnemy = new Keese(game, startingPos);
                break;

            case "Stalfos":
                newEnemy = new Stalfos(game, startingPos);
                break;

            case "Rope":
                newEnemy = new Rope(game, startingPos);
                break;

            case "Wallmaster":
                newEnemy = new WallMaster(game, startingPos, abstractPos);
                break;

            default:
                break;
            }
            return(newEnemy);
        }
    public StateGoriyaBoomerangForward(Goriya _p, GoriyaBoomerang _b, float _speed) {
        b = _b;
        speed = _speed;

        p = _p;
        if (p.current_direction == Direction.NORTH) {
            direction_offset = new Vector3(0, 1, 0);
        } else if (p.current_direction == Direction.EAST) {
            direction_offset = new Vector3(1, 0, 0);
        } else if (p.current_direction == Direction.SOUTH) {
            direction_offset = new Vector3(0, -1, 0);;
        } else if (p.current_direction == Direction.WEST) {
            direction_offset = new Vector3(-1, 0, 0);
        }

        b.GetComponent<Rigidbody>().velocity = direction_offset * speed;
    }
Exemplo n.º 7
0
    public StateGoriyaThrowBoomerang(Goriya _g)
    {
        g = _g;
        g.GetComponent <Rigidbody>().velocity = Vector3.zero;

        weapon_instance = MonoBehaviour.Instantiate(g.goriyaBoomerangPrefab, g.transform.position, Quaternion.identity) as GameObject;
        weapon_instance.GetComponent <GoriyaBoomerang>().g = g;

        Vector3 direction_offset     = Vector3.zero;
        Vector3 direction_eulerangle = Vector3.zero;

        if (g.current_direction == Direction.NORTH)
        {
            direction_offset     = new Vector3(0, 1, 0);
            direction_eulerangle = new Vector3(0, 0, 90);
        }
        else if (g.current_direction == Direction.EAST)
        {
            direction_offset     = new Vector3(1, 0, 0);
            direction_eulerangle = new Vector3(0, 0, 0);
        }
        else if (g.current_direction == Direction.SOUTH)
        {
            direction_offset     = new Vector3(0, -1, 0);
            direction_eulerangle = new Vector3(0, 0, 270);
        }
        else if (g.current_direction == Direction.WEST)
        {
            direction_offset     = new Vector3(-1, 0, 0);
            direction_eulerangle = new Vector3(0, 0, 180);
        }

        weapon_instance.transform.position += direction_offset;
        Quaternion new_weapon_rotation = new Quaternion();

        new_weapon_rotation.eulerAngles    = direction_eulerangle;
        weapon_instance.transform.rotation = new_weapon_rotation;
        weapon_instance.GetComponent <BoxCollider>().transform.rotation = new_weapon_rotation;
    }
Exemplo n.º 8
0
    public StateGoriyaWalk(Goriya _g, SpriteRenderer _renderer)
    {
        g        = _g;
        renderer = _renderer;
        rb       = g.GetComponent <Rigidbody>();

        g.GoToMiddleOfTile();
        cooldownTimer = (Random.value * g.maxWalkTime) + g.minWalkTime;

        do
        {
            direction = Utils.RandomDirection4();
            nextCell  = new Vector3((int)g.transform.position.x + (direction.x), (int)g.transform.position.y + (direction.y), 0);
        } while (Tile.Unwalkable(nextCell) || Utils.CollidingWithAnyWall(nextCell));

        if (direction.x == 1)
        {
            g.current_direction = Direction.EAST;
            animation           = g.walkRight;
        }
        else if (direction.x == -1)
        {
            g.current_direction = Direction.WEST;
            animation           = g.walkLeft;
        }
        else if (direction.y == 1)
        {
            g.current_direction = Direction.NORTH;
            animation           = g.walkUp;
        }
        else if (direction.y == -1)
        {
            g.current_direction = Direction.SOUTH;
            animation           = g.walkDown;
        }
    }
 public void UseItem()
 {
     Goriya.SetState(Goriya.itemLeft);
     Goriya.CurrentState.Start = true;
     Goriya.UseItem();
 }
 public void Move()
 {
     Goriya.SetState(Goriya.movingLeft);
     Goriya.CurrentState.Start = true;
     Goriya.Move();
 }
        private static void SpawnFromString(IRoom room, SpriteBatch spriteBatch, string spawnType, int offsetX, int offsetY, int gridX, int gridY)
        {
            int         posX     = offsetX + gridX * RoomConstants.TileLength;
            int         posY     = offsetY + gridY * RoomConstants.TileLength;
            Point       position = new Point(posX, posY);
            IBlock      blockType;
            INpc        npcType;
            IItem       itemType;
            IBackground backgroundType;

            switch (spawnType)
            {
            //Blocks
            case RoomConstants.Block:
                blockType = new Square(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.BrickTile:
                blockType = new BrickTile(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.GapTile:
                blockType = new GapTile(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.Fire:
                position.X += RoomConstants.TileLength / 2;
                blockType   = new Fire(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.LadderTile:
                backgroundType = new LadderTile(spriteBatch, position);
                room.AllObjects.Spawn(backgroundType);
                break;

            case RoomConstants.Stairs:
                blockType = new Stairs(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.FishStatue:
                blockType = new FishStatues(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.DragonStatue:
                blockType = new DragonStatues(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.BlueGrass:
                backgroundType = new TileBlueGrass(spriteBatch, position);
                room.AllObjects.Spawn(backgroundType);
                break;

            case RoomConstants.Water:
                blockType = new TileWater(spriteBatch, position);
                room.AllObjects.Spawn(blockType);
                break;

            case RoomConstants.MovableBlock:
                blockType = new MovableSquare(spriteBatch, position);
                ((RoomWithMovableSquare)room).AddMovableSquare((MovableSquare)blockType);
                room.AllObjects.Spawn(blockType);
                break;

            //Npcs
            case RoomConstants.Aquamentus:
                position.Y += RoomConstants.TileLength / 2;
                npcType     = new Aquamentus(spriteBatch, position, room.AllObjects);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.Bat:
                npcType = new Bat(spriteBatch, position);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.Goriya:
                npcType = new Goriya(spriteBatch, position, room.AllObjects);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.Hand:
                npcType = new Hand(spriteBatch, position, ((RoomWallMaster)room).GetWallMasterRoomToJumpTo());
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.Jelly:
                npcType = new Jelly(spriteBatch, position);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.OldMan:
                position.X += RoomConstants.TileLength / 2;
                npcType     = new OldMan(spriteBatch, position);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.Skeleton:
                npcType = new Skeleton(spriteBatch, position);
                room.AllObjects.Spawn(npcType);
                break;

            case RoomConstants.SpikeTrap:
                npcType = new SpikeTrap(spriteBatch, position, room.AllObjects.GetPlayer(0));
                room.AllObjects.Spawn(npcType);
                break;

            //Items
            case RoomConstants.Compass:
                itemType = new CompassItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.Heart:
                position.X += (int)(4 * RoomConstants.SpriteMultiplier);
                position.Y += (int)(4 * RoomConstants.SpriteMultiplier);
                itemType    = new HeartItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.Key:
                itemType = new KeyItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.Map:
                itemType = new MapItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.Triforce:
                position.X += (int)(12 * RoomConstants.SpriteMultiplier);
                position.Y += (int)(2 * RoomConstants.SpriteMultiplier);
                itemType    = new TriforceItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.HeartContainer:
                itemType = new HeartContainerItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            case RoomConstants.Bow:
                itemType = new BowItem(spriteBatch, position);
                room.AllObjects.Spawn(itemType);
                break;

            default:
                break;
            }
        }
Exemplo n.º 12
0
        private Entity LoadEnemy(Vector2 pos, string enemyType, string startDirection, string itemHeld)
        {
            Entity entity;

            Console.WriteLine("Initializing enemy at pos " + pos);

            if (startDirection.Equals(""))
            {
                startDirection = "right";
            }

            // Parse direction (passed in as string) into Direction enumerable type
            Constants.Direction direction;
            switch (startDirection)
            {
            case "up":
                direction = Constants.Direction.UP;
                break;

            case "right":
                direction = Constants.Direction.RIGHT;
                break;

            case "down":
                direction = Constants.Direction.DOWN;
                break;

            case "left":
                direction = Constants.Direction.LEFT;
                break;

            default:     // start direction not neccessary, default is right
                direction = Constants.Direction.RIGHT;
                break;
            }

            switch (enemyType)
            {
            case "aquamentus":
                entity = new Aquamentus(pos);
                break;

            case "bladetrap":
                entity = new BladeTrap(pos);
                break;

            case "gel":
                entity = new Gel(pos);
                break;

            case "goriya":
                entity = new Goriya(pos);
                break;

            case "keese":
                entity = new Keese(pos);
                break;

            case "rope":
                entity = new Rope(pos);
                break;

            case "stalfo":
                entity = new Stalfo(pos);
                if (itemHeld == "regularkey")
                {
                    BasicSprite keySprite = ItemSpriteFactory.Instance.CreateRegularKey();
                    keySprite.offsets = new List <Vector2> {
                        new Vector2(4, 0)
                    };
                    entity.AddComponent(new Sprite(keySprite));
                    entity.GetComponent <StalfoMovement>().SetItemHeldTrue();
                }
                break;

            case "wallmaster":
                entity = new WallMaster(pos, direction);
                break;

            default:
                Console.WriteLine("Level @ LoadEnemy(): Unrecognized enemyType \"" + enemyType + "\"!");
                return(null);
            }
            var poof = new Poof(pos, entity);

            Scene.Add(entity);
            Scene.Add(poof);
            var transform = Root.GetComponent <Transform>();

            transform.AddChild(poof);
            numEnemiesLeft++;

            enemyList.Add((Enemy)entity);

            return(entity);
        }
Exemplo n.º 13
0
    public StateGoriyaThrowBoomerang(Goriya _g) {
        g = _g;
        g.GetComponent<Rigidbody>().velocity = Vector3.zero;

        weapon_instance = MonoBehaviour.Instantiate(g.goriyaBoomerangPrefab, g.transform.position, Quaternion.identity) as GameObject;
        weapon_instance.GetComponent<GoriyaBoomerang>().g = g;

        Vector3 direction_offset = Vector3.zero;
        Vector3 direction_eulerangle = Vector3.zero;

        if (g.current_direction == Direction.NORTH) {
            direction_offset = new Vector3(0, 1, 0);
            direction_eulerangle = new Vector3(0, 0, 90);
        } else if (g.current_direction == Direction.EAST) {
            direction_offset = new Vector3(1, 0, 0);
            direction_eulerangle = new Vector3(0, 0, 0);
        } else if (g.current_direction == Direction.SOUTH) {
            direction_offset = new Vector3(0, -1, 0);
            direction_eulerangle = new Vector3(0, 0, 270);
        } else if (g.current_direction == Direction.WEST) {
            direction_offset = new Vector3(-1, 0, 0);
            direction_eulerangle = new Vector3(0, 0, 180);
        }

        weapon_instance.transform.position += direction_offset;
        Quaternion new_weapon_rotation = new Quaternion();
        new_weapon_rotation.eulerAngles = direction_eulerangle;
        weapon_instance.transform.rotation = new_weapon_rotation;
        weapon_instance.GetComponent<BoxCollider>().transform.rotation = new_weapon_rotation;
    }
Exemplo n.º 14
0
 public void Wait()
 {
     Goriya.SetState(Goriya.idleRight);
     Goriya.CurrentState.Start = true;
     Goriya.Wait();
 }