Giel van Schijndel
05d9661d7a
* Do not change the function _swap_endianness on the fly to prevent it from being used in a 2.1 lobby
...
- Change this because altering _swap_endianness on the fly isn't threadsafe
- Instead revert to code duplication (for now)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7218 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-28 00:46:45 +02:00
Giel van Schijndel
a5aa693b95
Split out the different lobby protocol versions in a class per version:
...
* This removes the need to specify what type of protocol (e.g. BinaryProtocol vs. JsonProtocol) should be used
- Instead only the (Warzone) version needs to be specified, the constructor function (Protocol()) will figure out the correct protocol class to use
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7217 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-28 00:46:45 +02:00
Giel van Schijndel
b64911e732
* For reading use a context managed "readable" as well
...
- However, unlike "writeable" don't return a StringIO object for strings
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7216 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-28 00:46:45 +02:00
Giel van Schijndel
832f8728d2
Use the Protocol class to find out what port to listen on, instead of manually configuring
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7215 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-28 00:46:45 +02:00
Giel van Schijndel
cdc8412bd7
Convert wztest.py to use the latest lobby code for testing the lobby
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7212 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 22:46:38 +02:00
Giel van Schijndel
eebb624276
* Change the lobby IRC bot to use the same code as the lobby server for protocol handling and game representation
...
* Move the "list" function (to retrieve the lobby's list of games) to the Protocol class
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7211 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 22:46:38 +02:00
Giel van Schijndel
32417e1bb9
* Allow Protocol's encode and decode functions to work directly on * sockets and file objects (in addition to strings)
...
- This removes the requirement for the socket handler to be aware of the size of a single game
- I.e. this allows variable sized games without another API change
* Read and write Protocol data directly from and to the sockets, decoding and encoding on the fly
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7209 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:41 +02:00
Giel van Schijndel
b68ab0bb6d
Log tracebacks when exceptions occur and aren't handled
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7208 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:41 +02:00
Per Inge Mathisen
952fc1a708
Correct some not-very-important comments. Closes ticket:422, patch by stiv.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7205 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:41 +02:00
Buginator
2dc8626d75
whoops! :o I applied the wrong patch.
...
Reverting.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7204 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:41 +02:00
Per Inge Mathisen
a0b9188899
Make use of ASSERT_OR_RETURN to clean up asserts and error conditions in structure code.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7201 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:40 +02:00
Giel van Schijndel
d1d787c8d6
* Make the game server's port version dependant
...
* Move checking of game's vitality to from the Game class to the Protocol class
- Do this because checking of games is inherently protcol dependant
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7200 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:40 +02:00
Giel van Schijndel
4b74fd0cc5
Don't deal with requestHandler stuff in the Game class
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7199 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:40 +02:00
Giel van Schijndel
57aefa7a85
* Use unpack_from, instead of unpack, if multiple items are contained in the same buffer
...
* Use xrange() instead of range() when looping over its items
- xrange() is faster and more lightweight as iterable
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7198 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:40 +02:00
Giel van Schijndel
227ecdb1f8
Lobby protocol: Workaround the fact that the 2.0.x versions don't perform endian swapping
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7197 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:40 +02:00
Giel van Schijndel
322c10e7a4
* Use struct.Struct objects instead of free functions from the "struct" module to perform encoding and decoding
...
* Perform version range comparisons like this: lowest_version <= version < one_higher_than_largest_version
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7196 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:39 +02:00
Giel van Schijndel
9ff472fad5
Fix a syntax and semantical error:
...
* Use the % operator for formatting strings
* Use struct.unpack for decoding a struct (instead of struct.pack)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7195 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:39 +02:00
Giel van Schijndel
8bfd2acef1
Use a single function to perform the encoding as a C string
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7194 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 21:30:39 +02:00
Gerard Krol
98acead64b
Prevent power assert for "instant" (no research points needed) research. This fixes bug #424 .
2009-04-27 14:04:32 +02:00
Buginator
8a11947b31
Let's only send the map to the person that needs the map.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7178 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 12:46:39 +02:00
Buginator
88c534c213
closes ticket:37 Which had a bad case of bitrot.
...
Adds a new console command 'showorders' (Must be in debug/cheat mode)
This toggle allows realtime information on the selected unit, and always shows the order / action it is doing. When the unit is deselected, then it doesn't display anything.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7172 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 12:46:39 +02:00
Buginator
7ef71df9cb
Fixes ticket:419
...
Add check to make sure logfile is available.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7169 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 12:46:38 +02:00
Buginator
b69d82d99f
Fixes ticket:421
...
--host works correctly again.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7166 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 12:46:38 +02:00
Guangcong Luo
8c06496525
Fix assert when attempting to research free topics.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7165 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-27 12:46:38 +02:00
Buginator
b095418a42
Fixes ticket: 369
...
Don't always assume that the (lobby) server will not be available, and give up on all future attempts.
We now reset the flag on NETclose().
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7159 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:08 +02:00
Guangcong Luo
b17b7823a8
Reformat r7155 to follow coding style
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7157 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:08 +02:00
Guangcong Luo
2a4a462502
Commit patch #374 : Fix artillery prediction, submitted by Adam Olsen.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7155 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:08 +02:00
Freddie Witherden
b54722604a
Update the default configuration so that we do not pause on focus loss.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7154 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Buginator
367110ec57
Disable password button for skirmish games.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7150 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Per Inge Mathisen
af5182dc1a
Fix compile on MSVC. Cannot use #ifdef inside a macro.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7149 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Buginator
3365cd06f1
Remove superfluous asserts concerning unit's names.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7146 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Guangcong Luo
20f0ddc547
Team selector is now labeled "TEAM" and teams are colored and lettered A-H. The original numbers were changed to letters so they can no longer be confused with player numbers.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7142 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Guangcong Luo
7420c1cb55
Players are no longer required to lose at least 3 times to earn a medal.
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7139 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-24 14:16:07 +02:00
Gerard Krol
af88a73dfc
The bad hack the "work harder" cheat was using did not play well with the power code. It now just marks the research as finished instead of giving lots of power and research time.
2009-04-24 14:11:24 +02:00
Per Inge Mathisen
0c694a22b0
Introduce ASSERT_OR_RETURN, a macro to assert on an expression, and assert() and then return if it fails,
...
but only assert() in debug builds.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7136 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-23 01:36:45 +02:00
Gerard Krol
6cb979ac1a
The commit to fix the unsigned int underflow (ticket 404) had as unfortunate side effect that building was possible even when out of power. This fixes it.
2009-04-23 01:34:23 +02:00
Git SVN Gateway
c17d6fcbd8
Merge commit 'gerard_/master'
2009-04-22 18:08:14 +02:00
Giel van Schijndel
cffa0b65af
Make BinaryProtocol more flexible to allow it to work with 2.0+ as well as the 2.2 lobby protocol (depending on what parameter was used during construction)
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7128 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 16:03:19 +02:00
Giel van Schijndel
7f5bc28bd0
Move the Game, Protocol classes to files of their own (to allow them to be reused by the IRC bot, instead of duplicating code)
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7127 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 16:03:19 +02:00
Gerard Krol
d23c6cb1a1
Be extra careful with the buildpoints, as the signed <-> unsigned stuff might have caused problems. This should fix ticket #404 .
2009-04-22 13:42:50 +02:00
Giel van Schijndel
f95bcd605b
Move the IRC bot to the same directory as the lobby server
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7126 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:35 +02:00
Giel van Schijndel
1447766635
Whatever way we leave the bot's mainloop, make sure to terminate the lobby checking thread
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7125 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:35 +02:00
Giel van Schijndel
61d0fd23d0
Don't use Python 2.6 specific syntax (r7123)
...
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7124 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:35 +02:00
Giel van Schijndel
2dc1bcfd12
* Catch and handle all socket errors, not just timeouts
...
- Don't just report failure to the user that request a lobby listing, report the error message (asociated with the exception) as well
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7123 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:35 +02:00
Buginator
f17402ef40
excise the codebase from some C99 format specifiers.
...
(%zu -> %lu)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7120 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:34 +02:00
Giel van Schijndel
7b16d058af
Fix #400 :
...
* Assert failure trying to append to a non-static stringbuffer using sstrcat
- The sstrcat wasn't necessary anymore but forgotten to remove in r6714
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7119 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:34 +02:00
Giel van Schijndel
e91765af19
* Notify all served IRC channels when shutting down
...
* Notify all served IRC channels when encoutering an unhandled exception (and shutting down as a result)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7118 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:34 +02:00
Giel van Schijndel
fef445101e
* Rename the "help" command to "about"
...
* Change "commands" to dynamically look through the commands that are available and list them
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7117 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:34 +02:00
Giel van Schijndel
a72e7d5288
* Move construction of BotCommands to its own class (__init__)
...
* Only attempt to call attributes of BotCommands if they're functions (rejecting __.*__ functions)
* Return from readAndHandle as soon as we've handled a message
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7116 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:34 +02:00
Giel van Schijndel
c9113f9730
* Pass the IRC write function as a lambda to BotCommands' functions
...
* When a user joins a served channel, send him a notice of the games currently present ("list" output)
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7113 4a71c877-e1ca-e34f-864e-861f7616d084
2009-04-22 13:18:33 +02:00