Beispiel #1
0
    void RPC_S2C_AddCampArea(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        Vector3 townPos = stream.Read <Vector3> ();

        if (ForceSetting.Instance.Conflict(Id, mainPlayerId))
        {
            return;
        }

        IntVector2 center = new IntVector2(Mathf.RoundToInt(townPos.x), Mathf.RoundToInt(townPos.z));

        if (VArtifactTownManager.Instance.TownPosInfo.ContainsKey(center))
        {
            //TownInfo ti = RandomTownManager.Instance.TownPosInfo[center];
            //WorldMapManager.Instance.AddCamp(townPos);
            //ti.IsExplored = true;
            VArtifactTown ti = VArtifactTownManager.Instance.TownPosInfo [center];
            //int id = ti.townId;
            RandomMapIconMgr.AddNativeIcon(ti);
            foreach (VArtifactUnit vau in ti.VAUnits)
            {
                vau.isDoodadNpcRendered = true;
            }
            ti.IsExplored = true;
            VArtifactTownManager.Instance.DetectTowns(ti);
        }
    }
Beispiel #2
0
 public void OnNewTown(VArtifactTown town)
 {
     if (town != null && town.ms_id > 0)
     {
         m_RecordTown = town;
     }
 }
    public static Vector3 GetDynamicNativeSinglePoint(VArtifactTown vat, System.Random randSeed)
    {
        VArtifactUnit vau         = vat.VAUnits[randSeed.Next(vat.VAUnits.Count)];
        Vector3       posBeforRot = vau.npcPos[randSeed.Next(vau.npcPos.Count)];

        return(GetPosAfterRotation(vau, posBeforRot));
    }
Beispiel #4
0
 public void ChangeAlliance(VArtifactTown vat)
 {
     allyTownDic[vat.allyId].Remove(vat);
     vat.allyId = TownGenData.PlayerAlly;
     allyTownDic[vat.allyId].Add(vat);
     //--to do: refresh
 }
Beispiel #5
0
 public void RestoreAlliance(VArtifactTown vat)
 {
     allyTownDic[vat.allyId].Remove(vat);
     vat.allyId = vat.genAllyId;
     allyTownDic[vat.allyId].Add(vat);
     //--to do: refresh
 }
Beispiel #6
0
    void RPC_S2C_TownAreaList(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        Vector3[] townArea = stream.Read <Vector3[]> ();

        if (ForceSetting.Instance.Conflict(Id, mainPlayerId))
        {
            return;
        }

        foreach (Vector3 townPos in townArea)
        {
            IntVector2 center = new IntVector2(Mathf.RoundToInt(townPos.x), Mathf.RoundToInt(townPos.z));
            if (VArtifactTownManager.Instance.TownPosInfo.ContainsKey(center))
            {
                VArtifactTown ti = VArtifactTownManager.Instance.TownPosInfo [center];
                //int id = ti.townId;

                if (VArtifactTownManager.Instance.IsCaptured(ti.townId))
                {
                    RandomMapIconMgr.AddDestroyedTownIcon(ti);
                }
                else
                {
                    RandomMapIconMgr.AddTownIcon(ti);
                    DetectedTownMgr.Instance.AddDetectedTown(ti);
                }
                foreach (VArtifactUnit vau in ti.VAUnits)
                {
                    vau.isDoodadNpcRendered = true;
                }
                ti.IsExplored = true;
                VArtifactTownManager.Instance.DetectTowns(ti);
            }
        }
    }
Beispiel #7
0
    void RPC_S2C_AddTownArea(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        Vector3 townPos = stream.Read <Vector3> ();

        if (LogFilter.logDebug)
        {
            Debug.LogFormat("<color=blue>Add town pos:{0}</color>", townPos);
        }

        if (ForceSetting.Instance.Conflict(Id, mainPlayerId))
        {
            return;
        }

        IntVector2 center = new IntVector2(Mathf.RoundToInt(townPos.x), Mathf.RoundToInt(townPos.z));

        if (VArtifactTownManager.Instance.TownPosInfo.ContainsKey(center))
        {
            VArtifactTown ti = VArtifactTownManager.Instance.TownPosInfo [center];
            //int id = ti.townId;
            DetectedTownMgr.Instance.AddDetectedTown(ti);
            RandomMapIconMgr.AddTownIcon(ti);
            foreach (VArtifactUnit vau in ti.VAUnits)
            {
                vau.isDoodadNpcRendered = true;
            }
            ti.IsExplored = true;
            VArtifactTownManager.Instance.DetectTowns(ti);
        }
    }
