private object GetFieldValue(string stringValue, MapDataType dataType)
        {
            try
            {
                switch (dataType)
                {
                case MapDataType.Boolean:
                    return(Convert.ToBoolean(stringValue, CultureInfo.InvariantCulture));

                case MapDataType.DateTime:
                    return(Convert.ToDateTime(stringValue, CultureInfo.InvariantCulture));

                case MapDataType.Float:
                    return(Convert.ToDouble(stringValue, CultureInfo.InvariantCulture));

                case MapDataType.Integer:
                    return(Convert.ToInt32(stringValue, CultureInfo.InvariantCulture));

                case MapDataType.Decimal:
                    return(Convert.ToDecimal(stringValue, CultureInfo.InvariantCulture));

                default:
                    return(stringValue);
                }
            }
            catch (Exception ex)
            {
                if (AsynchronousExceptionDetection.IsStoppingException(ex))
                {
                    throw;
                }
                Global.Tracer.Trace(TraceLevel.Verbose, ex.Message);
                return(null);
            }
        }
Exemple #2
0
    public void GenerateBattleground(MapDataType mapDataType)
    {
        Debug.Log("Battleground found!");

        if (SkipBattlegrounds)
        {
            return;
        }

        BattlegroundData newBattleGround = new BattlegroundData();

        newBattleGround.Player = WorldMapData.Player;

        newBattleGround.Enemies = new List <Enemy>();
        newBattleGround.Enemies.Add(Resources.Load <GameObject>("Testing/EnemyKnight").GetComponent <Enemy>());
        newBattleGround.Enemies.Add(Resources.Load <GameObject>("Testing/EnemyRogue").GetComponent <Enemy>());
        newBattleGround.Enemies.Add(Resources.Load <GameObject>("Testing/EnemyWizard").GetComponent <Enemy>());

        newBattleGround.CurrentUnitId = 0;
        newBattleGround.MapInfos      = new MapInfos();
        newBattleGround.MapInfos.Size = new Vector2(32, 32);

        newBattleGround.MapInfos.MapData = Resources.Load <ScriptableObject>("MapData/" + mapDataType.ToString()) as MapData;

        SaveManager.SaveWorldMap(WorldMapData);
        SaveManager.SaveBattleground(newBattleGround);

        SaveManager.LoadScene(Scene.Battleground);
    }
Exemple #3
0
        public void Deserialize(IntermediateFormatReader reader)
        {
            reader.RegisterDeclaration(MapFieldDefinition.m_Declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.Map:
                    this.m_map = reader.ReadReference <Map>(this);
                    break;

                case MemberName.Name:
                    this.m_name = reader.ReadString();
                    break;

                case MemberName.DataType:
                    this.m_dataType = (MapDataType)reader.ReadEnum();
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }
    private void ShowMapSelectMenu()
    {
        EditorGUILayout.Space();

        if (selectedCreateType == MapDataType.Map)
        {
            EditorGUILayout.LabelField("Create New Map");

            newMapName = EditorGUILayout.TextField(newMapName);

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Create"))
            {
                var newMap = CreateInstance(typeof(MapDatabaseObject)) as MapDatabaseObject;
                newMap.name = newMapName;

                mapDatabase.mapDatabaseDictionary.Add(newMap.name, newMap);
                mapDatabase.Save();

                AssetDatabase.AddObjectToAsset(newMap, mapDatabase);
                EditorUtility.SetDirty(mapDatabase);

                currentMap = newMap;

                selectedCreateType = MapDataType.None;
            }

            if (GUILayout.Button("Cancel"))
            {
                selectedCreateType = MapDataType.None;
            }
            GUILayout.EndHorizontal();

            return;
        }

        if (GUILayout.Button("Create New Map"))
        {
            selectedCreateType = MapDataType.Map;
        }

        EditorGUILayout.Space();

        EditorGUILayout.LabelField("Map List");
        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);

        foreach (var map in mapDatabase.mapDatabaseObjects.OrderBy(m => m.name))
        {
            if (GUILayout.Button(map.name))
            {
                map.InitDictionary();
                currentMap = map;

                RefreshMap();
            }
        }
    }
    private void Initialize()
    {
        initSuccessful = true;

        database    = (GameDatabase)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/GameDataObjects/GameDatabase.asset", typeof(GameDatabase));
        mapDatabase = (MapDatabase)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/MapDataObjects/MapDatabase.asset", typeof(MapDatabase));

        if (database == null)
        {
            initSuccessful = false;
            Debug.Log("Cannot find GameDatabase");
        }

        if (mapDatabase == null)
        {
            initSuccessful = false;
            Debug.Log("Cannot find MapDatabase");
        }
        else
        {
            mapDatabase.InitDictionary();
        }

        InitTextures();

        SceneView.onSceneGUIDelegate += OnSceneGUI;

        var terrain = GameObject.Find("TerrainMap");

        if (terrain)
        {
            tilemapParent = terrain.transform;
        }

        var map = GameObject.Find("SpawnMap");

        if (map != null)
        {
            spawnMap = map.transform.Find("Spawn").GetComponent <Tilemap>();
        }
        else
        {
            initSuccessful = false;
            Debug.Log("Cannot find SpawnMap");
        }

        selectedCountry    = null;
        selectedCreateType = MapDataType.None;

        Tools.current = Tool.None;
        Tools.hidden  = true;
    }
