Ejemplo n.º 1
0
    private void Awake()
    {
        _instance = this;


        var      renderer    = GetComponent <Renderer>();
        Material fogOfWarMat = null;

        if (renderer != null)
        {
            fogOfWarMat = renderer.material;
        }

        if (fogOfWarMat == null)
        {
            Debug.LogError("Material for Fog Of War not found!");
            return;
        }

        _texture          = new Texture2D(_textureSize, _textureSize, TextureFormat.RGBA32, false);
        _texture.wrapMode = TextureWrapMode.Clamp;

        _pixels = _texture.GetPixels();
        ClearPixels();

        fogOfWarMat.mainTexture = _texture;

        _revealers = new List <Revealer>();

        _pixelsPerUnit = Mathf.RoundToInt(_textureSize / transform.lossyScale.x);

        _centerPixel = new Vector2(_textureSize * 0.5f, _textureSize * 0.5f);
    }
Ejemplo n.º 2
0
    IEnumerator AIAction_Crazy(int _player)
    {
        while (GameManager.gaming)
        {
            yield return(new WaitForSeconds(1));

            for (int i = 0; i < 2; i++)
            {
                //获取视野内随机节点
                int        index = Random.Range(0, FogOfWarManager.Instance().playerVisionNodes[_player].Count - 1);
                GameObject node  = FogOfWarManager.Instance().playerVisionNodes[_player][index];
                //在它周围可用点建造
                foreach (GameObject item in MapManager.Instance().GetNearbyNodesWithinRange(node, 2))
                {
                    if (item.GetComponent <NodeItem>().tower == null)
                    {
                        BuildManager.Instance().Build(item, _player);

                        break;
                    }
                }
            }

            yield return(new WaitForSeconds(3));
        }
    }
Ejemplo n.º 3
0
    // Use this for initialization
    void Start()
    {
        beforeNextShot = rateOfFire;
        fowManager     = FogOfWarManager.Instance;

        rotationSpeedRad = Mathf.Deg2Rad * rotationSpeed;
    }
Ejemplo n.º 4
0
    // Use this for initialization
    void Awake()
    {
        Debug.Log("Foo");
        _instance = this;

        _revealers      = new List <Revealer>();
        _radarRevealers = new List <RadarRevealer>();
    }
Ejemplo n.º 5
0
    void Start()
    {
        BuildManager.Instance().Init();
        ScoreManager.Instance().Init();
        SeamlessMap.Instance().Init();
        FogOfWarManager.Instance().Init();

        GameStart();
    }
Ejemplo n.º 6
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
Ejemplo n.º 7
0
    private void OnMouseUp()
    {
        //点击在按UI钮上
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return;
        }

        //非拖动的快速点击
        if (Time.time - mouseDownTime < clickConfirmDelay)
        {
            //节点可见
            if (FogOfWarManager.Instance().NodeVisible(gameObject, GameManager.Instance().player))
            {
                if (tower == null)
                {
                    //未有塔,建造
                    BuildManager.Instance().ClickNode(gameObject, GameManager.Instance().player);

                    if (BuildManager.Instance().desiredUpgradeTarget != null)
                    {
                        BuildManager.Instance().desiredUpgradeTarget.GetComponent <NodeItem>().towerUpgrade_Range.SetActive(false);
                        BuildManager.Instance().desiredUpgradeTarget.GetComponent <NodeItem>().towerUpgrade_Vision.SetActive(false);
                    }
                }
                else
                {
                    if (tower.GetComponent <Tower>().building)
                    {
                        return;
                    }

                    if (BuildManager.Instance().desiredUpgradeTarget != null)
                    {
                        BuildManager.Instance().desiredUpgradeTarget.GetComponent <NodeItem>().towerUpgrade_Range.SetActive(false);
                        BuildManager.Instance().desiredUpgradeTarget.GetComponent <NodeItem>().towerUpgrade_Vision.SetActive(false);
                    }
                    BuildManager.Instance().desiredUpgradeTarget = gameObject;
                    //已有塔,升级
                    if (!tower.GetComponent <Tower>().upgraded[0])
                    {
                        towerUpgrade_Range.SetActive(true);
                    }
                    if (!tower.GetComponent <Tower>().upgraded[1])
                    {
                        towerUpgrade_Vision.SetActive(true);
                    }
                }
            }
        }
    }
