Changeset 5fa49a5


Ignore:
Timestamp:
Nov 5, 2011, 3:54:57 PM (6 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
a37e89a
Parents:
d503501
Message:

Attempt of rewrite for the current replay version

Location:
sc2replay/src/main/java/de/erichseifert/warp/sc2replay
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • sc2replay/src/main/java/de/erichseifert/warp/sc2replay/SC2ReplayParser.java

    rd503501 r5fa49a5  
    3434        static {
    3535                parserClasses = new LinkedList<Class<? extends SC2ReplayParser>>();
     36                parserClasses.add(SC2ReplayParser_v4.class);
    3637                parserClasses.add(SC2ReplayParser_v3.class);
    3738                parserClasses.add(SC2ReplayParser_v2.class);
  • sc2replay/src/main/java/de/erichseifert/warp/sc2replay/actions/SC2ActionFactory_v4.java

    rd503501 r5fa49a5  
    5858
    5959                // Read event type and player index
    60                 byte flags = src.get();
    61                 int eventTypeCode = (flags >> 5) & 0x7;
    62                 boolean globalEvent = (flags & 16) != 0;
    63                 int playerIndex = (flags & 0xF) - 1 ;
     60                int flags = src.get() & 0xFF;
     61                int eventTypeCode = flags >> 5;
     62                boolean globalEvent = (flags & 0x0F) != 0;
     63                int playerIndex = (flags & 0x0E) - 1;
    6464
    6565                // Read action
     
    305305        }
    306306        }
     307
     308        private SC2Action readInitEvent(ByteBuffer src, int timeStamp) {
     309                assert src != null;
     310                int code = src.get();
     311                SC2Action action = null;
     312                // Game starts: 0x05
     313                if (code == 0x05) {
     314                        action = new StartGame(timeStamp);
     315                }
     316                // Player enters game: 0x0B, 0x2B, 0x0C, 0x2C
     317                else if ((code & 0x0B) != 0) {
     318                        action = new EnterGame(timeStamp);
     319                }
     320                return action;
     321        }
     322
     323        private SC2Action readPlayerAction(ByteBuffer src, int timeStamp) {
     324                assert src != null;
     325                int code = src.get();
     326                SC2Action action = null;
     327                // Player leaves game: 0x09
     328                if (code == 0x09) {
     329                        action = new LeaveGame(timeStamp);
     330                }
     331                // Player uses ability: 0x0B, 0x1B, ..., 0x9B
     332                else if ((code & 0x0B) != 0) {
     333                        action = new Order(timeStamp);
     334                }
     335                // Player changes selection: 0x0C, 0x1C, ..., 0xAC
     336                else if ((code & 0x0C) != 0) {
     337                        action = new Select(timeStamp);
     338                }
     339                // Player changes or selects Group X: 0x0D, 0x1D, ..., 0x9D
     340                else if ((code & 0x0D) != 0) {
     341                        int group = (code & 0xF0) >> 4;
     342                        action = new Group(timeStamp);
     343                }
     344                // Player sends resources: 0x0F, 0x1F, ..., 0x9F
     345                else if ((code & 0x0F) != 0) {
     346                        action = new SendResources(timeStamp);
     347                }
     348                return action;
     349        }
     350
     351        private SC2Action readUnknownEvent(ByteBuffer src, int timeStamp) {
     352                assert src != null;
     353                int code = src.get();
     354                SC2Action action = null;
     355                // Unknown: 0x06, 0x07, 0x0E
     356                if (code == 0x06 || code == 0x07 || code == 0x0E) {
     357                        action = new Unknown(timeStamp);
     358                }
     359                return action;
     360        }
     361
     362        private SC2Action readReplayEvent(ByteBuffer src, int timeStamp) {
     363                assert src != null;
     364                int code = src.get();
     365                SC2Action action = null;
     366                // Screen movement: 0x01, 0x11, ..., 0xF1
     367                if ((code & 0x01) != 0) {
     368                        action = new MoveScreen(timeStamp);
     369                }
     370                // Unknown: 0x08, 0x18, 0x87
     371                if (code == 0x08 || code == 0x18 || code == 0x87) {
     372                        action = new Unknown(timeStamp);
     373                }
     374                return action;
     375        }
    307376}
Note: See TracChangeset for help on using the changeset viewer.