void OnDestroy() { if (_inst == this) { _inst = null; } }
void Awake() { if (_inst != null) { Debug.LogError("CharacterDictionary: detected singleton instance has existed. Destroy this one " + gameObject.name); Destroy(this); return; } _inst = this; _activedCharacters = new System.Collections.Generic.Dictionary <string, CharacterInformation>(); }
private async void compile_Click(object sender, EventArgs e) { Stopwatch trackCompileTime = new Stopwatch(); trackCompileTime.Start(); output.Text = ""; outputQueue.Clear(); compileProgress.Value = 0; foreach (Control control in CONTROLS_TO_DISABLE_WHEN_COMPILING) { control.Enabled = false; } Compiler.UseWaitCursor = true; ModelCompiler.PreScheduleTasks(); Func <AssemblerData> assemble; if (compilerTypeSelect.Text == "Avatar") { var assembler = new CharacterAssembler(); var userAvatar = UserAvatar.FromUsername(currentUser.Username); assemble = new Func <AssemblerData>(() => assembler.Assemble(userAvatar)); } else { var assembler = new CatalogItemAssembler(); assemble = new Func <AssemblerData>(() => assembler.Assemble(currentAssetId)); } Task <AssemblerData> buildModel = Task.Run(assemble); while (!buildModel.IsCompleted) { await UpdateCompilerState(); } if (buildModel.IsFaulted) { LogException(buildModel, "assemble"); } else { AssemblerData data = buildModel.Result; Task <string> compileModel = ModelCompiler.Compile(selectedGame, data); while (!compileModel.IsCompleted) { await UpdateCompilerState(); } if (compileModel.IsFaulted) { LogException(compileModel, "compile"); } else { PrintHeader("FINISHED MODEL!"); trackCompileTime.Stop(); Print("Assembled in {0} seconds.", trackCompileTime.Elapsed.TotalSeconds); await UpdateCompilerState(); compileModel.Wait(); latestCompiledModel = compileModel.Result; latestCompiledOnGame = selectedGame; } } foreach (Control control in CONTROLS_TO_DISABLE_WHEN_COMPILING) { control.Enabled = true; } if (trackCompileTime.IsRunning) { trackCompileTime.Stop(); } Compiler.UseWaitCursor = false; progressQueue.Clear(); }
void Awake() { if (!Application.isEditor) { Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; } _loadingScreen = GameObject.Instantiate(loadingScreenPrefab, new Vector3(8000, 8000, 8000), Quaternion.identity); _loadingScreen.gameObject.SetActive(false); _winPopup = GameObject.Instantiate(winPopupPrefab, Vector3.zero, Quaternion.identity); _winPopup.gameObject.SetActive(false); spawns = StageManager.instance.transform.Find("SpawnPoints").GetComponentsInChildren <Transform>().Where(x => x.name != "SpawnPoints").ToArray(); playerInfo = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players"); playerInfo.playerStats = new PlayerStats[playerInfo.playerControllers.Length]; playerCameras[playerInfo.playerControllers.Length - 2].SetActive(true); if (playerInfo.playerControllers.Length == 2) { for (int i = 0; i < 2; i++) { Camera c = GameObject.Find("Camera_P" + (i + 1)).GetComponent <Camera>(); cameraTexturesForTwoPlayers[i].width = 1280; c.rect = new Rect(0, 0, 2, 1); } } else { for (int i = 0; i < 2; i++) { Camera c = GameObject.Find("Camera_P" + (i + 1)).GetComponent <Camera>(); cameraTexturesForTwoPlayers[i].width = 640; c.rect = new Rect(0, 0, 1, 1); } } //Setting the mode! gameRules = Resources.Load("Scriptable Objects/GameMode_" + playerInfo.gameMode) as SO_GameRules; //get all the cameras var allCams = GameObject.FindObjectsOfType <CamFollow>().ToList(); Utility.KnuthShuffle(spawns); for (int i = 0; i < playerInfo.playerControllers.Length; i++) { var URLs = Serializacion.LoadJsonFromDisk <CharacterURLs>("Player " + (playerInfo.playerControllers[i] + 1)); //Dejo los objetos ccomo children del body por cuestiones de carga de los scripts. Assembler no debería generar problemas, ya que su parent objetivo sería el mismo. var player = Instantiate(Resources.Load <GameObject>("Prefabs/Bodies/" + URLs.bodyURL), spawns[i].transform.position, Quaternion.identity).GetComponent <Player>(); var weapon = Instantiate(Resources.Load <GameObject>("Prefabs/Weapons/" + URLs.weaponURL), player.transform.position, Quaternion.identity, player.transform); var comp1 = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Complementary/" + URLs.complementaryURL[0]), player.transform.position, Quaternion.identity, player.transform); var comp2 = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Complementary/" + URLs.complementaryURL[1]), player.transform.position, Quaternion.identity, player.transform); var def = Instantiate(Resources.Load <GameObject>("Prefabs/Skills/Defensive/" + URLs.defensiveURL), player.transform.position, Quaternion.identity, player.transform); CharacterAssembler.Assemble(player.gameObject, def, comp1, comp2, weapon); player.transform.forward = spawns[i].forward; comp1.GetComponent <ComplementarySkillBase>().RegisterInput(0); comp2.GetComponent <ComplementarySkillBase>().RegisterInput(1); player.gameObject.layer = LayerMask.NameToLayer("Player" + (playerInfo.playerControllers[i] + 1)); player.gameObject.tag = "Player " + (playerInfo.playerControllers[i] + 1); foreach (Transform t in player.transform) { t.gameObject.layer = LayerMask.NameToLayer("Player" + (playerInfo.playerControllers[i] + 1)); t.gameObject.tag = "Player " + (playerInfo.playerControllers[i] + 1); } player.Stats.Score = 0; player.lockedByGame = true; player.LightsModule.SetPlayerColor(playerColors[playerInfo.playerControllers[i]]); CamFollow cam = allCams.Where(x => x.name == "Camera_P" + (i + 1)).First(); allCams.Remove(cam); if (player.ControlModule.playerType == PlayerControlModule.PlayerType.DRONE) { cam.AssignTarget(player, player.GetCameraOffset()); } else { var castedControlModule = player.ControlModule as QuadrupedControlModule; cam.AssignTarget(player, player.GetCameraOffset(), castedControlModule.HardcodeForCameraForward); } } //disable cams that are not being used foreach (var item in allCams) { item.gameObject.SetActive(false); } AddEvents(); UIManager.Instance.Initialize(Players, StartFirstRound, gameRules.pointsToWin[playerInfo.playerControllers.Length - 2]); }
void LoadPlayers() { var playerInfo = Serializacion.LoadJsonFromDisk <RegisteredPlayers>("Registered Players"); var playerControllersOrdered = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Score).ToArray(); var playerScoresOrdered = playerInfo.playerStats.OrderByDescending(y => y.Score).ToArray(); _players = new GameObject[playerControllersOrdered.Length]; for (int i = 0; i < playerControllersOrdered.Length; i++) { var URLs = Serializacion.LoadJsonFromDisk <CharacterURLs>("Player " + (playerControllersOrdered[i] + 1)); //Dejo los objetos como children del body por cuestiones de carga de los scripts. Assembler no debería generar problemas, ya que su parent objetivo sería el mismo. var player = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Bodies/" + URLs.bodyURL), spawnPos[i].position, Quaternion.identity); var weapon = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Weapons/" + URLs.weaponURL), player.transform.position, Quaternion.identity, player.transform); var comp1 = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Complementary/" + URLs.complementaryURL[0]), player.transform.position, Quaternion.identity, player.transform); var comp2 = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Complementary/" + URLs.complementaryURL[1]), player.transform.position, Quaternion.identity, player.transform); var def = Instantiate(Resources.Load <GameObject>("Prefabs/CharacterSelection/Skills/Defensive/" + URLs.defensiveURL), player.transform.position, Quaternion.identity, player.transform); var tx = Instantiate(playerText, player.transform.position, Quaternion.identity, player.transform); tx.transform.Rotate(transform.up, 180); CharacterAssembler.Assemble(player.gameObject, def, comp1, comp2, weapon); player.gameObject.layer = LayerMask.NameToLayer("Player" + (playerControllersOrdered[i] + 1)); player.gameObject.tag = "Player " + (playerControllersOrdered[i] + 1); foreach (Transform t in player.transform) { t.gameObject.layer = LayerMask.NameToLayer("Player" + (playerControllersOrdered[i] + 1)); t.gameObject.tag = "Player " + (playerControllersOrdered[i] + 1); } tx.gameObject.layer = LayerMask.NameToLayer("P1ONLY"); player.transform.forward = spawnPos[i].forward; _players[i] = player; } _winner = _players.First(); var l = _players.Length; _resetInputs = new bool[l]; playerIndexes = new PlayerIndex[l]; previousGamePads = new GamePadState[l]; currentGamePads = new GamePadState[l]; for (int i = 0; i < currentGamePads.Length; i++) { playerIndexes[i] = (PlayerIndex)playerControllersOrdered[i]; currentGamePads[i] = GamePad.GetState(playerIndexes[i]); } for (int i = 0; i < _players.Length; i++) { var score = playerScoresOrdered[i].Score; EndgamePlayerText(_players[i], _players[i].gameObject.tag, score.ToString(), i); _resetInputs[i] = false; } //award, award amount, player, desc var awards = FList.Create(Tuple.Create("", 0f, 0, "")); mostKills = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Kills).First(); var killAmount = playerInfo.playerStats.OrderByDescending(y => y.Kills).First().Kills; awards += Tuple.Create("Most Kills", (float)killAmount, Array.IndexOf(playerControllersOrdered, mostKills), " kills"); mostSurvived = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].Survived).First(); var survivedAmount = playerInfo.playerStats.OrderByDescending(y => y.Survived).First().Survived; awards += Tuple.Create("Most Survived", (float)survivedAmount, Array.IndexOf(playerControllersOrdered, mostSurvived), "survived"); mostDamageDealt = playerInfo.playerControllers.OrderByDescending(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].DamageDealt).First(); var damageDealtAmount = playerInfo.playerStats.OrderByDescending(y => y.DamageDealt).First().DamageDealt; awards += Tuple.Create("Most Damage Dealt", damageDealtAmount, Array.IndexOf(playerControllersOrdered, mostDamageDealt), " dmg dealt"); leastDamageTaken = playerInfo.playerControllers.OrderBy(x => playerInfo.playerStats[Array.IndexOf(playerInfo.playerControllers, x)].DamageTaken).First(); var damageTakenAmount = playerInfo.playerStats.OrderBy(y => y.DamageTaken).First().DamageTaken; awards += Tuple.Create("Bulletproof", damageTakenAmount, Array.IndexOf(playerControllersOrdered, leastDamageTaken), " dmg taken"); print("Psycho Killer Award goes to: Player " + (mostKills + 1) + " with " + killAmount + " kills"); print("Survivor Award goes to: Player " + (mostSurvived + 1) + " with " + survivedAmount + " rounds survived"); print("Dealer Award goes to: Player " + (mostDamageDealt + 1) + " with " + damageDealtAmount + " damage dealt"); print("Bulletproof Award goes to: Player " + (leastDamageTaken + 1) + " with " + damageTakenAmount + " damage taken"); for (int i = 0; i < playerScoresOrdered.Length; i++) { var playList = awards.Skip(1).Where(x => x.Item3 == i).ToList(); if (playList.Any()) { foreach (var item in playList) { SetAwardsOnPedestal(item); } } } HideUnusedPedestals(); }