Ejemplo n.º 8
0
 private void Start()
 {
     WarFogManager = this.GetComponent <FogOfWarManager>();
     if (PhotonNetwork.player.IsLocal)
     {
         if (PhotonNetwork.player.GetTeam().ToString().Contains("red"))
         {
             WarFogManager.ShowFaction(FogOfWar.Players.Player00);
         }
         else
         {
             WarFogManager.ShowFaction(FogOfWar.Players.Player01);
         }
     }
 }
Ejemplo n.º 9
0
    //开始建造
    IEnumerator IEBuild(GameObject _tower, int _player, GameObject _node)
    {
        AudioSource source = null;

        if (_player == GameManager.Instance().player)
        {
            SoundManager.Instance().Play("Construct_Start");
            source = SoundManager.Instance().Play("Construct_Loop");
        }

        ScoreManager.Instance().ModifyWorker(_player, 5);

        _tower.GetComponent <Tower>().Building();

        float buildingProgress = 0;

        while (_tower != null && buildingProgress < buildingTime)
        {
            buildingProgress += buildingSpeed[0] * Time.deltaTime;

            yield return(null);
        }
        //建造完成,还没被打爆
        if (_tower != null)
        {
            if (_player == GameManager.Instance().player)
            {
                SoundManager.Instance().Play("JobDone");
            }

            _tower.GetComponent <Tower>().BuildingFinish();

            _node.GetComponent <NodeItem>().BuildSetting(_player);
            //开视野
            FogOfWarManager.Instance().AddNodesWithinRangeToPlayerVision(_player, _node, 2);
        }

        if (source != null)
        {
            source.Stop();
            Destroy(source);
        }

        ScoreManager.Instance().ModifyWorker(_player, -5);
    }
Ejemplo n.º 10
0
    public GameObject BuildInstantly(GameObject _node, int _player)
    {
        GameObject go = Instantiate(prefab_tower, _node.transform.position, Quaternion.identity, _node.GetComponent <NodeItem>().invisibleThingsParent);

        _node.GetComponent <NodeItem>().tower = go;
        _node.GetComponent <NodeItem>().BuildSetting(_player);
        go.GetComponent <Tower>().node   = _node;
        go.GetComponent <Tower>().player = _player;
        int order = _node.GetComponent <NodeItem>().gfx.GetComponentInChildren <SpriteRenderer>().sortingOrder;

        go.GetComponent <Tower>().SetOrderInLayer(order);
        go.GetComponent <Tower>().Init();

        towers.Add(go);

        //开视野
        FogOfWarManager.Instance().AddNodesWithinRangeToPlayerVision(_player, _node, 2);

        return(go);
    }
Ejemplo n.º 11
0
    //塔被打掉
    public void TowerDestoryed(int _player)
    {
        foreach (var item in MapManager.Instance().GetNodesWithinRange(gameObject, 1))
        {
            item.GetComponent <NodeItem>().GetComponent <NodeItem>().playerForce[_player]--;
        }
        //更新边界和战力数字
        foreach (var item in MapManager.Instance().GetNodesWithinRange(gameObject, 2))
        {
            item.GetComponent <NodeItem>().UpdateBorders();
            item.GetComponent <NodeItem>().UpdateForceText(_player);
        }

        FogOfWarManager.Instance().RemoveNodesWithinRangeToPlayerVision(_player, gameObject, 2);

        //可占领物体
        if (occupiableNodeParent != null)
        {
            occupiableNodeParent.GetComponent <OccupiableBuilding>().Liberate(_player);
        }
    }
