Пример #1
0
 public override void StartTurn()
 {
     _currentAP     = MaxActionPoints;
     _apToAC        = 0;
     _bonusMovement = GetBonusMovement();
     HexHighlighter.TryEnable();
 }
Пример #2
0
 public static void CreateGrid(int gridX, int gridZ, GameObject hexHighlighter, GameObject highlightParent)
 {
     changed         = new List <HexHighlighter>();
     highlighterGrid = new HexHighlighter[gridX, gridZ];
     for (int x = 0; x < gridX; x++)
     {
         for (int z = 0; z < gridZ; z++)
         {
             GameObject newHighlighter;
             newHighlighter = Instantiate(hexHighlighter);
             Vector3 hexPos = TerrainGen.GetHexPosition(x, z);
             hexPos.y += TerrainGen.hexSize / 2;
             newHighlighter.transform.position = hexPos;
             HexHighlighter hexHighlighterScr = newHighlighter.GetComponent <HexHighlighter>();
             if (hexPos.y > 0)
             {
                 hexHighlighterScr.Set(HexHighlight.grid);
             }
             else
             {
                 hexHighlighterScr.Set(HexHighlight.none);
                 newHighlighter.SetActive(false);
             }
             highlighterGrid[x, z]           = hexHighlighterScr;
             newHighlighter.transform.parent = highlightParent.transform;
         }
     }
 }
Пример #3
0
    private void Awake()
    {
        turnController = Manager.instance.TurnController;
        hexHighlighter = Manager.instance.HexHighlighter;

        turnController.SpawningEvent   += StartSpawningEvent;
        turnController.PlayerTurnEvent += HighlightTilesEvent;
    }
Пример #4
0
 void CloseMenu()
 {
     triMenu.DestroyMenu();
     hexHook.GetComponentInChildren <MeshRenderer>(true).gameObject.SetActive(false);
     hexHook.SetActive(false);
     keepDetails = false;
     HexHighlighter.ResetGrid();
 }
Пример #5
0
 public void ShowHexes()
 {
     HexHighlighter.ResetGrid();
     foreach (Vector2Int gridPos in hexesInRange)
     {
         HexHighlighter.Set(gridPos, HexHighlight.positive);
     }
     foreach (Vector2Int gridPos in blockedHexesInRange)
     {
         HexHighlighter.Set(gridPos, HexHighlight.negative);
     }
 }
Пример #6
0
    /// <summary>
    /// Updates the highlight grid to show where a tower could hit taking its name as a string.
    /// </summary>
    /// <param name="tower"></param>
    void PreviewTowerRange(string tower)
    {
        float?towerVal     = Towers.instance.GetTowerValue(tower, "attack_range");
        int   range        = 0;
        float heightOffset = 0.05f;
        bool  arc          = false;

        if (towerVal.HasValue)
        {
            range = (int)towerVal.Value;
        }
        towerVal = Towers.instance.GetTowerValue(tower, "projectile_arc");
        if (towerVal.HasValue)
        {
            arc = true;
        }
        towerVal = Towers.instance.GetTowerValue(tower, "projectile_yoff");
        if (towerVal.HasValue)
        {
            heightOffset = towerVal.Value;
        }
        HexHighlighter.ResetGrid();
        Dictionary <string, List <Vector2Int> > hexes = TowerBase.GetHexesInRange(hexHook.transform.position, range, arc, heightOffset);

        if (hexes.ContainsKey("good") && hexes["good"] != null)
        {
            foreach (Vector2Int newPos in hexes["good"])
            {
                if (!MyMath.IsWithin(newPos.x, -1, TerrainGen.gridX) || !MyMath.IsWithin(newPos.y, -1, TerrainGen.gridZ))
                {
                    continue;
                }
                if (newPos != TerrainGen.GetGridPosition2D(hexHook.transform.position))
                {
                    HexHighlighter.Set(newPos, HexHighlight.positive);
                }
            }
        }
        if (hexes.ContainsKey("bad") && hexes["bad"] != null)
        {
            foreach (Vector2Int newPos in hexes["bad"])
            {
                if (!MyMath.IsWithin(newPos.x, -1, TerrainGen.gridX) || !MyMath.IsWithin(newPos.y, -1, TerrainGen.gridZ))
                {
                    continue;
                }
                HexHighlighter.Set(newPos, HexHighlight.negative);
            }
        }
    }
