- 't' key for entering chat message
authorunc0rr
Sat, 24 May 2008 21:10:49 +0000
changeset 947 4e0c3ad89483
parent 946 42c5cc87cbd1
child 948 5d49a92c240a
- 't' key for entering chat message - gsChat state for entering message - Simplify logic in ProcessKbd
QTfrontend/binds.cpp
QTfrontend/binds.h
hedgewars/hwengine.dpr
hedgewars/uChat.pas
hedgewars/uKeys.pas
--- a/QTfrontend/binds.cpp	Sat May 24 18:37:04 2008 +0000
+++ b/QTfrontend/binds.cpp	Sat May 24 21:10:49 2008 +0000
@@ -45,6 +45,7 @@
 	{"timer 3",	"3",	QT_TRANSLATE_NOOP("binds", "timer 3 sec"),	false},
 	{"timer 4",	"4",	QT_TRANSLATE_NOOP("binds", "timer 4 sec"),	false},
 	{"timer 5",	"5",	QT_TRANSLATE_NOOP("binds", "timer 5 sec"),	true},
+	{"chat",	"t",	QT_TRANSLATE_NOOP("binds", "chat"),	false},
 	{"pause",	"p",	QT_TRANSLATE_NOOP("binds", "pause"),	false},
 	{"+voldown",	"9",	QT_TRANSLATE_NOOP("binds", "volume down"),	false},
 	{"+volup",	"0",	QT_TRANSLATE_NOOP("binds", "volume up"),	false},
--- a/QTfrontend/binds.h	Sat May 24 18:37:04 2008 +0000
+++ b/QTfrontend/binds.h	Sat May 24 21:10:49 2008 +0000
@@ -21,7 +21,7 @@
 
 #include <QString>
 
-#define BINDS_NUMBER 32
+#define BINDS_NUMBER 33
 
 struct BindAction
 {
--- a/hedgewars/hwengine.dpr	Sat May 24 18:37:04 2008 +0000
+++ b/hedgewars/hwengine.dpr	Sat May 24 21:10:49 2008 +0000
@@ -99,7 +99,7 @@
               FinishProgress;
               GameState:= gsGame
               end;
-     gsGame : begin
+      gsGame: begin
               ProcessKbd;
               DoGameTick(Lag);
               ProcessVisualGears(Lag);
@@ -111,7 +111,12 @@
               DrawWorld(Lag, SDLPrimSurface);
               DrawConsole(SDLPrimSurface);
               end;
-     gsExit : begin
+      gsChat: begin
+              DoGameTick(Lag);
+              ProcessVisualGears(Lag);
+              DrawWorld(Lag, SDLPrimSurface);
+              end;
+      gsExit: begin
               OnDestroy;
               end;
      end;
--- a/hedgewars/uChat.pas	Sat May 24 18:37:04 2008 +0000
+++ b/hedgewars/uChat.pas	Sat May 24 21:10:49 2008 +0000
@@ -25,7 +25,7 @@
 procedure KeyPressChat(Key: Longword);
 
 implementation
-uses uMisc, uStore, uConsts, SDLh;
+uses uMisc, uStore, uConsts, SDLh, uConsole;
 
 const MaxStrIndex = 7;
 
@@ -69,7 +69,7 @@
 
 SDL_FreeSurface(strSurface);
 
-
+cl.s:= str;
 cl.Time:= RealTicks + 7500;
 cl.Tex:= Surface2Tex(resSurface);
 SDL_FreeSurface(resSurface)
@@ -100,7 +100,11 @@
 	inc(t)
 	end;
 
-visibleCount:= cnt
+visibleCount:= cnt;
+
+if (GameState = gsChat)
+	and (InputStr.Tex <> nil) then
+	DrawTexture(11, visibleCount * 16 + 10 + cConsoleYAdd, InputStr.Tex);
 end;
 
 procedure KeyPressChat(Key: Longword);
@@ -116,8 +120,12 @@
 				SetLine(InputStr, InputStr.s)
 				end;
 		13,271: begin
-			AddChatString(InputStr.s);
-			SetLine(InputStr, '');
+			if Length(InputStr.s) > 0 then
+				begin
+				AddChatString(InputStr.s);
+				ParseCommand('/say ' + InputStr.s, true);
+				SetLine(InputStr, '');
+				end;
 			GameState:= gsGame
 			end
 	else
--- a/hedgewars/uKeys.pas	Sat May 24 18:37:04 2008 +0000
+++ b/hedgewars/uKeys.pas	Sat May 24 21:10:49 2008 +0000
@@ -67,22 +67,19 @@
 pkbd^[2]:= ((i shr 1) and 1);
 pkbd^[3]:= ((i shr 2) and 1);
 for i:= 1 to cKeyMaxIndex do
-    if CurrentBinds[i][0] <> #0 then
-      begin
-      if (i > 3) and (pkbd^[i] <> 0) then KbdKeyPressed:= true;
-      if CurrentBinds[i][1] = '+' then
-          begin
-          if (pkbd^[i] <> 0)and(tkbd[i]  = 0) then ParseCommand(CurrentBinds[i], Trusted) else
-          if (pkbd^[i] =  0)and(tkbd[i] <> 0) then
-             begin
-             s:= CurrentBinds[i];
-             s[1]:= '-';
-             ParseCommand(s, Trusted)
-             end;
-          end else
-          if (tkbd[i] = 0) and (pkbd^[i] <> 0) then ParseCommand(CurrentBinds[i], Trusted);
-       tkbd[i]:= pkbd^[i]
-       end
+if CurrentBinds[i][0] <> #0 then
+	begin
+	if (i > 3) and (pkbd^[i] <> 0) then KbdKeyPressed:= true;
+	if (tkbd[i] = 0) and (pkbd^[i] <> 0) then ParseCommand(CurrentBinds[i], Trusted)
+	else if (CurrentBinds[i][1] = '+')
+			and (pkbd^[i] = 0)and(tkbd[i] <> 0) then
+			begin
+			s:= CurrentBinds[i];
+			s[1]:= '-';
+			ParseCommand(s, Trusted)
+			end;
+	tkbd[i]:= pkbd^[i]
+	end
 end;
 
 procedure ResetKbd;