# HG changeset patch # User unc0rr # Date 1214588735 0 # Node ID 6f5842bc481bd4c0d2fa28b8ec05da2650288138 # Parent 05f003ad3caa89e9ca72f2b0056eeaa3acd78a10 Hopefully done taunts implementation diff -r 05f003ad3caa -r 6f5842bc481b doc/protocol.txt --- a/doc/protocol.txt Fri Jun 27 17:22:15 2008 +0000 +++ b/doc/protocol.txt Fri Jun 27 17:45:35 2008 +0000 @@ -1,31 +1,32 @@ -IPC: - '?' ping? - '!' pong! - 'l','L' срабатывание команд -left, +left - 'r','R' -right, +right - 'u','U' -up, +up - 'd','D' -down, +down - 'N' срабатывание команды /nextturn - 'S' /switch - 's' + <текст> /say - '+' пустой пакет для постоянности лага - '1'..'5' /timer 1..5 - chr(128+№) /slot № - 'w' /setweap - 'p' /put - 'j' /ljump - 'J' /hjump - 'E' + <текст> сообщение об ошибке - ',' /skip - 'K' вывести сообщение из KB - 'Q' выход через команду /quit - 'q' выход по причине окончания игры - - фронтенд клиенту: - 'e' + <команда> выполнить "/<команда>" - 'T' + {L,N,D} тип игры (локальная, сетевая, просмотр демо) - 'W' + <текст> сообщение о нефатальной ошибке - Клиент фронтенду: - 'C' запрос текущего конфига игры - 'q' выход по причине окончания демки - 'i' статистика + '?' ping? + '!' pong! + 'l','L' срабатывание команд -left, +left + 'r','R' -right, +right + 'u','U' -up, +up + 'd','D' -down, +down + 'N' срабатывание команды /nextturn + 'S' /switch + 's' + <текст> /say + '+' пустой пакет для постоянности лага + '1'..'5' /timer 1..5 + chr(128+№) /slot № + 'w' /setweap + 'p' /put + 'j' /ljump + 'J' /hjump + 'E' + <текст> сообщение об ошибке + ',' /skip + 'K' вывести сообщение из KB + 'Q' выход через команду /quit + 'q' выход по причине окончания игры + 't' + № /taunt № + +фронтенд клиенту: + 'e' + <команда> выполнить "/<команда>" + 'T' + {L,N,D} тип игры (локальная, сетевая, просмотр демо) + 'W' + <текст> сообщение о нефатальной ошибке + +Клиент фронтенду: + 'C' запрос текущего конфига игры + 'q' выход по причине окончания демки + 'i' статистика diff -r 05f003ad3caa -r 6f5842bc481b hedgewars/CCHandlers.inc --- a/hedgewars/CCHandlers.inc Fri Jun 27 17:22:15 2008 +0000 +++ b/hedgewars/CCHandlers.inc Fri Jun 27 17:45:35 2008 +0000 @@ -334,6 +334,21 @@ end end; +procedure chTaunt(var s: shortstring); +begin +if (s[0] <> #1) or CheckNoTeamOrHH then exit; + +if TWave(s[1]) > High(TWave) then exit; + +if not CurrentTeam^.ExtDriven then SendIPC('t' + s); + +with CurrentHedgehog^.Gear^ do + begin + Message:= Message or gm_Animate; + MsgParam:= byte(s[1]) + end +end; + procedure doPut(putX, putY: LongInt; fromAI: boolean); begin if CheckNoTeamOrHH then exit; diff -r 05f003ad3caa -r 6f5842bc481b hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Fri Jun 27 17:22:15 2008 +0000 +++ b/hedgewars/HHHandlers.inc Fri Jun 27 17:45:35 2008 +0000 @@ -480,6 +480,15 @@ else Gear^.Message:= 0; +if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then + begin + TurnTimeLeft:= 0; + Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation); + if Gear^.Damage > 0 then + Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); + exit + end; + if (Gear^.State and gstAnimation) <> 0 then begin Gear^.Message:= 0; @@ -494,16 +503,6 @@ exit end; - -if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then - begin - TurnTimeLeft:= 0; - Gear^.State:= Gear^.State and not gstHHDriven; - if Gear^.Damage > 0 then - Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); - exit - end; - if ((Gear^.State and gstMoving) <> 0) or (StepTicks = cHHStepTicks) or (CurAmmoGear <> nil) then // we're moving diff -r 05f003ad3caa -r 6f5842bc481b hedgewars/uChat.pas --- a/hedgewars/uChat.pas Fri Jun 27 17:22:15 2008 +0000 +++ b/hedgewars/uChat.pas Fri Jun 27 17:45:35 2008 +0000 @@ -28,7 +28,7 @@ showAll: boolean = false; implementation -uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uGears, uTeams; +uses uMisc, uStore, uConsts, SDLh, uConsole, uKeys, uTeams; const MaxStrIndex = 27; @@ -118,15 +118,22 @@ end; procedure AcceptChatString(s: shortstring); +var i: TWave; + b: boolean; begin -if (s = '/sad') and not CurrentTeam^.ExtDriven then - with CurrentHedgehog^.Gear^ do - begin - Message:= Message or gm_Animate; - MsgParam:= Longword(waveSad) - end -else - ParseCommand('/say ' + s, true); +if s[1] = '/' then + begin + if CurrentTeam^.ExtDriven then exit; + + for i:= Low(TWave) to High(TWave) do + if (s = Wavez[i].cmd) then + begin + ParseCommand('/taunt ' + char(i), true); + exit + end; + end + else + ParseCommand('/say ' + s, true); end; procedure KeyPressChat(Key: Longword); diff -r 05f003ad3caa -r 6f5842bc481b hedgewars/uConsole.pas --- a/hedgewars/uConsole.pas Fri Jun 27 17:22:15 2008 +0000 +++ b/hedgewars/uConsole.pas Fri Jun 27 17:45:35 2008 +0000 @@ -260,6 +260,7 @@ RegisterVariable('switch' , vtCommand, @chSwitch , false); RegisterVariable('nextturn', vtCommand, @chNextTurn , false); RegisterVariable('timer' , vtCommand, @chTimer , false); +RegisterVariable('taunt' , vtCommand, @chTaunt , false); RegisterVariable('setweap' , vtCommand, @chSetWeapon , false); RegisterVariable('slot' , vtCommand, @chSlot , false); RegisterVariable('put' , vtCommand, @chPut , false); diff -r 05f003ad3caa -r 6f5842bc481b hedgewars/uIO.pas --- a/hedgewars/uIO.pas Fri Jun 27 17:22:15 2008 +0000 +++ b/hedgewars/uIO.pas Fri Jun 27 17:45:35 2008 +0000 @@ -252,8 +252,11 @@ CursorPoint.Y:= SmallInt(SDLNet_Read16(@(headcmd^.Y)) + WorldDy); end; 'w': ParseCommand('setweap ' + headcmd^.str[2], true); + 't': ParseCommand('taunt ' + headcmd^.str[2], true); '1'..'5': ParseCommand('timer ' + headcmd^.cmd, true); #128..char(128 + cMaxSlotIndex): ParseCommand('slot ' + char(byte(headcmd^.cmd) - 79), true) + else + OutError('Unexpected protocol command: ' + headcmd^.cmd, True) end; RemoveCmd end;