예제 #1
0
        void Start()
        {
            m_targetingReticule = (GameObject)Instantiate((GameObject)Resources.Load("Prefabs/Game/" + "TargetReticule"), Vector3.zero, Quaternion.identity);
            m_bulletSpeed       = GConfigManager.GetFloatValue("BulletSpeed");
            if (m_bullet1Prefab == null)
            {
                m_bullet1Prefab = (GameObject)Resources.Load("Prefabs/Game/" + "Bullet01");
            }
            if (m_bullet2Prefab == null)
            {
                m_bullet2Prefab = (GameObject)Resources.Load("Prefabs/Game/" + "Bullet02");
            }

            if (m_bombPrefab1 == null)
            {
                m_bombPrefab1 = (GameObject)Resources.Load("Prefabs/Game/" + "Bomb01");
                m_bombPrefab2 = (GameObject)Resources.Load("Prefabs/Game/" + "Bomb02");
            }

            if (m_muzzleFlarePrefab == null)
            {
                m_muzzleFlarePrefab = (GameObject)Resources.Load("Prefabs/Game/" + "MuzzleFlare");
            }

            if (m_bombDropPrefab == null)
            {
                m_bombDropPrefab = (GameObject)Resources.Load("Prefabs/Game/" + "BombDrop");
            }

            m_targetingReticule.transform.Find("TargetSprite").GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, 0);
        }
예제 #2
0
        private void SetupTesterSettings()
        {
            List <string> items = new List <string>();

            items.Clear();
            items.Add("WEBSOCKET");
#if !UNITY_WEBGL
            items.Add("TCP");
            items.Add("UDP");
#endif
            m_protocolDropdown.ClearOptions();
            m_protocolDropdown.AddOptions(items);

            items.Clear();
            items.Add("Json string");
            items.Add("KeyValuePair string");
            items.Add("DataStream byte[]");

            // Only the host can change the compression settings
            m_compressionDropdown.interactable = (GCore.Wrapper.Client.ProfileId == BombersNetworkManager.LobbyInfo.OwnerProfileId);

            m_compressionDropdown.ClearOptions();
            m_compressionDropdown.AddOptions(items);

            m_protocolListSelection = GConfigManager.GetIntValue("RSConnectionType");
#if UNITY_WEBGL
            m_protocolDropdown.value = (int)RelayConnectionType.WEBSOCKET;
#else
            m_protocolDropdown.value = m_protocolListSelection;
#endif
            m_compressionDropdown.value = m_compressionListSelection;
            m_lobbyGameOptionsTester.SetActive(GPlayerMgr.Instance.PlayerData.IsTester);
        }
예제 #3
0
 public void Activate(int aBombID)
 {
     m_lifeTime = GConfigManager.GetFloatValue("BombPickupLifeTime");
     m_pickupID = aBombID;
     m_isActive = true;
     GetComponent <Rigidbody>().AddForce(GetRandomDirection() * 22, ForceMode.Impulse);
 }
예제 #4
0
 protected override void OnResumeStateImpl(bool wasPaused)
 {
     base.OnResumeStateImpl(wasPaused);
     BaseNetworkBehavior.MSG_ENCODED   = GConfigManager.GetIntValue("MSGENCODING");
     BaseNetworkBehavior.SEND_INTERVAL = GConfigManager.GetFloatValue("SEND_INTERVAL");
     GCore.Wrapper.RTTService.RegisterRTTPresenceCallback(OnPresenceCallback);
     GPlayerMgr.Instance.UpdateActivity(GPlayerMgr.LOCATION_MAIN_MENU, GPlayerMgr.STATUS_IDLE, "");
     OnRefreshFriendsList();
 }