Пример #7
0
 public static void ShowEdgeHexes()
 {
     foreach (Vector2Int hex in edgeHexes)
     {
         if (GetHex(hex.x, hex.y).edge == EdgeType.outter)
         {
             HexHighlighter.Set(hex, HexHighlight.height_0);
         }
         else
         {
             HexHighlighter.Set(hex, HexHighlight.height_6);
         }
     }
 }
Пример #8
0
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;

            sfxManager        = GetComponent <SFXManager>();
            stateManager      = GetComponent <StateManager>();
            transitionManager = GetComponent <TransitionManager>();
            uiManager         = GetComponent <UIManager>();
            turnManager       = GetComponent <TurnManager>();
            checkPointManager = GetComponent <CheckPointManager>();
            hexHighlighter    = GetComponent <HexHighlighter>();
            dialogueManager   = GetComponent <Dialogue>();

            grid             = GameObject.FindGameObjectWithTag("Grid").GetComponent <GridManager>();
            playerController = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>();

            StartCoroutine(InitManagers());

            if (cursorTextureHover)
            {
                Cursor.SetCursor(cursorTextureHover, hotSpot, cursorMode);
            }
        }
        else
        {
            //stop the game from having more than one GameStateManager
            Debug.LogError("Multiple Managers exist, deleting duplicates.");
            Destroy(gameObject);
            return;
        }

        //Don't destroy the GameStateManager in scene
        DontDestroyOnLoad(gameObject);
    }
Пример #9
0
    public static void ShowOnGrid(PathType type)
    {
        if (!generated)
        {
            return;
        }
        PathNode node;
        Vector3  facingDir;

        for (int x = 0; x < TerrainGen.gridX; x++)
        {
            for (int z = 0; z < TerrainGen.gridZ; z++)
            {
                node = pathGrids[type][x, z];
                if (node != null && node.target != null)
                {
                    Vector3 nodePos   = TerrainGen.GetHexPosition(node.positionVec);
                    Vector3 targetPos = TerrainGen.GetHexPosition(node.targetVec);
                    nodePos.y   = 0;
                    targetPos.y = 0;
                    facingDir   = targetPos - nodePos;
                    if (facingDir.z > 0)
                    {
                        if (facingDir.x > 0)
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_1);
                        }
                        else
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_2);
                        }
                    }
                    else if (facingDir.z < 0)
                    {
                        if (facingDir.x > 0)
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_5);
                        }
                        else
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_4);
                        }
                    }
                    else if (facingDir.x > 0)
                    {
                        if (facingDir.z == 0)
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_0);
                        }
                    }
                    else if (facingDir.x < 0)
                    {
                        if (facingDir.z == 0)
                        {
                            HexHighlighter.Set(new Vector2Int(x, z), HexHighlight.arrow_3);
                        }
                    }
                }
            }
        }


        //
        HexHighlighter.showingType = GridType.path;
    }
