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); }
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; } } }
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); }
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); }
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); }
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);*/ }
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); }