Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        // Reset scene when reset key is pressed
        if (Input.GetKeyDown(ResetKey))
        {
            relativeLevel(0);
        }

        if (Input.GetKeyDown(HardResetKey))
        {
            relativeLevel(1);
        }



        // Advance level when landmark is reached, or all "landmark" is removed
        switch (obj)
        {
        case objective.FILL:
            UnityEngine.Tilemaps.TileBase[] tm_array = tm.GetTilesBlock(tm_bounds);
            int num_lm_tiles = System.Array.FindAll <UnityEngine.Tilemaps.TileBase>(tm_array, x => x == landmark).Length;

            if (landmark2 != null)
            {
                num_lm_tiles += System.Array.FindAll <UnityEngine.Tilemaps.TileBase>(tm_array, x => x == landmark2).Length;
            }

            if (num_lm_tiles < 2)
            {
                relativeLevel(1);
            }
            break;

        case objective.GOAL:
            if (tm.GetTile(Vector3Int.FloorToInt(player.transform.position)) == landmark)
            {
                relativeLevel(1);
            }
            break;

        case objective.EXIT:
            if (tm.GetTile(Vector3Int.FloorToInt(player.transform.position)) == landmark)
            {
                relativeLevel(0);
            }

            if (!tm_bounds.Contains(Vector3Int.FloorToInt(player.transform.position)))
            {
                relativeLevel(1);
            }

            break;

        default:
            break;
        }
    }
Ejemplo n.º 2
0
    protected bool Move(Vector3 rel)
    {
        if (transform.position == pos)                                  // if entity has finished its previous move
        {
            if (tm.GetTile(Vector3Int.FloorToInt(pos + rel)) != mytile) // if entity is not attempting to move to a tile of its own color
            {
                tm.SetTile(Vector3Int.FloorToInt(pos), mytile);         // place the entity's tile in its current position
                pos += rel;                                             // set destination

                nextFadeTime = Time.time + 3f;
                return(true);
            }
        }

        return(false);
    }
Ejemplo n.º 3
0
            public void UpdateTile(Vec2I v)
            {
                Vec3I gridPos   = (v * 2).Vec3();
                var   vtilePrev = tilemap.GetTile(gridPos) as T;
                var   vtile     = vtilePrev == vtileA ? vtileB : vtileA;

                for (int i = 0; i < 4; ++i)
                {
                    tilemap.SetTile(gridPos + new Vec3I(i % 2, i >> 1, 0), vtile);
                }
            }
Ejemplo n.º 4
0
 void Update()
 {
     if (Input.GetMouseButtonDown(0))
     {
         Vector3 pos = Feldgeister.Input.currentWorldMousePosition;
         // will have to fix, does not respect sorting layer.
         var intPos = new Vector3Int((int)pos.x, (int)pos.y, 0);
         var tile   = perlinGroundMap.GetTile(intPos);
         if (tile)
         {
             Debug.Log("Clicked " + intPos + " - " + tile);
         }
     }
 }
Ejemplo n.º 5
0
    private void Awake()
    {
        Current = this;
        tilemap.CompressBounds();
        Board = new Board(tilemap.cellBounds);

        foreach (var pos in Board.Bounds.allPositionsWithin)
        {
            var tile = tilemap.GetTile(pos);
            if (tile && tileMapping.TryGetValue(tile, out var boardTile))
            {
                Board.SetTile(boardTile, pos.XY());
                //Debug.Log($"{pos.XY()}: {boardTile}");
            }
        }
    }
Ejemplo n.º 6
0
    public bool IsLocationTargetable(Vector3 position)
    {
        UnityEngine.Tilemaps.Tilemap highlightTilemap = StageManager.Instance.HighlightMap.tilemap;
        if (highlightTilemap.GetTile(Helpers.ReturnTilePosition_Int(highlightTilemap, position)) == null)
        {
            return(false);
        }

        var correctedPosition = Helpers.ReturnTilePosition(highlightTilemap, position, -3);

        if (StageManager.Instance.BattleManager.activeHeroes.FindAll(x => Vector2.Distance(x.transform.position, correctedPosition) < 0.2f).Count > 0)
        {
            return(false);
        }

        return(true);
    }
Ejemplo n.º 7
0
    bool TryMoveDir(twin dir)
    {
        var tile = tilemap.GetTile(tile_pos + dir);

        if (tile == null || ((UnityEngine.Tilemaps.Tile)tile).colliderType == UnityEngine.Tilemaps.Tile.ColliderType.None)
        {
            // ok!
            last_move = dir;
            tile_pos += dir;
            return(true);
        }
        else
        {
            // nah!
            return(false);
        }
    }
