General:
authorsmaxx
Wed, 23 Jun 2010 13:43:56 +0200
changeset 3539 c3d1fccbe0ed
parent 3537 8f5b3108f29c
child 3541 f4f90987e0fa
General: * Disabled building of libopenalbridge (why build/link everywhere even if not used?; fails due to cc1 being unable to find some files on Win32) Engine: * Show Lua errors as 'chat messages' * Added ability to write to chat buffer even while the engine is still loading (limited to 26 lines)
CMakeLists.txt
hedgewars/CMakeLists.txt
hedgewars/uChat.pas
hedgewars/uScript.pas
--- a/CMakeLists.txt	Tue Jun 22 23:08:57 2010 -0400
+++ b/CMakeLists.txt	Wed Jun 23 13:43:56 2010 +0200
@@ -184,7 +184,7 @@
 
 add_subdirectory(misc/liblua)
 add_subdirectory(hedgewars)
-add_subdirectory(misc/libopenalbridge)
+#add_subdirectory(misc/libopenalbridge)
 if(NOT BUILD_ENGINE_LIBRARY)
 	add_subdirectory(bin)
 	add_subdirectory(QTfrontend)
--- a/hedgewars/CMakeLists.txt	Tue Jun 22 23:08:57 2010 -0400
+++ b/hedgewars/CMakeLists.txt	Wed Jun 23 13:43:56 2010 +0200
@@ -76,7 +76,6 @@
 	SinTable.inc
 	options.inc
 	${CMAKE_CURRENT_BINARY_DIR}/config.inc
-	openalbridge
 	)
 
 if(BUILD_ENGINE_LIBRARY)
--- a/hedgewars/uChat.pas	Tue Jun 22 23:08:57 2010 -0400
+++ b/hedgewars/uChat.pas	Wed Jun 23 13:43:56 2010 +0200
@@ -30,6 +30,7 @@
 procedure KeyPressChat(Key: Longword);
 
 var UserNick: shortstring;
+    ChatReady: boolean;
     showAll: boolean;
 
 implementation
@@ -45,16 +46,19 @@
         end;
 
 var Strs: array[0 .. MaxStrIndex] of TChatLine;
+    MStrs: array[0 .. MaxStrIndex] of shortstring;
+    missedCount: LongWord;
     lastStr: LongWord;
     visibleCount: LongWord;
     InputStr: TChatLine;
     InputStrL: array[0..260] of char; // for full str + 4-byte utf-8 char
 
-const colors: array[#1..#4] of TSDL_Color = (
+const colors: array[#1..#5] of TSDL_Color = (
     (r:$FF; g:$FF; b:$FF; unused:$FF), // chat message [White]
     (r:$FF; g:$00; b:$FF; unused:$FF), // action message [Purple]
     (r:$90; g:$FF; b:$90; unused:$FF), // join/leave message [Lime]
-    (r:$FF; g:$FF; b:$A0; unused:$FF)  // team message [Light Yellow]
+    (r:$FF; g:$FF; b:$A0; unused:$FF), // team message [Light Yellow]
+    (r:$FF; g:$00; b:$00; unused:$ff)  // error messages [Red]
     );
 
 procedure SetLine(var cl: TChatLine; str: shortstring; isInput: boolean);
@@ -103,6 +107,16 @@
 
 procedure AddChatString(s: shortstring);
 begin
+if not ChatReady then
+    begin
+    if MissedCount < MaxStrIndex - 1 then
+        MStrs[MissedCount]:= s
+    else if MissedCount < MaxStrIndex then
+        MStrs[MissedCount]:= #5 + '[...]';
+    inc(MissedCount);
+    exit
+    end;
+
 lastStr:= (lastStr + 1) mod (MaxStrIndex + 1);
 
 SetLine(Strs[lastStr], s, false);
@@ -114,6 +128,13 @@
 var i, t, cnt: Longword;
     r: TSDL_Rect;
 begin
+ChatReady:= true; // maybe move to somewhere else?
+if MissedCount <> 0 then // there are chat strings we missed, so print them now
+    begin
+    for i:= 0 to MissedCount - 1 do
+        AddChatString(MStrs[i]);
+    MissedCount:= 0;
+    end;
 cnt:= 0;
 t:= 0;
 i:= lastStr;
@@ -297,6 +318,8 @@
     visibleCount:= 0;
     UserNick:= '';
     showAll:= false;
+    ChatReady:= false;
+    missedCount:= 0;
 end;
 
 procedure freeModule;
--- a/hedgewars/uScript.pas	Tue Jun 22 23:08:57 2010 -0400
+++ b/hedgewars/uScript.pas	Wed Jun 23 13:43:56 2010 +0200
@@ -50,7 +50,8 @@
     uAmmos,
     uSound,
     uTeams,
-    uKeys;
+    uKeys,
+    uChat;
     
 var luaState : Plua_State;
     ScriptAmmoLoadout : shortstring;
@@ -63,9 +64,15 @@
 procedure ScriptApplyAmmoStore; forward;
 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay, reinforcement: Byte); forward;
 
