Commit Graph
47 Commits
Author SHA1 Message Date
Jasper St. Pierre 9f90cbee19 NetPlayServer: Close the socket when we're done with it
This would allow a new socket to be created with the same port after
we close it. However, we can't reuse it immediately because of the TCP
TIME-WAIT state.
2013-08-05 06:43:27 -04:00
Jasper St. Pierre 59ab60f37f NetPlay: Supply every player's ping data to the client
This means that we now have feature parity with the combined server
before.
2013-08-05 06:12:56 -04:00
Jasper St. Pierre a3a222bf5b NetPlay: Remove NetPlay.h / NetPlay.cpp
Now the server and client implementations are entirely separate.
2013-08-05 05:05:06 -04:00
Jasper St. Pierre 9e63cebc93 NetPlay: Remove the base NetPlay class
It's only used by the NetPlayClient. For now, keep around NetPlay.cpp,
but we'll remove that soon.
2013-08-05 04:56:30 -04:00
Jasper St. Pierre 3b32d3c90d NetPlay: Split the server out, and make the local system manage a client as well
This should be transparent, but it may cause regressions.

The idea here is that now all players, including the host of the server,
talk to the server through TCP/IP networking. This significantly reduces
our codepaths through netplay, and will prevent strange local-only bugs
from happening.

The cleanup isn't 100% finished yet. The NetPlay dialog still drives the
server through private APIs. I eventually want to sanction off the server
entirely, so all communication is done through TCP/IP. This will allow us
to have high-traffic public servers that can relay multiple games and
lobbies at a time, and split off channel and game management to people
other than the host.

This is all still just a pipe dream, though.
2013-08-05 04:42:26 -04:00
Jasper St. Pierre 9e8655fa1f NetPlay: Remove some dead code 2013-08-05 04:25:16 -04:00
Jasper St. Pierre 0e0f0aec6e Core: Remove dead code
We never call SetState with CORE_UNINITIALIZED, and always call
Core::Stop() directly.
2013-08-05 00:03:15 -04:00
Jasper St. Pierre 09338c673c FrameTools: Use the correct window handle for resizing the window
We want to resize the OpenGL window, not the frame window.
2013-07-23 15:02:00 -04:00
Jasper St. Pierre a963c621dc NetPlay: Sync across whether to save memcards or not
There's no reason this shouldn't be synced other than laziness.
2013-07-22 07:29:15 -04:00
Jasper St. Pierre 6d463d1b67 NetPlay: Allow building a server without a game
This isn't hooked up in the UI yet, but it will allow us to
basically start the server and chat system without choosing
a game.
2013-07-22 07:29:15 -04:00
Jasper St. Pierre 2631ec3cff Core: Remove an unused var 2013-07-22 07:29:15 -04:00
Jasper St. Pierre f693488c8a InputConfigDiag: Save the configuration when pressing "OK"
This fixes a common UI complaint of the control dialog UI.
Also, don't close the dialog if we have an error with the expression.
2013-07-22 03:19:38 -04:00
Jasper St. Pierre bc17798ef2 InputConfigDiag: Add a simple error status label
This tells you what you did wrong at a high level if you messed up.
2013-07-22 03:19:22 -04:00
Jasper St. Pierre 3c7f223aa1 Add "Q" / "E" as freelook keybindings
To move the view up and down.
2013-07-22 00:14:42 -04:00
Jasper St. Pierre 52482115e1 Move in-game keybinding handling to a central location
Instead of handling it separately in every backend.
2013-07-21 23:17:16 -04:00
Jasper St. Pierre 4981b7cdd3 VertexShaderManager: Make ProjectionHack private
There's no reason to make this public, and it prevents a build
issue with the next commit.
2013-07-21 17:56:20 -04:00
Jasper St. Pierre 3b29320113 wx: Prevent warnings when compiling with recent versions of g++
g++ tends to think this is a string literal instead of concatenation.
2013-07-21 17:56:20 -04:00
Jasper St. Pierre fec641d14a X11: Don't do a round-trip to the server to figure out our size on configure
Simply use the values from the event structure.
2013-07-21 01:59:40 -04:00
Jasper St. Pierre 01ff85506d X11: Don't use a client event as a wrapper for XMoveResizeWindow
Simply configure the window from here
2013-07-21 01:59:40 -04:00
Jasper St. Pierre ca97b10dda Actually link to XI2
No idea how this was working before
2013-07-21 01:59:40 -04:00
Jasper St. Pierre bd7ca7625b Fix up last commit
I forgot to git add this change.
2013-07-21 00:51:07 -04:00
Jasper St. Pierre 3239e4946f Use pkg-config to check for XInput2 2013-07-21 00:45:03 -04:00
Jasper St. Pierre 4c807fa7b4 Fix Device.h placement in VC++ 2013-07-15 16:24:20 -04:00
Jasper St. Pierre b64e882ba5 ExpressionParser: Parse fully qualified control names correctly
Without clearing out the "accumulator" for the backtick parsing,
our control name was full of junk (the previous device name) causing
us to not correctly find the control.