예제 #5
0
        protected override void Start()
        {
            Cursor.visible    = true;
            Cursor.lockState  = CursorLockMode.None;
            m_friendsListItem = new List <FriendsListItem>();
            GEventManager.StartListening(GFriendsManager.ON_FRIENDS_LIST_UPDATED, OnRefreshFriendsList);
            GEventManager.StartListening(GEventManager.ON_INVITED_FRIEND, OnInvitedFriend);
            GEventManager.StartListening(GEventManager.ON_REFUSED_INVITE_FRIEND, OnRefusedInviteFriend);
            GEventManager.StartListening(GEventManager.ON_RTT_ENABLED, OnEnableRTTSuccess);
            GEventManager.StartListening(GEventManager.ON_PLAYER_DATA_UPDATED, OnUpdateStats);

            m_statsPanelContentLeft  = GameObject.Find("StatsPanel").transform.FindDeepChild("ContentLeft").gameObject;
            m_statsPanelContentRight = GameObject.Find("StatsPanel").transform.FindDeepChild("ContentRight").gameObject;
            m_joinFriendsPanel       = GameObject.Find("JoinFriendsPanel");
            m_statText  = GameObject.Find("StatText");
            m_statValue = GameObject.Find("StatValue");

            ChatInputField.onEndEdit.AddListener(delegate { OnEndEditHelper(); });

            BombersNetworkManager.Instance.ConnectRTT();

            GameObject playerName = GameObject.Find("PlayerName");

            m_inputField = playerName.GetComponent <InputField>();
            m_inputField.characterLimit = MAX_CHARACTERS_NAME;
            m_inputField.text           = GPlayerMgr.Instance.PlayerData.PlayerName;
            m_inputField.interactable   = false;
            PlayerRankIcon.UpdateIcon(GPlayerMgr.Instance.PlayerData.PlayerRank);
            BrainCloudStats.Instance.ReadStatistics();

            BaseNetworkBehavior.MSG_ENCODED   = GConfigManager.GetIntValue("MSGENCODING");
            BaseNetworkBehavior.SEND_INTERVAL = GConfigManager.GetFloatValue("SEND_INTERVAL");
            _stateInfo = new StateInfo(STATE_NAME, this);
            base.Start();

            // should we push the connect screen
            if (!GCore.Wrapper.Client.Initialized)
            {
                GStateManager.Instance.PushSubState(ConnectingSubState.STATE_NAME);
            }

#if STEAMWORKS_ENABLED
            QuitButton.SetActive(true);
            StoreButtonTop.SetActive(false);
            StoreButtonBottom.SetActive(true);
#else
            QuitButton.SetActive(false);
            StoreButtonTop.SetActive(true);
            StoreButtonBottom.SetActive(false);
#endif

#if UNITY_WEBGL
            LeftButtonGroup.SetActive(false);
#endif

            GPlayerMgr.Instance.GetXpData();
        }
예제 #6
0
 public void AddBomb()
 {
     if (m_bombs < GConfigManager.GetIntValue("MaxBombCapacity"))
     {
         if (m_playerPlane != null)
         {
             GetComponent <AudioSource>().Play();
         }
         m_bombs++;
     }
 }
예제 #7
0
 //[Server]
 public void Initialize()
 {
     m_team1Score       = 0;
     m_team2Score       = 0;
     m_gameTime         = GConfigManager.GetIntValue("DefaultGameTime");
     m_originalGameTime = m_gameTime;
     m_mapLayout        = 0;
     m_mapSize          = 1;
     m_lightPosition    = 0;
     m_maxPlayers       = 8;
     m_gameName         = "testGame";
     m_isPlaying        = 0;
 }
예제 #8
0
 IEnumerator FireMultiShot()
 {
     for (int i = 0; i < GConfigManager.GetIntValue("MultishotAmount"); i++)
     {
         if (m_playerPlane == null)
         {
             break;
         }
         m_lastShot         = Time.time;
         m_bulletSpawnPoint = m_playerPlane.m_bulletSpawnPoint;
         m_bulletVelocity   = m_bulletSpawnPoint.forward.normalized;
         m_bulletVelocity  *= m_bulletSpeed;
         m_bulletVelocity  += m_playerPlane.GetComponent <Rigidbody>().velocity;
         GetComponent <BombersPlayerController>().FireBulletCommand(new BulletInfo(m_bulletSpawnPoint.position, m_bulletSpawnPoint.forward.normalized, GetComponent <BombersPlayerController>().NetId, m_bulletVelocity).GetJson());
         yield return(new WaitForSeconds(GConfigManager.GetFloatValue("MultishotBurstDelay")));
     }
 }
        public BombInfo(Dictionary <string, object> info)
        {
            m_startPosition  = Vector3.zero;
            m_startDirection = Vector3.zero;
            m_startVelocity  = Vector3.zero;

            m_startPosition.x = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.POSITION_X);
            m_startPosition.y = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.POSITION_Y);
            m_startPosition.z = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.POSITION_Z);

            m_startDirection.x = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.DIRECTION_X);
            m_startDirection.y = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.DIRECTION_Y);

            m_startVelocity.x = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.SPEED_X);
            m_startVelocity.y = BaseNetworkBehavior.ConvertToFloat(info, BaseNetworkBehavior.SPEED_Y);

            m_shooter = System.Convert.ToInt16(info[BaseNetworkBehavior.SHOOTER_ID]);
            m_bombID  = GConfigManager.ReadIntSafely(info, BaseNetworkBehavior.ID);
        }
