Exemple #1
0
 // Use this for initialization
 void Start()
 {
     _game_manage = FindObjectOfType <als_game_misc>();
 }
        // Use this for initialization
        void Awake()
        {
            _update_action = new UnityAction[] {
                update__idle,
                update__select,
                update__open_new
            };

            _game_manage       = FindObjectOfType <als_game_misc>();
            _mini              = GameObject.FindGameObjectWithTag("Player").transform;
            _camera_follow     = GameObject.FindGameObjectWithTag("camera_follow").transform;
            _mini_token_green  = Resources.Load("prefab/mini_token_green", typeof(GameObject)) as GameObject;
            _mini_token_blue   = Resources.Load("prefab/mini_token_blue", typeof(GameObject)) as GameObject;
            _mini_token_yellow = Resources.Load("prefab/mini_token_yellow", typeof(GameObject)) as GameObject;


            // загрузка последнего уровня на котором играли из сэйва
            var s = als_save.g();

            if (s != null)
            {
                _selected = _new_select = s.last_played_level;
            }

            var pts = GameObject.FindGameObjectsWithTag("level_point");             // названия строго от level00 до level99

            if (_selected < 0 || _selected >= pts.Length)
            {
                _selected = _new_select = 0;
            }

            // список точек всех уровней и установка открытых уровней
            Array.Sort(pts, utils.compare_object_by_name);
            _points = new Transform[pts.Length];
            for (int i = 0; i < _points.Length; ++i)
            {
                _points[i] = pts[i].transform;
                if (!open_level(i) && _selected == i)
                {
                    _selected = _new_select = 0;
                }
            }

            // заполнение списка уровней, которые нужно открыть
            int total_got = s.token_total_got_count;

            for (int i = 0; i < s.level_arr.level_count; ++i)
            {
                var lvl = s.level_arr.level_at(i);
                if (lvl.opened ||
                    (lvl.open_reason.type == 0 && lvl.open_reason.count > total_got) ||
                    (lvl.open_reason.type == 1 && lvl.open_reason.count > s.token_green_got_count) ||
                    (lvl.open_reason.type == 2 && lvl.open_reason.count > s.token_blue_got_count) ||
                    (lvl.open_reason.type == 3 && lvl.open_reason.count > s.token_yellow_got_count) ||
                    (lvl.open_reason.type == 4 && lvl.open_reason.count > s.useable_items_got_count)
                    )
                {
                    continue;
                }

                _level2open.Add(i);
            }

            // заполнение общих заданий по карте меню
            s.fill_open_new_min();


            // mini
            set_mini_pos(_points[_selected].position);


            // если есть уровни для открытия, то переходим в режим открывания
            if (_level2open.Count > 0)
            {
                play_button.enabled     = false;
                update_action_id        = 2;
                _current_t              = 1.5f;
                _camera_follow.position = _points[_level2open[0]].position;
            }


            level_name.text       = als_lang_g_note.g().note(s.level_arr.level_at(_selected).name_id);
            txt_total_green.text  = s.token_green_got_count.ToString();
            txt_total_blue.text   = s.token_blue_got_count.ToString();
            txt_total_yellow.text = s.token_yellow_got_count.ToString();

            GC.Collect();
        }         // void Awake ()