Exemple #1
0
 public void UpdateLinked()
 {
     if (!IsDummy && LinkedProvinces != null && LinkedProvinces.Any())
     {
         foreach (ProvinceMarker pm in LinkedProvinces)
         {
             pm.UpdateColor();
         }
     }
 }
Exemple #2
0
    public List <GameObject> CreateWrapMeshes()
    {
        if (IsDummy)
        {
            new List <GameObject>();
        }

        if (m_wraps == null)
        {
            m_wraps = new List <ProvinceWrapMarker>();
        }

        List <GameObject> objs = new List <GameObject>();

        if (LinkedProvinces == null || !LinkedProvinces.Any()) // case for standard provinces
        {
            if (ConnectedProvinces.Any(x => x.IsDummy))
            {
                List <ProvinceMarker> mars    = ConnectedProvinces.Where(x => x.IsDummy);
                List <Vector3>        offsets = new List <Vector3>();

                foreach (ProvinceMarker pm in mars)
                {
                    if (offsets.Any(x => Vector3.Distance(x, pm.DummyOffset) < 0.01f))
                    {
                        continue;
                    }

                    offsets.Add(pm.DummyOffset);

                    GameObject         obj  = GameObject.Instantiate(WrapMarkerPrefab);
                    ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>();

                    wrap.SetParent(this);
                    wrap.SetNode(m_node);
                    wrap.CreatePoly(m_poly, -pm.DummyOffset);
                    obj.transform.position = obj.transform.position - pm.DummyOffset;

                    m_wraps.Add(wrap);
                    objs.Add(obj);
                    objs.AddRange(create_connection_wraps(pm, -pm.DummyOffset));
                }
            }
        }
        else // case for provinces with linked dummy nodes
        {
            List <ProvinceMarker> ignore = new List <ProvinceMarker>();

            foreach (ProvinceMarker pm in LinkedProvinces)
            {
                GameObject         obj  = GameObject.Instantiate(WrapMarkerPrefab);
                ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>();

                wrap.SetParent(this);
                wrap.SetNode(m_node);
                wrap.CreatePoly(m_poly, pm.DummyOffset);
                obj.transform.position = obj.transform.position + pm.DummyOffset;

                m_wraps.Add(wrap);
                ignore.Add(pm);
                objs.Add(obj);

                if (pm.DummyOffset.x > 0f && pm.DummyOffset.y > 0f)
                {
                    objs.AddRange(create_connection_wraps(pm, new Vector3(-pm.DummyOffset.x, 0f)));
                    objs.AddRange(create_connection_wraps(pm, new Vector3(0f, -pm.DummyOffset.y)));
                }
            }

            if (ConnectedProvinces.Any(x => x.IsDummy && !ignore.Contains(x)))
            {
                List <ProvinceMarker> mars = ConnectedProvinces.Where(x => x.IsDummy && !ignore.Contains(x));

                foreach (ProvinceMarker pm in mars)
                {
                    if (pm.DummyOffset.x > 0f && pm.DummyOffset.y > 0f && mars.Count > 1)
                    {
                        continue;
                    }

                    GameObject         obj  = GameObject.Instantiate(WrapMarkerPrefab);
                    ProvinceWrapMarker wrap = obj.GetComponent <ProvinceWrapMarker>();

                    wrap.SetParent(this);
                    wrap.SetNode(m_node);
                    wrap.CreatePoly(m_poly, -pm.DummyOffset);
                    obj.transform.position = obj.transform.position - pm.DummyOffset;

                    m_wraps.Add(wrap);
                    objs.Add(obj);
                    objs.AddRange(create_connection_wraps(pm, -pm.DummyOffset));
                }
            }
        }

        return(objs);
    }