// Use this for initialization
    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            return;
        }
        MapGenerator mapGenerator = GetComponent <MapGenerator>();
        int          gameLv1      = MainData.Instance().gameLv1;
        int          gameLv2      = MainData.Instance().gameLv2;

        mapGenerator.Generate(gameLv1, gameLv2);
        ballNum = mapGenerator.GoalNum;
        goals   = GameObject.FindGameObjectsWithTag("Goal");
        balls   = GameObject.FindGameObjectsWithTag("Ball");
        walls   = GameObject.FindGameObjectsWithTag("Wall");
        if (ClearTime == 0f)
        {
            ClearTime = 1f;
        }
        _ui = FindObjectOfType <GameUIManager>();
        AudioManager.Instance().GameStart();
    }
    void Update()
    {
        if (instance != this)
        {
            return;
        }

        if (isGyroAble && !isPaused)
        {
            Delta = ReducedAcceleration();
            _ui.UpdateTexts(Delta.x, Delta.y, Delta.z);
        }
        else if (!isPaused)
        {
            Delta = DebugController();
            _ui.UpdateTexts(Delta.x, Delta.y, Delta.z);
        }

        AudioManager.Instance().BallRolling(Delta.magnitude);
        if (Input.GetKey(KeyCode.Escape) && esctime <= 0f)
        {
            GameRuleManager.Instance().EscapePushed();
            esctime = 0.5f;
        }

        time    += Time.deltaTime;
        esctime -= Time.deltaTime;
    }
Exemple #3
0
        public void Update(TimeSpan delta)
        {
            if (Host != null)
            {
                _hostUpdateTimer += delta;
                if (_hostUpdateTimer >= _hostUpdateTime)
                {
                    var lowest = GetPlayerWithLowestPing();
                    if (Host != lowest)
                    {
                        var diff = Math.Abs(Host.Session.UnreliablePing - lowest.Session.UnreliablePing);
                        if (diff >= PingDifferenceForChange)
                        {
                            ChangeHost(lowest);
                        }
                    }

                    _hostUpdateTimer = TimeSpan.Zero;
                }
            }

            if (IsChangingRules)
            {
                _changingRulesTimer += delta;
                if (_changingRulesTimer >= _changingRulesTime)
                {
                    GameRuleManager.MapInfo  = GameServer.Instance.ResourceCache.GetMaps()[Options.MatchKey.Map];
                    GameRuleManager.GameRule = RoomManager.GameRuleFactory.Get(Options.MatchKey.GameRule, this);
                    Broadcast(new SChangeRuleAckMessage(Options.Map <RoomCreationOptions, ChangeRuleDto>()));
                    IsChangingRules = false;
                }
            }

            GameRuleManager.Update(delta);
        }
    // Start is called before the first frame update
    void Start()
    {
        _instance = this;

        // 현재 플레이어의 팀 정보
        teamInfo = GameManager._instance.GetTeamInfo();

        // 각 팀 스타팅 위치를 담음
        startingList.Add(redPosition);
        startingList.Add(bluePosition);

        // 캐릭터 생성
        CreatePlayer();

        // 인스펙터에서 설정하지 않았다면
        if (victoryTextObject == null)
        {
            // victoryText 를 찾음
            victoryTextObject = GameObject.Find("ExitGameText");

            // 존재하지 않는다면
            if (victoryTextObject == null)
            {
                // 로그에러 출력
                Debug.LogError("Have not (victory Text) gameObject");
            }
        }

        // 게임 종료시 보여줄 Text 숨김
        victoryTextObject.SetActive(false);
    }
 // one time run
 void Start()
 {
     aIController       = GetComponent <UnityEngine.AI.NavMeshAgent>();
     aIController.speed = speed;                                                                            //set speed
     GameRuleManager    = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameRuleManager>(); //find and set main manager
     cam = Camera.main;
 }
Exemple #6
0
    void Start()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            return;
        }
        XText  = transform.Find("XRateText").GetComponent <Text>();
        YText  = transform.Find("YRateText").GetComponent <Text>();
        ZText  = transform.Find("ZRateText").GetComponent <Text>();
        canvas = this.gameObject;
        Random.InitState(65819200);

        foreach (GameObject obj in GameRuleManager.Instance().GetBalls())
        {
            CreateHanger(obj, BallImage, new Vector3(0.6f, 0.6f, 0.6f));
        }

        foreach (GameObject obj in GameRuleManager.Instance().GetGoals())
        {
            CreateHanger(obj, GoalImage, new Vector3(1, 1.5f, 1));
        }

        foreach (GameObject obj in GameRuleManager.Instance().GetWalls())
        {
            CreateHanger(obj, WallImage[Random.Range(0, WallImage.Length)], new Vector3(0.75f, 0.75f, 0.75f));
        }
    }
