Commit Graph
146 Commits
Author SHA1 Message Date
Andrew Livy 2e8dc57f3d Adds Dual List Mode to ScreenSelectMaster. This allows for themers to maintain two separate lists depending on number of players joined. Overcomes some problems such as wanting the list to only contain selectable items if using a scroller. Untested with icon cursor and needs optimising still. 2009-05-02 15:30:04 +00:00
Chris Danford 167a061b3e fix LockInputSecs not being set correctly, and pressing Start early would choose without starting SM_GoToNextScreen 2009-04-04 17:45:07 +00:00
Chris Danford 7114679d91 all ScreenSelect derivatives already have a hard-coded subscribe to PlayerJoined 2009-02-10 22:44:28 +00:00
Steve Checkoway 3f800ece3d Actually look in the right place for subscriptions. 2009-01-05 08:46:22 +00:00
Steve Checkoway f6edbc8a28 Only subscribe to PlayerJoined a single time. 2009-01-05 07:00:49 +00:00
Chris Danford f3d5c8d865 add Double* difficulty sorts 2008-06-23 10:57:14 +00:00
Chris Danford c7e2b57b5f allow IdleTimeoutSeconds in CoinMode_Pay (remove special case) 2008-06-21 06:44:39 +00:00
Glenn Maynard 2e1705ac46 This is a bit spaghetti right now, and this is compounding it further, so let's
look at all the cases:

Generic ScreenSelect, eg. ScreenSelectStyle:
 A non-joined player START press can join.  On successful join, discard the
 input; the start press that joins the player should not also make a selection
 on the menu.   Non-joined players can make no other inputs.  (ALLOW_DISABLED_PLAYER_INPUT
 is false.)
  - on start press
    - attempt to join the player; if successful:
     - play start sound (normally done by the derived class, eg. ScreenSelectMaster::MenuStart,
       but we're not going there)
     - return, so this start press that just joined the player doesn't also make a selection
    - any other button, return and ignore the press ("block input of disabled players")
  - on any other button press, just ignore it

ScreenJoin:
 Pressing start on a non-joined player joins the player, and unlike the generic case,
 it also passes the start press on as input, selecting the default option and starting the
 game.  (ALLOW_DISABLED_PLAYER_INPUT is true.)

 We don't have any visible menu selections, so other player inputs don't matter.
  - This screen assumes that a player can join, and that the first successful join
    will move on.  Pressing start and having it not join has never been tested or
    used, and in fact crashes: it'll be passed on as a selection, and
    SM_BeginFadingOut dies, because m_MasterPlayerNumber is invalid.
 
ScreenTitleMenu:
 Like SJoin, pressing start will select the current option and start the game.  Unlike
 SJoin, this screen has options; arrow key inputs on a non-joined player must be
 passed on, so the cursor can be moved.  (ALLOW_DISABLED_PLAYER_INPUT is true.)

This "always joins" assumption is bad, and was probably never intended.  Fix by
never allowing start on a non-joined player (unless the start just joined the
player, in which case he'll be joined by the time of this check).
2008-06-11 22:13:26 +00:00
Glenn Maynard 29936c8a2d Don't respond to players joining by catching GB_START; other code can cause a join, too. Watch the Message_PlayerJoined message instead. 2008-05-28 00:53:42 +00:00
Chris Danford d377c2b1a4 MENU_BUTTON_ -> GAME_BUTTON_ 2008-05-21 05:36:09 +00:00
Glenn Maynard 7f08da77f1 set all lights modes in metrics (except for a couple programmatic ones
for now)
2007-06-14 13:38:26 +00:00
Glenn Maynard 743421f88f some MENU -> GAME 2007-05-10 17:59:13 +00:00
Glenn Maynard b1c26c4869 PlayersFinalized removed 2007-04-18 03:55:06 +00:00
Glenn Maynard 1189f94ede generalize CodeNames 2007-03-16 23:33:41 +00:00
Glenn Maynard dc8a6ee910 move CodeItem into InputQueue
rename to InputQueueCode
2007-03-15 20:44:18 +00:00
Chris Danford cf80f30e3b beginnings of late join 2007-03-04 08:52:06 +00:00
Chris Danford 0c972a4dd7 cleanup CoinMode and Premium names 2007-02-26 09:40:14 +00:00
Glenn Maynard 8dbb54a1c6 do check msg.GetName() 2007-02-03 06:02:46 +00:00
Glenn Maynard 7ef6009567 Screen::JoinInput -> GameState::JoinInput 2006-11-21 19:57:58 +00:00
Glenn Maynard d591926ff7 Don't play sounds in JoinInput; let the caller do that.
Localize "only play start sound for the 2nd player who joins"
hack into ScreenSelect.
2006-11-21 19:52:18 +00:00
Glenn Maynard 9195740ded cleanup 2006-11-21 19:39:17 +00:00
Glenn Maynard 27fdc9101f join on IET_FIRST_PRESS only 2006-11-21 19:37:16 +00:00
Glenn Maynard 93efb67216 correct base 2006-11-21 19:33:24 +00:00
Glenn Maynard 52009ae6ee I'm not sure what was happening here:
If ALLOW_DISABLED_PLAYER_INPUT is true (only ScreenTitleMenu), then
ScreenSelect::Input doesn't do JoinInput ("the player will be joined
and the user will still be on the title menu").  However,
ScreenSelectMaster::MenuStart does the JoinInput anyway, so this still
happens.

If we want to have main menu options that don't load a screen, this
code path should be refactored a bit, to ask the derived class whether
the selection should also join.  As is, it's just making the JoinInput
path complicated.
2006-11-21 19:28:42 +00:00
Glenn Maynard 00fdeac301 remove empty 2006-11-21 19:06:54 +00:00
Glenn Maynard 44bb231639 separate slightly confusing logic - send COIN inputs with the normal input path 2006-11-21 19:04:24 +00:00
Glenn Maynard a5f5fa0b78 HandleMessage( Message ) 2006-11-13 23:11:25 +00:00
Glenn Maynard 35fb88e5e5 Drop generic concurrent rendering. It makes too many things very
complicated, and I don't trust it at a high level: it makes too
many unchecked things concurrent, so I think it will make things
brittle.
2006-11-13 21:04:17 +00:00
Steve Checkoway 6ea2a41b00 Cleanup RageException::Throw(). Do not use ssprintf() inside of Throw() and do not pass it bare error messages. Use RageException::Throw( "%s", sError.c_str() ); instead. Be consistent with quoting file names "%s" and theme metrics as "%s : %s". Try to make them complete English sentences when possible. 2006-09-17 01:19:19 +00:00
Steve Checkoway 944a913790 PlayerNumber -> IEP. 2006-09-15 01:47:24 +00:00
Glenn Maynard ad809ec5fa simplify interface 2006-09-14 08:14:22 +00:00
Glenn Maynard 2b5cbe811f check the button press in the caller of JoinInput (so we
don't have to construct a fake input message in
ScreenSelectMaster::MenuStart)
2006-09-14 08:11:58 +00:00
Glenn Maynard 3fe68d7f7d simplify 2006-09-14 05:18:40 +00:00
Glenn Maynard 754f2edb0f JoinInput(MenuInput ) -> JoinInput(InputEventPlus) 2006-09-14 03:23:17 +00:00
Glenn Maynard c9c88f26c2 input.MenuI.player -> input.pn 2006-09-14 03:18:16 +00:00
Glenn Maynard 7b995b8487 remove unused 2006-08-20 20:01:53 +00:00
Glenn Maynard f0b5e93621 This is the only place GetMetricM is still used; remove it 2006-08-20 19:39:59 +00:00
Chris Danford 1aa0b38c9f fix SUnlockBrowse unlocking entry 1 when all entries are disabled 2006-06-05 07:36:23 +00:00
Glenn Maynard ed60014bb3 fix ScreenSelect ignores StopMusicOnBack 2006-02-25 00:51:30 +00:00
Chris Danford 6ec1d47d6c tab cleanup 2006-01-29 00:25:33 +00:00
Chris Danford 7f821e8cfc CString -> RString 2006-01-22 01:00:06 +00:00
Glenn Maynard 409bc25090 simplify, use GetNextScreen 2006-01-20 06:41:15 +00:00
Glenn Maynard 5a3f362f5d load in Init() 2006-01-15 19:29:33 +00:00
Glenn Maynard f6ea595c12 load in Init() 2006-01-15 19:22:17 +00:00
Glenn Maynard c5b71c0631 remove logs (this stuff predates the crash handler and has been copied
and pasted around since)

jesus we have a lot of screens
2006-01-15 08:54:03 +00:00
Glenn Maynard 6467fa0bc4 simplify, eliminate GetAndClearScreen 2006-01-15 08:09:03 +00:00
Glenn Maynard 9eb3430ebd reset idle timers in BeginScreen 2006-01-10 00:14:35 +00:00
Chris Danford 37f82b43f7 remove CStringArray #define 2005-12-09 21:36:22 +00:00
Glenn Maynard 25ee89ef33 Remove SM_AllDoneChoosing. ScreenSelects just send SM_BeginFadingOut when
done.  This is much simpler, and fixes concurrent loads starting late.
2005-10-14 02:13:13 +00:00
Glenn Maynard fce721238e cleanup: StopTimer in ScreenSelect 2005-10-13 22:59:53 +00:00