예제 #1
0
        public void UpdateTile(Vector3 position, Color color, HexTile.TileHeight height, bool add, bool remove)
        {
            position = transform.InverseTransformPoint(position);
            HexPoint point = HexPoint.FromPosition(position);

            if (add && !_tiles.ContainsKey(point))
            {
                int x = point.X + point.Z / 2;
                int y = point.Z;

                Vector3 newPos;
                newPos.x = (x + (y & 1) / 2f) * (BoardUtils.innerRadius * 2f);
                newPos.y = y * BoardUtils.outerRadius * 1.5f;
                newPos.z = 0f;

                HexTile tile = new HexTile(point, newPos, color, height);
                _tiles.Add(point.Z, point, tile);
            }
            else if (remove && _tiles.ContainsKey(point))
            {
                _tiles.Remove(point);
            }
            else if (_tiles.ContainsKey(point))
            {
                HexTile hexTile = _tiles.Get(point);
                hexTile.SetColor(color);
                hexTile.SetHeight(height);
            }

            _tiles.Triangulate();
        }
예제 #2
0
        public void LoadJsonTileList(List <HexTileJson> jsonList)
        {
            _tiles.Initialize();
            for (int i = 0; i < jsonList.Count; i++)
            {
                HexPoint           point    = new HexPoint(jsonList[i].hexPoint.x, jsonList[i].hexPoint.y, jsonList[i].hexPoint.z);
                Vector3            position = new Vector3(jsonList[i].point.x, jsonList[i].point.y, jsonList[i].point.z);
                Color              color    = new Color(jsonList[i].color.r, jsonList[i].color.g, jsonList[i].color.b);
                HexTile.TileHeight height   = jsonList[i].height.height;

                _tiles.CreateTile(point, position, color, height);
            }
            _tiles.Triangulate();
        }
예제 #3
0
        private void CreateTile(int x, int y)
        {
            Vector3 position;

            position.x = (x + (y & 1) / 2f) * (BoardUtils.innerRadius * 2f);
            position.y = y * BoardUtils.outerRadius * 1.5f;
            position.z = 0f;

            HexPoint point = HexPoint.FromOffsetPoint(x, y);

            HexTile.TileHeight height = (Random.Range(0, 2) & 1) == 0 ? HexTile.TileHeight.DEFAULT : HexTile.TileHeight.LOW;
            Color color = BoardUtils.colors[Random.Range(0, BoardUtils.colors.Length)];

            HexTile tile = new HexTile(point, position, color, height);

            Add(y, point, tile);
        }
예제 #4
0
        public void CreateTile(HexPoint point, Vector3 position, Color color, HexTile.TileHeight height)
        {
            HexTile tile = new HexTile(point, position, color, height);

            Add(point.Z, point, tile);
        }
        public override void OnInspectorGUI()
        {
//            serializedObject.Update();

            MapEditor mapEditor = (MapEditor)target;

            SerializedProperty tps = serializedObject.FindProperty("colors");

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(tps, true);
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }

            EditorGUILayout.BeginHorizontal();

            for (int i = 0; i < mapEditor.colors.Length; i++)
            {
                if (mapEditor.selectedColor == i)
                {
                    GUI.color = Color.Lerp(Color.black, mapEditor.colors[i], 0.5f);
                }
                else
                {
                    GUI.color = mapEditor.colors[i];
                }
                if (GUILayout.Button(""))
                {
                    mapEditor.OnChangeColor(i);
                }
            }

            EditorGUILayout.EndHorizontal();

            GUI.color = mapEditor.editorDefaultColor;

            HexTile.TileHeight selectedHeight = (HexTile.TileHeight)EditorGUILayout.EnumPopup("Height", mapEditor.selectedHeight);
            if (selectedHeight != mapEditor.selectedHeight)
            {
                mapEditor.OnChangeHeight(selectedHeight);
            }

            EditorGUILayout.BeginHorizontal();

            GUI.color = mapEditor.add ? mapEditor.editorSelectedColor : mapEditor.editorDefaultColor;

            if (GUILayout.Button("Add", GUILayout.Height(30)))
            {
                mapEditor.OnAdd();
            }

            GUI.color = mapEditor.remove ? mapEditor.editorSelectedColor : mapEditor.editorDefaultColor;

            if (GUILayout.Button("Remove", GUILayout.Height(30)))
            {
                mapEditor.OnRemove();
            }

            EditorGUILayout.EndHorizontal();

            GUI.color = mapEditor.editorDefaultColor;

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("Save", GUILayout.Height(30)))
            {
                mapEditor.OnSave();
            }

            if (GUILayout.Button("Load", GUILayout.Height(30)))
            {
                mapEditor.OnLoad();
            }

            EditorGUILayout.EndHorizontal();

            if (GUILayout.Button("Initialize", GUILayout.Height(30)))
            {
                mapEditor.OnInitialize();
            }
        }
예제 #6
0
 public void OnChangeHeight(HexTile.TileHeight height)
 {
     selectedHeight = height;
 }