Exemplo n.º 1
0
    private void WalkToLevelInternal(int number)
    {
        MapLevel mapLevel = GetLevel(number);

        if (mapLevel.IsLocked)
        {
            Debug.Log(string.Format("Can't go to locked level number {0}.", number));
        }
        else
        {
            WaypointsMover.Move(CharacterLevel.PathPivot, mapLevel.PathPivot,
                                () => {
                RaiseLevelReached(number);
                CharacterLevel = mapLevel;
            });
        }
    }
Exemplo n.º 2
0
 /// <summary>
 /// Sets the image to be used at a specified map position.
 /// </summary>
 private void SetMapLocationArea(int x, int y, MapLevel area)
 {
     if (area > MapLevel.Blank)
     {
         area = MapLevel.Blank;
     }
     if (this.MapData[x, y].Area != area)
     {
         var newData = this.MapData[x, y];
         newData.Area = area;
         if (area == MapLevel.Blank)
         {
             newData = MapCellData.Blank;
         }
         SetMapLocationData(x, y, newData);
     }
 }
Exemplo n.º 3
0
    private List <MapLevel> GenerateLevels()
    {
        GameObject goLevels = new GameObject("Levels");

        goLevels.transform.parent = _levelsMap.transform;
        float[]         points = DevideLineToPoints(_levelsMap.Count);
        List <MapLevel> levels = new List <MapLevel> ();

        for (int i = 0; i < _levelsMap.Count; i++)
        {
            MapLevel mapLevel = CreateMapLevel(points [i], i + 1);
            mapLevel.transform.parent = goLevels.transform;
            levels.Add(mapLevel);
        }
        UpdateLevelsNumber(levels);
        return(levels);
    }
Exemplo n.º 4
0
    public GridCluster(int h, int v, MapPoint point, MapLevel level)
    {
        this.hQuad = h;
        this.vQuad = v;
        //this.points.Add(point);
        addPoint(point);
        //point.setGridCluster(this);
        this.category          = point.getCategory();
        this.numFilteredPoints = 0;
        this.gridZone.xMin     = level.quadWidth * (h - level.numQuadsH / 2 - 1);
        this.gridZone.yMin     = level.quadHeight * (v - level.numQuadsV / 2 - 1);

        this.center = new MapPoint(point.getX(), point.getY());

        this.gridZone.width    = level.quadWidth;
        this.gridZone.height   = level.quadHeight;
        this.numFilteredPoints = 0;
    }
Exemplo n.º 5
0
    private void TeleportToLevelInternal(int number, bool isQuietly)
    {
        MapLevel mapLevel = GetLevel(number);

        if (mapLevel.IsLocked)
        {
            Debug.Log(string.Format("Can't jump to locked level number {0}.", number));
        }
        else
        {
            WaypointsMover.transform.position = mapLevel.PathPivot.transform.position;               //need to fix in the map plugin
            CharacterLevel = mapLevel;
            if (!isQuietly)
            {
                RaiseLevelReached(number);
            }
        }
    }
Exemplo n.º 6
0
    //------------------------------------------------------------------------------------------------------------
    //                                                  Constructor
    //------------------------------------------------------------------------------------------------------------
    public Player(MapLevel mapLevel, int w, int h, Level lvl, Timer timer, float newX, float newY) : base(mapLevel, "colors.png", 0)
    {
        x = newX;
        y = newY;
        SetOrigin(width / 2, height / 2);
        this.width  = w;
        this.height = h;
        _jump       = -h;

        this._mapLevel = mapLevel;
        this.handHeld  = mapLevel.handHeld;

        _level = lvl;
        _timer = timer;

        initialiseSounds();

        alpha = 0;
    }
Exemplo n.º 7
0
        /// <summary>
        /// This function takes a list of all registered points on the map and tries to
        /// reconstruct a polygonal represenatation of the map with serveral levels
        /// </summary>
        /// <param name="ps"></param>
        public static Map CreateMap(MapMetaData mapmeta, List <Point3D> ps)
        {
            BuildMapGrid(mapmeta);

            var min_z    = ps.Min(point => point.Z);
            var max_z    = ps.Max(point => point.Z);
            var maplevel = new MapLevel(0, min_z, max_z);

            AssignCellTypes(maplevel, ps.ToArray());

            MapLevel[] maplevels = new MapLevel[] { maplevel }; // This constructor only creates one maplevel

            var map_width_x = ps.Max(point => point.X) - ps.Min(point => point.X);
            var map_width_y = ps.Max(point => point.Y) - ps.Min(point => point.Y);

            Console.WriteLine("Mapwidth in x-Range: " + map_width_x + " Mapwidth in y-Range: " + map_width_y);

            return(new Map(map_width_x, map_width_y, maplevels));
        }
