Beispiel #1
0
 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;
        }
    }
Beispiel #3
0
 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);
    }