Exemple #7
0
 void LateStart()
 {
     _GameRuleManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameRuleManager>();  //find and set main manager
     aIController     = GetComponent <UnityEngine.AI.NavMeshAgent>();
     cam = Camera.main;
     UpdatePlaceholders();
     UpdateSquadMembers();
 }
    // Start is called before the first frame update
    void Start()
    {
        // 퀵등록
        script = this;

        // 초기 셋팅
        AreaChange(0);
        SectionChange(0);
        cycleMaxSlider.value    = GameRule.cycleMax;
        playerCountSlider.value = GameRule.playerCount;
    }
 private void Awake()
 {
     if (instance)
     {
         Destroy(gameObject);
     }
     else
     {
         instance = this;
     }
 }
Exemple #10
0
        public void Update(TimeSpan delta)
        {
            try
            {
                if (!(RoomManager?.Contains(this) ?? false))
                {
                    return;
                }

                if (Players.Count == 0 || !TeamManager.Players.Any())
                {
                    if (Master.Room == this && !Master.IsLoggedIn())
                    {
                        RoomManager?.Remove(this);
                    }
                    return;
                }

                if (!(Master?.IsLoggedIn() ?? true) || Master?.Room != this)
                {
                    ChangeMasterIfNeeded(GetPlayerWithLowestPing(), true);
                    ChangeHostIfNeeded(GetPlayerWithLowestPing(), true);
                }

                if (IsChangingRules)
                {
                    _changingRulesTimer += delta;
                    if (_changingRulesTimer >= _changingRulesTime && IsChangingRulesCooldown != true)
                    {
                        RoomManager.Channel.BroadcastCencored(new RoomChangeRoomInfoAck2Message(GetRoomInfo()));
                        Broadcast(new RoomChangeRuleAckMessage(Options.Map <RoomCreationOptions, ChangeRuleDto>()));
                        Broadcast(new GameChangeStateAckMessage(GameState));
                        IsChangingRulesCooldown = true;
                    }

                    if (_changingRulesTimer >= _changingRulesTime.Add(TimeSpan.FromSeconds(3)))
                    {
                        IsChangingRules         = false;
                        IsChangingRulesCooldown = false;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.ToString());
            }

            GameRuleManager.Update(delta);
        }
Exemple #11
0
        public Room(RoomManager roomManager, uint id, RoomCreationOptions options, P2PGroup group)
        {
            RoomManager     = roomManager;
            Id              = id;
            Options         = options;
            TimeCreated     = DateTime.Now;
            TeamManager     = new TeamManager(this);
            GameRuleManager = new GameRuleManager(this);
            Group           = group;

            TeamManager.TeamChanged         += TeamManager_TeamChanged;
            GameRuleManager.GameRuleChanged += GameRuleManager_OnGameRuleChanged;
            GameRuleManager.MapInfo          = GameServer.Instance.ResourceCache.GetMaps()[options.MatchKey.Map];
            GameRuleManager.GameRule         = RoomManager.GameRuleFactory.Get(Options.MatchKey.GameRule, this);
        }
    void LateStart()
    {
        _rb              = GetComponent <Rigidbody>();
        _parentRb        = GetComponentInParent <Rigidbody>();
        _GameRuleManager = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameRuleManager>();  //find and set main manager
        cam              = Camera.main;

        startingCamRotation    = transform.rotation;
        startingPlayerRotation = transform.parent.rotation;

        camTargetRotation    = transform.rotation;
        playerTargetRotation = transform.parent.rotation;

        CheckForSquads();
    }
Exemple #13
0
        public void Update(TimeSpan delta)
        {
            if (Players.Count == 0)
            {
                return;
            }

            //if (Host != null)
            //{
            //    _hostUpdateTimer += delta;
            //    if (_hostUpdateTimer >= _hostUpdateTime)
            //    {
            //        var lowest = GetPlayerWithLowestPing();
            //        if (Host != lowest)
            //        {
            //            var diff = Math.Abs(Host.Session.UnreliablePing - lowest.Session.UnreliablePing);
            //            if (diff >= PingDifferenceForChange)
            //                ChangeHostIfNeeded(lowest, true);
            //        }
            //
            //        _hostUpdateTimer = TimeSpan.Zero;
            //    }
            //}

            if (IsChangingRules)
            {
                _changingRulesTimer += delta;
                if (_changingRulesTimer >= _changingRulesTime && IsChangingRulesCooldown != true)
                {
                    GameRuleManager.MapInfo  = GameServer.Instance.ResourceCache.GetMaps()[Options.MapID];
                    GameRuleManager.GameRule = RoomManager.GameRuleFactory.Get(Options.GameRule, this);
                    Broadcast(new RoomChangeRuleAckMessage(Options.Map <RoomCreationOptions, ChangeRuleDto>()));
                    Broadcast(new RoomChangeRuleFailAckMessage {
                        Result = 0
                    });
                    BroadcastBriefing();
                    IsChangingRulesCooldown = true;
                }

                if (_changingRulesTimer >= _changingRulesTime.Add(TimeSpan.FromSeconds(3)))
                {
                    IsChangingRules         = false;
                    IsChangingRulesCooldown = false;
                }
            }

            GameRuleManager.Update(delta);
        }
Exemple #14
0
 void OnTriggerExit(Collider collider)
 {
     if (collider.transform.name.Contains("Ball"))
     {
         if (!isChecked)
         {
             return;
         }
         GameRuleManager.Instance().GoalUnChecked(gameObject);
         //Destroy(gameObject);
         GetComponent <MeshFilter>().mesh         = Capsule;
         GetComponent <CapsuleCollider>().enabled = true;
         isChecked = false;
         AudioManager.Instance().GoalExited();
     }
 }
    private void Start()
    {
        if (ruleManager == null)
        {
            ruleManager = this;

            if (GameType == GameType.CLASSIC)
            {
                Thread.Sleep(2000);
                int c = 0;
                int i = 0;
                int j = 0;
                foreach (Unit unit in map.playerUnits)
                {
                    if (unit.GetType() == typeof(King))
                    {
                        i++;
                    }
                }

                foreach (Unit unit in map.enemyUnits)
                {
                    if (unit.GetType() == typeof(King))
                    {
                        j++;
                    }
                }

                if (i != 1 && j != 1)
                {
                    c++;
                }
                else if (i != 1 && j != 1 && c == 1000)
                {
                    Debug.LogError("There are not two kings present");
                }
            }

            DontDestroyOnLoad(ruleManager);
        }
        else
        {
            Destroy(this);
        }
    }
Exemple #16
0
        public Room(RoomManager roomManager, uint id, RoomCreationOptions options, P2PGroup group, Player creator)
        {
            RoomManager              = roomManager;
            Id                       = id;
            Options                  = options;
            TimeCreated              = DateTime.Now;
            TeamManager              = new TeamManager(this);
            GameRuleManager          = new GameRuleManager(this);
            VoteKickMgr              = new VoteKickManager(this);
            Group                    = group;
            Creator                  = creator;
            Master                   = creator;
            TeamManager.TeamChanged += TeamManager_TeamChanged;

            GameRuleManager.GameRuleChanged += GameRuleManager_OnGameRuleChanged;
            GameRuleManager.MapInfo          = GameServer.Instance.ResourceCache.GetMaps()[options.MapId];
            GameRuleManager.GameRule         = RoomManager.GameRuleFactory.Get(Options.GameRule, this);
        }
Exemple #17
0
        public void Update(AccurateDelta delta)
        {
            if (Disposed)
            {
                return;
            }

            try
            {
                if (!Players.Any())
                {
                    RoomManager.Remove(this);
                    return;
                }

                if (!(Master?.IsLoggedIn() ?? true) || Master?.Room != this)
                {
                    ChangeMasterIfNeeded(GetPlayerWithLowestPing(), true);
                    ChangeHostIfNeeded(GetPlayerWithLowestPing(), true);
                }

                if (!TeamManager.NoSpectatorPlayers.Any() && TeamManager.Players.Any())
                {
                    foreach (var spectator in TeamManager.Spectators)
                    {
                        TeamManager.ChangeMode(spectator, PlayerGameMode.Normal);
                    }
                }

                if (IsChangingRules)
                {
                    _changingRulesTimer += delta.delta;
                    if (_changingRulesTimer >= _changingRulesTime && !IsChangingRulesCooldown)
                    {
                        RoomManager.Channel.BroadcastCencored(new RoomChangeRoomInfoAck2Message(GetRoomInfo()));
                        Broadcast(new RoomChangeRuleAckMessage(Options.Map <RoomCreationOptions, ChangeRuleDto2>()));
                        Broadcast(new GameChangeStateAckMessage(GameState));
                        IsChangingRulesCooldown = true;
                    }

                    foreach (var player in _players.Values)
                    {
                        player.RoomInfo.LastMapID = (byte)Options.MapId;
                    }

                    if (_changingRulesTimer >= _changingRulesTime.Add(TimeSpan.FromSeconds(3)))
                    {
                        IsChangingRules         = false;
                        IsChangingRulesCooldown = false;
                    }
                }
                else
                {
                    foreach (var player in Players.Values.Where(x => !TeamManager.Players.Contains(x)))
                    {
                        TeamManager.Join(player);
                    }
                }

                if (VoteKickMgr.State == VoteKickManager.KickState.Execution)
                {
                    _voteKicktimer += delta.delta;
                    if (_voteKicktimer < _voteKickTime)
                    {
                        VoteKickMgr.Update();
                    }
                    else
                    {
                        _voteKicktimer = TimeSpan.Zero;
                        VoteKickMgr.Evaluate();
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.ToString());
            }

            GameRuleManager?.Update(delta);
        }
Exemple #18
0
 private void Awake()
 {
     I = this;
 }