Ejemplo n.º 8
0
    static int GetTile(IntPtr L)
    {
        try
        {
            ToLua.CheckArgsCount(L, 2);
            UnityEngine.Tilemaps.Tilemap obj  = (UnityEngine.Tilemaps.Tilemap)ToLua.CheckObject(L, 1, typeof(UnityEngine.Tilemaps.Tilemap));
            UnityEngine.Vector3Int       arg0 = StackTraits <UnityEngine.Vector3Int> .Check(L, 2);

            UnityEngine.Tilemaps.TileBase o = obj.GetTile(arg0);
            ToLua.Push(L, o);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Ejemplo n.º 9
0
        private static void SetColor(UnityEngine.Tilemaps.Tilemap tilemap, Vector3Int position, Color color)
        {
            TileBase tile = tilemap.GetTile(position);

            if (tile != null)
            {
                if ((tilemap.GetTileFlags(position) & TileFlags.LockColor) != 0)
                {
                    if (tile is Tile)
                    {
                        Debug.LogWarning("Tint brush cancelled, because Tile (" + tile.name + ") has TileFlags.LockColor set. Unlock it from the Tile asset debug inspector.");
                    }
                    else
                    {
                        Debug.LogWarning("Tint brush cancelled. because Tile (" + tile.name + ") has TileFlags.LockColor set. Unset it in GetTileData().");
                    }
                }

                tilemap.SetColor(position, color);
            }
        }
Ejemplo n.º 10
0
    // Update is called once per frame
    void Update()
    {
        float x = 0;
        float y = 0;

        if (Input.GetKey(KeyCode.W))
        {
            y += 1;
        }
        if (Input.GetKey(KeyCode.S))
        {
            y -= 1;
        }
        if (Input.GetKey(KeyCode.A))
        {
            x -= 1;
        }
        if (Input.GetKey(KeyCode.D))
        {
            x += 1;
        }
        var newVelocity = new Vector2(x, y).normalized *speed;

        if (newVelocity.sqrMagnitude == 0 ^ velocity.sqrMagnitude > 0)
        {
            UpdateAnimation();
        }
        velocity = newVelocity;

        // Find out look direction
        if ((cameraInHand?.recordingstatus ?? Recorder.Recordingstatus.NO_RECORDING) == Recorder.Recordingstatus.NO_RECORDING)
        {
            var mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
            mousePos = transform.worldToLocalMatrix.MultiplyPoint(mousePos);
            if (mousePos.x > mousePos.y)
            {
                if (-mousePos.x > mousePos.y)
                {
                    LookDirection = 2;
                }
                else
                {
                    LookDirection = 1;
                }
            }
            else
            {
                if (-mousePos.x > mousePos.y)
                {
                    LookDirection = 3;
                }
                else
                {
                    LookDirection = 0;
                }
            }
        }

        // Handling Input to pick up Camera
        if (Input.GetKeyDown(KeyCode.E))
        {
            if (cameraInHand)
            {
                if (!cameraInHand.gameObject.activeInHierarchy)
                {
                    // Try to pick up
                    List <Collider2D> colliders = new List <Collider2D>();
                    GetComponent <Collider2D>().OverlapCollider(new ContactFilter2D(), colliders);
                    var projector = colliders.Find(c => c.GetComponentInParent <Projector>() != null);
                    if (projector)
                    {
                        cameraInHand.SetLastRecording(projector.GetComponentInParent <Projector>().GetRecording());
                        Destroy(projector.transform.parent.gameObject);
                        cameraInHand.gameObject.SetActive(true);
                        cameraInHand.ShowLastRecordingStillframe();
                    }
                }
                else if (cameraInHand.GetComponent <Recorder>().GetLastRecording()?.Finished ?? true)
                {
                    if ((!floorTilemap?.GetTile(floorTilemap.WorldToCell(this.transform.position))?.name.Equals("gitter")) ?? true)
                    {
                        // Put it down and start
                        var p = Instantiate <Projector>(projectorPrefab, cameraInHand.transform.position, cameraInHand.transform.rotation);
                        p.StartProjection(cameraInHand.GetLastRecording());
                        cameraInHand.gameObject.SetActive(false);
                        cameraInHand.SetLastRecording(null);
                    }
                }
            }
        }

        // Handling Input to get back to Main Menu
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            SceneManager.LoadScene(mainMenu, LoadSceneMode.Single);
        }

        // Updating UI to inform about pickup
        LevelUIBehaviour behav = cameraInHand.levelUIManagerObj.GetComponent <LevelUIBehaviour>();

        behav.DisplayPickupInfo(true);
        List <Collider2D> colliders2 = new List <Collider2D>();

        GetComponent <Collider2D>().OverlapCollider(new ContactFilter2D(), colliders2);
        var projector2 = colliders2.Find(c => c.GetComponentInParent <Projector>() != null);

        if (projector2)
        {
            behav.DisplayPickupInfo(true);
        }
        else
        {
            behav.DisplayPickupInfo(false);
        }
    }