Пример #1
0
    public static GameObject CreateFlasher(int width, int height, Color col, float duration)
    {
        GameObject go      = Primitives.CreateRectangle(width, height, col);
        S_Flasher  flasher = go.AddComponent <S_Flasher>();

        flasher.Init(width, height, duration);
        return(go);
    }
Пример #2
0
    internal void UpdateGridHighlightedness()
    {
        foreach (GameObject go in highlightRectangles)
        {
            GameObject.Destroy(go);
        }
        highlightRectangles.Clear();
        foreach (S_Tile tile in allTiles)
        {
            tile.SetHighlight(false);
        }
        S_Ability activeAbility = abilityPanel.activeAbility;

        if (activeAbility != null)
        {
            //bunch of long codey bits because it's paperwork to do this sort of thing in unity it seems
            switch (activeAbility.GetTargetingType())
            {
            case S_Ability.TargetingType.Line:
                foreach (S_Tile tile in activeAbility.GetValidTiles(player.currentTile))
                {
                    int baseWidth  = tile.x - player.currentTile.x;
                    int baseHeight = tile.y - player.currentTile.y;
                    int rWidth     = baseWidth == 0 ? 1 : baseWidth;
                    int rHeight    = baseHeight == 0 ? 1 : baseHeight;
                    rWidth  *= S_Tile.height;
                    rHeight *= S_Tile.width;
                    rWidth  += -S_Camera.scale * Util.ProperSign(rWidth);
                    rHeight += -S_Camera.scale * Util.ProperSign(rHeight);
                    GameObject go = Primitives.CreateRectangle(rWidth, rHeight, S_Camera.scale, Colours.LIGHT);
                    Util.SetLayerContainer(go, Util.LayerName.Entities, 5);
                    S_Tile origin = player.currentTile;
                    if (baseWidth > 0)
                    {
                        origin = origin.GetTile(1, 0);
                    }
                    else if (baseHeight > 0)
                    {
                        origin = origin.GetTile(0, 1);
                    }
                    go.transform.position = new Vector2(origin.transform.position.x + (baseWidth < 0 ? -S_Camera.scale : 0), origin.transform.position.y + (baseHeight < 0 ? -S_Camera.scale : 0));
                    highlightRectangles.Add(go);
                    go.transform.SetParent(Game.GetMisc("effects").transform);
                }
                break;

            case S_Ability.TargetingType.SingleTile:
                foreach (S_Tile tile in activeAbility.GetValidTiles(player.currentTile))
                {
                    tile.SetHighlight(true);
                }
                break;
            }
        }
    }
Пример #3
0
    private static GameObject GetPooledParticle()
    {
        /*if (pool.Count > 0) {
         *  GameObject pooled = pool[0];
         *  pool.Remove(pooled);
         *  return pooled;
         * }*/
        GameObject go = Primitives.CreateRectangle(1, 1, Colours.GREEN);

        go.name = "particle";
        go.AddComponent <S_Particle>();
        return(go);
    }
Пример #4
0
    private void EndScreen()
    {
        end = true;
        GameObject rect = Primitives.CreateRectangle(Screen.width, Screen.height, Colours.DARK);

        Util.SetLayer(rect, Util.LayerName.Particles, 400);
        GameObject go     = Primitives.CreateActor(Sprites.end);
        int        xScale = (int)(Screen.width / Sprites.GetBounds(Sprites.end).x);
        int        yScale = (int)(Screen.height / Sprites.GetBounds(Sprites.end).y);
        int        scale  = Mathf.Min(xScale, yScale);

        go.transform.localScale = new Vector2(scale, scale);
        go.transform.position   = new Vector2((int)(Screen.width - Sprites.GetBounds(Sprites.end).x *scale) / 2, (int)(Screen.height - Sprites.GetBounds(Sprites.end).y *scale) / 2);
        Util.SetLayer(go, Util.LayerName.Particles, 500);
        PlayerPrefs.SetInt("level", 0);
    }
