Please excuse my unilateral action, but I hate sliders. Use a ComboBox for
player count selection and for any range parameter of less than 16 elements. git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@497 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
@@ -61,13 +61,29 @@ public class EZGameConfigurator extends FlexGameConfigurator
|
||||
for each (var param :Parameter in params) {
|
||||
if (param is RangeParameter) {
|
||||
var range :RangeParameter = (param as RangeParameter);
|
||||
var slider :HSlider = new HSlider();
|
||||
slider.minimum = range.minimum;
|
||||
slider.maximum = range.maximum;
|
||||
slider.value = range.start;
|
||||
slider.liveDragging = true;
|
||||
slider.snapInterval = 1;
|
||||
addLabeledControl(param, new LabeledSlider(slider));
|
||||
if ((range.maximum - range.minimum) < 16) {
|
||||
var combo :ComboBox = new ComboBox();
|
||||
var values :Array = [];
|
||||
var startDex :int = 0;
|
||||
for (var ii :int = range.minimum; ii <= range.maximum; ii++) {
|
||||
if (ii == range.start) {
|
||||
startDex = ii;
|
||||
}
|
||||
values.push(ii);
|
||||
}
|
||||
combo.dataProvider = values;
|
||||
combo.selectedIndex = startDex;
|
||||
addLabeledControl(param, combo);
|
||||
|
||||
} else {
|
||||
var slider :HSlider = new HSlider();
|
||||
slider.minimum = range.minimum;
|
||||
slider.maximum = range.maximum;
|
||||
slider.value = range.start;
|
||||
slider.liveDragging = true;
|
||||
slider.snapInterval = 1;
|
||||
addLabeledControl(param, new LabeledSlider(slider));
|
||||
}
|
||||
|
||||
} else if (param is ChoiceParameter) {
|
||||
var choice :ChoiceParameter = (param as ChoiceParameter);
|
||||
|
||||
@@ -24,11 +24,10 @@ package com.threerings.parlor.client {
|
||||
import mx.containers.Grid;
|
||||
|
||||
import mx.controls.CheckBox;
|
||||
import mx.controls.HSlider;
|
||||
import mx.controls.ComboBox;
|
||||
import mx.controls.Label;
|
||||
|
||||
import com.threerings.flex.GridUtil;
|
||||
import com.threerings.flex.LabeledSlider;
|
||||
|
||||
import com.threerings.parlor.data.TableConfig;
|
||||
import com.threerings.parlor.util.ParlorContext;
|
||||
@@ -51,25 +50,28 @@ public class DefaultFlexTableConfigurator extends TableConfigurator
|
||||
allowWatchable :Boolean = true, playersXlate :String = "Players: ",
|
||||
watchableXlate :String = "Watchable: ", privateXlate :String = "Private: ")
|
||||
{
|
||||
var partyGame :Boolean = minPlayers < 0 && maxPlayers < 0;
|
||||
|
||||
var partyGame :Boolean = (minPlayers < 0) && (maxPlayers < 0);
|
||||
if (minPlayers < 0) {
|
||||
minPlayers = desiredPlayers;
|
||||
}
|
||||
if (maxPlayers < 0) {
|
||||
maxPlayers = desiredPlayers;
|
||||
}
|
||||
|
||||
_config.minimumPlayerCount = minPlayers;
|
||||
|
||||
// create a slider for players, if applicable
|
||||
if (minPlayers != maxPlayers) {
|
||||
_playerSlider = new HSlider();
|
||||
_playerSlider.value = desiredPlayers;
|
||||
_playerSlider.minimum = minPlayers;
|
||||
_playerSlider.maximum = maxPlayers;
|
||||
_playerSlider.liveDragging = true;
|
||||
_playerSlider.snapInterval = 1;
|
||||
_players = new ComboBox();
|
||||
var values :Array = [];
|
||||
var startDex :int = 0;
|
||||
for (var ii :int = minPlayers; ii <= maxPlayers; ii++) {
|
||||
if (ii == desiredPlayers) {
|
||||
startDex = ii;
|
||||
}
|
||||
values.push(ii);
|
||||
}
|
||||
_players.dataProvider = values;
|
||||
_players.selectedIndex = startDex;
|
||||
|
||||
} else {
|
||||
_config.desiredPlayerCount = desiredPlayers;
|
||||
@@ -98,12 +100,11 @@ public class DefaultFlexTableConfigurator extends TableConfigurator
|
||||
var gconf :FlexGameConfigurator =
|
||||
(_gameConfigurator as FlexGameConfigurator);
|
||||
|
||||
if (_playerSlider != null) {
|
||||
if (_players != null) {
|
||||
var playerLabel :Label = new Label();
|
||||
playerLabel.text = _playersXlate;
|
||||
playerLabel.styleName = "lobbyLabel";
|
||||
|
||||
gconf.addControl(playerLabel, new LabeledSlider(_playerSlider));
|
||||
gconf.addControl(playerLabel, _players);
|
||||
}
|
||||
|
||||
if (_watchableCheck != null) {
|
||||
@@ -122,7 +123,7 @@ public class DefaultFlexTableConfigurator extends TableConfigurator
|
||||
// documentation inherited
|
||||
override public function isEmpty () :Boolean
|
||||
{
|
||||
return (_playerSlider == null) && (_watchableCheck == null);
|
||||
return (_players == null) && (_watchableCheck == null);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
@@ -130,8 +131,8 @@ public class DefaultFlexTableConfigurator extends TableConfigurator
|
||||
{
|
||||
super.flushTableConfig();
|
||||
|
||||
if (_playerSlider != null) {
|
||||
_config.desiredPlayerCount = _playerSlider.value;
|
||||
if (_players != null) {
|
||||
_config.desiredPlayerCount = int(_players.selectedItem);
|
||||
}
|
||||
// TODO - it is wacky for the TableConfig.privateTable to mean two different things.
|
||||
// It should be extended to have separate privateTable and watchableTable options.
|
||||
@@ -142,8 +143,8 @@ public class DefaultFlexTableConfigurator extends TableConfigurator
|
||||
}
|
||||
}
|
||||
|
||||
/** A slider for configuring the number of players at the table. */
|
||||
protected var _playerSlider :HSlider;
|
||||
/** A component for configuring the number of players at the table. */
|
||||
protected var _players :ComboBox;
|
||||
|
||||
/** A checkbox to allow the table creator to specify if the table is watchable */
|
||||
protected var _watchableCheck :CheckBox;
|
||||
|
||||
Reference in New Issue
Block a user