private void GeneratePlayer(int gamepadNumber) { if (AllocatedGamepads.Count < MaxPlayerCount) { var newDef = new PlayerDefinition() { AssignedGamepad = gamepadNumber }; AllocatedGamepads.Add(gamepadNumber, newDef); if (PlayerDefinitionEditorPrefab.IsAvailable) { var newEditor = PlayerDefinitionEditorPrefab.Res.Instantiate(); var editor = newEditor.GetComponent <PlayerDefinitionEditor>(); editor.PlayerDef = newDef; for (int i = 1; i < AllocatedGamepads.Count; i++) { newDef.NextColor(); } newDef.Editor = editor; Editors.Add(editor); Editors.Sort(Comparer <PlayerDefinitionEditor> .Create((one, two) => { return(one.PlayerDef.AssignedGamepad.CompareTo(two.PlayerDef.AssignedGamepad)); })); Scene.Current.AddObject(newEditor); } } }
private void CheckForPlayerAddRemove() { for (int i = 0; i < DualityApp.Gamepads.Count; i++) { var item = DualityApp.Gamepads[i]; if (item.IsAvailable) { if (item.ButtonHit(GamepadButton.Start)) { if (AllocatedGamepads.ContainsKey(i)) { RemovePlayer(i); } else { GeneratePlayer(i); } } } } if (DualityApp.Keyboard.KeyHit(Duality.Input.Key.F2)) { GeneratePlayer(AllocatedGamepads.Count); } }
private void RemovePlayer(int i) { if (AllocatedGamepads.ContainsKey(i)) { Editors.Remove(AllocatedGamepads[i].Editor); AllocatedGamepads[i].Editor.DisposeLater(); AllocatedGamepads.Remove(i); } }
public void OnUpdate() { MinPlayerCount = GameSetup.Instance.Level.Res.MinPlayerCount; MaxPlayerCount = GameSetup.Instance.Level.Res.MaxPlayerCount; CheckForPlayerAddRemove(); PositionEditors(); if (Editors.Count >= MinPlayerCount && Editors.Count <= MaxPlayerCount) { Valid = true; } else { Valid = false; } if (!Valid) { HelpTextRenderer.Text.SourceText = string.Format("Add more Players! This map supports {0} players.", MinPlayerCount); } else { HelpTextRenderer.Text.SourceText = ""; } AllReady = true; foreach (var item in Editors) { if (!item.PlayerReady) { AllReady = false; } } if (Valid && AllReady) { GameSetup.Instance.SwitchToStage(AllocatedGamepads.Select(x => x.Value)); } }