Exemple #1
0
    private GameObject createEntity(int i, int j, Direction.Dir direction, int type, List <Action> script = null, bool repeat = false)
    {
        GameObject entity = null;

        switch (type)
        {
        case 0:
            entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Robot Kyle") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 1.5f, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform);
            break;

        case 1:
            entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Ennemy") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 3, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform);
            break;

        case 2:
            entity = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Drone") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 5f, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform);
            break;
        }

        entity.GetComponent <Position>().x          = i;
        entity.GetComponent <Position>().z          = j;
        entity.GetComponent <Direction>().direction = direction;

        ActionManipulator.resetScript(entity.GetComponent <Script>());
        if (script != null)
        {
            entity.GetComponent <Script>().actions = script;
        }

        entity.GetComponent <Script>().repeat = repeat;

        GameObjectManager.bind(entity);

        return(entity);
    }
Exemple #2
0
    // Start is called before the first frame update
    void Start()
    {
        base.Init();
        //Build a list of directions.
        Direction.Dir[] dirs = new Direction.Dir[4];
        dirs[0] = Direction.Dir.UP;
        dirs[1] = Direction.Dir.DOWN;
        dirs[2] = Direction.Dir.LEFT;
        dirs[3] = Direction.Dir.RIGHT;

        isAlive = true;

        //This gives us a random direction
        dir = dirs[Random.Range(0, dirs.Length)];

        //Get the extents
        top    = CollectorGameManager.GetInstance().topExtent;
        bottom = CollectorGameManager.GetInstance().bottomExtent;
        left   = CollectorGameManager.GetInstance().leftExtent;
        right  = CollectorGameManager.GetInstance().rightExtent;

        //Decide start pos and movement.
        float x = Random.Range(left.position.x, right.position.x);
        float y = Random.Range(bottom.position.y, top.position.y);

        switch (dir)
        {
        case Direction.Dir.UP:
        {
            y = bottom.position.y;
            break;
        }

        case Direction.Dir.DOWN:
        {
            y = top.position.y;
            break;
        }

        case Direction.Dir.LEFT:
        {
            x = right.position.x;
            break;
        }

        case Direction.Dir.RIGHT:
        {
            x = left.position.x;
            break;
        }

        default:
        {
            y = bottom.position.y;     //up by default.
            break;
        }
        }
        transform.position = new Vector2(x, y);
        SetMovement(Direction.DirToVec2(dir));
    }
Exemple #3
0
    private void destroyTilesAndWalls(Vector2 positionScaled, Direction.Dir direction)
    {
        Vector2 usePositionScaled = positionScaled + Direction.convertDirToUnitVector2(direction);

        movedToTile.Invoke(grid.getTileLocation(usePositionScaled));
        if (((int)direction / 2) == 0)
        {
            usePositionScaled = positionScaled;
        }
        if (((int)direction % 2) == 0)
        {
            if (grid.hWallInBounds(usePositionScaled))
            {
                if (grid.getHWallState(usePositionScaled))
                {
                    movedThroughHWall.Invoke(usePositionScaled);
                }
            }
        }
        else
        {
            if (grid.vWallInBounds(usePositionScaled))
            {
                if (grid.getVWallState(usePositionScaled))
                {
                    movedThroughVWall.Invoke(usePositionScaled);
                }
            }
        }
    }
Exemple #4
0
    private void createDoor(int i, int j, Direction.Dir orientation, int slotID)
    {
        GameObject door = Object.Instantiate <GameObject>(Resources.Load("Prefabs/Door") as GameObject, gameData.Level.transform.position + new Vector3(i * 3, 3, j * 3), Quaternion.Euler(0, 0, 0), gameData.Level.transform);

        if (orientation == Direction.Dir.West || orientation == Direction.Dir.East)
        {
            door.transform.rotation = Quaternion.Euler(0, 90, 0);
        }

        door.GetComponent <ActivationSlot>().slotID = slotID;
        door.GetComponent <Position>().x            = i;
        door.GetComponent <Position>().z            = j;
        door.GetComponent <Direction>().direction   = orientation;
        GameObjectManager.bind(door);
    }
Exemple #5
0
        public void SwitchDirection(Direction.Dir newDir)
        {
            switch (newDir)
            {
            case Direction.Dir.Up:
                NewHeadCoord.Y--;
                break;

            case Direction.Dir.Right:
                NewHeadCoord.X++;
                break;

            case Direction.Dir.Down:
                NewHeadCoord.Y++;
                break;

            default:
                NewHeadCoord.X--;
                break;
            }
        }
