Exemplo n.º 1
0
    // ------------------------------------------------------------------
    public void CreateByStandOutRoad(int iMonster, int iRoad_Min, int iRoad_Max)
    {
        // 取得路編號.
        int iRoad = CameraCtrl.pthis.iNextRoad + Random.Range(iRoad_Min, iRoad_Max);

        if (iRoad > DataMap.pthis.DataRoad.Count - 1)
        {
            return;
        }

        // 取得路資料.
        MapCoor Road = DataMap.pthis.DataRoad[iRoad];

        for (int iCount = 0; iCount < GameDefine.iPickupSearch; ++iCount)
        {
            MapCoor Result = new MapCoor(Road.X + Random.Range(-5, 6), Road.Y + Random.Range(0, 3));
            bool    bCheck = true;

            // 確認是否為道路.
            foreach (MapCoor Itor in DataMap.pthis.DataRoad)
            {
                bCheck &= (Result.X == Itor.X && Result.Y == Itor.Y) == false;
            }

            bCheck &= (MapCreater.pthis.GetMapObj(Result.ToVector2()) != null);

            if (bCheck)
            {
                if (iMonster == 0)
                {
                    PickupCreater.pthis.CreateMeet(Result);
                }
                else
                {
                    GameObject pObjMon = CreateOneEnemy(iMonster, -1, Vector2.zero);
                    pObjMon.transform.position = MapCreater.pthis.GetMapObj(Result.ToVector2()).transform.position;
                }
                return;
            }
        }
    }
Exemplo n.º 2
0
    // ------------------------------------------------------------------
    // 產生肉肉.
    public void CreateMeet(MapCoor pMapCoor)
    {
        Pickup pData = new Pickup();

        pData.Pos     = pMapCoor;
        pData.iType   = (int)ENUM_Pickup.Meet;
        pData.iCount  = 1;
        pData.iLooks  = 0;
        pData.bPickup = false;

        DataPickup.pthis.Data.Add(pData);

        GameObject pObjPickup = UITool.pthis.CreatePickup(PlayerCreater.pthis.gameObject, (ENUM_Pickup)pData.iType, 0, 0);

        pObjPickup.transform.position = MapCreater.pthis.GetMapObj(pMapCoor.ToVector2()).transform.position;

        Data.Add(pObjPickup);
        DataPickup.pthis.Save();
    }
Exemplo n.º 3
0
    // 更新地圖
    public void Refresh(int iRoad)
    {
        MapCoor RoadPos = DataMap.pthis.DataRoad.Count > iRoad ? DataMap.pthis.DataRoad[iRoad] : new MapCoor();

        // 建立新物件
        for (int iX = -GameDefine.iMapBorder; iX <= GameDefine.iMapBorder; ++iX)
        {
            for (int iY = -GameDefine.iMapBorder; iY <= GameDefine.iMapBorder; ++iY)
            {
                MapCoor Pos = new MapCoor(RoadPos.X + iX, RoadPos.Y + iY);

                if (Pos.X < 0 || Pos.Y < 0)
                {
                    continue;
                }

                Vector2 PosVec = Pos.ToVector2();

                if (Data.ContainsKey(PosVec))
                {
                    continue;
                }

                if (DataMap.pthis.DataObjt.ContainsKey(PosVec) == false)
                {
                    continue;
                }

                MapObjt pObjt = DataMap.pthis.DataObjt[PosVec];

                float fPosX = PosVec.x + (pObjt.Width * GameDefine.iBlockSize) / 2;
                float fPosY = PosVec.y + (pObjt.Height * GameDefine.iBlockSize) / 2;

                Data.Add(PosVec, UITool.pthis.CreateMap(gameObject, pObjt.Type, DataPlayer.pthis.iStyle, fPosX, fPosY));
            }    //for
        }        //for
    }
