示例#1
0
        /// <summary>
        ///     Spawns recruits at RecruitSpawnPoints
        /// </summary>
        private void SpawnRecruits()
        {
            GameObject[] recruitSpawnPoints = GameObject.FindGameObjectsWithTag(DungeonGenerator.RecruitSpawnPointTag);

            int recruitIndex = 0;

            foreach (GameObject recruitSpawnPoint in recruitSpawnPoints)
            {
                int recruitCount = Random.Range(this.recruitCount.x, this.recruitCount.y + 1);

                for (int i = 0; i < recruitCount; i++)
                {
                    PlayerDriver recruit = MainManager.SpawnEntityWithBonus(
                        this.playerPrefabs.GetRandomItem(),
                        Stat.Random,
                        Stat.Random);

                    recruit.transform.parent   = this.entityParent;
                    recruit.transform.position = recruitSpawnPoint.transform.position + this.GetRandomEntityOffset();

                    recruit.battleDriver.Level = this.EntityLevel;

                    recruit.name = string.Format("Recruit #{0}", recruitIndex);

                    MonoBehaviour.Destroy(recruitSpawnPoint);
                    ++recruitIndex;
                }
            }
        }
示例#2
0
        /// <summary>
        ///     Select a class based on its index in <seealso cref="characterPrefabs"/>
        /// </summary>
        /// <param name="classIndex">The index of the class</param>
        private void SelectClass(int classIndex)
        {
            Storage.SelectedPlayerPrefab = this.characterPrefabs[classIndex];

            if (this.playerPreview != null)
            {
                MonoBehaviour.Destroy(this.playerPreview.gameObject);
            }

            this.playerPreview = MonoBehaviour.Instantiate(Storage.SelectedPlayerPrefab, this.playerPreviewRoot);

            this.DisableBehaviour <PlayerDriver>(this.playerPreview);
            this.DisableBehaviour <SpriteManager>(this.playerPreview);
            this.DisableBehaviour <SpriteAnimator>(this.playerPreview);

            Rigidbody rigidbody = this.playerPreview.GetComponent <Rigidbody>();

            rigidbody.constraints = RigidbodyConstraints.FreezeAll;
            rigidbody.useGravity  = false;

            this.playerPreview.transform.localPosition = Vector3.zero;
            this.playerPreview.transform.localRotation = Quaternion.identity;

            // Deactivate/Activate buttons
            for (int i = 0; i < this.characterButtons.Length; i++)
            {
                this.characterButtons[i].interactable = i != classIndex;
            }
        }
        /// <summary>
        ///     Does its thing and proceeds to the next floor if the given GameObject is a leading player
        /// </summary>
        /// <param name="gameObject">The GameObject that needs to be a player</param>
        private void ProceedIfPlayer(GameObject gameObject)
        {
            PlayerDriver playerDriver = gameObject.GetComponent <PlayerDriver>();

            if (playerDriver != null && playerDriver.IsLeader)
            {
                DungeonGenerator.GoToNextFloor();
            }
        }
示例#4
0
 public Race(int nbrLaps, Track track, PlayerDriver player)
 {
     _nbrLaps    = nbrLaps;
     Player      = player;
     Track       = track;
     PlayerStats = new PlayerRaceStats();
     Drivers     = new List <IDriver>();
     AddDriver(player);
     if (track.Description.IsOpenRoad)
     {
         _trafficController = new TrafficController(this);
     }
 }
示例#5
0
        /// <summary>
        ///     Called by Unity to initialize the <seealso cref="MainManager"/> whether it is or is not active.
        /// </summary>
        private void Awake()
        {
            this.NewPreferThis();

            this.ValidateSetup();

            MainManager.CameraController = this.mainCamera.GetComponent <CameraController>();

            PlayerDriver.CreateNewParty();

#if UNITY_EDITOR
            // Debug code... or something goes here
#endif
        }
示例#6
0
        public DoRaceScreen(Track track)
        {
            _track = track;
            _car   = new DrivableVehicle(GameConfig.SelectedVehicle);

            _playerDriver     = new PlayerDriver(_car);
            _car.AudioEnabled = true;

            _race = new Race(_track.IsOpenRoad ? 1 : 3, _track, _playerDriver);
            for (int i = 0; i < 10; i++)
            {
                int j = Engine.Instance.Random.Next(VehicleDescription.Descriptions.Count);
                _race.AddDriver(new RacingAIDriver(VehicleDescription.Descriptions[j]));
            }
            //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper")));
            //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper")));
            //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper")));
            //_race.AddDriver(new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper")));
            _playerUI = new PlayerUI(_car);

            /*
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "911"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Viper"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "Diablo"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "F512"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "ZR1"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             * d = new AIDriver(VehicleDescription.Descriptions.Find(a => a.Name == "NSX"));
             * _aiDrivers.Add(d);
             * _track.AddDriver(d);
             */

            _raceUI = new RaceUI(_race);
            _race.StartCountdown();

            _raceViewport = new Viewport(0, 0, 640, 400);
            _uiViewport   = new Viewport(0, 0, 640, 480);
        }
