Beispiel #1
0
 public void Init(TileDatas datas, Vector2 positionInGrid)
 {
     ResetListeners();
     Type = datas.m_TileType;
     m_Renderer.RendererObject.SetActive(Type != TileType.EMPTY);
     if (Type == TileType.EMPTY)
     {
         IsActive = false;
         m_IsLock = true;
         return;
     }
     BoardManager.Instance.Spawner.TilesContainer.GetEventsDatasOfType(Type).Init(this);
     m_Renderer.Datas = datas;
     m_Renderer.ResetTile();
     m_Renderer.IsBouncing = false;
     m_Renderer.IsGrowing  = false;
     m_Renderer.IsShaking  = false;
     Face.Init(datas);
     m_GridPosition   = positionInGrid;
     IsMouseOver      = false;
     IsEventMouseOver = false;
     IsLock           = false;
     m_IsActive       = false;
     m_OnMouseOver.AddListener(() => IsEventMouseOver = true);
     m_OnMouseExit.AddListener(() => IsEventMouseOver = false);
 }
Beispiel #2
0
    public void ReceiveEventMessage(EventMessage message)
    {
        switch (message.m_MessageType)
        {
        case EventMessage.MessageType.IS_ACTIVE:
            IsActive = message.m_BoolParam;
            break;

        case EventMessage.MessageType.IS_GROWING:
            m_Renderer.IsGrowing = message.m_BoolParam;
            break;

        case EventMessage.MessageType.IS_SHAKING:
            m_Renderer.IsShaking = message.m_BoolParam;
            break;

        case EventMessage.MessageType.IS_LOCK:
            IsLock = message.m_BoolParam;
            break;

        case EventMessage.MessageType.SPAWN_TILE:
            if (Type == TileType.EMPTY)
            {
                TileDatas newDatas = BoardManager.Instance.Spawner.GetDataOfType(message.m_TileTypeParam);
                Init(newDatas, m_GridPosition);
                Type       = newDatas.m_TileType;
                m_IsActive = true;
                BoardManager.Instance.Board.SetNewTile(this, (int)m_GridPosition.x, (int)m_GridPosition.y);
            }
            break;

        case EventMessage.MessageType.SWITCH_FACE:
            m_FaceManager.SwitchFace(message.m_FaceTypeParam);
            break;

        case EventMessage.MessageType.ACTIVATE_ON_MOUSE_OVER:
            if (IsActive && !IsEventMouseOver)
            {
                IsEventMouseOver = true;
                m_OnMouseOver.Invoke();
            }
            break;

        case EventMessage.MessageType.ACTIVATE_ON_MOUSE_EXIT:
            m_OnMouseExit.Invoke();
            break;

        case EventMessage.MessageType.FLEE:
            break;
        }
    }
        private void SearchNextName(object sender, EventArgs e)
        {
            bool res = TileDatas.SearchName(textBoxItemName.Text, true, _land);

            if (res)
            {
                return;
            }

            DialogResult result = MessageBox.Show("No item found", "Result", MessageBoxButtons.OKCancel, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

            if (result == DialogResult.Cancel)
            {
                Close();
            }
        }
Beispiel #4
0
    public static void Draw(Texture2D text, Vector3Int center)
    {
        TileDatas wall = DataMap.GetWallTiles();
        TileDatas back = DataMap.GetBackTiles();

        if (tilemapCR == null)
        {
            Debug.Log("Null CR");
        }
        if (tilemapN == null)
        {
            Debug.Log("Null N");
        }
        Vector3Int StartPosition = center - new Vector3Int(text.width / 2, text.height / 2, 0) - new Vector3Int(1, 1, 0);

        for (int x = StartPosition.x; x < StartPosition.x + text.width + 2; x++)
        {
            for (int y = StartPosition.y; y < StartPosition.y + text.height + 2; y++)
            {
                Vector3Int pos = new Vector3Int(x, y, 0);
                if (x == StartPosition.x ||
                    x == StartPosition.x + text.width + 1 ||
                    y == StartPosition.y ||
                    y == StartPosition.y + text.height + 1)
                {
                    if (wall != null)
                    {
                        tilemapCR.SetTile(pos, wall.GetTile());
                    }
                }
                else
                {
                    Vector2Int pixelVector = (Vector2Int)(pos - StartPosition) - Vector2Int.one;
                    TileDatas  tiles       = DataMap.GetBarrierTiles(text.GetPixel(pixelVector.x, pixelVector.y));
                    if (tiles != null)
                    {
                        tilemapCR.SetTile(pos, tiles.GetTile());
                    }
                    if (back != null)
                    {
                        tilemapN.SetTile(pos, back.GetTile());
                    }
                }
            }
        }
    }
Beispiel #5
0
        private void OnClickApplyFilterLand(object sender, EventArgs e)
        {
            LandData land = new LandData();
            string   name = textBoxNameLand.Text;

            if (name.Length > 20)
            {
                name = name.Substring(0, 20);
            }

            land.Name = name;
            if (short.TryParse(textBoxTexID.Text, out short shortres))
            {
                land.TextureID = shortres;
            }

            land.Flags = TileFlag.None;
            if (checkedListBox2.GetItemChecked(0))
            {
                land.Flags |= TileFlag.Damaging;
            }

            if (checkedListBox2.GetItemChecked(1))
            {
                land.Flags |= TileFlag.Wet;
            }

            if (checkedListBox2.GetItemChecked(2))
            {
                land.Flags |= TileFlag.Impassable;
            }

            if (checkedListBox2.GetItemChecked(3))
            {
                land.Flags |= TileFlag.Wall;
            }

            if (checkedListBox2.GetItemChecked(4))
            {
                land.Flags |= TileFlag.Unknown3;
            }

            TileDatas.ApplyFilterLand(land);
        }
Beispiel #6
0
    public void SpawnTile(TileManager.TileType currentTileType, int posX, int posY)
    {
        TileDatas datas = GetDataOfType(currentTileType);

        TileManager.TileType tileOnBoard = m_BoardManager.Board.GetTileType(posX, posY);
        GameObject           tileSpawned = m_TileGetter.GetTileAvailable();

        tileSpawned.SetActive(true);
        tileSpawned.transform.parent        = m_CurrentLevelContainer;
        tileSpawned.transform.localPosition = new Vector2(posX * m_Settings.COLUMN_DISPLACEMENT, posY * m_Settings.RAW_DISPLACEMENT);
        TileManager tile = tileSpawned.GetComponent <TileManager>();

        if (datas == null)
        {
            datas = GetDataOfType(TileManager.TileType.EMPTY);
        }
        tile.Init(datas, new Vector2(posX, posY));
        m_BoardManager.Board.InitTile(tile, posX, posY);
    }
        private void SearchGraphic(object sender, EventArgs e)
        {
            if (!Utils.ConvertStringToInt(textBoxGraphic.Text, out int graphic, 0, Ultima.Art.GetMaxItemID()))
            {
                return;
            }

            bool res = TileDatas.SearchGraphic(graphic, _land);

            if (res)
            {
                return;
            }

            DialogResult result = MessageBox.Show("No item found", "Result", MessageBoxButtons.OKCancel, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Cancel)
            {
                Close();
            }
        }
Beispiel #8
0
        private void OnClickApplyFilterItem(object sender, EventArgs e)
        {
            ItemData item = new ItemData();
            string   name = textBoxName.Text;

            if (name.Length > 20)
            {
                name = name.Substring(0, 20);
            }

            item.Name = name;
            if (short.TryParse(textBoxAnim.Text, out short shortres))
            {
                item.Animation = shortres;
            }

            if (byte.TryParse(textBoxWeight.Text, out byte byteres))
            {
                item.Weight = byteres;
            }

            if (byte.TryParse(textBoxQuality.Text, out byteres))
            {
                item.Quality = byteres;
            }

            if (byte.TryParse(textBoxQuantity.Text, out byteres))
            {
                item.Quantity = byteres;
            }

            if (byte.TryParse(textBoxHue.Text, out byteres))
            {
                item.Hue = byteres;
            }

            if (byte.TryParse(textBoxStackOff.Text, out byteres))
            {
                item.StackingOffset = byteres;
            }

            if (byte.TryParse(textBoxValue.Text, out byteres))
            {
                item.Value = byteres;
            }

            if (byte.TryParse(textBoxHeigth.Text, out byteres))
            {
                item.Height = byteres;
            }

            if (short.TryParse(textBoxUnk1.Text, out shortres))
            {
                item.MiscData = shortres;
            }

            if (byte.TryParse(textBoxUnk2.Text, out byteres))
            {
                item.Unk2 = byteres;
            }

            if (byte.TryParse(textBoxUnk3.Text, out byteres))
            {
                item.Unk3 = byteres;
            }

            item.Flags = TileFlag.None;
            Array enumValues = Enum.GetValues(typeof(TileFlag));

            for (int i = 0; i < checkedListBox1.Items.Count; ++i)
            {
                if (checkedListBox1.GetItemChecked(i))
                {
                    item.Flags |= (TileFlag)enumValues.GetValue(i + 1);
                }
            }
            TileDatas.ApplyFilterItem(item);
        }
Beispiel #9
0
 public void Init(TileDatas datas)
 {
     m_FaceDatas = datas.m_FaceDatas;
     SwitchFace(FaceType.NEUTRAL);
 }
Beispiel #10
0
 // Hãy gọi hàm này sau khi Draw hết tất cả cá Round
 public static void DrawConnect(Vector3Int start, Vector3Int end)
 {
     //Vertical
     if (start.x == end.x)
     {
         // Xóa Tile đễ làm cầu dẫn
         for (int i = start.x - 2; i < start.x + 2; i++)
         {
             Vector3Int pos = new Vector3Int(i, start.y - 1, 0);
             tilemapCR.SetTile(pos, null);
             pos = new Vector3Int(i, end.y, 0);
             tilemapCR.SetTile(pos, null);
         }
         // Xây Cầu dẫn
         TileDatas wall = DataMap.GetWallTiles();
         if (wall == null)
         {
             Debug.Log("Chưa có dữ liệu TileWall cho " + MAP_GamePlay.CodeMapcurent.ToString() + " mà đã chạy rồi, chán thanh niên");
             return;
         }
         for (int i = start.y; i < end.y; i++)
         {
             Vector3Int pos  = new Vector3Int(start.x - 3, i, 0);
             Tile       tile = wall.GetTile();
             tilemapCR.SetTile(pos, tile);
             pos  = new Vector3Int(start.x + 2, i, 0);
             tile = wall.GetTile();
             tilemapCR.SetTile(pos, tile);
         }
         // Xây Back
         TileDatas back = DataMap.GetBackTiles();
         for (int x = start.x - 2; x < start.x + 2; x++)
         {
             for (int y = start.y - 1; y < end.y + 1; y++)
             {
                 Vector3Int pos = new Vector3Int(x, y, 0);
                 tilemapN.SetTile(pos, back.GetTile());
             }
         }
     }
     // Horizotal
     else if (start.y == end.y)
     {
         // Xóa Tile đễ làm cầu dẫn
         for (int i = start.y - 2; i < start.y + 2; i++)
         {
             Vector3Int pos = new Vector3Int(start.x - 1, i, 0);
             tilemapCR.SetTile(pos, null);
             pos = new Vector3Int(end.x, i, 0);
             tilemapCR.SetTile(pos, null);
         }
         // Xây Cầu dẫn
         TileDatas wall = DataMap.GetWallTiles();
         if (wall == null)
         {
             Debug.Log("Chưa có dữ liệu TileWall cho " + MAP_GamePlay.CodeMapcurent.ToString() + " mà đã chạy rồi, chán thanh niên");
             return;
         }
         for (int i = start.x; i < end.x; i++)
         {
             Vector3Int pos  = new Vector3Int(i, start.y - 3, 0);
             Tile       tile = wall.GetTile();
             tilemapCR.SetTile(pos, tile);
             pos  = new Vector3Int(i, start.y + 2, 0);
             tile = wall.GetTile();
             tilemapCR.SetTile(pos, tile);
         }
         // Xây Back
         TileDatas back = DataMap.GetBackTiles();
         for (int x = start.x - 1; x < end.x + 1; x++)
         {
             for (int y = start.y - 2; y < start.y + 2; y++)
             {
                 Vector3Int pos = new Vector3Int(x, y, 0);
                 tilemapN.SetTile(pos, back.GetTile());
             }
         }
     }
     else
     {
         Debug.Log(start + " & " + end + " thế này rồi làm cầu dẫn kiểu gì?");
     }
 }