Ejemplo n.º 12
0
    // Use this for initialization
    void Start()
    {
        fowManager = FogOfWarManager.Instance;
        if (mainVisName != null)
        {
            curRenderer = transform.Find(mainVisName).GetComponent <Renderer>();
        }
        else
        {
            curRenderer = GetComponent <Renderer>();
        }


        foreach (Transform child in transform)
        {
            if (child.CompareTag("RadarMark"))
            {
                radarMark = child.gameObject;
            }
        }
    }
Ejemplo n.º 13
0
    private void SaveAndCreateTerrain()
    {
        int width  = int.Parse(MapSizeX.ToString().Remove(0, 1));
        int height = int.Parse(MapSizeZ.ToString().Remove(0, 1));

        Texture2D ResistanceMap = new Texture2D(width, height);

        Color[] c = new Color[width * height];

        for (int i = 0; i < c.Length; i++)
        {
            c[i] = new Color(0f, 0f, 0f, 1f);
        }

        if (BorderResistanceMap)
        {
            for (int x = 0; x < width; x++)
            {
                for (int z = 0; z < height; z++)
                {
                    int coord = z * width + x;

                    if (x == 0 || x == width - 1 || z == 0 || z == height - 1)
                    {
                        c[coord].r = 1f;
                    }
                }
            }
        }

        ResistanceMap.SetPixels(c);
        byte[] pngData = ResistanceMap.EncodeToPNG();

        if (pngData != null)
        {
            File.WriteAllBytes(FileLocation, pngData);
        }

        AssetDatabase.Refresh();

        GameObject      g       = new GameObject("Fog of War Manager");
        FogOfWarManager manager = g.AddComponent <FogOfWarManager>();

        if (CreateTerrain)
        {
            GameObject  t           = new GameObject("Terrain");
            Terrain     terrain     = t.AddComponent <Terrain>();
            TerrainData terrainData = new TerrainData();

            Material TerrainMaterial = new Material(Shader.Find("UFoW/Terrain/Diffuse"));
            TerrainMaterial.name = "TerrainMaterial";

            string PathOnly = FileLocation;

            for (int i = PathOnly.Length - 1; i > 0; i--)
            {
                if (PathOnly[i] == '/')
                {
                    PathOnly = PathOnly.Remove(i + 1, PathOnly.Length - i - 1);
                    break;
                }
            }

            string matString = PathOnly + TerrainMaterial.name + ".mat";
            AssetDatabase.CreateAsset(TerrainMaterial, matString);
            AssetDatabase.SaveAssets();

            switch (TerrainMat)
            {
            case FogOfWar.TerrainMaterial.Legacy_Specular:
                TerrainMaterial = new Material(Shader.Find("UFoW/Terrain/Specular"));
                break;

            case FogOfWar.TerrainMaterial.Legacy_Diffuse:
                TerrainMaterial = new Material(Shader.Find("UFoW/Terrain/Standard"));
                break;
            }

            terrain.materialType = Terrain.MaterialType.Custom;

            terrainData.heightmapResolution = height + 1;
            terrainData.size = new Vector3(width + (Overshoot * 2), MinMaxHeight.y, height + (Overshoot * 2));
            terrainData.SetDetailResolution(height, 8);

            terrain.terrainData      = terrainData;
            terrain.materialTemplate = TerrainMaterial;
            TerrainCollider terrainCollider = t.AddComponent <TerrainCollider>();
            terrainCollider.terrainData = terrainData;

            if (SaveTerrainData)
            {
                string tDString = PathOnly + "TerrainData" + ".asset";
                AssetDatabase.CreateAsset(terrainData, tDString);
                AssetDatabase.SaveAssets();
            }

            t.transform.position   -= new Vector3(Overshoot, 0f, Overshoot);
            manager.FogOfWarTerrain = terrain;
        }

        manager.fogAlignment     = FogOfWar.FogAlignment.Horizontal;
        manager.LevelH           = MapSizeX;
        manager.LevelW           = MapSizeZ;
        manager.LevelWidth       = width;
        manager.LevelHeight      = height;
        manager.ResitenceMapPath = FileLocation;
        manager.SetResistanceMap(FileLocation);
        manager.RevealOpacities      = new Color(RevealOpacity, CoveredOpacity, UndiscoveredOpacity, 1f);
        manager.StartEndHeight       = MinMaxHeight;
        manager.FogTextureFilterMode = FogFilterMode;
        manager.ManualMode           = false;

        if (BlurQuality != FogOfWar.FogQuality.Off)
        {
            FogOfWarBlur blur = manager.gameObject.AddComponent <FogOfWarBlur>();
            manager.fogOfWarBlur = blur;
            manager.BlurFog      = BlurQuality;
        }

        manager.InitializeMaps();
    }