示例#7
0
        /// <summary>
        ///     Spawns the player.
        ///     There should always only be one player spawn point per floor.
        /// </summary>
        private void SpawnPlayer()
        {
            // Get all, so useful errors and warning can be given
            GameObject[] playerSpawnPoints = GameObject.FindGameObjectsWithTag(DungeonGenerator.PlayerSpawnPointTag);

            if (playerSpawnPoints.Length == 0)
            {
                throw new RPGException(RPGException.Cause.DungeonNoPlayerSpawnPoint);
            }
            else if (playerSpawnPoints.Length > 1)
            {
                Debug.LogWarning("There is more than one player spawn point.");
            }

            // Pick the first one
            GameObject playerSpawnPoint = playerSpawnPoints[0];

            // Make sure there's a party
            if (PlayerDriver.Party == null || PlayerDriver.Party.Count == 0)
            {
                PlayerDriver.CreateNewParty();

                PlayerDriver player =
                    MainManager.SpawnEntityWithBonus(
                        Storage.SelectedPlayerPrefab,
                        Storage.BonusStat1,
                        Storage.BonusStat2);

                PlayerDriver.Party.Add(player);
            }

            // Move the players
            foreach (PlayerDriver player in PlayerDriver.Party)
            {
                player.transform.position = playerSpawnPoint.transform.position + this.GetRandomEntityOffset();
            }

            // Move the camera
            MainManager.CameraController.transform.position = playerSpawnPoint.transform.position;

            MonoBehaviour.Destroy(playerSpawnPoint);
        }
示例#8
0
 public void SetDriver(PlayerDriver driver)
 {
     this.driver = driver;
 }
示例#9
0
 public void Start()
 {
     player = GameObject.Find("Player").GetComponent<PlayerDriver>();
     powerTileMask = 1 << LayerMask.NameToLayer("PowerTile");
 }
示例#10
0
 private void Awake()
 {
     Instance     = this;
     playerDriver = playerObject.GetComponent <PlayerDriver>();
 }
示例#11
0
 // Use this for initialization
 void Start()
 {
     driver   = GetComponent <PlayerDriver>();
     pRaycast = GetComponent <PlayerRaycast>();
 }
示例#12
0
        /// <summary>
        ///     Sets all values.
        /// </summary>
        public void Setup()
        {
            if (this.battleDriver == null || this.pauseMenu == null)
            {
                throw new RPGException(RPGException.Cause.MenuMissingComponent);
            }

            this.memberName.text = string.Format(PartyMemberDisplay.LabelFormat, this.battleDriver.BattleName, this.battleDriver.Level);
            this.battleDriver.RecalculateStats();

            PlayerDriver player = this.battleDriver.entityDriver as PlayerDriver;

            // Dismiss Button
            if (PlayerDriver.Party.Count > 1)
            {
                this.dismissalButton.onClick.AddListener(delegate
                {
                    player.LeaveParty();

                    this.pauseMenu.CreateMenu();
                });
            }
            else
            {
                this.dismissalButton.interactable = false;
            }

            int partyIndex = PlayerDriver.Party.IndexOf(player);

            // Move up button
            if (partyIndex > 0)
            {
                this.moveUpButton.onClick.AddListener(delegate
                {
                    PlayerDriver.Party.Move(partyIndex, partyIndex - 1);

                    this.pauseMenu.CreateMenu();
                });
            }
            else
            {
                this.moveUpButton.interactable = false;
            }

            // Move down button
            if (partyIndex < PlayerDriver.Party.Count - 1)
            {
                this.moveDownButton.onClick.AddListener(delegate
                {
                    PlayerDriver.Party.Move(partyIndex, partyIndex + 1);

                    this.pauseMenu.CreateMenu();
                });
            }
            else
            {
                this.moveDownButton.interactable = false;
            }

            // Statistics
            this.statusTextLeft.text = PartyMemberDisplay.StatusLeft;

            this.statusTextRight.text = string.Format(
                PartyMemberDisplay.StatusRightFormat,
                this.battleDriver.CurrentHealth,
                this.battleDriver.MaximumHealth,
                this.battleDriver.PhysicalDamage,
                this.battleDriver.MagicalDamage,
                this.battleDriver.Defense,
                this.battleDriver.TurnSpeed);

            // Actions
            string actionText = string.Empty;

            foreach (BattleAction.ActionClass actionClass in this.battleDriver.actionClasses)
            {
                if (actionClass != BattleAction.ActionClass.NoAction)
                {
                    BattleAction action = BattleAction.GetBattleAction(actionClass, this.battleDriver);
                    actionText += (actionText.Length > 0 ? "\n" : string.Empty) + string.Format(PartyMemberDisplay.ActionFormat, action.Name, action.Description);
                }
            }

            this.actionText.text = actionText;
        }