Exemplo n.º 8
0
        public DungeonViewConsole(int viewWidth, int viewHeight, int mapWidth, int mapHeight) : base(mapWidth, mapHeight)
        {
            RogueSharp.MapCreation.IMapCreationStrategy <RogueSharp.Map> ms = (RogueSharp.MapCreation.IMapCreationStrategy <RogueSharp.Map>) new RogueSharp.MapCreation.RandomRoomsMapCreationStrategy <RogueSharp.Map>(mapWidth, mapHeight, 100, 13, 7);

            mapLevel = new MapLevel(mapWidth, mapHeight, ms, TextSurface);

            inputManager = new InputManager();
            inputManager.AddButton(Keys.Down, Input.South);
            inputManager.AddButton(Keys.Up, Input.North);
            inputManager.AddButton(Keys.Left, Input.West);
            inputManager.AddButton(Keys.Right, Input.East);
            inputManager.AddButton(Keys.OemPeriod, Input.None);
            inputManager.AddButton(Keys.OemComma, Input.Pickup);

            inputManager.AddButton(Keys.NumPad2, Input.South);
            inputManager.AddButton(Keys.NumPad8, Input.North);
            inputManager.AddButton(Keys.NumPad4, Input.West);
            inputManager.AddButton(Keys.NumPad6, Input.East);
            inputManager.AddButton(Keys.NumPad9, Input.NorthEast);
            inputManager.AddButton(Keys.NumPad7, Input.NorthWest);
            inputManager.AddButton(Keys.NumPad3, Input.SouthEast);
            inputManager.AddButton(Keys.NumPad1, Input.SouthWest);
            inputManager.AddButton(Keys.NumPad5, Input.None);

            TextSurface.RenderArea = new Rectangle(0, 0, viewWidth, viewHeight);
            playerEntity           = new BaseEntity(GameWorld.MessageLog);
            playerEntity.NAME      = "Player";
            playerEntity.AddComponent(new PlayerInput());
            playerEntity.AddComponent(new Inventory());
            playerEntity.AddComponent(new Actor(Color.Orange, Color.Black, mapLevel, 10, 10, 10, 10, '@'));
            playerEntity.AddComponent(new FOV());
            mapLevel.CameraFollow = playerEntity;

            testMob = new BaseEntity(GameWorld.MessageLog);
            testMob.AddComponent(new Actor(mapLevel));
            testMob.AddComponent(new AI());
            mapLevel.EntityContainer.Add(testMob);
            mapLevel.EntityContainer.Add(playerEntity);

            testMob.GetComponent <SpriteAnimation>(ComponentType.SpriteAnimation).Position      = mapLevel.MapData.GetWalkablePosition();
            playerEntity.GetComponent <SpriteAnimation>(ComponentType.SpriteAnimation).Position = mapLevel.MapData.GetWalkablePosition();
        }
Exemplo n.º 9
0
        private void UpdatePlayNum(MiniMapTeamPlayInfo data, MapLevel mapLevel, bool isNoTeamPlayer)
        {
            if (data.Num.Equals(_num) && data.Color.Equals(_color) && isNoTeamPlayer.Equals(_isNoTeamPlayer))
            {
                return;
            }
            _isNoTeamPlayer = isNoTeamPlayer;
            _num            = data.Num;
            _color          = data.Color;
            //刷新编号

            if (number.gameObject.activeSelf)
            {
                if (numberText)
                {
                    if (data.IsPlayer)
                    {
                        if (isNoTeamPlayer)
                        {
                            numberText.text = string.Empty;
                        }
                        else
                        {
                            numberText.text = data.Num.ToString();
                        }
                    }
                    else
                    {
                        numberText.text = data.Num.ToString();
                    }
                }
            }

            //刷新编号背景图
//            var temperBgSprite = SpriteComon.GetInstance().GetSpriteByName("mark");
//            if (bgImage.sprite != temperBgSprite)
//            {
//                bgImage.sprite = temperBgSprite;
//            }
            bgImage.color = data.Color;
        }
Exemplo n.º 10
0
    protected void setOnClickDelegates(MapLevel level)
    {
        switch (level.status)
        {
        case (MapLevel.EMapLevelsStatus.BOSS_LOCKED):
        case (MapLevel.EMapLevelsStatus.NORMAL_LOCKED):
            level.OnClickNotification += OnLevelLockedPressed;
            break;

        case (MapLevel.EMapLevelsStatus.BOSS_PASSED):
        case (MapLevel.EMapLevelsStatus.NORMAL_PASSED):
        case (MapLevel.EMapLevelsStatus.BOSS_UNLOCKED):
        case (MapLevel.EMapLevelsStatus.NORMAL_REACHED):
            level.OnClickNotification += OnLevelUnlockedPressed;
            break;

        case (MapLevel.EMapLevelsStatus.BOSS_REACHED):
            level.OnClickNotification += OnBossReachedPressed;
            break;
        }
    }