Пример #10
0
    // Update is called once per frame
    void FixedUpdate()
    {
        overButton         = false;
        mousePos           = GetMousePosition();
        mousePos.z         = -2;
        snapPos            = mousePos;
        snapPos.z          = 0;
        snapPos            = MyMath.SnapToSub(subSnaps, snapPos);
        transform.position = mousePos;


        if (UIHits.Count > 0)
        {
            TriButton   hitButton;
            ButtonClick clickButton;
            foreach (RaycastResult hit in UIHits)
            {
                if (hit.gameObject != null)
                {
                    hitButton   = hit.gameObject.GetComponent <TriButton>();
                    clickButton = hit.gameObject.GetComponent <ButtonClick>();
                    triMenu.ResetButtons();
                    if (hitButton != null)
                    {
                        overButton = true;
                        hitButton.SetState(1);
                    }
                    if (clickButton != null)
                    {
                        overButton = true;
                    }
                }
            }
        }


        UIHits           = new List <RaycastResult>();
        UIEvent          = new PointerEventData(UIEventSystem);
        UIEvent.position = Input.mousePosition;
        UICaster.Raycast(UIEvent, UIHits);


        if (selectedBuilding == null && selectedSpawner == null && !keepDetails)
        {
            triMenu.DestroyDetails();
        }

        if (UIHits.Count > 0)
        {
            //Debug.Log("UI hit");
            TriButton  hitButton;
            LinkToggle linkButton;

            foreach (RaycastResult hit in UIHits)
            {
                //Check For TriMenu
                hitButton = hit.gameObject.GetComponent <TriButton>();
                if (hitButton != null)
                {
                    // Load details for whichever button hit.

                    Vector2 detailPos = GetScreenPosition(hexHook.transform.position);
                    detailPos.x -= 120;
                    string buttonVal = hitButton.getValue().ToLower();
                    switch (buttonVal)
                    {
                    case "build_speed_augment_button":
                    case "build_range_augment_button":
                    case "build_damage_augment_button":
                    case "build_chain_augment_button":
                    case "build_fork_augment_button":
                    case "build_multi_augment_button":
                    case "build_ethereal_augment_button":
                        triMenu.DestroyDetails();
                        triMenu.CreateDetails(detailPos);
                        triMenu.AddDetail(hitButton.getValue(), -1);
                        triMenu.LoadDetails(Towers.instance.GetAugment(buttonVal.Replace("build_", "").Replace("_button", "").Replace("_augment", "")));
                        triMenu.RefreshDetails();
                        keepDetails = true;
                        break;

                    case "build_fire_tower_button":
                    case "build_water_tower_button":
                    case "build_earth_tower_button":
                    case "build_air_tower_button":
                    case "build_basic_tower_button":
                        triMenu.DestroyDetails();
                        triMenu.CreateDetails(detailPos);
                        triMenu.AddDetail(Translator.Get(buttonVal), -1);
                        string tower = buttonVal.Replace("build_", "").Replace("_button", "").Replace("_tower", "");
                        triMenu.LoadDetails(Towers.instance.GetTower(tower));
                        triMenu.RefreshDetails();
                        keepDetails = true;
                        break;

                    default: break;
                    }
                    if (lastButtonHover != buttonVal && triMenu.CurrentMenu() == "towers_build")
                    {
                        PreviewTowerRange(buttonVal.Replace("build_", "").Replace("_button", "").Replace("_tower", ""));
                    }
                    lastButtonHover = buttonVal;
                }

                //Check For Link Toggle

                linkButton = hit.gameObject.GetComponent <LinkToggle>();
                if (linkButton != null)
                {
                    Vector2 detailPos = GetScreenPosition(hexHook.transform.position);
                    detailPos.x -= 96;
                }
            }
        }

        if (Input.GetAxis("Jump") == 1)
        {
            if (currentCamera == CurrentCamera.main)
            {
                ChangeCamera(CurrentCamera.overhead);
            }
        }
        else
        {
            ChangeCamera(CurrentCamera.main);
        }

        if (mouseCheck[0] == 1)
        {
            if (UIHits.Count > 0)
            {
                MenuPositioner dragHandle;
                foreach (RaycastResult UIhit in UIHits)
                {
                    dragHandle = UIhit.gameObject.GetComponent <MenuPositioner>();
                    if (dragHandle != null)
                    {
                        dragHandle.StartDrag();
                        dragging = true;
                    }
                }
            }
        }
        //Check left mouse button up;
        if (mouseCheck[0] == -1)
        {
            dragging = false;
            Ray ray;
            if (currentCamera == CurrentCamera.main)
            {
                ray = gameCam.ScreenPointToRay(Input.mousePosition);
            }
            else
            {
                ray = overHeadCam.ScreenPointToRay(Input.mousePosition);
            }
            RaycastHit hit;
            if (UIHits.Count > 0)
            {
                TriButton   hitButton;
                ButtonClick clickButton;
                foreach (RaycastResult UIhit in UIHits)
                {
                    hitButton   = UIhit.gameObject.GetComponent <TriButton>();
                    clickButton = UIhit.gameObject.GetComponent <ButtonClick>();
                    if (hitButton != null)
                    {
                        string buttonValue = hitButton.getValue().ToLower();

                        TowerTypes   towerType    = TowerTypes.none;
                        AugmentTypes augmentType  = AugmentTypes.none;
                        BuildingType buildingType = BuildingType.none;

                        buttonValue = buttonValue.Replace("_button", "");
                        if (buttonValue.Contains("build_"))
                        {
                            buttonValue = buttonValue.Replace("build_", "");
                            if (buttonValue.Contains("_tower"))
                            {
                                buttonValue = buttonValue.Replace("_tower", "");
                                towerType   = TowerBase.GetTowerType(buttonValue);
                            }
                            else if (buttonValue.Contains("_augment"))
                            {
                                buttonValue = buttonValue.Replace("_augment", "");
                                augmentType = Towers.GetAugmentType(buttonValue);
                            }
                        }

                        MobSpawner spawner;

                        switch (buttonValue)
                        {
                        case "path":
                            PathKeeper.indexes[PathType.normal]++;
                            PathKeeper.pathKeeper.FindGoal(PathType.normal, TerrainGen.GetGridPosition2D(PathKeeper.goal), TerrainGen.GetGridPosition2D(hexHook.transform.position)); break;

                        case "select":
                            TerrainGen.mapGenState = MapGen.pathing;
                            buildingType           = BuildingType.Base;
                            break;

                        case "regen":
                            TerrainGen.instance.KillTerrain();
                            TerrainGen.mapGenState = MapGen.terrain;
                            break;

                        case "towers":
                            triMenu.DestroyMenu();
                            triMenu.CreateMenu("towers_build");
                            break;

                        case "augments":
                            triMenu.DestroyMenu();
                            triMenu.CreateMenu("augments");
                            break;

                        case "buildings":
                            triMenu.DestroyMenu();
                            triMenu.CreateMenu("buildings");
                            break;

                        case "sell":
                            if (selectedBuilding != null)
                            {
                                float value = selectedBuilding.Sell();
                                value *= 0.8f;

                                player.GiveGold((int)value);
                                TowerBase.UpdateTowerHexes();
                                triMenu.DestroyMenu();
                                hexHook.SetActive(false);
                                HexHighlighter.ResetGrid();
                            }
                            break;

                        case "upgrade":
                            if (selectedBuilding != null)
                            {
                                if (player.hasGold(100))
                                {
                                    player.TakeGold(100);
                                    selectedBuilding.AddValue(100);
                                    selectedBuilding.GetComponent <TowerBase>().LevelUp();
                                    triMenu.CreateDetails();
                                    triMenu.LoadDetails(selectedBuilding.GetComponent <TowerBase>().GetDetails());
                                    triMenu.RefreshDetails();
                                }
                            }
                            break;

                        case "points":
                            spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                            if (spawner != null)
                            {
                                spawner.wavePoints *= 1.1f;
                                CloseMenu();
                                triMenu.gameObject.SetActive(true);
                                selectedSpawner = spawner;
                                triMenu.CreateMenu("spawner");
                                triMenu.CreateDetails();
                                triMenu.LoadDetails(spawner.GetDetails());
                                triMenu.RefreshDetails();
                            }
                            break;

                        case "more":
                            spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                            if (spawner != null)
                            {
                                spawner.spawnNumber += 1;
                                CloseMenu();
                                triMenu.gameObject.SetActive(true);
                                selectedSpawner = spawner;
                                triMenu.CreateMenu("spawner");
                                triMenu.CreateDetails();
                                triMenu.LoadDetails(spawner.GetDetails());
                                triMenu.RefreshDetails();
                            }
                            break;

                        case "less":
                            spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                            if (spawner != null)
                            {
                                spawner.spawnNumber -= 1;
                                if (spawner.spawnNumber < 0)
                                {
                                    spawner.spawnNumber = 0;
                                }
                                CloseMenu();
                                triMenu.gameObject.SetActive(true);
                                selectedSpawner = spawner;
                                triMenu.CreateMenu("spawner");
                                triMenu.CreateDetails();
                                triMenu.LoadDetails(spawner.GetDetails());
                                triMenu.RefreshDetails();
                            }
                            break;

                        case "faster":
                            spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                            if (spawner != null)
                            {
                                spawner.coolDownTime -= 1;
                                if (spawner.coolDownTime < 1)
                                {
                                    spawner.coolDownTime = 1;
                                }
                                CloseMenu();
                                triMenu.gameObject.SetActive(true);
                                selectedSpawner = spawner;
                                triMenu.CreateMenu("spawner");
                                triMenu.CreateDetails();
                                triMenu.LoadDetails(spawner.GetDetails());
                                triMenu.RefreshDetails();
                            }
                            break;

                        case "slower":
                            spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                            if (spawner != null)
                            {
                                spawner.coolDownTime += 1;
                                CloseMenu();
                                triMenu.gameObject.SetActive(true);
                                selectedSpawner = spawner;
                                triMenu.CreateMenu("spawner");
                                triMenu.CreateDetails();
                                triMenu.LoadDetails(spawner.GetDetails());
                                triMenu.RefreshDetails();
                            }
                            break;

                        case "wall":
                            buildingType = BuildingType.Wall; break;



                        default: break;
                        }
                        int cost = Towers.instance.GetCost(buttonValue.Replace("build_", "").Replace("_button", ""));
                        if (towerType != TowerTypes.none)
                        {
                            if (player.hasGold(cost))
                            {
                                TowerBase towerBase = Instantiate(towerFabBasic, hexHook.transform.position, new Quaternion(), towerParent.transform)
                                                      .GetComponent <TowerBase>();
                                player.TakeGold(cost);
                                towerBase.SetProjectileParent(projectileParent);
                                string tower = buttonValue.Replace("build_", "").Replace("_button", "");
                                towerBase.SetTower(TowerBase.GetTowerType(tower));
                                towerBase.UpdateLinks();
                                UpdateGrid();
                                CloseMenu();
                                //
                                //
                                //
                            }
                        }
                        if (augmentType != AugmentTypes.none)
                        {
                            if (player.hasGold(cost))
                            {
                                AugmentBase augmentBase = Instantiate(augmentFabBasic, hexHook.transform.position, new Quaternion(), towerParent.transform)
                                                          .GetComponent <AugmentBase>();
                                player.TakeGold(cost);
                                augmentBase.SetAugmentType(buttonValue);
                                augmentBase.AddValue(cost);
                                UpdateGrid();
                                CloseMenu();
                            }
                        }
                        if (buildingType != BuildingType.none)
                        {
                            if (player.hasGold(cost))
                            {
                                if (buttonValue == "select")
                                {
                                    buttonValue = "base";
                                }
                                BuildingBase buildingBase = Instantiate(buildingFabBasic, hexHook.transform.position, new Quaternion(), towerParent.transform)
                                                            .GetComponent <BuildingBase>();
                                buildingBase.SetBuilding(buttonValue);
                                player.TakeGold(cost);
                                UpdateGrid(hexHook.transform.position);
                                CloseMenu();
                            }
                        }
                    }
                    if (clickButton != null)
                    {
                        switch (clickButton.buttonClick)
                        {
                        case "pathing":
                            if (HexHighlighter.showingType != GridType.path)
                            {
                                PathKeeper.ShowOnGrid(PathType.normal);
                                HexHighlighter.showingType = GridType.path;
                            }
                            else
                            {
                                HexHighlighter.ResetGrid();
                                HexHighlighter.showingType = GridType.grid;
                            }
                            break;

                        case "height":
                            if (HexHighlighter.showingType != GridType.height)
                            {
                                HexHighlighter.ShowHeightMap();
                                HexHighlighter.showingType = GridType.height;
                            }
                            else
                            {
                                HexHighlighter.ResetGrid();
                                HexHighlighter.showingType = GridType.grid;
                            }
                            break;

                        case "towerrange":
                            if (HexHighlighter.showingType != GridType.range)
                            {
                                HexHighlighter.ResetGrid();
                                HexHighlighter.ShowTowersRange(true);
                                HexHighlighter.showingType = GridType.range;
                            }
                            else
                            {
                                HexHighlighter.ResetGrid();
                                HexHighlighter.showingType = GridType.grid;
                            }
                            break;

                        case "undock_details":
                            triMenu.DockDetails();
                            break;
                        }
                    }
                }
            }
            else if (Physics.Raycast(ray, out hit, 10, UIMask))
            {
                Debug.Log("Other Ui hits>");
                LinkToggle hitToggle;
                hitToggle = hit.transform.parent.GetComponent <LinkToggle>();
                if (hitToggle != null)
                {
                    hitToggle.Toggle();
                    UpdateLinks();
                    showingRange = true;
                }
            }
            else
            {
                triMenu.DestroyMenu();
                //Ray ray = gameCam.ScreenPointToRay(Input.mousePosition);
                Debug.DrawRay(ray.origin, ray.direction, Color.blue, 1);
                if (Physics.Raycast(ray, out hit))
                {
                    hexHook.SetActive(true);
                    if (hit.transform.position != Vector3.zero)
                    {
                        PlaceHexHook(hit.transform.position);
                    }
                    else
                    {
                        PlaceHexHook(hit.point);
                    }
                }

                BuildingBase buildingBase = null;
                if (hit.collider != null)
                {
                    buildingBase = hit.transform.parent.GetComponent <BuildingBase>();

                    if (buildingBase != null)
                    {
                        triMenu.DestroyMenu();
                        Vector2 detailPos = GetScreenPosition(hexHook.transform.position);
                        detailPos.x -= 120;
                        triMenu.CreateMenu("towerselect");
                        triMenu.CreateDetails(detailPos);
                        triMenu.LoadDetails(buildingBase.GetDetails());
                        triMenu.AddDetail("Upgrade Cost:", 100);
                        triMenu.RefreshDetails();
                        selectedBuilding = buildingBase;

                        selectedBuilding.UpdateLinks();

                        UpdateLinks();
                        //triMenu.DestroyButtons();

                        if (!showingRange && buildingBase is TowerBase towerBase)
                        {
                            towerBase.ShowHexes();
                        }
                    }
                }

                Vector2 menuPos = GetScreenPosition(hexHook.transform.position);
                menuPos.x += 60;
                triMenu.transform.position = menuPos;
                //
                if (buildingBase == null)
                {
                    selectedBuilding = null;
                    HexHighlighter.ResetGrid();
                    hexHook.GetComponentInChildren <MeshRenderer>(true).gameObject.SetActive(false);
                    MobSpawner spawner = MobSpawner.GetSpawner(TerrainGen.GetGridPosition2D(hexHook.transform.position));
                    if (TerrainGen.mapGenState == MapGen.terrainCon)
                    {
                        triMenu.CreateMenu("startmenu");
                    }
                    else if (spawner == null)
                    {
                        triMenu.CreateMenu("base");
                    }
                    else
                    {
                        CloseMenu();
                        triMenu.gameObject.SetActive(true);
                        selectedSpawner = spawner;
                        triMenu.CreateMenu("spawner");
                        triMenu.CreateDetails();
                        triMenu.LoadDetails(spawner.GetDetails());
                        triMenu.RefreshDetails();
                    }
                }
                else
                {
                    hexHook.GetComponentInChildren <MeshRenderer>(true).gameObject.SetActive(true);
                }
            }
            mouseCheck[0] = 0;
        }

        if (mouseCheck[1] == -1)
        {
            if (!overButton)
            {
                if (rightClickTime <= 0.33f)
                {
                    triMenu.DestroyMenu();
                    selectedBuilding = null;
                    selectedSpawner  = null;
                    hexHook.SetActive(false);
                    mouseCheck[1]   = 0;
                    lastButtonHover = null;
                    HexHighlighter.ResetGrid();
                    showingRange = false;
                }
            }
            else if (overButton && !didBack)
            {
                if (triMenu.CurrentMenu() != "startmenu")
                {
                    didBack = true;
                    triMenu.DestroyMenu();
                    triMenu.CreateMenu("base");
                }
            }
        }
        bool inX    = !dragging && !overButton && Input.mousePosition.x > 0 - overBorder && Input.mousePosition.x < Screen.width + overBorder;
        bool inside = inX && Input.mousePosition.y > 0 - overBorder && Input.mousePosition.y < Screen.height + overBorder;

        if (inside)
        {
            MoveCamera();
        }
        if (mouseCheck[1] == 1)
        {
            RotateCamera();
        }
        if (triMenu.HaveLinks())
        {
            triMenu.ReDrawLinks();
        }
    }
