public void DoWarp(TileWarp tileWarp) { holdingDirection = false; isWarping = true; if (tileWarp.warpType == WarpType.WallWarp) { walkedfromwarp = true; } if (walkedfromwarp && transform.position == targetPos) { walkedfromwarp = false; StartCoroutine(Warp(new Vector2(tileWarp.warpPosX, tileWarp.warpPosY))); } }
public void ApplyChanges(string component) { switch (component) { case "SpriteEditor": SpriteRenderer renderer = currenttile.GetComponent <SpriteRenderer>(); renderer.sprite = Resources.Load <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); break; case "Property": itemData itemdata = currenttile.GetComponent <itemData>(); itemdata.onlyonce = onlyonce.isOn; itemdata.hasText = hasText.isOn; int.TryParse(textId.text, out itemdata.TextID); itemdata.itemName = itemname.text; break; case "Warp": TileWarp warp = currenttile.GetComponent <TileWarp>(); warp.warppos = warpmarker.transform.position; break; case "TallGrass": if (currentmode == Mode.Select) { foreach (GameObject selectedtile in selectedtiles) { TallGrass tg = selectedtile.GetComponent <TallGrass>(); int.TryParse(wildgroupid.text, out tg.WildGroupID); } } else if (currentmode == Mode.Edit) { TallGrass tg = currenttile.GetComponent <TallGrass>(); int.TryParse(wildgroupid.text, out tg.WildGroupID); } break; } }
void OnTriggerEnter2D(Collider2D col) { if (col.gameObject.tag == "MapCollider") { if (GameData.instance.atTitleScreen) { return; } MapCollider mapCollider = col.gameObject.GetComponent <MapCollider>(); currentArea = mapCollider.mapArea; int mapArea = (int)mapCollider.mapArea; MapManager.instance.currentMapGrassTilemap = mapCollider.grassTilemap.GetComponent <TilemapRenderer>(); canUseBike = mapCollider.canUseBike; //set the bool for whether the player can use the bike if (forceBikeMaps.Contains(currentArea)) { walkSurfBikeState = MovementState.Bike; //if the map forces the player to use the bike, set the movement state to the bike } else if (!canUseBike && walkSurfBikeState == MovementState.Bike) { walkSurfBikeState = MovementState.Walk; } if (currentArea == Map.Route17) { forcePlayerBikeDownwards = true; //if the player is on Route 17 (Cycling Road), force the player to move downwards } else { forcePlayerBikeDownwards = false; } if (GameData.instance.WaterEncounterMaps.Contains(currentArea)) { areaHasWaterEncounters = true; } else { areaHasWaterEncounters = false; } if (GameData.instance.MapGrassEncounterTableIndices[mapArea] != -1) { currentAreaTable = PokemonData.encounters[GameData.instance.MapGrassEncounterTableIndices[mapArea]]; } else { currentAreaTable = null; } if (currentArea == Map.House) { return; //if the current area is a house, don't change the music } int songIndex = (int)SoundManager.MapSongs[mapArea]; if (SoundManager.instance.currentSong != songIndex && walkSurfBikeState == MovementState.Walk && !inBattle && !CreditsHandler.instance.isPlayingCredits) { if (SoundManager.instance.isFadingSong) { SoundManager.instance.StopFadeSong(); } SoundManager.instance.FadeToSong(songIndex); } } if (col.tag == "Warp") { TileWarp tileWarp = col.GetComponent <TileWarp>(); onWarpTile = true; currentWarpTile = tileWarp; } }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.LeftShift)) { if (currentmode == Mode.Delete) { currentmode = Mode.Edit; goto ChangeModeEnd; } if (currentmode == Mode.Edit) { currentmode = Mode.Select; goto ChangeModeEnd; } if (currentmode == Mode.Select) { currentmode = Mode.Delete; candeleteagain = true; foreach (GameObject sprite in multisselectsprites) { multisselectsprites.Remove(sprite); Destroy(sprite); } foreach (GameObject sprite in selectedtiles) { selectedtiles.Remove(sprite); } goto ChangeModeEnd; } } ChangeModeEnd: switch (currentmode) { case Mode.Edit: modetext.text = "Mode: Draw/Edit"; break; case Mode.Delete: modetext.text = "Mode: Delete"; break; case Mode.Select: modetext.text = "Mode: Multi-Edit"; break; } if (Input.GetKeyDown(KeyCode.A)) { currentTileIndex--; if (currentTileIndex < 0) { currentTileIndex = tilepool.Count - 1; } } if (Input.GetKeyDown(KeyCode.D)) { currentTileIndex++; if (currentTileIndex == tilepool.Count) { currentTileIndex = 0; } } if (currentmode == Mode.Select) { hasWarpComponent = true; hasPropertyComponent = true; hasTallGrassComponent = true; foreach (GameObject selectedtile in selectedtiles) { if (!selectedtile.GetComponent <itemData>()) { hasPropertyComponent = false; } if (!selectedtile.GetComponent <TileWarp>()) { hasWarpComponent = false; } if (!selectedtile.GetComponent <TallGrass>()) { hasTallGrassComponent = false; } } } else if (currenttile != null) { hasPropertyComponent = currenttile.GetComponent <itemData>(); hasWarpComponent = currenttile.GetComponent <TileWarp>(); hasTallGrassComponent = currenttile.GetComponent <TallGrass>(); } editchangesprite.sprite = Resources.Load <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); previewCreateSprite.sprite = Resources.Load <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); transform.Translate(new Vector2(-Input.mouseScrollDelta.x, Input.mouseScrollDelta.y)); Vector3 mousepos = editorcamera.ScreenToViewportPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0)); mousepos = editorcamera.ViewportToWorldPoint(mousepos); Vector2 snappos = new Vector2(Mathf.Round(mousepos.x), Mathf.Round(mousepos.y)); RaycastHit2D hit = Physics2D.Raycast(snappos, Vector2.zero); if (hit.collider != null) { hoveredtile = hit.collider.gameObject; } if (!placingWarp) { tilecursor.transform.position = new Vector2(Mathf.Round(mousepos.x), Mathf.Round(mousepos.y)); } else { warpmarker.transform.position = new Vector2(Mathf.Round(mousepos.x), Mathf.Round(mousepos.y)); } if (Input.mousePosition.x < Screen.width * 0.775f) { if (Input.GetMouseButtonDown(0) && currentmode == Mode.Edit) { if (!placingWarp) { if (hit.collider != null) { currenttile = hit.collider.gameObject; if (currenttile.GetComponent <itemData>()) { itemData itemdata = currenttile.GetComponent <itemData>(); onlyonce.isOn = itemdata.onlyonce; hasText.isOn = itemdata.hasText; textId.text = itemdata.TextID.ToString(); itemname.text = itemdata.itemName; } if (currenttile.GetComponent <TileWarp>()) { TileWarp warp = currenttile.GetComponent <TileWarp>(); warpmarker.transform.position = warp.warppos; } } } } if (Input.GetMouseButton(0) && !placingWarp && currentmode == Mode.Select && hit.collider != null && (snappos != lastselectedpos || canselectagain)) { if (!selectedtiles.Contains(hoveredtile)) { canselectagain = false; selectedtiles.Add(hoveredtile); GameObject go = Instantiate(selectmarker, snappos, Quaternion.identity); multisselectsprites.Add(go); lastselectedpos = snappos; } else { canselectagain = false; Destroy(multisselectsprites[selectedtiles.IndexOf(hoveredtile)]); multisselectsprites.RemoveAt(selectedtiles.IndexOf(hoveredtile)); selectedtiles.Remove(hoveredtile); lastselectedpos = snappos; } } if (Input.GetMouseButtonUp(0) && !placingWarp && currentmode == Mode.Select && lastselectedpos == snappos) { canselectagain = true; } if (Input.GetMouseButtonUp(0) && !placingWarp && currentmode == Mode.Delete && lastdeletedpos == snappos) { candeleteagain = true; } if (Input.GetMouseButton(0) && !placingWarp && currentmode == Mode.Delete && hit.collider != null && (snappos != lastdeletedpos || candeleteagain)) { Destroy(hoveredtile); candeleteagain = false; lastdeletedpos = snappos; } if (Input.GetMouseButtonUp(0) && placingWarp) { placingWarp = false; } if (Input.GetMouseButton(0) && !placingWarp && currentmode == Mode.Edit && tilepool[currentTileIndex].tag == "TallGrass") { if (hoveredtile.tag == "TallGrass") { goto SkipTallGrassRule; } GameObject gameObject = Instantiate(template, container.transform, true); gameObject.transform.position = snappos; gameObject.tag = tilepool[currentTileIndex].tag; gameObject.layer = tilepool[currentTileIndex].layer; gameObject.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); gameObject.GetComponent <SpriteRenderer>().sortingOrder = 1; if (gameObject.tag == "TallGrass") { gameObject.AddComponent <TallGrass>(); } if (tilepool[currentTileIndex].isAnimated) { gameObject.AddComponent <AnimatedTile>(); gameObject.GetComponent <AnimatedTile>().tileanimsprites = Resources.LoadAll <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); } } SkipTallGrassRule: if (Input.GetMouseButton(0) && hit.collider == null && !placingWarp && currentmode == Mode.Edit) { GameObject gameObject = Instantiate(template, container.transform, true); gameObject.transform.position = snappos; gameObject.tag = tilepool[currentTileIndex].tag; gameObject.layer = tilepool[currentTileIndex].layer; gameObject.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); if (gameObject.tag == "TallGrass") { gameObject.AddComponent <TallGrass>(); } if (tilepool[currentTileIndex].isAnimated) { gameObject.AddComponent <AnimatedTile>(); gameObject.GetComponent <AnimatedTile>().tileanimsprites = Resources.LoadAll <Sprite>("interiortiles/" + tilepool[currentTileIndex].sprite); } } } if (currenttile != null) { warpmarker.SetActive(currenttile.GetComponent <TileWarp>()); editoriginalsprite.sprite = currenttile.GetComponent <SpriteRenderer>().sprite; } tallgrassoverlay.SetActive(!hasTallGrassComponent); propertyoverlay.SetActive(!hasPropertyComponent); warpoverlay.SetActive(!hasWarpComponent); }