Exemplo n.º 11
0
        /// <summary>
        ///     マップファイルを遅延読み込みする
        /// </summary>
        /// <param name="level">マップレベル</param>
        /// <param name="handler">読み込み完了イベントハンドラ</param>
        public static void LoadAsync(MapLevel level, RunWorkerCompletedEventHandler handler)
        {
            // 読み込み禁止ならば何もしない
            if (ForbidLoad)
            {
                return;
            }

            // 既に読み込み済みならば完了イベントハンドラを呼び出す
            if (IsLoaded[(int)level])
            {
                handler?.Invoke(null, new RunWorkerCompletedEventArgs(level, null, false));
                return;
            }

            // 読み込み完了イベントハンドラを登録する
            BackgroundWorker worker = Workers[(int)level];

            if (handler != null)
            {
                worker.RunWorkerCompleted += handler;
                worker.RunWorkerCompleted += OnMapWorkerRunWorkerCompleted;
            }

            // 読み込み途中ならば戻る
            if (worker.IsBusy)
            {
                return;
            }

            // ここで読み込み済みならば既に完了イベントハンドラを呼び出しているので何もせずに戻る
            if (IsLoaded[(int)level])
            {
                return;
            }

            // 遅延読み込みを開始する
            worker.DoWork += MapWorkerDoWork;
            worker.RunWorkerAsync(level);
        }
Exemplo n.º 12
0
    protected void OnLevelUnlockedPressed(MapLevel pressed)
    {
        if (cantPlay)
        {
            return;
        }

        PersistentData.GetInstance().fromLevelsToGame = true;
        PersistentData.GetInstance().setLevelNumber(int.Parse(pressed.lvlName));
        PersistentData.GetInstance().lastLevelPlayedName = pressed.lvlName;
        PersistentData.GetInstance().nextLevelIsReached  = pressed.nextLevelIsReached;

        goalManager.initializeFromString(PersistentData.GetInstance().currentLevel.goal);
        int starsReached = (DataManagerKubera.GetInstance() as DataManagerKubera).getLevelStars(PersistentData.GetInstance().currentLevel.name);

        setGoalPopUp(goalManager.currentCondition, goalManager.getGoalConditionParameters(), PersistentData.GetInstance().currentLevel.name, starsReached);

        //HACK temporal para probar el leaderboard
        KuberaSyncManger.GetCastedInstance <KuberaSyncManger>().getLevelLeaderboard(PersistentData.GetInstance().currentLevel.name);

        //SceneManager.LoadScene ("Game");
    }
Exemplo n.º 13
0
    public float getPosByLevel(MapLevel mapLevel)
    {
        float levelPosition = 0;

        levelPosition = fixHeight + mapLevel.transform.localPosition.y;

        levelPosition = levelPosition / fixMin;

        if (levelPosition > 1)
        {
            levelPosition = 1;
        }
        else if (levelPosition < 0)
        {
            levelPosition = 0;
        }

        //float sizeOfLevelIcon = mapLevel.GetComponent<RectTransform> ().anchorMax.y - mapLevel.GetComponent<RectTransform> ().anchorMin.y;
        //mapLevel.GetComponent<RectTransform> ().anchorMin.y - sizeOfLevelIcon;

        return(levelPosition);
    }
Exemplo n.º 14
0
        /// <summary>
        /// Assgins all wall and walkable cells on a maplevel
        /// </summary>
        /// <param name="maplevel"></param>
        private static void AssignCellTypes(MapLevel maplevel, Point3D[] points)
        {
            var count   = 0;
            var blcount = 0;
            var watch   = System.Diagnostics.Stopwatch.StartNew();

            var wrapped = new List <Point3DDataPoint>(); // Wrapp Point3D

            points.ToList().ForEach(p => wrapped.Add(new Point3DDataPoint(p)));

            PointQuadTree <Point3DDataPoint> qtree = new PointQuadTree <Point3DDataPoint>();

            qtree.AddBulk(wrapped);

            for (int k = 0; k < MapGrid.Length; k++)
            {
                for (int l = 0; l < MapGrid[k].Length; l++)
                {
                    var cell      = MapGrid[k][l];
                    var rectquery = qtree.GetObjects(cell.Rect); //Get points in a cell
                    if (rectquery.Count >= MIN_CELL_QUERY)
                    {
                        cell.Blocked = true; blcount++;
                        maplevel.WallCells.Add(cell);
                    }
                    else
                    {
                        cell.Blocked = false; count++;
                    }
                }
            }


            Console.WriteLine("Wall cells: " + blcount + " " + "Free cells: " + count);
            watch.Stop();
            var sec = watch.ElapsedMilliseconds / 1000.0f;

            Console.WriteLine("Time to assign cells: " + sec);
        }
