X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fitem%2Fmodalcontroller.qc;h=046d8e1942a18f72f80e3f935a396baa0cdb2264;hb=b9b32643554806fb5f901f9bd48ecfcc43fd98b8;hp=bff21707906c9919927ce8557a5934aacbaa4bff;hpb=6dc9591eba337374f2b4348a6a6deaa1cb6887d0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/item/modalcontroller.qc b/qcsrc/menu/item/modalcontroller.qc index bff217079..046d8e194 100644 --- a/qcsrc/menu/item/modalcontroller.qc +++ b/qcsrc/menu/item/modalcontroller.qc @@ -1,16 +1,18 @@ -#ifdef INTERFACE -CLASS(ModalController) EXTENDS(Container) - METHOD(ModalController, resizeNotify, void(entity, vector, vector, vector, vector)) - METHOD(ModalController, draw, void(entity)) - METHOD(ModalController, showChild, void(entity, entity, vector, vector, float)) - METHOD(ModalController, hideChild, void(entity, entity, float)) - METHOD(ModalController, hideAll, void(entity, float)) - METHOD(ModalController, addItem, void(entity, entity, vector, vector, float)) - METHOD(ModalController, addTab, void(entity, entity, entity)) +#ifndef ITEM_MODALCONTROLLER_H +#define ITEM_MODALCONTROLLER_H +#include "container.qc" +CLASS(ModalController, Container) + METHOD(ModalController, resizeNotify, void(entity, vector, vector, vector, vector)); + METHOD(ModalController, draw, void(entity)); + METHOD(ModalController, showChild, void(entity, entity, vector, vector, float)); + METHOD(ModalController, hideChild, void(entity, entity, float)); + METHOD(ModalController, hideAll, void(entity, float)); + METHOD(ModalController, addItem, void(entity, entity, vector, vector, float)); + METHOD(ModalController, addTab, void(entity, entity, entity)); - METHOD(ModalController, initializeDialog, void(entity, entity)) + METHOD(ModalController, initializeDialog, void(entity, entity)); - METHOD(ModalController, switchState, void(entity, entity, float, float)) + METHOD(ModalController, switchState, void(entity, entity, float, float)); ATTRIB(ModalController, origin, vector, '0 0 0') ATTRIB(ModalController, size, vector, '0 0 0') ATTRIB(ModalController, previousButton, entity, NULL) @@ -145,27 +147,16 @@ void ModalController_draw(entity me) vector fs; animating = 0; - front = world; + front = NULL; for(e = me.firstChild; e; e = e.nextSibling) if(e.ModalController_state) { if(front) - { me.switchState(me, front, 2, 0); - if(front.ModalController_factor < 1) - animating = 1; - } front = e; } if(front) - { me.switchState(me, front, 1, 0); - if(front.ModalController_factor < 1) - animating = 1; - } - - if(front && front.Container_alpha == front.ModalController_initialAlpha) - goto update_done; // update isn't needed, everything stay as is df = frametime * 3; // animation speed @@ -209,6 +200,7 @@ void ModalController_draw(entity me) me.setAlphaOf(me, e, e.Container_alpha * prevFactor); else { + animating = 1; targetFactor = df / (1 - f + df); if(e.ModalController_state == 1) @@ -234,7 +226,6 @@ void ModalController_draw(entity me) e.Container_fontscale_y = fs.y * e.ModalController_initialFontScale.y; } } - :update_done if(animating || !me.focused) me.setFocus(me, NULL);