Пример #5
0
    public Game()
    {
        levelNumber = PlayerPrefs.GetInt("level", 0);
        GameObject background = Primitives.CreateRectangle(Screen.width, Screen.height, Colours.DARK);

        background.name = "backdrop";
        background.transform.SetParent(GetMisc("UI").transform, false);

        int gap = 5 * S_Camera.scale;

        mysteryButton = S_Button.CreateButton(Sprites.outline);
        S_Camera.SetupScale(mysteryButton.transform);
        mysteryButton.transform.position = new Vector2(gap, Screen.height - 5 * S_Camera.scale - Sprites.GetBounds(Sprites.restart).y *S_Camera.scale);
        mysteryButton.SetDownAction(() => { MysteryButton(); });
        mysteryButton.name = "mystery";
        mysteryButton.transform.SetParent(GetMisc("UI").transform, false);
        Util.SetZ(mysteryButton.gameObject, Util.ZLayer.Buttons);

        S_Button optionsButton = S_Button.CreateButton(Sprites.options);

        S_Camera.SetupScale(optionsButton.transform);
        optionsButton.transform.position = new Vector2(gap * 2 + Sprites.GetBounds(Sprites.options).x *S_Camera.scale, Screen.height - 5 * S_Camera.scale - Sprites.GetBounds(Sprites.restart).y *S_Camera.scale);
        optionsButton.SetDownAction(() => { PauseButton(); });
        optionsButton.name = "options_button";
        optionsButton.transform.SetParent(GetMisc("UI").transform, false);
        Util.SetZ(optionsButton.gameObject, Util.ZLayer.Buttons);

        S_Button restartButton = S_Button.CreateButton(Sprites.restart);

        S_Camera.SetupScale(restartButton.transform);
        restartButton.transform.position = new Vector2(gap * 3 + Sprites.GetBounds(Sprites.options).x *S_Camera.scale * 2, Screen.height - 5 * S_Camera.scale - Sprites.GetBounds(Sprites.restart).y *S_Camera.scale);
        restartButton.SetDownAction(() => { RestartButton(); });
        restartButton.name = "restart_button";
        restartButton.transform.SetParent(GetMisc("UI").transform, false);
        Util.SetZ(restartButton.gameObject, Util.ZLayer.Buttons);
    }
Пример #6
0
    void InitTilesAndEntities()
    {
        //init tiles array
        int tilesAcross = levelData.width;
        int tilesDown   = levelData.height - 1;

        tiles      = new S_Tile[tilesAcross, tilesDown];
        gridWidth  = (int)(tilesAcross * (S_Tile.BASE_TILE_SIZE + 1) * S_Camera.scale + S_Camera.scale);
        gridHeight = (int)(tilesDown * (S_Tile.BASE_TILE_SIZE + 1) * S_Camera.scale + S_Camera.scale);

        //use colours in leveldata to setup entities
        for (int x = 0; x < tilesAcross; x++)
        {
            for (int y = 0; y < tilesDown; y++)
            {
                S_Tile tile;
                switch (FromColour(levelData.GetPixel(x, y)))
                {
                case LevelContent.wall:
                    break;

                case LevelContent.blank:
                    tile = MakeTile(x, y);
                    break;

                case LevelContent.food:
                    tile = MakeTile(x, y);
                    tile.AddPickup();
                    pickupsRemaining++;
                    totalPickups++;
                    break;

                case LevelContent.player:
                    tile = MakeTile(x, y);
                    GameObject playerObject = (GameObject)(GameObject.Instantiate(Resources.Load("prefabs/player")));
                    player = playerObject.GetComponent <S_Player>();
                    player.Init();
                    entities.Add(player);
                    player.MoveToTile(tile, true);
                    break;

                case LevelContent.charger:
                    tile = MakeTile(x, y);
                    GameObject chargerObject = (GameObject)(GameObject.Instantiate(Resources.Load("prefabs/charger")));
                    S_Entity   charger       = chargerObject.GetComponent <S_Charger>();
                    charger.Init();
                    entities.Add(charger);
                    charger.MoveToTile(tile, true);
                    break;

                case LevelContent.enemy:
                    tile = MakeTile(x, y);
                    GameObject pincerObject = (GameObject)(GameObject.Instantiate(Resources.Load("prefabs/pincer")));
                    S_Entity   enemy        = pincerObject.GetComponent <S_Pincer>();
                    enemy.Init();
                    entities.Add(enemy);
                    enemy.MoveToTile(tile, true);
                    break;
                }
            }
        }

        //hierarchy object for entities
        GameObject entityParent = new GameObject("entities");

        entityParent.transform.SetParent(mapObject.transform, false);
        foreach (S_Entity e in entities)
        {
            e.positionSetter.transform.SetParent(entityParent.transform, false);
        }

        //setup map border
        GameObject rect = Primitives.CreateRectangle(tilesAcross * S_Tile.width + S_Camera.scale, tilesDown * S_Tile.height + S_Camera.scale, Colours.RED);

        rect.transform.SetParent(mapObject.transform, false);
        rect.GetComponent <SpriteRenderer>().sortingLayerName = "Tiles";
        rect.GetComponent <SpriteRenderer>().sortingOrder     = 0;
        rect.name = "level_background";

        //add level number (rethink into something symbolic maybe?)

        /*levelNumberObject = Primitives.CreateText(("level " + (Game.Get().levelNumber)));
         * S_Follower follow = levelNumberObject.AddComponent<S_Follower>();
         * follow.Follow(slider.gameObject, 2 * S_Camera.scale, Screen.height - 28 * S_Camera.scale);*/
    }
