Browse Source

Fixed Lua Chat sample bug, Replace Variant's constructor with SetXXX function.

Aster Jian 12 years ago
parent
commit
75a55050b7
2 changed files with 152 additions and 62 deletions
  1. 7 7
      Bin/Data/LuaScripts/16_Chat.lua
  2. 145 55
      Source/Extras/LuaScript/pkgs/Core/Variant.pkg

+ 7 - 7
Bin/Data/LuaScripts/16_Chat.lua

@@ -67,9 +67,12 @@ function CreateUI()
     startServerButton = CreateButton("Start Server", 110)
     startServerButton = CreateButton("Start Server", 110)
 
 
     UpdateButtons()
     UpdateButtons()
-
-    -- chatHistory.Resize((graphics.height - 20) / chatHistoryText.rowHeight)
-
+    
+    local size = (graphics.height - 20) / chatHistoryText.rowHeight
+    for i = 1, size do
+        table.insert(chatHistory, "")
+    end
+    
     -- No viewports or scene is defined. However, the default zone's fog color controls the fill color
     -- No viewports or scene is defined. However, the default zone's fog color controls the fill color
     renderer.defaultZone.fogColor = Color(0.0, 0.0, 0.1)
     renderer.defaultZone.fogColor = Color(0.0, 0.0, 0.1)
 end
 end
@@ -108,9 +111,7 @@ function CreateButton(text, width)
 end
 end
 
 
 function ShowChatText(row)
 function ShowChatText(row)
-    --chatHistory:Erase(0)
-    --chatHistory:Push(row)
-    table.remove(chatHistory, 0)
+    table.remove(chatHistory, 1)
     table.insert(chatHistory, row)
     table.insert(chatHistory, row)
     
     
     -- Concatenate all the rows in history
     -- Concatenate all the rows in history
@@ -196,7 +197,6 @@ function HandleNetworkMessage(eventType, eventData)
     local msgID = eventData:GetInt("MessageID")
     local msgID = eventData:GetInt("MessageID")
     if msgID == MSG_CHAT then
     if msgID == MSG_CHAT then
         local msg = eventData:GetBuffer("Data")
         local msg = eventData:GetBuffer("Data")
-        print(tolua.type(msg))
         local text = msg:ReadString()
         local text = msg:ReadString()
         -- If we are the server, prepend the sender's IP address and port and echo to everyone
         -- If we are the server, prepend the sender's IP address and port and echo to everyone
         -- If we are a client, just display the message
         -- If we are a client, just display the message

+ 145 - 55
Source/Extras/LuaScript/pkgs/Core/Variant.pkg