Exemplo n.º 15
0
 private void RefreshMap()
 {
     for (int j = 0; j < gStages[MainMenuController.Instance.stageSelected - 1].transform.childCount; j++)
     {
         MapLevelControll levelControll = gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(j).GetComponent <MapLevelControll>();
         MapLevel         mapLevel      = DataUtils.GetMapByIndex(levelControll.stageIndex, levelControll.mapIndex);
         if (mapLevel.hasComplete || j == 0)
         {
             if (j < gStages[MainMenuController.Instance.stageSelected - 1].transform.childCount - 1 || j == 0)
             {
                 gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(j + 1).GetComponent <MapLevelControll>().canPlay = true;
                 levelControll.canPlay = true;
             }
         }
         else
         {
             levelControll.canPlay = false;
             gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(j).GetComponent <MapLevelControll>().canPlay = false;
         }
         levelControll.RefreshMap();
     }
 }
Exemplo n.º 16
0
    private void TeleportToLevelInternal(int number, bool isQuietly)
    {
        MapLevel mapLevel = GetLevel(number);

        if (mapLevel.IsLocked)
        {
            Debug.Log(string.Format("Can't jump to locked level number {0}.", number));
        }
        else
        {
            WaypointsMover.transform.position = mapLevel.PathPivot.transform.position;               //need to fix in the map plugin
            CharacterLevel = mapLevel;

            Vector3 difference = mapLevel.transform.position - WaypointsMover.transform.position;
            float   rotationZ  = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
            WaypointsMover.transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotationZ);

            if (!isQuietly)
            {
                RaiseLevelReached(number);
            }
        }
    }
Exemplo n.º 17
0
        /// <summary>
        ///     マップファイルを読み込む
        /// </summary>
        /// <param name="level">マップレベル</param>
        public static void Load(MapLevel level)
        {
            // 読み込み禁止ならば何もしない
            if (ForbidLoad)
            {
                return;
            }

            // 既に読み込み済みならば何もしない
            if (IsLoaded[(int)level])
            {
                return;
            }

            // 読み込み途中ならば完了を待つ
            if (Workers[(int)level].IsBusy)
            {
                WaitLoading(level);
                return;
            }

            LoadFiles(level);
        }
Exemplo n.º 18
0
        private void cboLevel_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cboLevel.SelectedIndex)
            {
            case 0:
                currentLevel    = LevelIndex.None;
                currentMapLevel = MapLevel.Blank;
                break;

            case 1:
                currentLevel    = LevelIndex.Brinstar;
                currentMapLevel = MapLevel.Brinstar;
                break;

            case 2:
                currentLevel    = LevelIndex.Norfair;
                currentMapLevel = MapLevel.Norfair;
                break;

            case 3:
                currentLevel    = LevelIndex.Ridley;
                currentMapLevel = MapLevel.Ridley;
                break;

            case 4:
                currentLevel    = LevelIndex.Kraid;
                currentMapLevel = MapLevel.Kraid;
                break;

            case 5:
                currentLevel    = LevelIndex.Tourian;
                currentMapLevel = MapLevel.Tourian;
                break;
            }

            SelectLevel();
        }
Exemplo n.º 19
0
        /// <summary>
        /// 难度转换,枚举转索引。
        /// </summary>
        public int MaxLvEnumTransInt(MapLevel eLv)
        {
            switch (eLv)
            {
            case MapLevel.Easy:
                return(0);

            case MapLevel.Medium:
                return(1);

            case MapLevel.Difficult:
                return(2);

            case MapLevel.Nightmare:
                return(3);

            case MapLevel.Hell:
                return(4);

            case MapLevel.Endless:
                return(5);
            }
            return(0);
        }
Exemplo n.º 20
0
 //------------------------------------------------------------------------------------------------------------
 //                                                  Constructor
 //------------------------------------------------------------------------------------------------------------
 public Box(MapLevel map, int w, int h) : base(map, "Cupboard_LargeC.png 2x2.png", 1)
 {
     this.width  = w;
     this.height = h;
     SetOrigin(0, 0);
 }
Exemplo n.º 21
0
 protected void OnLevelLockedPressed(MapLevel pressed)
 {
     Debug.LogWarning("NIVEL BLOQUEADO");
 }