#pragma warning restore 649
        #region BaseState
        protected override void Start()
        {
            _stateInfo = new StateInfo(STATE_NAME, this);
            m_maxTimeAllowedInState = GConfigManager.GetFloatValue("JoiningGameTimeOutTime");
            InvokeRepeating("updateTimer", 1.0f, 1.0f);

            BaseSubState findGameState = GStateManager.Instance.FindSubState(CreateGameSubState.STATE_NAME);

            if (findGameState != null)
            {
                findGameState.ExitSubState();
            }

            if (GStateManager.Instance.CurrentStateId == MainMenuState.STATE_NAME &&
                (GStateManager.Instance.CurrentSubStateId == ConfirmJoinLobbySubState.STATE_NAME ||
                 GStateManager.Instance.CurrentSubStateId == LobbySubState.STATE_NAME))
            {
                m_closeButton.SetActive(false);
            }

            base.Start();
        }
예제 #11
0
        public void FireWeapon(bool aIsAccelerating)
        {
            float fireDelay = GConfigManager.GetFloatValue("FireRateDelay");

            if (aIsAccelerating)
            {
                fireDelay = GConfigManager.GetFloatValue("FastModeFireRateDelay");
            }

            if ((Time.time - m_lastShot) > GConfigManager.GetFloatValue("MultishotDelay"))
            {
                StartCoroutine("FireMultiShot");
            }
            else if ((Time.time - m_lastShot) > fireDelay)
            {
                m_lastShot         = Time.time;
                m_bulletSpawnPoint = m_playerPlane.m_bulletSpawnPoint;
                m_bulletVelocity   = m_bulletSpawnPoint.forward.normalized;
                m_bulletVelocity  *= m_bulletSpeed;
                m_bulletVelocity  += m_playerPlane.GetComponent <Rigidbody>().velocity;
                GetComponent <BombersPlayerController>().FireBulletCommand(new BulletInfo(m_bulletSpawnPoint.position, m_bulletSpawnPoint.forward.normalized, GetComponent <BombersPlayerController>().NetId, m_bulletVelocity).GetJson());
            }
        }
        private void lazyLoadReferences()
        {
            if (m_gMan == null)
            {
                m_gMan = GameObject.Find("GameManager").GetComponent <GameManager>();
            }
            if (WeaponController == null)
            {
                WeaponController = GetComponent <WeaponController>();
            }

            BrainCloudStats bcStats = BrainCloudStats.Instance;

            m_turnSpeed          = GConfigManager.GetFloatValue("TurnSpeed");
            m_turnSpeedModifier  = GConfigManager.GetFloatValue("TurnSpeedModifier");
            m_acceleration       = GConfigManager.GetFloatValue("PlaneAcceleration");
            m_linearAcceleration = GConfigManager.GetFloatValue("LinearAcceleration");
            m_linearDeceleration = GConfigManager.GetFloatValue("LinearDeceleration");
            m_baseHealth         = GConfigManager.GetIntValue("BasePlaneHealth");
            m_maxSpeedMultiplier = GConfigManager.GetFloatValue("MaxSpeedMultiplier");

            m_missionText = m_gMan.MissionText;
        }