Ejemplo n.º 14
0
    private void SaveAndCreateCanvas()
    {
        int width  = int.Parse(MapSizeX.ToString().Remove(0, 1));
        int height = int.Parse(MapSizeZ.ToString().Remove(0, 1));

        Texture2D ResistanceMap = new Texture2D(width, height);

        Color[] c = new Color[width * height];

        for (int i = 0; i < c.Length; i++)
        {
            c[i] = new Color(0f, 0f, 0f, 1f);
        }

        if (BorderResistanceMap)
        {
            for (int x = 0; x < width; x++)
            {
                for (int z = 0; z < height; z++)
                {
                    int coord = z * width + x;

                    if (x == 0 || x == width - 1 || z == 0 || z == height - 1)
                    {
                        c[coord].r = 1f;
                    }
                }
            }
        }

        ResistanceMap.SetPixels(c);
        byte[] pngData = ResistanceMap.EncodeToPNG();

        if (pngData != null)
        {
            File.WriteAllBytes(FileLocation, pngData);
        }

        AssetDatabase.Refresh();

        GameObject      g       = new GameObject("Fog of War Manager");
        FogOfWarManager manager = g.AddComponent <FogOfWarManager>();

        string PathOnly = FileLocation;

        for (int i = PathOnly.Length - 1; i > 0; i--)
        {
            if (PathOnly[i] == '/')
            {
                PathOnly = PathOnly.Remove(i + 1, PathOnly.Length - i - 1);
                break;
            }
        }

        manager.fogAlignment = FogOfWar.FogAlignment.Vertical;

        GameObject FogCanvas = new GameObject("Canvas");

        FogCanvas.AddComponent <Canvas>();
        RectTransform rectT = FogCanvas.GetComponent <RectTransform>();

        Canvas fogCanvas = FogCanvas.GetComponent <Canvas>();

        fogCanvas.renderMode = RenderMode.WorldSpace;

        rectT.position  = new Vector3((float)width / 2f, (float)height / 2f, 0f);
        rectT.sizeDelta = new Vector2((float)width, (float)height);

        GameObject camObj = new GameObject("Camera");
        Camera     cam    = camObj.AddComponent <Camera>();

        cam.orthographic       = true;
        cam.orthographicSize   = 10f;
        cam.transform.position = new Vector3(width / 2f, height / 2f, -10f);

        manager.FogCanvas = fogCanvas;

        manager.LevelH           = MapSizeX;
        manager.LevelW           = MapSizeZ;
        manager.LevelWidth       = width;
        manager.LevelHeight      = height;
        manager.ResitenceMapPath = FileLocation;
        manager.SetResistanceMap(FileLocation);

        manager.RevealOpacities      = new Color(RevealOpacity, CoveredOpacity, UndiscoveredOpacity, 1f);
        manager.StartEndHeight       = MinMaxHeight;
        manager.FogTextureFilterMode = FogFilterMode;
        manager.ManualMode           = false;

        if (BlurQuality != FogOfWar.FogQuality.Off)
        {
            FogOfWarBlur blur = manager.gameObject.AddComponent <FogOfWarBlur>();
            manager.fogOfWarBlur = blur;
            manager.BlurFog      = BlurQuality;
        }

        manager.InitializeMaps();

        GameObject Quad = GameObject.CreatePrimitive(PrimitiveType.Quad);

        Quad.name = "Raycast Catcher";
        Quad.GetComponent <MeshRenderer>().enabled = false;
        Quad.transform.position   = new Vector3(width / 2f, height / 2f, 0f);
        Quad.transform.localScale = new Vector3(width, height, 1f);
    }