Exemple #6
0
    public static MapData ReadMapData(string path, MapMetadata metadata, MapDataType type = MapDataType.ASCIIGrid)
    {
        switch (type)
        {
        case MapDataType.ASCIIGrid:
            return(ASCIIGridImporter.ReadMapData(path, (ASCIIGridMetadata)metadata));

        case MapDataType.Binary:
            return(BinaryFileImporter.ReadMapData(path, (BinaryFileMetadata)metadata));

        default:
            throw new System.NotImplementedException("Type " + type + " not implemented!");
        }
    }
Exemple #7
0
    public void Start()
    {
        regions = new MapRegionSmoother().SmoothRegions(regions, regionsSmoothCount);
        TextureGenerator.SetRegions(regions);

        string      mapFileName = GetMapFileNameFromEnum(mapName);
        MapDataType mapDataType = GetMapFileTypeFromEnum(mapName);

        // A quick fix to enable binary map reading. Needs to be done better.
        if (mapDataType == MapDataType.Binary)
        {
            mapData = DataImporter.GetBinaryMapData(mapFileName);
        }
        else if (mapDataType == MapDataType.ASCIIGrid)
        {
            mapData = DataImporter.GetASCIIMapData(mapFileName);
        }
        else
        {
            Debug.LogError("Error! Importin map data from file " + mapFileName + " failed.");
        }

        if (useSatelliteImage)
        {
            SatelliteImageService.satelliteImage = DataImporter.GetSatelliteImage(mapFileName, mapData.GetWidth(), mapData.GetHeight());
        }
        else
        {
            SatelliteImageService.satelliteImage = new SatelliteImage();
        }

        displays = new List <MapDisplay>();

        GenerateMap();
        OSMGenerator osmGenerator = GameObject.FindObjectOfType <OSMGenerator>();

        if (osmGenerator != null)
        {
            try {
                osmGenerator.GenerateOSMObjects(this, mapFileName);
            } catch (System.Exception e) {
                Debug.Log("Did not generate trails: " + e);
            }
        }
    }
        private Type GetFieldType(MapDataType dataType)
        {
            switch (dataType)
            {
            case MapDataType.Boolean:
                return(typeof(bool));

            case MapDataType.DateTime:
                return(typeof(DateTime));

            case MapDataType.Float:
                return(typeof(double));

            case MapDataType.Integer:
                return(typeof(int));

            case MapDataType.Decimal:
                return(typeof(decimal));

            default:
                return(typeof(string));
            }
        }
    void OnGUI()
    {
        if (!initSuccessful)
        {
            EditorGUILayout.LabelField("Initialization failed.", EditorStyles.boldLabel);
            return;
        }

        if (!Application.isEditor || Application.isPlaying)
        {
            EditorGUILayout.LabelField("GameMapEditor only works during edit mode.", EditorStyles.boldLabel);
            return;
        }

        if (currentScene.name != "MapScene")
        {
            EditorGUILayout.LabelField("GameMapEditor only works in MapScene.", EditorStyles.boldLabel);
            return;
        }

        if (currentMap == null)
        {
            ShowMapSelectMenu();
            return;
        }

        GUILayout.BeginHorizontal();
        EditorGUILayout.LabelField(currentMap.name);

        if (GUILayout.Button("Map Menu"))
        {
            currentMap = null;

            RefreshMap();
        }
        GUILayout.EndHorizontal();

        EditorGUILayout.Vector3IntField("Position: ", lastClickedTilePosition);
        EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);

        if (selectedCountry != null)
        {
        }

        if (selectedTile != null)
        {
            if (selectedTile is CastleSpawnTile)
            {
                ShowCountry();
            }
            else if (selectedTile is InteractableSpawnTile)
            {
                ShowInteractable();
            }
            else if (selectedTile is AnimalSpawnTile)
            {
                ShowAnimal();
            }

            return;
        }

        if (selectedCreateType != MapDataType.None)
        {
            if (GUILayout.Button("Back"))
            {
                selectedCreateType = MapDataType.None;
            }

            if (selectedCreateType == MapDataType.Country)
            {
                ShowCreateCastleMenu();
            }
            else if (selectedCreateType == MapDataType.Interactable)
            {
                ShowCreateInteractableMenu();
            }
            else if (selectedCreateType == MapDataType.Animal)
            {
                ShowCreateAnimalMenu();
            }

            return;
        }

        if (GUILayout.Button("Create Castle"))
        {
            selectionGridIndex = 0;
            selectedCreateType = MapDataType.Country;
        }

        if (GUILayout.Button("Create Animal"))
        {
            selectionGridIndex = 0;
            selectedCreateType = MapDataType.Animal;
        }

        if (GUILayout.Button("Create Interactable"))
        {
            selectionGridIndex = 0;
            selectedCreateType = MapDataType.Interactable;
        }

        GUILayout.Space(25);

        if (GUILayout.Button("Refresh Database"))
        {
            RefreshDatabase();
        }

        if (GUILayout.Button("Refresh Map"))
        {
            RefreshMap();
        }

        if (!removeMapConfirmation && GUILayout.Button("Remove Map"))
        {
            removeMapConfirmation = true;
        }

        if (removeMapConfirmation)
        {
            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Confirm"))
            {
                removeMapConfirmation = false;

                mapDatabase.mapDatabaseDictionary.Remove(currentMap.name);
                mapDatabase.Save();

                DestroyImmediate(currentMap, true);

                EditorUtility.SetDirty(mapDatabase);

                RefreshMap();
            }

            if (GUILayout.Button("Cancel"))
            {
                removeMapConfirmation = false;
            }

            GUILayout.EndHorizontal();
        }
    }