Пример #7
0
    public static GameObject CreatePauseScreen()
    {
        //all this code is a big pile of rubbish, I need to try unity unity ui next time!

        //background
        GameObject pauseScreen = new GameObject("pause_screen");
        GameObject pauseBG     = Primitives.CreateRectangle(pauseWidth, pauseHeight, Colours.RED);

        pauseBG.transform.SetParent(pauseScreen.transform, false);
        BoxCollider2D pausebgcol = pauseBG.AddComponent <BoxCollider2D>();

        pausebgcol.size   = new Vector2(1, 1);
        pausebgcol.offset = new Vector2(.5f, .5f);
        Util.SetLayer(pauseBG, Util.LayerName.UI, 0);
        Util.SetZ(pauseBG, Util.ZLayer.PauseLayer);
        GameObject pauseBGInner = Primitives.CreateRectangle(pauseWidth - border * 2, pauseHeight - border * 2, Colours.DARK);

        pauseBGInner.transform.position = new Vector2(border, border);
        pauseBGInner.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(pauseBGInner, Util.LayerName.UI, 1);
        Util.SetLayer(pauseBG, Util.LayerName.UI, 1);
        pauseScreen.transform.position = new Vector2((int)(Screen.width / 2 - pauseWidth / 2), (int)(Screen.height / 2 - pauseHeight / 2));

        //sliders
        int barWidth = (int)(pauseWidth - border * 2 - gap * 3 - Sprites.GetBounds(Sprites.sound).x *S_Camera.scale);
        int barX     = (int)(border + gap * 2 + Sprites.GetBounds(Sprites.sound).x *S_Camera.scale);
        int currentY = pauseHeight - border;

        currentY            -= gap + S_OptionSlider.TOTAL_HEIGHT;
        S_OptionSlider.music = S_OptionSlider.CreateSlider(barWidth);
        S_OptionSlider.music.transform.position = new Vector2(barX, currentY);
        S_OptionSlider.music.transform.SetParent(pauseScreen.transform, false);
        Util.SetZ(S_OptionSlider.music.gameObject, Util.ZLayer.Sliders);
        GameObject music = Primitives.CreateActor(Sprites.music);

        S_Camera.SetupScale(music.transform);
        music.transform.position = new Vector2(border + gap, currentY + S_OptionSlider.BAR_HEIGHT / 2 - Sprites.GetBounds(Sprites.music).y *S_Camera.scale / 2);
        music.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(music, Util.LayerName.UI, 50);
        currentY -= gap + S_OptionSlider.TOTAL_HEIGHT;
        S_OptionSlider.music.SetUpAction(() => { PlayerPrefs.SetFloat("music", S_OptionSlider.music.GetValue()); });
        S_OptionSlider.music.SetRatio(PlayerPrefs.GetFloat("music", .7f));

        S_OptionSlider.sfx = S_OptionSlider.CreateSlider(barWidth);
        S_OptionSlider.sfx.transform.position = new Vector2(barX, currentY);
        S_OptionSlider.sfx.transform.SetParent(pauseScreen.transform, false);
        Util.SetZ(S_OptionSlider.sfx.gameObject, Util.ZLayer.Sliders);
        GameObject sound = Primitives.CreateActor(Sprites.sound);

        S_Camera.SetupScale(sound.transform);
        sound.transform.position = new Vector2(border + gap, currentY + S_OptionSlider.BAR_HEIGHT / 2 - Sprites.GetBounds(Sprites.music).y *S_Camera.scale / 2);
        sound.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(sound, Util.LayerName.UI, 50);
        currentY -= gap + S_OptionSlider.TOTAL_HEIGHT;
        S_OptionSlider.sfx.SetUpAction(() => { PlayerPrefs.SetFloat("sfx", S_OptionSlider.sfx.GetValue()); });
        S_OptionSlider.sfx.SetRatio(PlayerPrefs.GetFloat("sfx", .7f));

        //icons
        int codeX  = (pauseWidth - border * 2) / 3 + border;
        int musicX = (pauseWidth - border * 2) / 3 * 2 + border;

        int iconY    = currentY;
        int twitterY = (int)(iconY - gap - Sprites.GetBounds(Sprites.twitter).y *S_Camera.scale / 2f);

        iconY += gap / 2;

        GameObject code = Primitives.CreateActor(Sprites.code);

        S_Camera.SetupScale(code.transform);
        code.transform.position = new Vector2(codeX - Sprites.GetBounds(Sprites.code).x *S_Camera.scale / 2f, iconY - Sprites.GetBounds(Sprites.code).y *S_Camera.scale / 2f);
        code.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(code, Util.LayerName.UI, 50);

        music = Primitives.CreateActor(Sprites.music);
        S_Camera.SetupScale(music.transform);
        music.transform.position = new Vector2(musicX - Sprites.GetBounds(Sprites.music).x *S_Camera.scale / 2f, iconY - Sprites.GetBounds(Sprites.music).x *S_Camera.scale / 2f);
        music.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(music, Util.LayerName.UI, 50);


        //bottom info
        S_Button myTwitter = S_Button.CreateButton(Sprites.twitter);

        S_Camera.SetupScale(myTwitter.transform);
        myTwitter.transform.position = new Vector2(codeX - Sprites.GetBounds(Sprites.twitter).x *S_Camera.scale / 2f, twitterY - Sprites.GetBounds(Sprites.twitter).y *S_Camera.scale / 2f);
        myTwitter.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(myTwitter.gameObject, Util.LayerName.UI, 50);
        myTwitter.SetDownAction(() => Application.OpenURL("https://twitter.com/ColourTann"));

        S_Button website = S_Button.CreateButton(Sprites.website);

        S_Camera.SetupScale(website.transform);
        website.transform.position = new Vector2(musicX - Sprites.GetBounds(Sprites.website).x *S_Camera.scale / 2f, twitterY - Sprites.GetBounds(Sprites.website).x *S_Camera.scale / 2f);
        website.transform.SetParent(pauseScreen.transform, false);
        Util.SetLayer(website.gameObject, Util.LayerName.UI, 50);
        website.SetDownAction(() => Application.OpenURL("http://chriszabriskie.com/"));

        return(pauseScreen);
    }