Ejemplo n.º 15
0
 //升级视野
 public void Upgrade_Vision()
 {
     vision++;
     FogOfWarManager.Instance().AddNodesWithinRangeToPlayerVision(player, node, vision);
     FogOfWarManager.Instance().RemoveNodesWithinRangeToPlayerVision(player, node, vision - 1);
 }
Ejemplo n.º 16
0
    public override void LiberatedEffect()
    {
        FogOfWarManager.Instance().RemoveNodesWithinRangeToPlayerVision(player, node, 3);

        base.LiberatedEffect();
    }
Ejemplo n.º 17
0
 public override void OccupiedEffect()
 {
     FogOfWarManager.Instance().AddNodesWithinRangeToPlayerVision(player, node, 3);
     base.OccupiedEffect();
 }
Ejemplo n.º 18
0
 void Start()
 {
     fog = this.GetComponent <FogOfWarManager>();
     Invoke("CoFog", 0.1f);
 }
Ejemplo n.º 19
0
    void Start()
    {
        Color[] c = new Color[width * height];

        for (int x = 0; x < width; x++)
        {
            for (int z = 0; z < height; z++)
            {
                float value      = Mathf.PerlinNoise(x / 20f, z / 20f);
                int   coordinate = Mathf.FloorToInt(z) * width + Mathf.FloorToInt(x);;

                if (value < 0.33f)
                {
                    GOList.Add(Instantiate(TileA, new Vector3(x, 0, z) + new Vector3(0.5f, 0, 0.5f), Quaternion.identity) as GameObject);
                    c[coordinate].g = .0f;
                }

                if (value >= 0.33f && value < 0.66f)
                {
                    GOList.Add(Instantiate(TileB, new Vector3(x, 0, z) + new Vector3(0.5f, 0, 0.5f), Quaternion.identity) as GameObject);
                    c[coordinate].g = 0.5f;
                }

                if (value >= 0.66f)
                {
                    GOList.Add(Instantiate(TileC, new Vector3(x, 0, z) + new Vector3(0.5f, 0, 0.5f), Quaternion.identity) as GameObject);
                    c[coordinate].g = 1.0f;
                }
            }
        }

        GameObject      g1      = new GameObject("FogOfWarManager");
        FogOfWarManager manager = g1.AddComponent <FogOfWarManager>();

        manager.LevelWidth  = width;
        manager.LevelHeight = height;
        manager.BlurFog     = FogOfWar.FogQuality.On;

        manager.SetResistanceMapData(c);
        manager.InitializeMaps();

        GameObject g2 = new GameObject("Projector");

        g2.transform.position = new Vector3(width / 2f, 15f, height / 2f);
        g2.transform.rotation = Quaternion.Euler(90f, 0f, 0f);

        Projector p = g2.AddComponent <Projector>();

        Material projectorMat = new Material(Shader.Find("UFoW/Projectors/Projector"));

        p.material         = projectorMat;
        p.orthographic     = true;
        p.orthographicSize = height / 2f;
        p.aspectRatio      = (float)width / (float)height;

        GameObject revealer = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        revealer.transform.position = new Vector3(width / 2f, 1f, height / 2f);
        ExampleUnit e = revealer.AddComponent <ExampleUnit>();

        e.VisionRange = 12.75f;
    }
Ejemplo n.º 20
0
        private void OnEnable()
        {
            _target = target as FogOfWarManager;

            _probeMaskProperty = serializedObject.FindProperty("probeableLayers");
            _ignoreMaskProperty = serializedObject.FindProperty("ignoredLayers");

            _gameplayArea   = FindObjectOfType<GameplayArea>();

            _groundLayer    = LayerMask.NameToLayer("Ground");
            _LoSBlockLayer  = LayerMask.NameToLayer("SightBlock");
            _currentState = State.Idle;

            TryFindFogDataAsset();
        }