Exemplo n.º 22
0
    protected void setParalaxManager()
    {
        if (currentLevel == null)
        {
            currentLevel = mapLevels [0];
            PersistentData.GetInstance().lastLevelReachedName = currentLevel.fullLvlName;
        }

        if (first)
        {
            paralaxManager.setPosLastOrFirst(true);
            first = false;
        }
        else if (last)
        {
            paralaxManager.setPosLastOrFirst(false);
            last = false;
        }
        else if (fromGame)
        {
            if (PersistentData.GetInstance().fromLoose)
            {
                popUpManager.activatePopUp("retryPopUp");
                stopInput(true);

                (DataManagerKubera.GetInstance() as DataManagerKubera).incrementLevelAttemp(PersistentData.GetInstance().currentLevel.name);

                if (LifesManager.GetInstance().currentUser.playerLifes == 0)
                {
                    KuberaAnalytics.GetInstance().registerLevelWhereReached0Lifes(PersistentData.GetInstance().currentLevel.name);
                }
            }
            else
            {
                int starsReached = PersistentData.GetInstance().lastPlayedLevelStars;                //;(DataManagerKubera.GetInstance () as DataManagerKubera).getLevelStars (PersistentData.GetInstance ().currentLevel.name);
                int pointsMade   = PersistentData.GetInstance().lastPlayedLevelPoints;               //(DataManagerKubera.GetInstance () as DataManagerKubera).getLevelPoints (PersistentData.GetInstance ().currentLevel.name);

                goalManager.initializeFromString(PersistentData.GetInstance().currentLevel.goal);

                string levelName = PersistentData.GetInstance().currentLevel.name;
                for (int i = 0; i < levelName.Length; i++)
                {
                    if (levelName [i] == '0')
                    {
                        levelName = levelName.Remove(i, 1);
                        i--;
                    }
                    else
                    {
                        break;
                    }
                }


                goalAfterGame.setGoalPopUpInfo(starsReached, levelName, pointsMade.ToString(), PersistentData.GetInstance().currentWorld);
                popUpManager.activatePopUp("goalAfterGame");
                stopInput(true);
            }

            if (toStairs)
            {
                paralaxManager.setPosByCurrentLevel(paralaxManager.getPosByLevel(mapLevels[mapLevels.Count - 1]));
            }
            else
            {
                paralaxManager.setPosByCurrentLevel(paralaxManager.getPosByLevel(lastLevelPlayed));
            }
        }
        else
        {
            //print ("currentLevel " + currentLevel);
            //paralaxManager.setPosByCurrentLevel (paralaxManager.getPosByLevel( mapLevels [0]));
            paralaxManager.setPosByCurrentLevel(paralaxManager.getPosByLevel(currentLevel));
        }
    }
Exemplo n.º 23
0
    protected void settingMapLevelStatus(MapLevel level)
    {
        DataManagerKubera DataManager = (DataManagerKubera.GetInstance() as DataManagerKubera);

        if (level.isBoss)
        {
            /*//facebook
             * level.status = MapLevel.EMapLevelsStatus.BOSS_REACHED;
             * return;*/

            if (DataManager.isLevelPassed(level.lvlName))
            {
                level.status = MapLevel.EMapLevelsStatus.BOSS_PASSED;
            }
            else
            {
                if (DataManager.isLevelReached(level.lvlName))
                {
                    if (!DataManager.isLevelLocked(level.lvlName))
                    {
                        level.status = MapLevel.EMapLevelsStatus.BOSS_UNLOCKED;
                    }
                    else
                    {
                        level.status = MapLevel.EMapLevelsStatus.BOSS_REACHED;
                    }
                }
                else
                {
                    if (AllLevelsUnlocked)
                    {
                        level.status = MapLevel.EMapLevelsStatus.BOSS_REACHED;
                    }
                    else
                    {
                        level.status = MapLevel.EMapLevelsStatus.BOSS_LOCKED;
                    }
                }
            }
        }
        else
        {
            if (DataManager.isLevelPassed(level.lvlName))
            {
                level.status = MapLevel.EMapLevelsStatus.NORMAL_PASSED;
            }
            else
            {
                if (DataManager.isLevelReached(level.lvlName))
                {
                    level.status = MapLevel.EMapLevelsStatus.NORMAL_REACHED;
                }
                else
                {
                    if (AllLevelsUnlocked)
                    {
                        level.status = MapLevel.EMapLevelsStatus.NORMAL_REACHED;
                    }
                    else
                    {
                        level.status = MapLevel.EMapLevelsStatus.NORMAL_LOCKED;
                    }
                }
            }
        }

        switch (DataManager.getLevelStars(level.lvlName))
        {
        case 1:
            level.stars = MapLevel.EMapLevelStars.ONE;
            break;

        case 2:
            level.stars = MapLevel.EMapLevelStars.TWO;
            break;

        case 3:
            level.stars = MapLevel.EMapLevelStars.THREE;
            break;

        default:
            level.stars = MapLevel.EMapLevelStars.NONE;
            break;
        }
    }
Exemplo n.º 24
0
 public void OnEnable()
 {
     _mapLevel = target as MapLevel;
     DeletePendingGameObject();
 }