예제 #13
0
        public void Activate(string aPlayer)
        {
            m_lifeTime = GConfigManager.GetFloatValue("FlareLifeTime");
            m_isActive = true;
            m_player   = aPlayer;
            foreach (GameObject plane in GameObject.FindGameObjectsWithTag("PlayerController"))
            {
                {
                    m_playerPlane = plane;
                    break;
                }
            }

            {
                transform.GetChild(1).GetChild(0).GetComponent <SpriteRenderer>().color             = new Color(1, 1, 1, 0);
                transform.GetChild(1).GetChild(0).GetChild(0).GetComponent <SpriteRenderer>().color = new Color(1, 1, 1, 0);
                transform.GetChild(2).GetComponent <TextMesh>().color = new Color(1, 1, 1, 0);
            }

            if (m_playerPlane == null)
            {
                Destroy(gameObject);
            }
        }
예제 #14
0
        void LateUpdate()
        {
            bool isAlone = true;
            BombersPlayerController tempController;

            BombersPlayerController[]      playerList;
            List <BombersPlayerController> playerListList = new List <BombersPlayerController>();

            foreach (LobbyMemberInfo member in BombersNetworkManager.LobbyInfo.Members)
            {
                tempController = member.PlayerController;
                playerListList.Add(member.PlayerController);
            }

            int count = 0;

            while (count < playerListList.Count)
            {
                if (playerListList[count] != null &&
                    playerListList[count].m_team == 0)
                {
                    playerListList.RemoveAt(count);
                }
                else
                {
                    count++;
                }
            }
            playerList = playerListList.ToArray();
            {
                if (playerList.Length > 1)
                {
                    isAlone = false;
                }
            }
            if (isAlone && m_bombs == 0 && m_aloneBombTimer >= 3)
            {
                m_aloneBombTimer = 0;
                AddBomb();
            }

            if (m_bombs > 0 && m_playerPlane != null)
            {
                m_targetingReticule.transform.Find("TargetSprite").GetComponent <SpriteRenderer>().color =
                    Color.Lerp(m_targetingReticule.transform.Find("TargetSprite").GetComponent <SpriteRenderer>().color, new Color(1, 1, 1, m_playerPlane.IsLocalPlayer ? 0.3f : 0.0f), 4 * Time.deltaTime);

                m_targetingReticule.GetComponent <MeshRenderer>().enabled = m_playerPlane.IsLocalPlayer;
                Vector3 position      = m_playerPlane.transform.position;
                Vector3 planeVelocity = m_playerPlane.GetComponent <Rigidbody>().velocity;
                Vector3 velocity      = planeVelocity;
                count = 1;
                Vector3 lastPos   = m_playerPlane.transform.position;
                int     layerMask = (1 << 16) | (1 << 17) | (1 << 4) | (1 << 20);
                bool    hitFound  = false;
                while (!hitFound)
                {
                    velocity += Physics.gravity * 0.01f;
                    velocity  = velocity * 1 / (1 + 0.01f * 0.8f);
                    position += velocity * 0.01f;

                    if (position.z > 10 * count)
                    {
                        count++;
                        RaycastHit hit = new RaycastHit();
                        if (Physics.SphereCast(lastPos, 10.4f, position - lastPos, out hit, (position - lastPos).magnitude, layerMask))
                        {
                            hitFound = true;

                            position    = lastPos + ((position - lastPos).normalized * ((hit.point.z - lastPos.z) / (position.z - lastPos.z)));
                            position.z += 5;
                            position.z -= 0.5f;
                        }

                        lastPos = position;
                    }
                    else if (position.y > 3000.0f || position.y < -3000.0f || position.z >= 121.5f)
                    {
                        hitFound   = true;
                        position.z = 121.5f;
                    }
                }

                m_targetingReticule.transform.position = position;
                TextMesh bombCounter = m_targetingReticule.transform.Find("BombCounter").GetComponent <TextMesh>();
                int      maxBombs    = GConfigManager.GetIntValue("MaxBombCapacity");
                if (m_bombs == 0 || m_bombs == 1 || !m_playerPlane.IsLocalPlayer)
                {
                    bombCounter.text = "";
                }
                else if (m_bombs < maxBombs)
                {
                    bombCounter.color = new Color(1, 1, 1, 0.8f);
                    bombCounter.text  = m_bombs.ToString();
                }
                else
                {
                    bombCounter.color = new Color(1, 0.4f, 0.4f, 0.8f);
                    bombCounter.text  = m_bombs.ToString();
                }
            }
            else
            {
                m_targetingReticule.GetComponent <MeshRenderer>().enabled = false;
                m_targetingReticule.transform.Find("TargetSprite").GetComponent <SpriteRenderer>().color = Color.Lerp(m_targetingReticule.transform.Find("TargetSprite").GetComponent <SpriteRenderer>().color, new Color(1, 1, 1, 0), 4 * Time.deltaTime);
                m_targetingReticule.transform.Find("BombCounter").GetComponent <TextMesh>().text         = "";
            }
        }