Exemplo n.º 4
0
    // 建立地圖物件
    private void CreateObjt()
    {
        // 建立道路物件
        for (int iPos = 0; iPos < DataMap.pthis.DataRoad.Count; ++iPos)
        {
            MapCoor Pos = DataMap.pthis.DataRoad[iPos];

            // 判斷是否該建立起點物件
            if (iPos == 0)
            {
                MapObjt Temp = new MapObjt();

                Temp.Pos    = new MapCoor(Pos.X, Pos.Y - 1);
                Temp.Type   = (int)ENUM_Map.MapStart;
                Temp.Width  = GameDefine.ObjtStart.X;
                Temp.Height = GameDefine.ObjtStart.Y;

                DataMap.pthis.DataObjt.Add(Temp.Pos.ToVector2(), Temp);
            }            //if

            // 判斷是否該建立終點物件
            if (iPos == DataMap.pthis.DataRoad.Count - 1)
            {
                MapObjt Temp = new MapObjt();

                Temp.Pos    = new MapCoor(Pos.X - 1, Pos.Y + 1);
                Temp.Type   = (int)ENUM_Map.MapEnd;
                Temp.Width  = GameDefine.ObjtEnd.X;
                Temp.Height = GameDefine.ObjtEnd.Y;

                DataMap.pthis.DataObjt.Add(Temp.Pos.ToVector2(), Temp);
            }            //if

            // 建立道路物件
            {
                MapObjt Temp = new MapObjt();

                Temp.Pos    = new MapCoor(Pos.X, Pos.Y);
                Temp.Type   = (int)ENUM_Map.MapRoad;
                Temp.Width  = GameDefine.ObjtBase.X;
                Temp.Height = GameDefine.ObjtBase.Y;

                DataMap.pthis.DataObjt.Add(Temp.Pos.ToVector2(), Temp);
            }
        }        //for

        // 建立一般物件
        foreach (MapCoor Itor in DataMap.pthis.DataRoad)
        {
            for (int iCount = 0; iCount < GameDefine.iObjDensity; ++iCount)
            {
                MapCoor Pos = new MapCoor(Itor.X + Random.Range(-GameDefine.iMapBorder, GameDefine.iMapBorder + 1),
                                          Itor.Y + Random.Range(-GameDefine.iMapBorder, GameDefine.iMapBorder + 1));

                if (Itor.X == Pos.X && Itor.Y == Pos.Y)
                {
                    continue;
                }

                int     iIndex = Random.Range(0, GameDefine.ObjtScale.Count);
                MapObjt Temp   = new MapObjt();

                Temp.Pos    = Pos;
                Temp.Type   = iIndex + (int)ENUM_Map.MapObjt_0;
                Temp.Width  = GameDefine.ObjtScale[iIndex].X;
                Temp.Height = GameDefine.ObjtScale[iIndex].Y;

                if (CheckCover(Temp))
                {
                    DataMap.pthis.DataObjt.Add(Temp.Pos.ToVector2(), Temp);
                }
            }    //for
        }        //for

        // 填滿地圖
        foreach (MapCoor Itor in DataMap.pthis.DataRoad)
        {
            for (int iX = -GameDefine.iMapBorder; iX <= GameDefine.iMapBorder; ++iX)
            {
                for (int iY = -GameDefine.iMapBorder; iY <= GameDefine.iMapBorder; ++iY)
                {
                    MapCoor Pos = new MapCoor(Itor.X + iX, Itor.Y + iY);

                    if (Pos.X < 0 || Pos.Y < 0)
                    {
                        continue;
                    }

                    if (DataMap.pthis.DataObjt.ContainsKey(Pos.ToVector2()))
                    {
                        continue;
                    }

                    MapObjt Temp = new MapObjt();

                    Temp.Pos    = Pos;
                    Temp.Type   = (int)ENUM_Map.MapBase;
                    Temp.Width  = GameDefine.ObjtBase.X;
                    Temp.Height = GameDefine.ObjtBase.Y;

                    if (CheckCover(Temp))
                    {
                        DataMap.pthis.DataObjt.Add(Temp.Pos.ToVector2(), Temp);
                    }
                } //for
            }     //for
        }         //for
    }