Exemplo n.º 25
0
    protected void setLevelsData()
    {
        bool isConectedToFacebook = KuberaSyncManger.GetCastedInstance <KuberaSyncManger>().facebookProvider.isLoggedIn;
        bool friendInfoInWorld    = false;

        if (isConectedToFacebook)
        {
            friendInfoInWorld = friendsOnWorldManager.existAnyFriendInWorld(currentWorld.ToString());
        }

        for (int i = 0; i < mapLevels.Count; i++)
        {
            if (isConectedToFacebook && friendInfoInWorld)
            {
                FriendInfo friendInfo = isThereAnyFriendOnLevel(currentWorld, mapLevels [i].lvlName);

                if (friendInfo != null)
                {
                    mapLevels [i].updateFacebookFriendPicture(friendInfo);
                }
                else
                {
                    mapLevels [i].noFriend();
                }
            }
            else
            {
                mapLevels [i].noFriend();
            }

            if (mapLevels[i].status == MapLevel.EMapLevelsStatus.NORMAL_REACHED ||
                mapLevels[i].status == MapLevel.EMapLevelsStatus.NORMAL_PASSED ||
                mapLevels[i].status == MapLevel.EMapLevelsStatus.BOSS_UNLOCKED ||
                mapLevels[i].status == MapLevel.EMapLevelsStatus.BOSS_REACHED ||
                mapLevels[i].status == MapLevel.EMapLevelsStatus.BOSS_PASSED)
            {
                currentLevel = mapLevels [i];
                PersistentData.GetInstance().lastLevelReachedName = currentLevel.fullLvlName;
                if (fromGame && PersistentData.GetInstance().currentLevel.name == mapLevels[i].fullLvlName)
                {
                    lastLevelPlayed = mapLevels [i];

                    if (i + 1 != mapLevels.Count)
                    {
                        nextLevel = mapLevels [i + 1];
                    }
                }

                if (mapLevels[i].status == MapLevel.EMapLevelsStatus.BOSS_PASSED && i + 1 == mapLevels.Count)
                {
                    if (currentWorld + 1 <= worldsCount)
                    {
                        toStairs = true;
                    }
                    toNextLevel = false;
                }
            }
        }

        if (DataManagerKubera.GetCastedInstance <DataManagerKubera>().currentUser.maxWorldReached() <= currentWorld)
        {
            if (toNextLevel)
            {
                lastLevelPlayed.myProgress(isConectedToFacebook);
            }
            else
            {
                if (toStairs && !PersistentData.GetInstance().stairsUnblocked)
                {
                    isInLastLevelWorld = true;
                    PersistentData.GetInstance().stairsUnblocked = true;
                    currentLevel.myProgress(isConectedToFacebook);
                }
                else if (!toStairs)
                {
                    PersistentData.GetInstance().stairsUnblocked = false;
                    currentLevel.myProgress(isConectedToFacebook);
                }
            }
        }
    }
Exemplo n.º 26
0
    private void FetchStageData()
    {
        ///Check if StageData not yet init
        if (!DataUtils.StageHasInit())
        {
            #region Stage Data not yet init
            List <DataStage> lstStages = new List <DataStage>();
            for (int i = 0; i < gStages.Length; i++)
            {
                DataStage dataStage = new DataStage();
                dataStage.stageName = gStages[i].name;
                if (i == 0)
                {
                    dataStage.stageHasUnlock = true;
                }
                else
                {
                    dataStage.stageHasUnlock = false;
                }
                for (int j = 0; j < gStages[i].transform.childCount; j++)
                {
                    MapLevelControll levelControll = gStages[i].transform.GetChild(j).GetComponent <MapLevelControll>();
                    MapLevel         mapLevel      = new MapLevel();
                    mapLevel.levelID = levelControll.stageIndex + "_" + levelControll.mapIndex;
                    if (i == 0 && j == 0)
                    {
                        levelControll.canPlay = true;
                    }

                    #region Add Mission to MapLevel
                    Mission mission_ = DataController.instance.allMission[i].missionData[j];
                    AddMissionToMap(mapLevel, mission_.mission1name);
                    AddMissionToMap(mapLevel, mission_.mission2name);
                    AddMissionToMap(mapLevel, mission_.mission3name);
                    #endregion

                    #region Add Rewards to MapLevel
                    if (mapLevel.rewards == null)
                    {
                        mapLevel.rewards = new List <LVReward>();
                    }
                    AddRewardsToMap(i + 1, j + 1, mapLevel.rewards);
                    #endregion

                    #region Add Map Level to Stage
                    if (dataStage.levels == null)
                    {
                        dataStage.levels = new List <MapLevel>();
                    }

                    if (!dataStage.levels.Contains(mapLevel))
                    {
                        dataStage.levels.Add(mapLevel);
                    }
                    #endregion


                    levelControll.SwitchColor();
                    levelControll.CheckMapStars();

                    levelControll.gameObject.SetActive(true);
                }

                if (!lstStages.Contains(dataStage))
                {
                    lstStages.Add(dataStage);
                }
            }
            string jSave = JsonMapper.ToJson(lstStages);
            DataUtils.SaveStage(jSave);
            DataUtils.FillAllStage();
            #endregion
        }
        else///Check if StageData has init
        {
            for (int j = 0; j < gStages[MainMenuController.Instance.stageSelected - 1].transform.childCount; j++)
            {
                MapLevelControll levelControll = gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(j).GetComponent <MapLevelControll>();
                MapLevel         mapLevel      = DataUtils.GetMapByIndex(levelControll.stageIndex, levelControll.mapIndex);
                if (mapLevel.hasComplete)
                {
                    if (j < gStages[MainMenuController.Instance.stageSelected - 1].transform.childCount - 1)
                    {
                        gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(j + 1).GetComponent <MapLevelControll>().canPlay = true;
                        levelControll.canPlay = true;
                    }

                    if (levelControll.mapIndex == 7 && !DataUtils.StageHardHasInit())
                    {
                        // DataUtils.UnlockHardMode();
                        DataUtils.UnlockHardMode(levelControll.stageIndex);
                    }
                }
                else
                {
                    gStages[MainMenuController.Instance.stageSelected - 1].transform.GetChild(0).GetComponent <MapLevelControll>().canPlay = true;
                }
                levelControll.gameObject.SetActive(true);
            }

            //if (StageHardHasInit())
            //DataUtils.FillAllStageHard();
        }
    }