Beispiel #8
0
 public void AddAllyTown(VArtifactTown townData)
 {
     if (!allyTownDic.ContainsKey(townData.AllyId))
     {
         allyTownDic.Add(townData.AllyId, new List <VArtifactTown> ());
     }
     allyTownDic[townData.AllyId].Add(townData);
 }
Beispiel #9
0
 public NpcTownLabel(VArtifactTown vat)
 {
     this.pos      = vat.TransPos;
     townLabelType = TownLabelType.NpcTown;
     name          = PELocalization.GetString(vat.townNameId);
     allyId        = vat.allyId;
     allyColorId   = vat.AllyColorId;
     PeMap.LabelMgr.Instance.Add(this);
 }
Beispiel #10
0
 public DestroyedLabel(VArtifactTown vat)
 {
     this.pos    = vat.TransPos;
     name        = PELocalization.GetString(vat.townNameId);
     townType    = vat.type;
     nativeType  = vat.nativeType;
     allyId      = vat.allyId;
     allyColorId = vat.AllyColorId;
     PeMap.LabelMgr.Instance.Add(this);
 }
    public static void RestoreTownAlliance(int townId)
    {
        VArtifactTown vat = VArtifactTownManager.Instance.GetTownByID(townId);

        if (vat != null)
        {
            VATownGenerator.Instance.RestoreAlliance(vat);
        }
        //--to do: refresh
    }
Beispiel #12
0
    public PeEntity GetTownNpc(VArtifactTown vat)
    {
        PeEntity npc = new PeEntity();

        //List<VATownNpcInfo> npcList = vat.npcList;
        //foreach (VATownNpcInfo vaNpc in npcList)
        //{
        //    //--to do:
        //}

        return(npc);
    }
 public static bool CheckTownAvailable(VArtifactTown vaTowndata)
 {
     if (!IsContained(vaTowndata))
     {
         for (int i = 0; i < vaTowndata.VAUnits.Count; i++)
         {
             VArtifactUnit vau = vaTowndata.VAUnits[i];
             vau.worldPos = new Vector3(vau.PosCenter.x, -1, vau.PosCenter.y);
         }
         return(true);
     }
     return(false);
 }
Beispiel #14
0
 public void RemoveDetectedTown(VArtifactTown vat)
 {
     if (!detectedTowns.Contains(vat.PosCenter))
     {
         return;
     }
     detectedTowns.Remove(vat.PosCenter);
     DTownsDict.Remove(vat.PosCenter);
     if (RemoveDetectedTownListener != null)
     {
         RemoveDetectedTownListener(vat.PosCenter);
     }
 }
Beispiel #15
0
 public void AddMainTown(int areaId, VArtifactTown townData)
 {
     if (MainTownDic.ContainsKey(areaId))
     {
         MainTownDic[areaId].Add(townData);
     }
     else
     {
         MainTownDic.Add(areaId, new List <VArtifactTown>()
         {
             townData
         });
     }
 }
Beispiel #16
0
    public void AddTown(int areaId, VArtifactTown townData)
    {
//		if(townData.type==VArtifactType.NpcTown){
        if (townData.isMainTown)
        {
            AddMainTown(areaId, townData);
        }
        else
        {
            AddBranchTown(townData);
        }
//		}
        LinkTownToArea(townData);
    }
Beispiel #17
0
 public void AddTownArea(IntVector2 areaIndex, VArtifactTown vat)
 {
     if (areaTown.ContainsKey(areaIndex))
     {
         areaTown[areaIndex].Add(vat);
     }
     else
     {
         areaTown.Add(areaIndex, new List <VArtifactTown> ()
         {
             vat
         });
     }
 }
Beispiel #18
0
    public void LinkTownToArea(VArtifactTown vat)
    {
        int maxDistance = Mathf.CeilToInt((vat.MiddleRadius + TownAreaMaxDistance) * TownAreaMaxFactor);
        int minXIndex   = (vat.PosCenter.x - maxDistance) >> LinkAreaIndex;
        int minYIndex   = (vat.PosCenter.y - maxDistance) >> LinkAreaIndex;
        int maxXIndex   = (vat.PosCenter.x + maxDistance) >> LinkAreaIndex;
        int maxYIndex   = (vat.PosCenter.y + maxDistance) >> LinkAreaIndex;

        for (int i = minXIndex; i <= maxXIndex; i++)
        {
            for (int j = minYIndex; j <= maxYIndex; j++)
            {
                AddTownArea(new IntVector2(i, j), vat);
            }
        }
    }