Ensure that always we clear the "accumulator" string during backtick
parsing.
2013-07-12 13:26:09 -04:00
Jasper St. Pierre b2e7248b58 LogWindow: Fix a bad initializer
Since these defaults aren't used, don't bother specifying them.
2013-07-05 22:39:18 -04:00
Jasper St. Pierre 7493f19cda Squash warnings from wx
See: http://trac.wxwidgets.org/ticket/15137
2013-07-05 22:13:11 -04:00
Jasper St. Pierre d5983b587e InputConfigDialog: Don't show "..." for complicated expressions
Just show the actual expression. We need to do a bit of mangling
here as wx has no way to turn off mnemonics parsing, so do that
as well.
2013-06-29 18:28:14 -04:00
Jasper St. Pierre 1083d78721 InputConfigDiag: Put the colon after the device name
Oops. The dialog accidentally generated the wrong syntax for
this one.
2013-06-29 02:58:17 -04:00
Jasper St. Pierre 11fdd5a4ec ExpressionParser: Search for control names first
Otherwise, valid control names like "Cursor X+" would be incorrectly
tokenized as "`Cursor` `X` +", causing the parser to first abort trying to
find a control named `Cursor` rather than aborting with invalid syntax on
the bad binop.

We could also do this by resolving devices lazily, but since simple
control name bindings are going to be 90% of usecases, just look for these
first.
2013-06-27 10:51:19 -04:00
Jasper St. Pierre a92f6f68d6 DInputJoystick: Fix compile
Whoops. MSVC++ messed up somehow and didn't tell me it didn't work
locally.
2013-06-26 23:26:21 -04:00
Jasper St. Pierre cdb5b8b737 DInputJoystick: Always exclude XInput
Yeah, yeah, it's possible that some guy would try to build DInput
without XInput, but they're crazy, and I doubt it would have worked
since the header file mess was so fragile anyway. Always exclude
DInput devices when we don't have XInput.
2013-06-26 23:06:17 -04:00
Jasper St. Pierre c78a1ecdcb Merge branch 'expression-parser-barewords' 2013-06-26 20:30:09 -04:00
Jasper St. Pierre c11ae9ea4b Revert "Core: Update default bound controls for new ExpressionParser"
This reverts commit 54e1b58199.

We now support barewords control names, so use those instead.

Conflicts:
	Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp
2013-06-26 20:25:37 -04:00
Jasper St. Pierre f53eefb491 ExpressionParser: Add support for simple barewords control names
If an expression can't be parsed normally, we then look to see if it's a
simple device name. This keeps backwards compatibility with simple input
ocnfigurations, where people just used the Detect button.
2013-06-26 20:19:23 -04:00
Jasper St. Pierre 03fdebac09 ExpressionParser: Don't crash when we can't find a device 2013-06-26 16:54:48 -04:00
Jasper St. Pierre 55950365e3 InputConfigDiag: Fix complex bindings with with left-click Detect
This fixes the binding of XBox 360 controllers and similar devices
with complex control names.
2013-06-25 15:05:53 -04:00
Jasper St. Pierre 748ee50536 Core: Fix a typo in the binding of IR Up
Whoops.
2013-06-25 01:58:22 -04:00
Jasper St. Pierre 7738b8b0e0 Merge branch 'expression-parser-fixes' 2013-06-25 01:50:09 -04:00
Jasper St. Pierre 54e1b58199 Core: Update default bound controls for new ExpressionParser 2013-06-25 01:46:13 -04:00
Jasper St. Pierre 89e84163c2 ExpressionParser: Fix delimiter scanning
We need to make sure we eat the delimiter, otherwise we'll notice
the colon / backtick and think it's either a new control or part
of the control name
2013-06-25 01:44:28 -04:00
Jasper St. Pierre c5c86d17dc InputConfigDiag: Use "..." for complicated expressions
The full expression is quite often too big for a simple button
label, so encourage people to use the full editor to edit it.
2013-06-25 00:58:31 -04:00
Jasper St. Pierre 62281fbfde InputConfigDiag: Give the input text field a monospace font 2013-06-25 00:58:30 -04:00
Jasper St. Pierre 03a835ec07 InputConfigDiag: Update for the new expression language
Modify the buttons and editor interface for the new expression
language, like the new op name for add, the new device name syntax,
and add new editing features, like simple selection behavior on
unary ops.
2013-06-25 00:58:30 -04:00
Jasper St. Pierre a42388d061 ExpressionParser: Support bare words for simple control names
Using backticks for all control names can get a bit grating,
so support "A & B" instead of requiring "`A` & `B`".
2013-06-25 00:58:30 -04:00
Jasper St. Pierre d2753cce66 ExpressionParser: Add support for the add operator
Use "+" instead of "^" this time.
2013-06-25 00:58:30 -04:00
Jasper St. Pierre 6246f6e815 InputCommon: Add a new ExpressionParser to replace the old hack language
This contains a new, hand-written expression parser to replace the old
hack language based on string munging. The new approach is a simple
AST-based evaluation approach, instead of the "list of operations"
infix-based hack that there was before.

The new language for configuration has support for parentheses, and
counts "!" as a unary operator instead of the binary "NOT OR" operator
it was before. A simple example:

  (X & Y) | !B

Explicit device references, and complex device names ("Right Y+") are
handled with backticks and colons:

  (`SDL/0/6 axis joystick:Right X+` & `DInput/0/Keyboard Mouse:A`)

The basic editor UI that inserts tokens has not been updated to reflect
the new language.
2013-06-25 00:58:30 -04:00
Jasper St. Pierre 877106b027 InputCommon: Split Device stuff out
The ExpressionParser needs this to be out of here to prevent issues
with cyclic references.
2013-06-25 00:58:30 -04:00