@@ -26,13 +26,10 @@ enum VariantType
 struct ResourceRef
 struct ResourceRef
 {
 {
     ResourceRef();
     ResourceRef();
-
     ResourceRef(ShortStringHash type);
     ResourceRef(ShortStringHash type);
-
     ResourceRef(ShortStringHash type, StringHash id);
     ResourceRef(ShortStringHash type, StringHash id);
-
     ResourceRef(const ResourceRef& rhs);
     ResourceRef(const ResourceRef& rhs);
-
+    
     ShortStringHash type_ @ type;
     ShortStringHash type_ @ type;
     StringHash id_ @ id;
     StringHash id_ @ id;
 
 
@@ -43,8 +40,7 @@ struct ResourceRefList
 {
 {
     ResourceRefList();
     ResourceRefList();
     ResourceRefList(ShortStringHash type);
     ResourceRefList(ShortStringHash type);
-
-
+    
     ShortStringHash type_ @ type;
     ShortStringHash type_ @ type;
 
 
     bool operator == (const ResourceRefList& rhs) const;
     bool operator == (const ResourceRefList& rhs) const;
@@ -53,48 +49,28 @@ struct ResourceRefList
 class Variant
 class Variant
 {
 {
     Variant();
     Variant();
-    Variant(int value);
-    Variant(unsigned value);
-    Variant(const StringHash& value);
-    Variant(const ShortStringHash& value);
-    Variant(bool value);
-    Variant(float value);
-    Variant(const Vector2& value);
-    Variant(const Vector3& value);
-    Variant(const Vector4& value);
-    Variant(const Quaternion& value);
-    Variant(const Color& value);
-    Variant(const String value);
-    Variant(const char* value);
-    Variant(const ResourceRef& value);
-    Variant(const ResourceRefList& value);
-    Variant(const IntRect& value);
-    Variant(const IntVector2& value);
-    Variant(const String type, const String value);
-    Variant(VariantType type, const String value);
-    Variant(VariantType type, const char* value);
-    Variant(const Variant& value);
     ~Variant();
     ~Variant();
 
 
     void Clear();
     void Clear();
-    bool operator == (const Variant& rhs) const;
-    bool operator == (int rhs) const;
-    bool operator == (unsigned rhs) const;
-    bool operator == (bool rhs) const;
-    bool operator == (float rhs) const;
-    bool operator == (const Vector2& rhs);
-    bool operator == (const Vector3& rhs) const;
-    bool operator == (const Vector4& rhs) const;
-    bool operator == (const Quaternion& rhs) const;
-    bool operator == (const Color& rhs) const;
-    bool operator == (const String& rhs) const;
-    bool operator == (const ResourceRef& rhs) const;
-    bool operator == (const ResourceRefList& rhs) const;
-    bool operator == (const IntRect& rhs) const;
-    bool operator == (const IntVector2& rhs) const;
-    bool operator == (const StringHash& rhs) const;
-    bool operator == (const ShortStringHash& rhs) const;
-
+    
+    tolua_outside void VariantSetInt @ SetInt(int value);
+    tolua_outside void VariantSetUint @ SetUint(unsigned value);
+    tolua_outside void VariantSetStringHash @ SetStringHash(const StringHash& value);
+    tolua_outside void VariantSetShortStringHash @ SetShortStringHash(const ShortStringHash& value);
+    tolua_outside void VariantSetBool @ SetBool(bool value);
+    tolua_outside void VariantSetFloat @ SetFloat(float value);
+    tolua_outside void VariantSetVector2 @ SetVector2(const Vector2& value);
+    tolua_outside void VariantSetVector3 @ SetVector3(const Vector3& value);
+    tolua_outside void VariantSetVector4 @ SetVector4(const Vector4& value);
+    tolua_outside void VariantSetQuaternion @ SetQuaternion(const Quaternion& value);
+    tolua_outside void VariantSetColor @ SetColor(const Color& value);
+    tolua_outside void VariantSetString @ SetString(const String value);
+    tolua_outside void VariantSetBuffer @ SetBuffer(const VectorBuffer& value);
+    tolua_outside void VariantSetResourceRef @ SetResourceRef(const ResourceRef& value);
+    tolua_outside void VariantSetResourceRefList @ SetResourceRefList(const ResourceRefList& value);
+    tolua_outside void VariantSetIntRect @ SetIntRect(const IntRect& value);
+    tolua_outside void VariantSetIntVector2 @ SetIntVector2(const IntVector2& value);
+    
     int GetInt() const;
     int GetInt() const;
     int GetUInt() const;
     int GetUInt() const;
     StringHash GetStringHash();
     StringHash GetStringHash();
@@ -107,8 +83,7 @@ class Variant
     const Quaternion& GetQuaternion() const;
     const Quaternion& GetQuaternion() const;
     const Color& GetColor() const;
     const Color& GetColor() const;
     const String& GetString() const;
     const String& GetString() const;
-    
-    
+    tolua_outside VectorBuffer VariantGetBuffer @ GetBuffer() const;
     const ResourceRef& GetResourceRef() const;
     const ResourceRef& GetResourceRef() const;
     const ResourceRefList& GetResourceRefList() const;
     const ResourceRefList& GetResourceRefList() const;
     const IntRect& GetIntRect() const;
     const IntRect& GetIntRect() const;
@@ -133,6 +108,8 @@ class VariantMap
     
     
     tolua_outside void VariantMapSetInt @ SetInt(const String key, int value);
     tolua_outside void VariantMapSetInt @ SetInt(const String key, int value);
     tolua_outside void VariantMapSetUInt @ SetUInt(const String key, unsigned value);
     tolua_outside void VariantMapSetUInt @ SetUInt(const String key, unsigned value);
+    tolua_outside void VariantMapSetStringHash @ SetStringHash(const String key, const StringHash& value);
+    tolua_outside void VariantMapSetShortStringHash @ SetShortStringHash(const String key, const ShortStringHash& value);
     tolua_outside void VariantMapSetBool @ SetBool(const String key, bool value);
     tolua_outside void VariantMapSetBool @ SetBool(const String key, bool value);
     tolua_outside void VariantMapSetFloat @ SetFloat(const String key, float value);
     tolua_outside void VariantMapSetFloat @ SetFloat(const String key, float value);
     tolua_outside void VariantMapSetVector2 @ SetVector2(const String key, const Vector2 value);
     tolua_outside void VariantMapSetVector2 @ SetVector2(const String key, const Vector2 value);
@@ -141,16 +118,17 @@ class VariantMap
     tolua_outside void VariantMapSetQuaternion @ SetQuaternion(const String key, const Quaternion value);
     tolua_outside void VariantMapSetQuaternion @ SetQuaternion(const String key, const Quaternion value);
     tolua_outside void VariantMapSetColor @ SetColor(const String key, const Color value);
     tolua_outside void VariantMapSetColor @ SetColor(const String key, const Color value);
     tolua_outside void VariantMapSetString @ SetString(const String key, const String value);
     tolua_outside void VariantMapSetString @ SetString(const String key, const String value);
-
-    tolua_outside void VariantMapSetPtr @ SetPtr(const String key, void* value);
-
+    tolua_outside void VariantMapSetBuffer @ SetBuffer(const String key, const VectorBuffer& value);
     tolua_outside void VariantMapSetResourceRef @ SetResourceRef(const String key, const ResourceRef value);
     tolua_outside void VariantMapSetResourceRef @ SetResourceRef(const String key, const ResourceRef value);
     tolua_outside void VariantMapSetResourceRefList @ SetResourceRefList(const String key, const ResourceRefList value);
     tolua_outside void VariantMapSetResourceRefList @ SetResourceRefList(const String key, const ResourceRefList value);
     tolua_outside void VariantMapSetIntRect @ SetIntRect(const String key, const IntRect value);
     tolua_outside void VariantMapSetIntRect @ SetIntRect(const String key, const IntRect value);
     tolua_outside void VariantMapSetIntVector2 @ SetIntVector2(const String key, const IntVector2 value);
     tolua_outside void VariantMapSetIntVector2 @ SetIntVector2(const String key, const IntVector2 value);
+    tolua_outside void VariantMapSetPtr @ SetPtr(const String key, void* value);
     
     
     tolua_outside int VariantMapGetInt @ GetInt(const String key);
     tolua_outside int VariantMapGetInt @ GetInt(const String key);
     tolua_outside int VariantMapGetUInt @ GetUInt(const String key);
     tolua_outside int VariantMapGetUInt @ GetUInt(const String key);
+    tolua_outside StringHash VariantMapGetStringHash @ GetStringHash(const String key);
+    tolua_outside ShortStringHash VariantMapGetShortStringHash @ GetShortStringHash(const String key);
     tolua_outside bool VariantMapGetBool @ GetBool(const String key);
     tolua_outside bool VariantMapGetBool @ GetBool(const String key);
     tolua_outside float VariantMapGetFloat @ GetFloat(const String key);
     tolua_outside float VariantMapGetFloat @ GetFloat(const String key);
     tolua_outside const Vector2& VariantMapGetVector2 @ GetVector2(const String key);
     tolua_outside const Vector2& VariantMapGetVector2 @ GetVector2(const String key);
@@ -159,18 +137,105 @@ class VariantMap
     tolua_outside const Quaternion& VariantMapGetQuaternion @ GetQuaternion(const String key);
     tolua_outside const Quaternion& VariantMapGetQuaternion @ GetQuaternion(const String key);
     tolua_outside const Color& VariantMapGetColor @ GetColor(const String key);
     tolua_outside const Color& VariantMapGetColor @ GetColor(const String key);
     tolua_outside const String& VariantMapGetString @ GetString(const String key);
     tolua_outside const String& VariantMapGetString @ GetString(const String key);
-    
     tolua_outside VectorBuffer VariantMapGetBuffer @ GetBuffer(const String key);
     tolua_outside VectorBuffer VariantMapGetBuffer @ GetBuffer(const String key);
-
     tolua_outside const ResourceRef& VariantMapGetResourceRef @ GetResourceRef(const String key);
     tolua_outside const ResourceRef& VariantMapGetResourceRef @ GetResourceRef(const String key);
     tolua_outside const ResourceRefList& VariantMapGetResourceRefList @ GetResourceRefList(const String key);
     tolua_outside const ResourceRefList& VariantMapGetResourceRefList @ GetResourceRefList(const String key);
     tolua_outside const IntRect& VariantMapGetIntRect @ GetIntRect(const String key);
     tolua_outside const IntRect& VariantMapGetIntRect @ GetIntRect(const String key);
     tolua_outside const IntVector2& VariantMapGetIntVector2 @ GetIntVector2(const String key);
     tolua_outside const IntVector2& VariantMapGetIntVector2 @ GetIntVector2(const String key);
-
     tolua_outside const void* VariantMapGetPtr @ GetPtr(const String type, const String key);
     tolua_outside const void* VariantMapGetPtr @ GetPtr(const String type, const String key);
 };
 };
 
 
 ${
 ${
+static void VariantSetInt(Variant* variant, int value)
+{
+    *variant = value;
+}
+
+static void VariantSetUint(Variant* variant, unsigned value)
+{
+    *variant = value;
+}
+
+static void VariantSetStringHash(Variant* variant, const StringHash& value)
+{
+    *variant = value;
+}
+
+static void VariantSetShortStringHash(Variant* variant, const ShortStringHash& value)
+{
+    *variant = value;
+}
+
+static void VariantSetBool(Variant* variant, bool value)
+{
+    *variant = value;
+}
+
+static void VariantSetFloat(Variant* variant, float value)
+{
+    *variant = value;
+}
+
+static void VariantSetVector2(Variant* variant, const Vector2& value)
+{
+    *variant = value;
+}
+
+static void VariantSetVector3(Variant* variant, const Vector3& value)
+{
+    *variant = value;
+}
+
+static void VariantSetVector4(Variant* variant, const Vector4& value)
+{
+    *variant = value;
+}
+
+static void VariantSetQuaternion(Variant* variant, const Quaternion& value)
+{
+    *variant = value;
+}
+
+static void VariantSetColor(Variant* variant, const Color& value)
+{
+    *variant = value;
+}
+
+static void VariantSetString(Variant* variant, const String value)
+{
+    *variant = value;
+}
+
+static void VariantSetBuffer(Variant* variant, const VectorBuffer& value)
+{
+    *variant == value.GetData();
+}
+
+static void VariantSetResourceRef(Variant* variant, const ResourceRef& value)
+{
+    *variant = value;
+}
+
+static void VariantSetResourceRefList(Variant* variant, const ResourceRefList& value)
+{
+    *variant = value;
+}
+
+static void VariantSetIntRect(Variant* variant, const IntRect& value)
+{
+    *variant = value;
+}
+
+static void VariantSetIntVector2(Variant* variant, const IntVector2& value)
+{
+    *variant = value;
+}
+
+static VectorBuffer VariantGetBuffer(const Variant* variant)
+{
+    return VectorBuffer(variant->GetBuffer());
+}
+
 static void VariantMapSetInt(VariantMap* vmap, const String& key, int value)
 static void VariantMapSetInt(VariantMap* vmap, const String& key, int value)
 {
 {
     (*vmap)[ShortStringHash(key)] = value;
     (*vmap)[ShortStringHash(key)] = value;
@@ -181,6 +246,16 @@ static void VariantMapSetUInt(VariantMap* vmap, const String& key, unsigned valu
     (*vmap)[ShortStringHash(key)] = value;
     (*vmap)[ShortStringHash(key)] = value;
 }
 }
 
 
+static void VariantMapSetStringHash(VariantMap* vmap, const String& key, const StringHash& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
+static void VariantMapSetShortStringHash(VariantMap* vmap, const String& key, const ShortStringHash& value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
 static void VariantMapSetBool(VariantMap* vmap, const String& key, bool value)
 static void VariantMapSetBool(VariantMap* vmap, const String& key, bool value)
 {
 {
     (*vmap)[ShortStringHash(key)] = value;
     (*vmap)[ShortStringHash(key)] = value;
@@ -221,9 +296,9 @@ static void VariantMapSetString(VariantMap* vmap, const String& key, const Strin
     (*vmap)[ShortStringHash(key)] = value;
     (*vmap)[ShortStringHash(key)] = value;
 }
 }
 
 
-static void VariantMapSetPtr(VariantMap* vmap, const String& key, void* value)
+static void VariantMapSetBuffer(VariantMap* vmap, const String& key, const VectorBuffer& value)
 {
 {
-    (*vmap)[ShortStringHash(key)] = value;
+    (*vmap)[ShortStringHash(key)] = value.GetData();
 }
 }
 
 
 static void VariantMapSetResourceRef(VariantMap* vmap, const String& key, const ResourceRef& value)
 static void VariantMapSetResourceRef(VariantMap* vmap, const String& key, const ResourceRef& value)
@@ -246,6 +321,11 @@ static void VariantMapSetIntVector2(VariantMap* vmap, const String& key, const I
     (*vmap)[ShortStringHash(key)] = value;
     (*vmap)[ShortStringHash(key)] = value;
 }
 }
 
 
+static void VariantMapSetPtr(VariantMap* vmap, const String& key, void* value)
+{
+    (*vmap)[ShortStringHash(key)] = value;
+}
+
 static const Variant& FindVariant(const VariantMap* vmap, const String& key)
 static const Variant& FindVariant(const VariantMap* vmap, const String& key)
 {
 {
     VariantMap::ConstIterator i = vmap->Find(ShortStringHash(key));
     VariantMap::ConstIterator i = vmap->Find(ShortStringHash(key));
@@ -262,6 +342,16 @@ static unsigned VariantMapGetUInt(const VariantMap* vmap, const String& key)
     return FindVariant(vmap, key).GetUInt();
     return FindVariant(vmap, key).GetUInt();
 }
 }
 
 
+static StringHash VariantMapGetStringHash(const VariantMap* vmap, const String& key)
+{
+    return FindVariant(vmap, key).GetStringHash();
+}
+
+static ShortStringHash VariantMapGetShortStringHash(const VariantMap* vmap, const String& key)
+{
+    return FindVariant(vmap, key).GetShortStringHash();
+}
+
 static bool VariantMapGetBool(const VariantMap* vmap, const String& key)
 static bool VariantMapGetBool(const VariantMap* vmap, const String& key)
 {
 {
     return FindVariant(vmap, key).GetBool();
     return FindVariant(vmap, key).GetBool();