예제 #15
0
 protected override void Start()
 {
     _classType = BombersNetworkManager.BULLET_CONTROLLER;
     m_lifeTime = GConfigManager.GetFloatValue("BulletLifeTime") + m_lifeTimeOffset;
     base.Start();
 }
        override protected void Start()
        {
            m_velocityMaxMagnitude = GConfigManager.GetFloatValue("MaxAcceleration");
            _classType             = BombersNetworkManager.PLANE_CONTROLLER;
            m_lastPositions        = new PlaneVector[1];
            m_planeDamage          = new List <GameObject>()
            {
                null, null, null, null
            };
            TextMesh textMesh = transform.FindDeepChild("NameTag").gameObject.GetComponent <TextMesh>();

            PlayerController = BombersPlayerController.GetPlayer(PlayerId);

            // setup the member info
            if (PlayerController.MemberInfo == null)
            {
                PlayerController.MemberInfo = BombersNetworkManager.LobbyInfo.GetMemberWithProfileId(PlayerController.ProfileId);
            }

            textMesh.text = PlayerController.m_displayName;
            if (PlayerController.IsLocalPlayer)
            {
                textMesh.text = "";
            }
            m_planeBank = transform.FindDeepChild("PlaneBank");
            for (int i = 0; i < m_lastPositions.Length; i++)
            {
                m_lastPositions[i] = new PlaneVector(transform.position, transform.up);
            }

            string teamBomberPath = "";
            bool   bHasGoldWings  = false;

            if (PlayerController.MemberInfo.ExtraData.ContainsKey(GBomberRTTConfigManager.JSON_GOLD_WINGS))
            {
                bHasGoldWings = (bool)PlayerController.MemberInfo.ExtraData[GBomberRTTConfigManager.JSON_GOLD_WINGS];
            }

            if (PlayerController.m_team == 1)
            {
                teamBomberPath   = bHasGoldWings ? "Bomber01Golden" : "Bomber01";
                gameObject.layer = 8;
                textMesh.color   = Color.green;
            }
            else
            {
                teamBomberPath   = bHasGoldWings ? "Bomber02Golden" : "Bomber02";
                gameObject.layer = 9;
                textMesh.color   = Color.red;
            }

            SmartsComponent = PlayerController.transform.FindDeepChild("smartsComponent").gameObject;
            SmartsComponent.SetActive(true);
            SmartsComponent.layer = PlayerController.m_team == 1 ? 21 : 22; // debug collisions

            Transform  graphicPivot = transform.FindDeepChild("PlaneGraphic");
            GameObject graphic      = (GameObject)Instantiate((GameObject)Resources.Load("Prefabs/Game/" + teamBomberPath), graphicPivot.position, graphicPivot.rotation);

            graphic.transform.parent        = graphicPivot;
            graphic.transform.localPosition = Vector3.zero;
            graphic.transform.localRotation = Quaternion.identity;

            m_bulletSpawnPoint = graphic.transform.FindDeepChild("BulletSpawn");
            m_leftContrail     = graphic.transform.FindDeepChild("LeftSmokeTrail").GetComponent <ParticleSystem>();
            m_rightContrail    = graphic.transform.FindDeepChild("RightSmokeTrail").GetComponent <ParticleSystem>();

            m_gunCharge = transform.FindDeepChild("GunCharge").gameObject;
            m_gunCharge.GetComponent <Animator>().speed = 1 / GConfigManager.GetFloatValue("MultishotDelay");
            if (!PlayerController.IsLocalPlayer)
            {
                m_gunCharge.transform.Find("ChargeReady").transform.GetComponent <AudioSource>().enabled = false;
            }

            transform.localPosition = Vector3.zero;
            m_rigidBody             = GetComponent <Rigidbody>();

            _syncTransformInformation = true;
            // no delay by default
            m_syncTransformationDelay = 0.0f;
            transform.position        = PlayerController.transform.position;

            if (IsServer)
            {
                SendStart(_classType, PlayerId, _fileName, transform);
            }

            base.Start();
        }