Exemple #10
0
        private bool CheckCanMove(int targetRow, int targetCol, MapDataType targetData)
        {
            SceneModule _sceneModule = (SceneModule)GameManager.GameManagerObj.GetComponent <GameManager>().GetModuleByName("SceneModule");
            int         _dataRow     = _sceneModule.getMapDataRow();
            int         _dataCol     = _sceneModule.getMapDataCol();
            bool        _ret         = false;

            if (m_skillId == SkillId.NONE)
            {
                return(_ret);
            }
            if (targetData == MapDataType.NONE || targetData == MapDataType.JUMATUI)
            {
                return(_ret);
            }
            if (targetRow < 0 || targetRow >= _dataRow || targetCol < 0 || targetCol >= _dataCol)
            {
                return(_ret);
            }
            switch (m_skillId)
            {
            case SkillId.JU:
                if (targetRow == m_playerPos.m_row)
                {
                    if (_sceneModule.Data[targetRow][targetCol] == MapDataType.NEWMODE)
                    {
                        return(_ret);
                    }
                    if (targetCol > m_playerPos.m_col)
                    {
                        for (int _i = m_playerPos.m_col + 1; _i <= targetCol; _i++)
                        {
                            if (_sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.GAOTAI ||
                                _sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.NONE ||
                                _sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.JUMATUI ||
                                _sceneModule.m_npcList[m_playerPos.m_row][_i] != null)
                            {
                                return(_ret);
                            }
                            else
                            {
                                if (_sceneModule.m_enemyList[m_playerPos.m_row][_i] != null && _i != targetCol)
                                {
                                    return(_ret);
                                }
                            }
                        }
                        _ret = true;
                        return(_ret);
                    }
                    else if (targetCol < m_playerPos.m_col)
                    {
                        for (int _i = m_playerPos.m_col - 1; _i >= targetCol; _i--)
                        {
                            if (_sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.GAOTAI ||
                                _sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.NONE ||
                                _sceneModule.Data[m_playerPos.m_row][_i] == MapDataType.JUMATUI ||
                                _sceneModule.m_npcList[m_playerPos.m_row][_i] != null)
                            {
                                return(_ret);;
                            }
                            else
                            {
                                if (_sceneModule.m_npcList[m_playerPos.m_row][_i] != null && _i != targetCol)
                                {
                                    return(_ret);
                                }
                            }
                        }
                        _ret = true;
                        return(_ret);
                    }
                }
                else if (targetCol == m_playerPos.m_col)
                {
                    if (_sceneModule.Data[targetRow][targetCol] == MapDataType.NEWMODE)
                    {
                        return(_ret);
                    }
                    if (targetRow > m_playerPos.m_row)
                    {
                        for (int _i = m_playerPos.m_row + 1; _i <= targetRow; _i++)
                        {
                            if (_sceneModule.Data[_i][targetCol] == MapDataType.GAOTAI ||
                                _sceneModule.Data[_i][targetCol] == MapDataType.NONE ||
                                _sceneModule.Data[_i][targetCol] == MapDataType.JUMATUI ||
                                _sceneModule.m_npcList[_i][targetCol] != null)
                            {
                                return(_ret);
                            }
                            else
                            {
                                if (_sceneModule.m_enemyList[_i][targetCol] != null && _i != targetRow)
                                {
                                    return(_ret);
                                }
                            }
                        }
                        _ret = true;
                        return(_ret);
                    }
                    else if (targetRow < m_playerPos.m_row)
                    {
                        for (int _i = m_playerPos.m_row - 1; _i >= targetRow; _i--)
                        {
                            if (_sceneModule.Data[_i][targetCol] == MapDataType.GAOTAI ||
                                _sceneModule.Data[_i][targetCol] == MapDataType.NONE ||
                                _sceneModule.Data[_i][targetCol] == MapDataType.JUMATUI ||
                                _sceneModule.m_npcList[_i][targetCol] != null)
                            {
                                return(_ret);;
                            }
                            else
                            {
                                if (_sceneModule.m_enemyList[_i][targetCol] != null && _i != targetRow)
                                {
                                    return(_ret);
                                }
                            }
                        }
                        _ret = true;
                        return(_ret);
                    }
                }
                break;

            case SkillId.MA:
                if (targetRow == m_playerPos.m_row + 2)
                {
                    if (targetCol == m_playerPos.m_col + 1 || targetCol == m_playerPos.m_col - 1)
                    {
                        if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                            (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                             (_sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col] != MapDataType.GAOTAI &&
                              _sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col] != MapDataType.JUMATUI)))
                        {
                            if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row + 1, m_playerPos.m_col))
                            {
                                _ret = true;
                            }
                        }
                    }
                }
                else if (targetRow == m_playerPos.m_row - 2)
                {
                    if (targetCol == m_playerPos.m_col + 1 || targetCol == m_playerPos.m_col - 1)
                    {
                        if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                            (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                             (_sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col] != MapDataType.GAOTAI &&
                              _sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col] != MapDataType.JUMATUI)))
                        {
                            if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row - 1, m_playerPos.m_col))
                            {
                                _ret = true;
                            }
                        }
                    }
                }

                else if (targetCol == m_playerPos.m_col + 2)
                {
                    if (targetRow == m_playerPos.m_row + 1 || targetRow == m_playerPos.m_row - 1)
                    {
                        if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                            (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                             (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col + 1] != MapDataType.GAOTAI &&
                              _sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col + 1] != MapDataType.JUMATUI)))
                        {
                            if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row, m_playerPos.m_col + 1))
                            {
                                _ret = true;
                            }
                        }
                    }
                }
                else if (targetCol == m_playerPos.m_col - 2)
                {
                    if (targetRow == m_playerPos.m_row + 1 || targetRow == m_playerPos.m_row - 1)
                    {
                        if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                            (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                             (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col - 1] != MapDataType.GAOTAI &&
                              _sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col - 1] != MapDataType.JUMATUI)))
                        {
                            if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row, m_playerPos.m_col - 1))
                            {
                                _ret = true;
                            }
                        }
                    }
                }
                break;

            case SkillId.PAO:
                break;

            case SkillId.XIANG:
                if (targetRow == m_playerPos.m_row + 2 && targetCol == m_playerPos.m_col + 2)
                {
                    if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                        (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                         (_sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col + 1] != MapDataType.GAOTAI &&
                          _sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col + 1] != MapDataType.JUMATUI)))
                    {
                        if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row + 1, m_playerPos.m_col + 1))
                        {
                            _ret = true;
                        }
                    }
                }
                else if (targetRow == m_playerPos.m_row + 2 && targetCol == m_playerPos.m_col - 2)
                {
                    if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                        (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                         (_sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col - 1] != MapDataType.GAOTAI &&
                          _sceneModule.Data[m_playerPos.m_row + 1][m_playerPos.m_col - 1] != MapDataType.JUMATUI)))
                    {
                        if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row + 1, m_playerPos.m_col - 1))
                        {
                            _ret = true;
                        }
                    }
                }
                else if (targetRow == m_playerPos.m_row - 2 && targetCol == m_playerPos.m_col + 2)
                {
                    if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                        (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                         (_sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col + 1] != MapDataType.GAOTAI &&
                          _sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col + 1] != MapDataType.JUMATUI)))
                    {
                        if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row - 1, m_playerPos.m_col + 1))
                        {
                            _ret = true;
                        }
                    }
                }
                else if (targetRow == m_playerPos.m_row - 2 && targetCol == m_playerPos.m_col - 2)
                {
                    if (_sceneModule.Data[targetRow][targetCol] != MapDataType.NEWMODE &&
                        (_sceneModule.Data[m_playerPos.m_row][m_playerPos.m_col] == MapDataType.GAOTAI ||
                         (_sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col - 1] != MapDataType.GAOTAI &&
                          _sceneModule.Data[m_playerPos.m_row - 1][m_playerPos.m_col - 1] != MapDataType.JUMATUI)))
                    {
                        if (_sceneModule.m_npcList[targetRow][targetCol] == null && !PosExitChess(m_playerPos.m_row - 1, m_playerPos.m_col - 1))
                        {
                            _ret = true;
                        }
                    }
                }
                break;

            case SkillId.SHI:
                break;

            case SkillId.BING:
                break;
            }
            return(_ret);
        }