]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/divVerent/menu-imprOOvements' into fruitiex/newpanelhud_s...
authorRudolf Polzer <divverent@alientrap.org>
Thu, 17 Jun 2010 07:38:43 +0000 (09:38 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 17 Jun 2010 07:38:43 +0000 (09:38 +0200)
Conflicts:
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_radar.c

qcsrc/menu/anim/keyframe.c
qcsrc/menu/item/gecko.c
qcsrc/menu/menu.qc
qcsrc/menu/oo/base.h
qcsrc/menu/oo/classdefs.h
qcsrc/menu/oo/constructors.h
qcsrc/menu/oo/implementation.h
qcsrc/menu/xonotic/bigbutton.c
qcsrc/menu/xonotic/bigcommandbutton.c

index c1c3876695441ab63124fa441659d9f1613dfdd4..de5d54ae1002ad79486867e1a8f4d83da5a152f0 100644 (file)
@@ -6,7 +6,7 @@ CLASS(Keyframe) EXTENDS(Animation)
        ATTRIB(Keyframe, currentChild, entity, NULL)
        ATTRIB(Keyframe, firstChild, entity, NULL)
        ATTRIB(Keyframe, lastChild, entity, NULL)
-ENDCLASS(Animation)
+ENDCLASS(Keyframe)
 entity makeHostedKeyframe(entity, void(entity, float), float, float, float);
 entity makeKeyframe(entity, void(entity, float), float, float, float);
 float getNewChildStart(entity);
index ea8b1d314a09c8cc420d7df603ff29f4774de57b..139e87e1a03903baa96650e607b8347cb780d93f 100644 (file)
@@ -1,23 +1,23 @@
 // Andreas Kirsch Gecko item (to test it)
 #ifdef INTERFACE
 CLASS(Gecko) EXTENDS(Item)
-       METHOD( Gecko, configureBrowser, void( entity, string ) )
-       METHOD( Gecko, draw, void(entity))
-       METHOD( Gecko, keyDown, float(entity, float, float, float))
-       METHOD( Gecko, keyUp, float(entity, float, float, float))
-       METHOD( Gecko, mouseMove, float(entity, vector))
-       METHOD( Gecko, mouseDrag, float(entity, vector))
-       METHOD( Gecko, resizeNotify, void(entity, vector, vector, vector, vector))
-       ATTRIB( Gecko, texturePath, string, string_null )
-       ATTRIB( Gecko, textureExtent, vector, '0 0 0')
-ENDCLASS(Item)
+       METHOD(Gecko, configureBrowser, void( entity, string ) )
+       METHOD(Gecko, draw, void(entity))
+       METHOD(Gecko, keyDown, float(entity, float, float, float))
+       METHOD(Gecko, keyUp, float(entity, float, float, float))
+       METHOD(Gecko, mouseMove, float(entity, vector))
+       METHOD(Gecko, mouseDrag, float(entity, vector))
+       METHOD(Gecko, resizeNotify, void(entity, vector, vector, vector, vector))
+       ATTRIB(Gecko, texturePath, string, string_null )
+       ATTRIB(Gecko, textureExtent, vector, '0 0 0')
+ENDCLASS(Gecko)
 #endif
 
 #ifdef IMPLEMENTATION
 // define static members
 float _gecko_instanceNumber;
 
-void configureBrowserGecko( entity me, string URI ) {
+void Gecko_configureBrowser( entity me, string URI ) {
        me.focusable = 1;
 
        //create a new gecko object if needed
@@ -30,7 +30,7 @@ void configureBrowserGecko( entity me, string URI ) {
        gecko_navigate( me.texturePath, URI );
 }
 
-void drawGecko(entity me)
+void Gecko_draw(entity me)
 {
        vector drawSize;
   
@@ -50,7 +50,7 @@ void drawGecko(entity me)
        }
 }
 
-float keyDownGecko(entity me, float scan, float ascii, float shift)
+float Gecko_keyDown(entity me, float scan, float ascii, float shift)
 {
        if( scan == K_ESCAPE ) {
                return 0;
@@ -61,7 +61,7 @@ float keyDownGecko(entity me, float scan, float ascii, float shift)
                return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_DOWN );
 }
 
-float keyUpGecko(entity me, float scan, float ascii, float shift)
+float Gecko_keyUp(entity me, float scan, float ascii, float shift)
 {
        if (ascii >= 32)
                return gecko_keyevent( me.texturePath, ascii, GECKO_BUTTON_UP );
@@ -69,19 +69,19 @@ float keyUpGecko(entity me, float scan, float ascii, float shift)
                return gecko_keyevent( me.texturePath, scan, GECKO_BUTTON_UP );
 }
 
-float mouseMoveGecko(entity me, vector pos)
+float Gecko_mouseMove(entity me, vector pos)
 {
        gecko_mousemove( me.texturePath, pos_x, pos_y );
        return 1;
 }
 
-float mouseDragGecko(entity me, vector pos)
+float Gecko_mouseDrag(entity me, vector pos)
 {
        gecko_mousemove( me.texturePath, pos_x, pos_y );
        return 1;
 }
 
-void resizeNotifyGecko(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
+void Gecko_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
        SUPER(Gecko).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
        gecko_resize( me.texturePath, absSize_x, absSize_y );
index e7fc1665a2c85040eda2fb2e8c327a9c77ae557f..7bec34ea0b0a1ff91aad1c9ed91d051f34ca7fc9 100644 (file)
@@ -762,8 +762,9 @@ void() m_shutdown =
        m_hide();
        for(e = NULL; (e = nextent(e)) != NULL; )
        {
-               if(e.destroy)
-                       e.destroy(e);
+               if(e.classname != "vtbl")
+                       if(e.destroy)
+                               e.destroy(e);
        }
 };
 
@@ -795,7 +796,7 @@ void m_activate_window(entity wnd)
                // nexposee (sorry for violating abstraction here)
                par.selectedChild = wnd;
                par.animationState = 1;
-               setFocusContainer(par, NULL);
+               Container_setFocus(par, NULL);
        }
        else if(par.instanceOfContainer)
        {
index 65bfbf55607c82eb65e2003496d41519803614a5..3553d447a81fae55be9e7ab50cd2c17257fb594f 100644 (file)
@@ -1,8 +1,26 @@
 .string classname;
+entity Object_vtbl;
+.string vtblname;
+.entity vtblbase;
+entity spawnVtbl(entity e, entity b)
+{
+       entity v;
+       v = spawn();
+       copyentity(e, v);
+       v.vtblname = v.classname;
+       v.classname = "vtbl";
+       if(b)
+               v.vtblbase = b;
+       else
+               v.vtblbase = v;
+       return v;
+}
 entity spawnObject()
 {
        entity e;
        e = spawn();
        e.classname = "Object";
+       if(!Object_vtbl)
+               Object_vtbl = spawnVtbl(e, null_entity);
        return e;
 }
index b62638017dd4bdb0af36df4f69a4a412a4b20598..85bc6c2afa9fe6678c7f239de9343c649f7a4ad9 100644 (file)
 #undef ATTRIB
 #undef ATTRIBARRAY
 #undef ENDCLASS
+#undef SUPER
 #endif
 
-#define CLASS(cname)                       entity spawn##cname();
+#define CLASS(cname)                       entity spawn##cname(); entity cname##_vtbl;
 #define EXTENDS(base)                
-#define METHOD(cname,name,prototype)       prototype name##cname; .prototype name;
+#define METHOD(cname,name,prototype)       prototype cname##_##name; .prototype name;
 #define ATTRIB(cname,name,type,val)        .type name;
 #define ATTRIBARRAY(cname,name,type,cnt)   .type name[cnt];
 #define ENDCLASS(cname)                    .float instanceOf##cname;
+#define SUPER(cname)
index 6aa2eafc4f9412bb8a184741c5ae749857bc9d44..4e758dd4727ad4c29012239b9166f40800826a2a 100644 (file)
 #undef ATTRIB
 #undef ATTRIBARRAY
 #undef ENDCLASS
+#undef SUPER
 #endif
 
 #define CLASS(cname)                       entity spawn##cname() { entity me;
-#define EXTENDS(base)                      me = spawn##base ();
-#define METHOD(cname,name,prototype)       me.name = name##cname;
+#define EXTENDS(base)                      me = spawn##base (); entity basevtbl; basevtbl = base##_vtbl;
+#define METHOD(cname,name,prototype)       me.name = cname##_##name;
 #define ATTRIB(cname,name,type,val)        me.name = val;
 #define ATTRIBARRAY(cname,name,type,cnt)   me.name = me.name;
-#define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; return me; }
+#define ENDCLASS(cname)                    me.instanceOf##cname = 1; me.classname = #cname; if(!cname##_vtbl) cname##_vtbl = spawnVtbl(me, basevtbl); return me; }
+#define SUPER(cname)
index 24d914050e5c30b663469a9f29badd434228c3e7..ed6bd71f36087d7527c52fe03cef45388bb03c2b 100644 (file)
@@ -13,4 +13,7 @@
 #undef ATTRIB
 #undef ATTRIBARRAY
 #undef ENDCLASS
+#undef SUPER
 #endif
+
+#define SUPER(cname) (cname##_vtbl.vtblbase)
index b877a83137826dca96ab8200f859b2ef75e5f9e0..a63189b63a850dc326e46216e7429f5d80ba98cb 100644 (file)
@@ -3,7 +3,7 @@ CLASS(XonoticBigButton) EXTENDS(XonoticButton)
        METHOD(XonoticBigButton, configureXonoticBigButton, void(entity, string, vector))
        ATTRIB(XonoticBigButton, image, string, SKINGFX_BUTTON_BIG)
        ATTRIB(XonoticBigButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
-ENDCLASS(XonoticButton)
+ENDCLASS(XonoticBigButton)
 entity makeXonoticButton(string theText, vector theColor);
 #endif
 
index e9ef75ba5c6f8a8b9bd3669c617140ded86784d8..c96dd57a16afcc614fedff7ce68d5a65b6076182 100644 (file)
@@ -3,7 +3,7 @@ CLASS(XonoticBigCommandButton) EXTENDS(XonoticCommandButton)
        METHOD(XonoticBigCommandButton, configureXonoticBigCommandButton, void(entity, string, vector, string, float))
        ATTRIB(XonoticBigCommandButton, image, string, SKINGFX_BUTTON_BIG)
        ATTRIB(XonoticBigCommandButton, grayImage, string, SKINGFX_BUTTON_BIG_GRAY)
-ENDCLASS(XonoticCommandButton)
+ENDCLASS(XonoticBigCommandButton)
 entity makeXonoticBigCommandButton(string theText, vector theColor, string theCommand, float closesMenu);
 #endif