Exemple #6
0
    //0 Forward, 1 Backward, 2 Left, 3 Right
    public static Direction.Dir getDirection(Direction.Dir dirEntity, int relativeDir)
    {
        if (relativeDir == 0)
        {
            return(dirEntity);
        }
        switch (dirEntity)
        {
        case Direction.Dir.North:
            switch (relativeDir)
            {
            case 1:
                return(Direction.Dir.South);

            case 2:
                return(Direction.Dir.West);

            case 3:
                return(Direction.Dir.East);
            }
            break;

        case Direction.Dir.West:
            switch (relativeDir)
            {
            case 1:
                return(Direction.Dir.East);

            case 2:
                return(Direction.Dir.South);

            case 3:
                return(Direction.Dir.North);
            }
            break;

        case Direction.Dir.East:
            switch (relativeDir)
            {
            case 1:
                return(Direction.Dir.West);

            case 2:
                return(Direction.Dir.North);

            case 3:
                return(Direction.Dir.South);
            }
            break;

        case Direction.Dir.South:
            switch (relativeDir)
            {
            case 1:
                return(Direction.Dir.North);

            case 2:
                return(Direction.Dir.East);

            case 3:
                return(Direction.Dir.West);
            }
            break;
        }
        return(dirEntity);
    }
Exemple #7
0
 public void setTransform(Vector2 positionScaled, Direction.Dir direction, float distance)
 {
     transform.position  = grid.convertScaledToLocal(positionScaled) + (Vector2)grid.transform.position;
     transform.position += (Vector3)grid.convertScaledToLocal(Direction.convertDirToUnitVector2(direction) * distance);
 }
Exemple #8
0
    void Update()
    {
        if (Time.timeScale != 0.0F)
        {
            if (Input.GetKeyDown(SHOOT_KEY))
            {
                if (!shooting && !shotHit)
                {
                    audioSource.clip = playerSounds.shootingSound;
                    audioSource.Play();
                    shooting = true;
                    StartCoroutine("fireHarpoon");
                }
                if (shotHit & canPump)
                {
                    audioSource.clip = playerSounds.pumpingSound;
                    audioSource.Play();
                    enemyHit.GetComponent <BlimpAIMovement>().pumpState++;
                    if (enemyHit.GetComponent <BlimpAIMovement>().pumpState >= 3)
                    {
                        shotHit  = false;
                        enemyHit = null;
                        harpoon.transform.localScale = Vector3.zero;
                    }
                    StartCoroutine("pumpCooldownTimer");
                }
            }

            if (!shooting && !shotHit)
            {
                if (onRoute)
                {
                    Direction.Dir possibleDirection = direction;
                    bool          anyKeyPressed     = false;
                    for (int i = 0; i < 4; i++)                              // Determine the direction that the player is pressing in
                    {
                        if (Input.GetKey(KEY_MAP[((int)direction + i) % 4])) // Check the four directions
                        {
                            possibleDirection = (Direction.Dir)(((int)direction + i) % 4);
                            anyKeyPressed     = true;
                        }
                    }

                    rotateDirection();

                    if (anyKeyPressed)
                    {
                        if (!audioSource.isPlaying)
                        {
                            audioSource.clip = playerSounds.walkingSound;
                            audioSource.Play();
                        }
                        if (possibleDirection != (Direction.Dir)(((int)direction + 2) % 4))                        // Non-opposite direction, move
                        {
                            Vector2 oldPosition = positionScaled;
                            if (grid.tileInBounds(grid.getTileLocation(getNextPosition())))
                            {
                                if (moveInDirection(Direction.passingTileOrWall(positionScaled, direction, grid) ? speedDig : speedReg))
                                {
                                    destroyTilesAndWalls(oldPosition, direction);
                                    direction = possibleDirection;
                                }
                            }
                            else
                            {
                                onRoute = false;
                            }
                        }
                        else                         // Opposite direction, turn around and don't move
                        {
                            positionScaled += Direction.convertDirToUnitVector2(direction);
                            direction       = possibleDirection;
                            distance        = 1.0F - distance;
                        }
                    }
                    else
                    {
                        if (audioSource.isPlaying)
                        {
                            audioSource.Pause();
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < 4; i++)                              // Determine the direction that the player is pressing in
                    {
                        if (Input.GetKey(KEY_MAP[((int)direction + i) % 4])) // Check the four directions
                        {
                            direction = (Direction.Dir)(((int)direction + i) % 4);
                            onRoute   = true;
                        }
                    }
                }
            }
        }
    }