Пример #11
0
    // Update is called once per frame
    void Update()
    {
        if (mapGenState == MapGen.terrain)
        {
            Texture2D featureMap;
            foreach (NoiseMap noiseMap in noiseMaps)
            {
                noiseMap.offSet = new Vector2Int(Random.Range(0, 1000), Random.Range(0, 1000));
                CalcNoise(noiseMap);
            }
            featureMap = shapeGenerator.GenerateClipMap();
            shapeGenerator.GenerateLake(featureMap, 3);
            shapeGenerator.GenerateForests(featureMap, 7);
            noiseTex = new Texture2D(gridX, gridZ);
            CombineTextures(noiseTex, noiseMaps);
            ClipTexture(noiseTex, featureMap, Color.white);
            GenHexGrid(gridX, gridY, gridZ);
            CombineMeshes(20, 20);
            navMesh.BuildNavMesh();
            FillDoodads(featureMap);
            CalcEdgeHexes(25);
            SpreadOutterEdges(5);
            Vector3 camPos = GetHexPosition((int)(gridX / 2), (int)(gridZ / 2));
            camPos.y = 5f;
            camHandle.transform.position = camPos;
            mapGenState = MapGen.terrainCon;
            HexHighlighter.CreateGrid(gridX, gridZ, highlightFab, highlighters);
            ShowEdgeHexes();
            if (debug)
            {
                Vector3 goalPos = Vector3.zero;
                while (goalPos == Vector3.zero)
                {
                    Vector2Int gridPos = Vector2Int.zero;
                    gridPos.x = Random.Range(0, gridX - 1);
                    gridPos.y = Random.Range(0, gridZ - 1);
                    if (GetHex(gridPos.x, gridPos.y) != null)
                    {
                        goalPos = GetHexPosition(gridPos);
                    }
                }
                GameObject debugGoal = new GameObject();
                debugGoal.transform.position = goalPos;
                MobLister.MakeModGrid(gridX, gridZ);
                pathKeeper.GeneratePath(PathType.normal, TerrainGen.GetGridPosition(debugGoal.transform.position));
                PathKeeper.goal  = debugGoal.transform.position;
                mapGenState      = MapGen.done;
                terrainGenerated = true;
                MobSpawner.GetSpawners()[0].MakeReady(debugGoal);
            }

            //
            //
        }
        else if (mapGenState == MapGen.pathing)
        {
            MobLister.MakeModGrid(gridX, gridZ);
            pathKeeper.GeneratePath(PathType.normal, TerrainGen.GetGridPosition(goal.transform.position));
            mapGenState      = MapGen.done;
            terrainGenerated = true;
            MobSpawner.GetSpawners()[0].MakeReady(goal);
        }
    }
Пример #12
0
 public override void EndTurn()
 {
     HexHighlighter.Disable();
     base.EndTurn();
 }