author | koda |
Tue, 21 Jan 2014 22:53:15 +0100 | |
changeset 10040 | 4ac87acbaed9 |
parent 10017 | de822cd3df3a |
parent 10034 | fc586f2f8782 |
child 10050 | 9616052bd333 |
permissions | -rw-r--r-- |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
1 |
{-# LANGUAGE OverloadedStrings #-} |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
2 |
|
10027
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
3 |
module EngineInteraction(replayToDemo, checkNetCmd, toEngineMsg, drawnMapData) where |
6068 | 4 |
|
5 |
import qualified Data.Set as Set |
|
6 |
import Control.Monad |
|
7 |
import qualified Codec.Binary.Base64 as Base64 |
|
8 |
import qualified Data.ByteString.Char8 as B |
|
9 |
import qualified Data.ByteString as BW |
|
10027
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
10 |
import qualified Data.ByteString.Lazy as BL |
8479
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
11 |
import qualified Data.Map as Map |
8484
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
12 |
import qualified Data.List as L |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
13 |
import Data.Word |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
14 |
import Data.Bits |
8481 | 15 |
import Control.Arrow |
9690 | 16 |
import Data.Maybe |
10027
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
17 |
import Codec.Compression.Zlib as Z |
6069 | 18 |
------------- |
19 |
import CoreTypes |
|
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
20 |
import Utils |
6068 | 21 |
|
22 |
||
23 |
toEngineMsg :: B.ByteString -> B.ByteString |
|
24 |
toEngineMsg msg = B.pack $ Base64.encode (fromIntegral (BW.length msg) : BW.unpack msg) |
|
25 |
||
26 |
||
27 |
fromEngineMsg :: B.ByteString -> Maybe B.ByteString |
|
28 |
fromEngineMsg msg = liftM BW.pack (Base64.decode (B.unpack msg) >>= removeLength) |
|
29 |
where |
|
30 |
removeLength (x:xs) = if length xs == fromIntegral x then Just xs else Nothing |
|
31 |
removeLength _ = Nothing |
|
32 |
||
10027
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
33 |
em :: B.ByteString -> B.ByteString |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
34 |
em = toEngineMsg |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
35 |
|
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
36 |
eml :: [B.ByteString] -> B.ByteString |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
37 |
eml = em . B.concat |
6068 | 38 |
|
8484
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
39 |
splitMessages :: B.ByteString -> [B.ByteString] |
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
40 |
splitMessages = L.unfoldr (\b -> if B.null b then Nothing else Just $ B.splitAt (1 + fromIntegral (BW.head b)) b) |
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
41 |
|
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
42 |
|
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
43 |
checkNetCmd :: B.ByteString -> (B.ByteString, B.ByteString, Maybe (Maybe B.ByteString)) |
6068 | 44 |
checkNetCmd msg = check decoded |
45 |
where |
|
8485 | 46 |
decoded = liftM (splitMessages . BW.pack) $ Base64.decode $ B.unpack msg |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
47 |
check Nothing = (B.empty, B.empty, Nothing) |
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
48 |
check (Just msgs) = let (a, b) = (filter isLegal msgs, filter isNonEmpty a) in (encode a, encode b, lft a) |
8484
99c14f14f788
New checker of engine messages which is aware of glued together messages
unc0rr
parents:
8483
diff
changeset
|
49 |
encode = B.pack . Base64.encode . BW.unpack . B.concat |
8485 | 50 |
isLegal m = (B.length m > 1) && (flip Set.member legalMessages . B.head . B.tail $ m) |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
51 |
lft = foldr l Nothing |
10017 | 52 |
l m n = let m' = B.head $ B.tail m; tst = flip Set.member in |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
53 |
if not $ tst timedMessages m' then n |
9401 | 54 |
else if '+' /= m' then Just Nothing else Just . Just . B.pack . Base64.encode . BW.unpack $ m |
8506 | 55 |
isNonEmpty = (/=) '+' . B.head . B.tail |
6206
75e0d8169ba2
As sheepluva pointed out, allowing this message to be legal allows naughtiness. The server usage of this message does not seem to use this check.
nemo
parents:
6070
diff
changeset
|
56 |
legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sNpPwtghbc12345" ++ slotMessages |
6068 | 57 |
slotMessages = "\128\129\130\131\132\133\134\135\136\137\138" |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
58 |
timedMessages = Set.fromList $ "+LlRrUuDdZzAaSjJ,NpPwtgc12345" ++ slotMessages |
6068 | 59 |
|
7766 | 60 |
|
8479
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
61 |
replayToDemo :: [TeamInfo] |
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
62 |
-> Map.Map B.ByteString B.ByteString |
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
63 |
-> Map.Map B.ByteString [B.ByteString] |
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
64 |
-> [B.ByteString] |
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
65 |
-> [B.ByteString] |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
66 |
replayToDemo ti mParams prms msgs = concat [ |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
67 |
[em "TD"] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
68 |
, maybeScript |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
69 |
, maybeMap |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
70 |
, [eml ["etheme ", head $ prms Map.! "THEME"]] |
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
71 |
, [eml ["eseed ", mParams Map.! "SEED"]] |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
72 |
, [eml ["e$gmflags ", showB gameFlags]] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
73 |
, schemeFlags |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
74 |
, [eml ["e$template_filter ", mParams Map.! "TEMPLATE"]] |
8481 | 75 |
, [eml ["e$mapgen ", mapgen]] |
76 |
, mapgenSpecific |
|
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
77 |
, concatMap teamSetup ti |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
78 |
, msgs |
8483 | 79 |
, [em "!"] |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
80 |
] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
81 |
where |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
82 |
mapGenTypes = ["+rnd+", "+maze+", "+drawn+"] |
9690 | 83 |
maybeScript = let s = head . fromMaybe ["Normal"] $ Map.lookup "SCRIPT" prms in if s == "Normal" then [] else [eml ["escript Scripts/Multiplayer/", s, ".lua"]] |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
84 |
maybeMap = let m = mParams Map.! "MAP" in if m `elem` mapGenTypes then [] else [eml ["emap ", m]] |
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
85 |
scheme = tail $ prms Map.! "SCHEME" |
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
86 |
mapgen = mParams Map.! "MAPGEN" |
8481 | 87 |
mapgenSpecific = case mapgen of |
10034 | 88 |
"1" -> [eml ["e$maze_size ", head $ prms Map.! "MAZE_SIZE"]] |
89 |
"2" -> drawnMapData . head $ prms Map.! "DRAWNMAP" |
|
8481 | 90 |
_ -> [] |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
91 |
gameFlags :: Word32 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
92 |
gameFlags = foldl (\r (b, f) -> if b == "false" then r else r .|. f) 0 $ zip scheme gameFlagConsts |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
93 |
schemeFlags = map (\(v, (n, m)) -> eml [n, " ", showB $ (readInt_ v) * m]) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
94 |
$ filter (\(_, (n, _)) -> not $ B.null n) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
95 |
$ zip (drop (length gameFlagConsts) scheme) schemeParams |
8481 | 96 |
ammoStr :: B.ByteString |
9304
3f4c3fc146c2
Fix spectator desync in rare conditions (there was team which left during its turn, and last command with timestamp from it was '+')
unc0rr
parents:
8541
diff
changeset
|
97 |
ammoStr = head . tail $ prms Map.! "AMMO" |
8481 | 98 |
ammo = let l = B.length ammoStr `div` 4; ((a, b), (c, d)) = (B.splitAt l . fst &&& B.splitAt l . snd) . B.splitAt (l * 2) $ ammoStr in |
8483 | 99 |
(map (\(x, y) -> eml [x, " ", y]) $ zip ["eammloadt", "eammprob", "eammdelay", "eammreinf"] [a, b, c, d]) |
100 |
++ [em "eammstore" | scheme !! 14 == "true" || scheme !! 20 == "false"] |
|
101 |
initHealth = scheme !! 27 |
|
8481 | 102 |
teamSetup :: TeamInfo -> [B.ByteString] |
8499 | 103 |
teamSetup t = (++) ammo $ |
8541 | 104 |
eml ["eaddteam <hash> ", showB $ (1 + (readInt_ $ teamcolor t) :: Int) * 2113696, " ", teamname t] |
8483 | 105 |
: em "erdriven" |
106 |
: eml ["efort ", teamfort t] |
|
8527
bf671ddf467c
Fix stupid mistake which made checker desync almost always
unc0rr
parents:
8506
diff
changeset
|
107 |
: take (2 * hhnum t) ( |
8503 | 108 |
concatMap (\(HedgehogInfo hname hhat) -> [ |
109 |
eml ["eaddhh ", showB $ difficulty t, " ", initHealth, " ", hname] |
|
110 |
, eml ["ehat ", hhat] |
|
111 |
]) |
|
112 |
$ hedgehogs t |
|
113 |
) |
|
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
114 |
|
8481 | 115 |
drawnMapData :: B.ByteString -> [B.ByteString] |
10040 | 116 |
drawnMapData = |
10027
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
117 |
L.map (\m -> eml ["edraw ", BW.pack m]) |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
118 |
. L.unfoldr by200 |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
119 |
. BL.unpack |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
120 |
. Z.decompress |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
121 |
. BL.pack |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
122 |
. L.drop 4 |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
123 |
. fromMaybe [] |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
124 |
. Base64.decode |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
125 |
. B.unpack |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
126 |
where |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
127 |
by200 :: [a] -> Maybe ([a], [a]) |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
128 |
by200 [] = Nothing |
403b86a1d05f
Implement drawnMapData function so checker could check replays with drawn maps
unc0rr
parents:
9690
diff
changeset
|
129 |
by200 m = Just $ L.splitAt 200 m |
8480
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
130 |
|
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
131 |
schemeParams :: [(B.ByteString, Int)] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
132 |
schemeParams = [ |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
133 |
("e$damagepct", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
134 |
, ("e$turntime", 1000) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
135 |
, ("", 0) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
136 |
, ("e$sd_turns", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
137 |
, ("e$casefreq", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
138 |
, ("e$minestime", 1000) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
139 |
, ("e$minesnum", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
140 |
, ("e$minedudpct", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
141 |
, ("e$explosives", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
142 |
, ("e$healthprob", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
143 |
, ("e$hcaseamount", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
144 |
, ("e$waterrise", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
145 |
, ("e$healthdec", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
146 |
, ("e$ropepct", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
147 |
, ("e$getawaytime", 1) |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
148 |
] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
149 |
|
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
150 |
|
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
151 |
gameFlagConsts :: [Word32] |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
152 |
gameFlagConsts = [ |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
153 |
0x00001000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
154 |
, 0x00000010 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
155 |
, 0x00000004 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
156 |
, 0x00000008 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
157 |
, 0x00000020 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
158 |
, 0x00000040 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
159 |
, 0x00000080 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
160 |
, 0x00000100 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
161 |
, 0x00000200 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
162 |
, 0x00000400 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
163 |
, 0x00000800 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
164 |
, 0x00002000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
165 |
, 0x00004000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
166 |
, 0x00008000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
167 |
, 0x00010000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
168 |
, 0x00020000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
169 |
, 0x00040000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
170 |
, 0x00080000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
171 |
, 0x00100000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
172 |
, 0x00200000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
173 |
, 0x00400000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
174 |
, 0x00800000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
175 |
, 0x01000000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
176 |
, 0x02000000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
177 |
, 0x04000000 |
42d2565b5700
Converter from game parameters to engine commands, not finished yet
unc0rr
parents:
8479
diff
changeset
|
178 |
] |
8479
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
179 |
|
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
180 |
|
8d71109b04d2
Some work on loading replay and interaction with checker
unc0rr
parents:
7766
diff
changeset
|
181 |