Beispiel #19
0
    public VArtifactTown GetNearestTown(IntVector2 pos, List <VArtifactTown> vatList)
    {
        float         distance = 999999;
        VArtifactTown result   = null;

        foreach (VArtifactTown vat in vatList)
        {
            float dist = vat.PosCenter.Distance(pos);
            if (dist < distance)
            {
                distance = dist;
                result   = vat;
            }
        }
        return(result);
    }
 public static bool IsContained(VArtifactTown townInfo)
 {
     for (int vaui = 0; vaui < townInfo.VAUnits.Count; vaui++)
     {
         List <IntVector2> chunkIndexList = LinkedChunkIndex(townInfo.VAUnits[vaui]);
         for (int i = 0; i < chunkIndexList.Count; i++)
         {
             IntVector2 chunkIndex = chunkIndexList[i];
             if (VArtifactTownManager.Instance.TileContainsTown(chunkIndex))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Beispiel #21
0
    public NativeLabel(VArtifactTown vat)
    {
        this.pos      = vat.TransPos;
        this.type     = vat.nativeType;
        townLabelType = TownLabelType.NativeCamp;
        if (type == NativeType.Puja)
        {
            name = PELocalization.GetString(8000737);            //lz-2016.10.11 翻译【Puja Camp】
        }
        else
        {
            name = PELocalization.GetString(8000736);            //lz-2016.10.11 翻译【Paja Camp】
        }
        allyId = vat.allyId;
//		name = PELocalization.GetString(VATownGenerator.Instance.GetAllyName(allyId));
        allyColorId = vat.AllyColorId;
        PeMap.LabelMgr.Instance.Add(this);
    }
Beispiel #22
0
    public void AddDetectedTown(VArtifactTown vat)
    {
        if (VArtifactTownManager.Instance.IsCaptured(vat.townId))
        {
            return;
        }
        if (detectedTowns.Contains(vat.PosCenter))
        {
            return;
        }
        detectedTowns.Add(vat.PosCenter);
        DetectedTown dt = new DetectedTown(vat);

        DTownsDict.Add(dt.PosCenter, dt);
        if (AddDetectedTownListener != null)
        {
            AddDetectedTownListener(dt.PosCenter);
        }
    }
Beispiel #23
0
 public static void AddNativeIcon(VArtifactTown vat)
 {
     if (vat != null)
     {
         if (vat.isEmpty)
         {
             return;
         }
         if (!NativeLabel.ContainsIcon(vat.TransPos))
         {
             UnknownLabel.Remove(vat.TransPos);
             NativeLabel nl = new NativeLabel(vat);
             if (!nativeCampLabel.ContainsKey(nl.pos))
             {
                 nativeCampLabel.Add(nl.pos, nl);
             }
         }
     }
 }
Beispiel #24
0
 //public static void AddTownIconList(List<Vector3> posList)
 //{
 //    if (posList != null && posList.Count > 0)
 //    {
 //        foreach (Vector3 pos in posList)
 //        {
 //            NpcTownLabel tl = new NpcTownLabel(pos);
 //        }
 //    }
 //}
 //public static void AddTownIconList(Vector3[] posList)
 //{
 //    if (posList != null && posList.Length > 0)
 //    {
 //        foreach (Vector3 pos in posList)
 //        {
 //            NpcTownLabel tl = new NpcTownLabel(pos);
 //        }
 //    }
 //}
 public static void AddTownIcon(VArtifactTown vat)
 {
     if (vat != null)
     {
         if (vat.isEmpty)
         {
             return;
         }
         if (!NpcTownLabel.ContainsIcon(vat.TransPos))
         {
             UnknownLabel.Remove(vat.TransPos);
             NpcTownLabel tl = new NpcTownLabel(vat);
             if (!npcTownLabel.ContainsKey(tl.pos))
             {
                 npcTownLabel.Add(tl.pos, tl);
             }
         }
     }
 }
Beispiel #25
0
 public static void AddDestroyedTownIcon(VArtifactTown vat)
 {
     if (vat != null)
     {
         if (vat.isEmpty)
         {
             return;
         }
         if (!DestroyedLabel.ContainsIcon(vat.TransPos))
         {
             UnknownLabel.Remove(vat.TransPos);
             DestroyedLabel dl = new DestroyedLabel(vat);
             if (!destroyedTownLabel.ContainsKey(dl.pos))
             {
                 destroyedTownLabel.Add(dl.pos, dl);
             }
         }
     }
 }
 public static DynamicNative[] GetAllDynamicNativePoint(int townId, out List <Vector3> posList)
 {
     DynamicNative[] result = null;
     posList = new List <Vector3> ();
     if (VArtifactTownManager.Instance != null)
     {
         VArtifactTown vat = VArtifactTownManager.Instance.GetTownByID(townId);
         if (vat != null)
         {
             if (vat.nativeTower != null)
             {
                 result = vat.nativeTower.dynamicNatives;
                 if (vat.VAUnits != null && vat.VAUnits.Count > 0)
                 {
                     VArtifactUnit  vau         = vat.VAUnits[0];
                     List <Vector3> posBeforRot = vau.npcPos;
                     foreach (Vector3 p in posBeforRot)
                     {
                         posList.Add(GetPosAfterRotation(vau, p));
                     }
                 }
                 else
                 {
                     Debug.LogError("GetAllDynamicNativePoint: " + "vat.VAUnits==null||vat.VAUnits.Count=0");
                 }
             }
             else
             {
                 Debug.LogError("GetAllDynamicNativePoint: " + "vat.nativeTower==null");
             }
         }
         else
         {
             Debug.LogError("GetAllDynamicNativePoint: " + "vat==null");
         }
     }
     else
     {
         Debug.LogError("GetAllDynamicNativePoint: " + "ArtifactTownManager.Instance==null");
     }
     return(result);
 }
Beispiel #27
0
    public void GenerateConnection(System.Random rand)
    {
        for (int i = 0; i < mainTownList.Count - 1; i++)
        {
            VArtifactTown thisTown = mainTownList[i];
            VArtifactTown nextTown = mainTownList[i + 1];
            AddTownConnection(thisTown.PosCenter, thisTown.PosEntrance, rand);
            if (nextTown.PosStart.y > thisTown.PosStart.y)
            {
                if (nextTown.PosCenter.x < thisTown.PosCenter.x)
                {
                    AddTownConnection(thisTown.PosEntrance, thisTown.PosEntranceLeft, rand);
                    AddTownConnection(thisTown.PosEntranceLeft, nextTown.PosEntrance, rand);
                }
                else
                {
                    AddTownConnection(thisTown.PosEntrance, thisTown.PosEntranceRight, rand);
                    AddTownConnection(thisTown.PosEntranceRight, nextTown.PosEntrance, rand);
                }
            }
            else
            {
                if (nextTown.PosCenter.x < thisTown.PosCenter.x)
                {
                    AddTownConnection(thisTown.PosEntrance, nextTown.PosEntranceRight, rand);
                    AddTownConnection(nextTown.PosEntranceRight, nextTown.PosEntrance, rand);
                }
                else
                {
                    AddTownConnection(thisTown.PosEntrance, nextTown.PosEntranceLeft, rand);
                    AddTownConnection(nextTown.PosEntranceLeft, nextTown.PosEntrance, rand);
                }
            }
        }

        if (mainTownList.Count > 1)
        {
            AddTownConnection(mainTownList[mainTownList.Count - 1].PosCenter, mainTownList[mainTownList.Count - 1].PosEntrance, rand);
        }
    }
 public static bool GetTownPos(int townId, out Vector3 pos)
 {
     if (VArtifactTownManager.Instance == null)
     {
         pos = Vector3.zero;
         return(false);
     }
     else
     {
         VArtifactTown vat = VArtifactTownManager.Instance.GetTownByID(townId);
         if (vat == null)
         {
             pos = Vector3.zero;
             return(false);
         }
         else
         {
             pos = vat.TransPos;
             return(true);
         }
     }
 }
 public static bool GetTownName(int townId, out string name)
 {
     if (VArtifactTownManager.Instance == null)
     {
         name = "";
         return(false);
     }
     else
     {
         VArtifactTown vat = VArtifactTownManager.Instance.GetTownByID(townId);
         if (vat == null)
         {
             name = "";
             return(false);
         }
         else
         {
             name = PELocalization.GetString(vat.townNameId);
             return(true);
         }
     }
 }
    public static DynamicNativePoint GetDynamicNativePoint(int townId)
    {
        VArtifactTown      vat = VArtifactTownManager.Instance.GetTownByID(townId);
        DynamicNativePoint result;

        DynamicNative[] dns      = vat.nativeTower.dynamicNatives;
        System.Random   randSeed = new System.Random(System.DateTime.Now.Millisecond);
        DynamicNative   dn       = dns[randSeed.Next(dns.Count())];

        result.id   = dn.did;
        result.type = dn.type;
        if (dn.type == 1)
        {
            result.point = GetDynamicNativeSinglePoint(vat, randSeed);
        }
        else
        {
            result.point = GetDynamicNativeGroupPoint(vat, randSeed);
        }

        return(result);
    }