+procedure LuaError(s: shortstring);
+begin
+    WriteLnToConsole(s);
+    AddChatString(#5 + s);
+end;
+
 // wrapped calls //
 
-// functions called from lua:
+// functions called from Lua:
 // function(L : Plua_State) : LongInt; Cdecl;
 // where L contains the state, returns the number of return values on the stack
 // call lua_gettop(L) to receive number of parameters passed
@@ -74,10 +81,10 @@
 begin
     if lua_gettop(L) = 1 then
         begin
-        WriteLnToConsole('LUA: ' + lua_tostring(L ,1));
+        WriteLnToConsole('Lua: ' + lua_tostring(L ,1));
         end
     else
-        WriteLnToConsole('LUA: Wrong number of parameters passed to WriteLnToConsole!');
+        LuaError('Lua: Wrong number of parameters passed to WriteLnToConsole!');
     lc_writelntoconsole:= 0;
 end;
 
@@ -88,7 +95,7 @@
         ParseCommand(lua_tostring(L ,1), true);
         end
     else
-        WriteLnToConsole('LUA: Wrong number of parameters passed to ParseCommand!');
+        LuaError('Lua: Wrong number of parameters passed to ParseCommand!');
     lc_parsecommand:= 0;
 end;
 
@@ -99,7 +106,7 @@
         ShowMission(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
         end
     else
-        WriteLnToConsole('LUA: Wrong number of parameters passed to ShowMission!');
+        LuaError('Lua: Wrong number of parameters passed to ShowMission!');
     lc_showmission:= 0;
 end;
 
@@ -118,7 +125,7 @@
 begin
     if lua_gettop(L) <> 7 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to AddGear!');
+        LuaError('Lua: Wrong number of parameters passed to AddGear!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -141,7 +148,7 @@
 begin
     if lua_gettop(L) <> 0 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetFollowGear!');
+        LuaError('Lua: Wrong number of parameters passed to GetFollowGear!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -157,7 +164,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearType!');
+        LuaError('Lua: Wrong number of parameters passed to GetGearType!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -176,7 +183,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetHogClan!');
+        LuaError('Lua: Wrong number of parameters passed to GetHogClan!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -197,7 +204,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetHogName!');
+        LuaError('Lua: Wrong number of parameters passed to GetHogName!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -218,7 +225,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetX!');
+        LuaError('Lua: Wrong number of parameters passed to GetX!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -237,7 +244,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetY!');
+        LuaError('Lua: Wrong number of parameters passed to GetY!');
         lua_pushnil(L); // return value on stack (nil)
         end
     else
@@ -256,7 +263,7 @@
 begin
     if lua_gettop(L) <> 2 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to CopyPV!');
+        LuaError('Lua: Wrong number of parameters passed to CopyPV!');
         end
     else
         begin
@@ -278,7 +285,7 @@
 begin
     if lua_gettop(L) <> 2 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to CopyPV2!');
+        LuaError('Lua: Wrong number of parameters passed to CopyPV2!');
         end
     else
         begin
@@ -299,7 +306,7 @@
 var gear : PGear;
 begin
     if lua_gettop(L) <> 1 then
-        WriteLnToConsole('LUA: Wrong number of parameters passed to FollowGear!')
+        LuaError('Lua: Wrong number of parameters passed to FollowGear!')
     else
         begin
         gear:= GearByUID(lua_tointeger(L, 1));
@@ -313,7 +320,7 @@
 begin
     if lua_gettop(L) <> 2 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to SetHealth!');
+        LuaError('Lua: Wrong number of parameters passed to SetHealth!');
         end
     else
         begin
@@ -328,7 +335,7 @@
 begin
     if lua_gettop(L) <> 2 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to SetState!');
+        LuaError('Lua: Wrong number of parameters passed to SetState!');
         end
     else
         begin
@@ -343,7 +350,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetState!');
+        LuaError('Lua: Wrong number of parameters passed to GetState!');
         end
     else
         begin
@@ -361,7 +368,7 @@
 begin
     if lua_gettop(L) <> 2 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to SetTag!');
+        LuaError('Lua: Wrong number of parameters passed to SetTag!');
         end
     else
         begin
@@ -384,7 +391,7 @@
     left, right: LongInt;
 begin
     if lua_gettop(L) <> 4 then
-        WriteLnToConsole('LUA: Wrong number of parameters passed to FindPlace!')
+        LuaError('Lua: Wrong number of parameters passed to FindPlace!')
     else
         begin
         gear:= GearByUID(lua_tointeger(L, 1));
@@ -400,7 +407,7 @@
 function lc_playsound(L : Plua_State) : LongInt; Cdecl;
 begin
     if lua_gettop(L) <> 1 then
-        WriteLnToConsole('LUA: Wrong number of parameters passed to PlaySound!')
+        LuaError('Lua: Wrong number of parameters passed to PlaySound!')
     else
         PlaySound(TSound(lua_tointeger(L, 1)));
     lc_playsound:= 0;
@@ -410,7 +417,7 @@
 begin
     if lua_gettop(L) <> 5 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to AddTeam!');
+        LuaError('Lua: Wrong number of parameters passed to AddTeam!');
         //lua_pushnil(L)
         end
     else
@@ -431,7 +438,7 @@
 begin
     if lua_gettop(L) <> 4 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to AddHog!');
+        LuaError('Lua: Wrong number of parameters passed to AddHog!');
         lua_pushnil(L)
         end
     else
@@ -449,7 +456,7 @@
 begin
     if lua_gettop(L) <> 1 then
         begin
-        WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearPosition!');
+        LuaError('Lua: Wrong number of parameters passed to GetGearPosition!');
         lua_pushnil(L);
         lua_pushnil(L)
         end
@@ -470,7 +477,7 @@
     x, y: LongInt;
 begin
     if lua_gettop(L) <> 3 then
-        WriteLnToConsole('LUA: Wrong number of parameters passed to SetGearPosition!')
+        LuaError('Lua: Wrong number of parameters passed to SetGearPosition!')
     else
         begin
         gear:= GearByUID(lua_tointeger(L, 1));
@@ -490,7 +497,7 @@
 begin
     np:= lua_gettop(L);
     if (np < 4) or (np > 5) then
-        WriteLnToConsole('LUA: Wrong number of parameters passed to SetAmmo!')
+        LuaError('Lua: Wrong number of parameters passed to SetAmmo!')
     else if np = 4 then
         ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3), lua_tointeger(L, 4), 1)
     else
@@ -503,14 +510,14 @@
 var n, i : LongInt;
 begin
     n:= lua_gettop(luaState);
-    WriteLnToConsole('LUA: Stack (' + inttostr(n) + ' elements):');
+    WriteLnToConsole('Lua: Stack (' + inttostr(n) + ' elements):');
     for i:= 1 to n do
         if not lua_isboolean(luaState, i) then
-            WriteLnToConsole('LUA:  ' + inttostr(i) + ': ' + lua_tostring(luaState, i))
+            WriteLnToConsole('Lua:  ' + inttostr(i) + ': ' + lua_tostring(luaState, i))
         else if lua_toboolean(luaState, i) then
-            WriteLnToConsole('LUA:  ' + inttostr(i) + ': true')
+            WriteLnToConsole('Lua:  ' + inttostr(i) + ': true')
         else
-            WriteLnToConsole('LUA:  ' + inttostr(i) + ': false');
+            WriteLnToConsole('Lua:  ' + inttostr(i) + ': false');
 end;
 
 procedure ScriptClearStack;
@@ -606,10 +613,10 @@
 begin
 ret:= luaL_loadfile(luaState, Str2PChar(name));
 if ret <> 0 then
-    WriteLnToConsole('LUA: Failed to load ' + name + '(error ' + IntToStr(ret) + ')')
+    LuaError('Lua: Failed to load ' + name + '(error ' + IntToStr(ret) + ')')
 else
     begin
-    WriteLnToConsole('LUA: ' + name + ' loaded');
+    WriteLnToConsole('Lua: ' + name + ' loaded');
     // call the script file
     lua_pcall(luaState, 0, 0, 0);
     ScriptLoaded:= true
@@ -638,7 +645,7 @@
 lua_getglobal(luaState, Str2PChar(fname));
 if lua_pcall(luaState, 0, 0, 0) <> 0 then
     begin
-    WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+    LuaError('Lua: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
     lua_pop(luaState, 1)
     end;
 GetGlobals;
@@ -672,7 +679,7 @@
 ScriptCall:= 0;
 if lua_pcall(luaState, 4, 1, 0) <> 0 then
     begin
-    WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+    LuaError('Lua: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
     lua_pop(luaState, 1)
     end
 else