Exemplo n.º 27
0
 public void Update(MiniMapTeamPlayInfo data, float rate, Vector2 selfPlayPos, float miniMapRepresentWHByRice, MapLevel mapLevel, bool isNoTeamPlayer)
 {
     UodateLocation(data, rate, ref selfPlayPos, miniMapRepresentWHByRice);
     UpdatePlayNum(data, mapLevel, isNoTeamPlayer);
     UpdatePlayStatue(ref selfPlayPos, data, mapLevel);
     UpdatePlayFaceDirection(data);
 }
Exemplo n.º 28
0
    private void SwitchMapLevel(int mapLevelKey)
    {
        var mapLevel = dataSavingManager.GetMapLevel(mapLevelKey);

        if (mapLevel == null)
        {
            int maxCount;
            if (mapLevelKey % 10 == 9)
            {
                maxCount = 1;
            }
            else
            {
                maxCount = (int)dataSavingManager.GetOtherValue("BlocksPerLevel");
            }

            mapLevel = new MapLevel
            {
                completed    = false,
                mapLevelKey  = mapLevelKey,
                currentCount = 0,
                maxCount     = maxCount
            };

            dataSavingManager.AddMapLevel(mapLevelKey, mapLevel);

            if (mapLevelKey == 101)
            {
                EventManager.TriggerEvent("TogglePrestige", true);
            }
            else if (mapLevelKey == 10)
            {
                EventManager.TriggerEvent("UnlockedAuto");
                dataSavingManager.SetOtherValue("UnlockedAuto", true);
                dataSavingManager.Save();
            }

            dataSavingManager.SetOtherValue("HighestLevelReached", mapLevelKey);
            dataSavingManager.Save();
            EventManager.TriggerEvent("MiscStatsUpdate");
        }

        currentMapLevel = mapLevel;
        dataSavingManager.SetOtherValue("CurrentMapLevel", mapLevelKey);
        dataSavingManager.Save();

        int mapLevelRemainder = mapLevelKey % (int)dataSavingManager.GetOtherValue("LevelPerStage");

        if (mapLevelRemainder == 0)
        {
            SwitchStage(mapLevelKey % 100);
        }
        else if (mapLevelRemainder == (int)dataSavingManager.GetOtherValue("LevelPerStage") - 1)
        {
            SwitchStage((mapLevelKey % 100) - mapLevelRemainder);
        }

        blockHealth     = blockHealthFunc(mapLevelKey);
        blockKillReward = killRewardFunc(mapLevelKey);

        if (mapLevelKey % 10 == 9)
        {
            blockHealth     *= 15;
            blockKillReward *= 10;
            bossLevel        = true;
        }
        else
        {
            bossLevel = false;
        }

        if (currentMapLevel.mapLevelKey > 100)
        {
            blockKillPrestigeReward = prestigeKillRewardFunc(currentMapLevel.mapLevelKey);
        }
        else
        {
            blockKillPrestigeReward = 0;
        }

        EventManager.TriggerEvent("LoadMapLevel", currentMapLevel);

        EventManager.TriggerEvent("UpdateLevelUI", currentMapLevel);

        EventManager.TriggerEvent("BlockStatsUpdate", Tuple.Create(blockHealth, blockKillReward));
    }
