예제 #1
0
        //авторизация
        void AuthenticateMP()
        {
            //если уже вошел - создаём игру
            if (IsAuthenticated)
            {
                CreateGame();
            }
            else             //авторизуемся в сервисах
            {
                Social.localUser.Authenticate((bool success) =>
                {
                    if (success)
                    {
                        LoginUpdateEvent?.Invoke();
                        ManagerUI.ShowMsg("Authentication successeded");

                        CreateGame();
                    }
                    else
                    {
                        ManagerUI.ShowMsg("Authentication failed");
                        //событие завершения инициализации (прячем прогресс бар)
                        InitMultiplayerEvent?.Invoke(false);
                    }
                });
            }
        }
        void Start()
        {
            MobileAds.Initialize(APP_ID);

            //получаем всё менеджеры
            gameMng  = GameManager.Instance;
            inputMng = InputManager.Instance;
            uiMng    = ManagerUI.Instance;

            //подписка на события
            Subscribe_Banner();
            Subscribe_Interstitial();
            Subscribe_RewaedVideo();

            //при выходе из игры уничножаем рекламу
            gameMng.QuitGameEvent += () =>
            {
                if (menuBanner != null)
                {
                    menuBanner.Destroy();
                }
                if (interstitialAd != null)
                {
                    interstitialAd.Destroy();
                }
            };
        }
예제 #3
0
        void InitMultiplayer()
        {
            if (State != MultiplayerState.PREPARATION)
            {
                ManagerUI.ShowMsg("Room already created!");
                return;
            }

            //событие, что начата инициализация мультиплеера
            InitMultiplayerEvent?.Invoke(true);

            //если включён тест, то запускаем в тестовом режиме
            if (GameManager.Config.isTestMP)
            {
                TestLoadRoom();                 //test
            }
            else
            {
                try
                {
                    AuthenticateMP();
                }
                catch (Exception e)
                {
                    AnalyticsEvent.Custom("Authenticate Multiplayer Exeption", new Dictionary <string, object>
                    {
                        { e.ToString(), e }
                    });
                }
            }
        }
예제 #4
0
        //вызывается при выходе из комнаты
        public void OnLeftRoom()
        {
            ManagerUI.ShowMsg("Exit game room");

            //убираем панель загрузки (если она была)
            InitMultiplayerEvent?.Invoke(false);

            //отсылаем событие об отключении от комнаты
            DisconectEvent?.Invoke();
        }
예제 #5
0
        //отсылает событие о настройке мультиплеера
        void MultiplayerSetup()
        {
            // Проверьте, не может ли устройство подключиться к Интернету
            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                ManagerUI.ShowMsg("No internet connection ...");
                return;
            }


            mp_gameSetting.actionItems = new Dictionary <GameActionType, int>();
            MultiplayerSetupEvent?.Invoke();
        }
예제 #6
0
 //подключение к комнате
 public void OnRoomConnected(bool success)
 {
     if (success)
     {
         LevelsResetValue();                 //сбрасываем индес запускаемого уровня на начальный
         PreparationMultiplayerGame();
     }
     else
     {
         ManagerUI.ShowMsg("Connection to the room failed");
         MultiplayerGameExit();
         InitMultiplayerEvent?.Invoke(false);                 //отключаем прогрессбар
     }
 }
예제 #7
0
        void Login()
        {
            //если уже вошел - пропускаем
            if (IsAuthenticated)
            {
                return;
            }

            Social.localUser.Authenticate((bool success) =>
            {
                if (success)
                {
                    SetSavedGameClient();
                    LoginUpdateEvent?.Invoke();
                    ManagerUI.ShowMsg("Login successful");
                }
                else
                {
                    ManagerUI.ShowMsg("Login failed :(");
                }
            });
        }
        //Покупка
        public void PurchaseInGameProduct(int indexProduct, bool purchaseStatus)
        {
            var item = data.itemBalls[indexProduct];

            if (item == null)
            {
                Debug.Log(string.Format("There is no such product {0}", indexProduct));
                return;
            }

            //если товар куплен - то просто выбираем его
            if (purchaseStatus)
            {
                ChangePurchasedBallEvent?.Invoke(indexProduct);
                ManagerUI.ShowMsg("^_^ Item is buyed ^_^");
                AudioManager.Instance.Play(StaticPrm.SOUND_CLICK_BUTTON);

                return;
            }
            else //товар не куплен - пробуем купить, если хватит средств
            {
                var cost    = data.itemBalls[indexProduct].costItem;
                var myMoney = GameManager.CurrentGame.MoneyCount;

                if (myMoney >= cost)
                {
                    var ball = data.itemBalls[indexProduct];
                    ball.isBuyed = true; //отмечаем, что товар купили
                    BuyNewBallEvent?.Invoke(indexProduct, cost);
                    AudioManager.Instance.Play(StaticPrm.SOUND_PURCHASE);
                }
                else
                {
                    ManagerUI.ShowMsg("No gems :(((");
                    AudioManager.Instance.Play(StaticPrm.SOUND_NO_MONEY);
                }
            }
        }
예제 #9
0
        //записывает данные старта приложения
        void RememberAppStart()
        {
            CurrentGame.StatisticGame.CountLaunchApp++;             //добавляем счётчик запусков приложения

            var lastDate = DateTime.Parse(CurrentGame.DateLastVisit);
            var diff     = DateTime.Now - lastDate;

            //если разница в один день - увелициваем серию
            if (diff.Days == 1)
            {
                CurrentGame.StatisticGame.DailyGameSeries++;
            }
            else
            {
                //обнуляем счётчик серии дней
                CurrentGame.StatisticGame.DailyGameSeries = 0;
            }

            //награда за новый запуск (если прошло больше суток)
            if (diff.Days >= 1)
            {
                RewardPlayer(RewardType.EVERYDAY);
            }

            //проверка на достижение
            CheckingPlayingSeries();

            //записываем текущую дату
            CurrentGame.DateLastVisit = DateTime.Now.ToString();
            SaveGame();


            //сообщение об количестве дней которое игрок отсутствовал
            ManagerUI.ShowMsg(string.Format("You were absent: [{0}] days [{1}] h [{2}] min",
                                            diff.Days, diff.Hours, diff.Minutes));
        }
예제 #10
0
 //тестовая загрузка кумнаты для игры по сети
 void TestLoadRoom()
 {
     ManagerUI.ShowMsg("Test multiplayer in editor");
     StartCoroutine(TestConnectRoom(3f));
 }
예제 #11
0
 //вызывается при отключении одного из участников
 public void OnPeersDisconnected(string[] participantIds)
 {
     ManagerUI.ShowMsg("Opponent left the room");
     MultiplayerGameExit();
 }
예제 #12
0
 //вызывается при подключении нового участника
 public void OnPeersConnected(string[] participantIds)
 {
     ManagerUI.ShowMsg("New player connected");
 }
예제 #13
0
 //вызывается при отклонении опонентом приглашения поиграть
 public void OnParticipantLeft(Participant participant)
 {
     ManagerUI.ShowMsg("Your invitation has been declined");
     MultiplayerGameExit();
 }