예제 #17
0
        protected override void Start()
        {
            Dropdown presetDropDownButton         = GameObject.Find("PresetDropDownButton").GetComponent <Dropdown>();
            Dropdown sizeDropDownButton           = GameObject.Find("SizeDropDownButton").GetComponent <Dropdown>();
            Dropdown gameDurationDropDownButton   = GameObject.Find("TimeDropDownButton").GetComponent <Dropdown>();
            Dropdown regionDurationDropDownButton = GameObject.Find("RegionDropDownButton").GetComponent <Dropdown>();

            m_mapPresets                = GameObject.Find("MapPresets").GetComponent <MapPresets>().m_presets;
            m_mapSizes                  = GameObject.Find("MapPresets").GetComponent <MapPresets>().m_mapSizes;
            m_gameDurations             = GameObject.Find("MapPresets").GetComponent <MapPresets>().GameDurations;
            m_regions                   = GameObject.Find("MapPresets").GetComponent <MapPresets>().Regions;
            m_textMesh                  = transform.FindDeepChild("TitleBarText").GetComponent <TextMeshProUGUI>();
            m_inputField                = transform.FindDeepChild("Room Name").GetComponent <InputField>();
            m_inputField.characterLimit = GPlayerMgr.MAX_CHARACTERS_GAME_NAME;

            // update the Max Players default and max values.
            Slider maxPlayersSlider = transform.FindDeepChild("MaxPlayersSlider").GetComponent <Slider>();

            maxPlayersSlider.value    = GConfigManager.GetIntValue("MaxPlayersDefault") / 2;
            maxPlayersSlider.maxValue = GConfigManager.GetIntValue("MaxPlayers") / 2;

            // updated region selection
            BombersNetworkManager.Instance.SetSelectedRegion(m_regions[m_regionListSelection].Lobby);

            string str = m_state == eCreateGameState.NEW_ROOM ? "Create Game" : "Find Game";

            transform.FindDeepChild("CreateButton").FindDeepChild("Text").GetComponent <Text>().text = str;
            m_textMesh.text = str.ToUpper();

            List <string> items = new List <string>();

            for (int i = 0; i < m_mapPresets.Count; i++)
            {
                items.Add(m_mapPresets[i].m_name);
            }
            presetDropDownButton.ClearOptions();
            presetDropDownButton.AddOptions(items);
            items.Clear();

            for (int i = 0; i < m_mapSizes.Count; i++)
            {
                items.Add(m_mapSizes[i].m_name);
            }
            sizeDropDownButton.ClearOptions();
            sizeDropDownButton.AddOptions(items);

            // game durations
            items.Clear();
            for (int i = 0; i < m_gameDurations.Count; i++)
            {
                items.Add(m_gameDurations[i].Name);
            }
            gameDurationDropDownButton.ClearOptions();
            gameDurationDropDownButton.AddOptions(items);

            // regions
            items.Clear();
            for (int i = 0; i < m_regions.Count; i++)
            {
                items.Add(m_regions[i].Name);
            }
            regionDurationDropDownButton.ClearOptions();
            regionDurationDropDownButton.AddOptions(items);

            m_sizeListSelection         = 1;
            m_gameDurationListSelection = GConfigManager.GetIntValue("DefaultGameTimeIndex");

            OnNewRoomWindow();

            transform.FindDeepChild("Room Name").GetComponent <InputField>().text = GPlayerMgr.Instance.PlayerData.PlayerName + "'s Room";

            _stateInfo = new StateInfo(STATE_NAME, this);
            base.Start();
        }