Exemplo n.º 29
0
        public void Update(List <MiniMapTeamPlayInfo> TeamInfos, Vector2 selfPlayPos, float rate, float miniMapRepresentWHByRice, MapLevel mapLevel)
        {
            if (TeamInfos.Count > 0)
            {
                isNoTeamPlayer = (TeamInfos.Count == 1) ? true : false;
                for (int i = 0; i < TeamInfos.Count; i++)
                {
                    MiniMapTeamPlayInfo data = TeamInfos[i];
                    PlayerItem          playerItem;
                    playerItemDic.TryGetValue(data.PlayerId, out playerItem);
                    if (playerItem == null)
                    {
                        playerItem = new PlayerItem(GameObject.Instantiate(playItemModel, tran, true));
                        playerItemDic[data.PlayerId] = playerItem;
                    }

                    playerItem.IsOutDate = false;
                    playerItem.Update(data, rate, selfPlayPos, miniMapRepresentWHByRice, mapLevel, isNoTeamPlayer);
                }
            }

            ClearOutDateItem();
        }
Exemplo n.º 30
0
        private void UpdatePlayStatue(ref Vector2 referPos, MiniMapTeamPlayInfo data, MapLevel mapLevel)
        {
            var shiftVec = data.Pos.ShiftedUIVector2();

            if (referPos.Equals(_referPos) && data.Statue.Equals(_miniMapPlayStatue) &&
                shiftVec.Equals(_infoPos) && data.ShootingCount.Equals(_shootingCount))
            {
                return;
            }
            _referPos          = referPos;
            _miniMapPlayStatue = data.Statue;
            _infoPos           = shiftVec;
            _shootingCount     = data.ShootingCount;

            switch (data.Statue)
            {
            case MiniMapPlayStatue.NORMAL:        //常态
            {
                UIUtils.SetActive(number, !MapLevel.Min.Equals(mapLevel));
                UIUtils.SetActive(stateIcon, false);
                if (data.IsPlayer)
                {
                    UIUtils.SetActive(loftIcon, false);
                }
                else
                {
//                            UIUtils.SetActive(loftIcon, true);
//                            var temperSprite = SpriteComon.GetInstance().GetSpriteByName("Loft_icon");
//                            if (temperSprite != null && loftIconImage.sprite != temperSprite)
//                            {
//                                loftIconImage.sprite = temperSprite;
//                            }
//
//                            if (data.Pos.y > referPos.y)       //上方
//                            {
//                                if (loftIcon.transform.localScale != Vector3.one)
//                                    loftIcon.transform.localScale = Vector3.one;
//                            }
//                            else if (data.Pos.y <= referPos.y)   //下方
//                            {
//                                if (loftIcon.transform.localScale != new UnityEngine.Vector3(1, -1, 1))
//                                    loftIcon.transform.localScale = new UnityEngine.Vector3(1, -1, 1);
//                            }
                }

                if (data.ShootingCount > 0)           //在射击状态下
                {
                    if (!tranCTween.ContainsKey(tran) || tranCTween[tran] == null)
                    {
                        var temperTween = UIUtils.CallTween(1, 1.5f, (value) =>
                            {
                                bgRectTf.localScale = new UnityEngine.Vector3((float)value, (float)value, 1.0f);
                            },
                                                            (value) =>
                            {
                                bgRectTf.localScale = Vector3.one;
                                data.ShootingCount--;
                                tranCTween[tran].Kill();
                                tranCTween[tran] = null;
                            },
                                                            0.1f);

                        if (!tranCTween.ContainsKey(tran))
                        {
                            tranCTween.Add(tran, temperTween);
                        }
                        else
                        {
                            tranCTween[tran] = temperTween;
                        }
                    }
                }
                else
                {
                    if (tranCTween.ContainsKey(tran) && tranCTween[tran] != null)
                    {
                        tranCTween[tran].Kill();
                        tranCTween[tran] = null;
                    }
                    if (bgRectTf.localScale != Vector3.one)
                    {
                        bgRectTf.localScale = Vector3.one;
                    }
                }
            }
            break;

            case MiniMapPlayStatue.TIAOSAN:        //跳伞
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_parachute");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.ZAIJU:        //载具
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_drive");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.HURTED:        //受伤
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_hurt");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            case MiniMapPlayStatue.DEAD:        //死亡
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, true);

                var temperSprite = SpriteComon.GetInstance().GetSpriteByName("icon_die");
                if (temperSprite != null && stateIconImage.sprite != temperSprite)
                {
                    stateIconImage.sprite = temperSprite;
                }
            }
            break;

            default:
            {
                UIUtils.SetActive(number, false);
                UIUtils.SetActive(loftIcon, false);
                UIUtils.SetActive(stateIcon, false);
            }
            break;
            }
        }