public bool TryToAcquire(string guid, Player player, SimulationLockType requestedLock) { lock (playerLocksByGuid) { PlayerLock playerLock; // If no one is simulating then aquire a lock for this player if (!playerLocksByGuid.TryGetValue(guid, out playerLock)) { playerLocksByGuid[guid] = new PlayerLock(player, requestedLock); return(true); } // If this player owns the lock then they are already simulating if (playerLock.Player == player) { // update the lock type in case they are attempting to downgrade playerLocksByGuid[guid] = new PlayerLock(player, requestedLock); return(true); } // If the current lock owner has a transient lock then only override if we are requesting exclusive access if (playerLock.LockType == SimulationLockType.TRANSIENT && requestedLock == SimulationLockType.EXCLUSIVE) { playerLocksByGuid[guid] = new PlayerLock(player, requestedLock); return(true); } // We must be requesting a transient lock and the owner already has a lock (either transient or exclusive). // there is no way to break it so we will return false. return(false); } }
void checkBackPressed() { for (var i = 0; i < controllerCount; i++) { if (Input.GetKeyDown("joystick " + (i + 1) + " button 1")) { // normal back if (!cbIconList[i].IsLocked) { isBackPressed = true; curtain.close(); } // free player lock else { PlayerLock playerLock = cbIconList[i]; playerLock.IsLocked = false; playerLock.LockTime = 0; // if start is initiated, reverse it if (start_initiated) { start_initiated = false; cb_ready.SetActive(false); } } } } }
// Use this for initialization void Start() { controllerCount = Input.GetJoystickNames().Length; playerColors = new List<Color32>(); playerColors.Add(P1_Color); playerColors.Add(P2_Color); playerColors.Add(P3_Color); playerColors.Add(P4_Color); charList = new List<CharacterObject>(); foreach(CharacterObject charObject in GameObject.FindObjectsOfType<CharacterObject>()) charList.Add(charObject); csList = new List<GameObject>(); for (var i = 0; i < characterCount; i++) { GameObject characterSelectObject = transform.Find("CS " + (i + 1)).gameObject; csList.Add(characterSelectObject); Text titleObject = characterSelectObject.transform.Find("title").gameObject.GetComponent<Text>(); titleObject.text = charList[i].name; } csIconList = new List<List<GameObject>>(); for (var i = 0; i < characterCount; i++) { csIconList.Add(new List<GameObject>()); for (var i2 = 0; i2 < 4; i2++) { csIconList[i].Add(csList[i].transform.Find("icon " + (i2+1)).gameObject); } } pbList = new List<GameObject>(); for (var i = 1; i < 5; i++) pbList.Add(transform.Find("PB " + i).gameObject); dbList = new List<GameObject>(); for (var i = 1; i < 5; i++) dbList.Add(transform.Find("DB " + i).gameObject); cb = transform.Find("CB").gameObject; cbIconList = new List<PlayerLock>(); for (var i = 1; i < 5; i++) { Image img = cb.transform.Find("P" + i).gameObject.GetComponent<Image>(); Image ico = cb.transform.Find("P" + i + " Check").gameObject.GetComponent<Image>(); img.color = playerColors[i-1]; PlayerLock pl = new PlayerLock(img, ico, TIME_TO_LOCK); cbIconList.Add(pl); } cb_ready = transform.Find("CB Ready").gameObject; cb_ready_text = cb_ready.transform.Find("Text").gameObject.GetComponent<Text>(); cb_ready_time = 0; start_initiated = false; characterSelections = new List<List<int>>(); for (var i = 0; i < characterCount; i++) characterSelections.Add(new List<int>()); for (var i = 0; i < controllerCount; i++) characterSelections[0].Add(i); playerSelections = new List<int>(); for (var i = 0; i < controllerCount; i++) playerSelections.Add(0); timeSinceLastMovement = new List<float>(); for (var i = 0; i < controllerCount; i++) timeSinceLastMovement.Add(0); isBackPressed = false; curtain = transform.Find("Curtain").gameObject.GetComponent<Curtain>(); generateCharacterUI(); generatePlayerUI(); setCharSelect(0, 0); setCharSelect(1, 0); setCharSelect(2, 0); setCharSelect(3, 0); }
// Use this for initialization void Start() { controllerCount = Input.GetJoystickNames().Length; playerColors = new List <Color32>(); playerColors.Add(P1_Color); playerColors.Add(P2_Color); playerColors.Add(P3_Color); playerColors.Add(P4_Color); charList = new List <CharacterObject>(); foreach (CharacterObject charObject in GameObject.FindObjectsOfType <CharacterObject>()) { charList.Add(charObject); } csList = new List <GameObject>(); for (var i = 0; i < characterCount; i++) { GameObject characterSelectObject = transform.Find("CS " + (i + 1)).gameObject; csList.Add(characterSelectObject); Text titleObject = characterSelectObject.transform.Find("title").gameObject.GetComponent <Text>(); titleObject.text = charList[i].name; } csIconList = new List <List <GameObject> >(); for (var i = 0; i < characterCount; i++) { csIconList.Add(new List <GameObject>()); for (var i2 = 0; i2 < 4; i2++) { csIconList[i].Add(csList[i].transform.Find("icon " + (i2 + 1)).gameObject); } } pbList = new List <GameObject>(); for (var i = 1; i < 5; i++) { pbList.Add(transform.Find("PB " + i).gameObject); } dbList = new List <GameObject>(); for (var i = 1; i < 5; i++) { dbList.Add(transform.Find("DB " + i).gameObject); } cb = transform.Find("CB").gameObject; cbIconList = new List <PlayerLock>(); for (var i = 1; i < 5; i++) { Image img = cb.transform.Find("P" + i).gameObject.GetComponent <Image>(); Image ico = cb.transform.Find("P" + i + " Check").gameObject.GetComponent <Image>(); img.color = playerColors[i - 1]; PlayerLock pl = new PlayerLock(img, ico, TIME_TO_LOCK); cbIconList.Add(pl); } cb_ready = transform.Find("CB Ready").gameObject; cb_ready_text = cb_ready.transform.Find("Text").gameObject.GetComponent <Text>(); cb_ready_time = 0; start_initiated = false; characterSelections = new List <List <int> >(); for (var i = 0; i < characterCount; i++) { characterSelections.Add(new List <int>()); } for (var i = 0; i < controllerCount; i++) { characterSelections[0].Add(i); } playerSelections = new List <int>(); for (var i = 0; i < controllerCount; i++) { playerSelections.Add(0); } timeSinceLastMovement = new List <float>(); for (var i = 0; i < controllerCount; i++) { timeSinceLastMovement.Add(0); } isBackPressed = false; curtain = transform.Find("Curtain").gameObject.GetComponent <Curtain>(); generateCharacterUI(); generatePlayerUI(); setCharSelect(0, 0); setCharSelect(1, 0); setCharSelect(2, 0); setCharSelect(3, 0); }
void animateTest() { for (var i = 0; i < controllerCount; i++) { if (timeSinceLastMovement[i] < TIME_TO_MOVE && Time.fixedTime > 1) { int iconIndex = characterSelections[playerSelections[i]].IndexOf(i); float scale = timeSinceLastMovement[i] / TIME_TO_MOVE; csIconList[playerSelections[i]][iconIndex].transform.localScale = new Vector3(scale, scale, 1); } // player lock code PlayerLock playerLock = cbIconList[i]; Vector3 iconScale = playerLock.LockBackground.transform.localScale; if (Input.GetKey("joystick " + (i + 1) + " button 0")) { if (!playerLock.IsLocked) { playerLock.LockTime += Time.deltaTime; if (playerLock.LockTime >= playerLock.TimeToLock) { playerLock.IsLocked = true; iconScale.y = 1; playerLock.LockIcon.color = new Color32(33, 33, 33, 255); playerLock.LockBackground.transform.localScale = iconScale; } } } else { if (playerLock.LockTime > 0 && !playerLock.IsLocked) { playerLock.LockTime -= Time.deltaTime; } if (playerLock.LockTime < 0) { playerLock.LockTime = 0; } } if (!playerLock.IsLocked) { iconScale.y = playerLock.LockTime / playerLock.TimeToLock; playerLock.LockBackground.transform.localScale = iconScale; } } // game start code if (!start_initiated) { bool isAllLocked = true; for (var i = 0; i < controllerCount; i++) { if (!cbIconList[i].IsLocked) { isAllLocked = false; } } if (isAllLocked) { start_initiated = true; cb_ready.SetActive(true); cb_ready_time = 0; currentStartSecond = (int)(START_TIME - cb_ready_time) + 1; cb_ready_text.text = "Starting in " + currentStartSecond; } } else { if (cb_ready_time > START_TIME) { // start dungeon cb_ready_text.text = "Starting..."; string sceneName; switch (PlayerPrefs.GetString("mode")) { case "dungeon": sceneName = "split_screen_test"; break; case "arena": sceneName = "arena_scene"; break; case "oddball": sceneName = "oddball_scene"; break; default: sceneName = "split_screen_test"; break; } SceneManager.LoadScene(sceneName); curtain.instantOpen(); } else { int tempCurSec = currentStartSecond; cb_ready_time += Time.deltaTime; currentStartSecond = (int)(START_TIME - cb_ready_time) + 1; // if second changes, update text if (tempCurSec != currentStartSecond) { cb_ready_text.text = "Starting in " + currentStartSecond; } // if (!curtain.isRunning && curtain.transitionTime > (START_TIME - cb_ready_time)) { curtain.close(); } } } }