Changeset 326


Ignore:
Timestamp:
Feb 1, 2011, 2:20:05 AM (9 years ago)
Author:
sam
Message:

Test entity alignment features. Also, start working on the mouse tracking.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/monsterz/board.cpp

    r325 r326  
    105105
    106106    data->scoretext = new Text(NULL, "monsterz/gfx/font2.png");
    107     data->scoretext->SetPos(int3(604, 432, 1));
     107    data->scoretext->SetPos(int3(624, 432, 1));
     108    data->scoretext->SetAlign(Text::ALIGN_RIGHT);
    108109    Ticker::Ref(data->scoretext);
    109110    data->score = 0;
  • trunk/src/font.cpp

    r320 r326  
    4141
    4242    SDL_Surface *img;
    43     int width, height;
     43    int2 size;
    4444    float tx, ty;
    4545    GLuint texture;
     
    6969    }
    7070
    71     data->width = data->img->w / 16;
    72     data->height = data->img->h / 16;
    73     data->tx = (float)data->width / PotUp(data->img->w);
    74     data->ty = (float)data->height / PotUp(data->img->h);
     71    data->size = int2(data->img->w, data->img->h) / 16;
     72    data->tx = (float)data->size.x / PotUp(data->img->w);
     73    data->ty = (float)data->size.y / PotUp(data->img->h);
    7574
    7675    drawgroup = DRAWGROUP_BEFORE;
     
    151150            glVertex2f(pos.x, pos.y);
    152151            glTexCoord2f(tx + data->tx, ty + data->ty);
    153             glVertex2f(pos.x + data->width, pos.y);
     152            glVertex2f(pos.x + data->size.x, pos.y);
    154153            glTexCoord2f(tx + data->tx, ty);
    155             glVertex2f(pos.x + data->width, pos.y + data->height);
     154            glVertex2f(pos.x + data->size.x, pos.y + data->size.y);
    156155            glTexCoord2f(tx, ty);
    157             glVertex2f(pos.x, pos.y + data->height);
     156            glVertex2f(pos.x, pos.y + data->size.y);
    158157        }
    159158
    160         pos.x += data->width;
     159        pos.x += data->size.x;
    161160    }
    162161    glEnd();
     
    189188}
    190189
     190int2 Font::GetSize() const
     191{
     192    return data->size;
     193}
     194
  • trunk/src/font.h

    r320 r326  
    3636    void Print(int3 pos, char const *str);
    3737    void PrintBold(int3 pos, char const *str);
     38    int2 GetSize() const;
    3839
    3940private:
  • trunk/src/input.h

    r294 r326  
    1919#include "matrix.h"
    2020
     21class WorldEntity;
     22
    2123class Input
    2224{
    2325public:
     26    /* These methods are general queries */
    2427    static float2 GetAxis(int axis);
     28    static int2 GetMousePos();
     29    static int3 GetMouseButtons();
     30
     31    /* Entities can subscribe to events */
     32    static void ListenMouse(WorldEntity *e);
     33    static void UnlistenMouse(WorldEntity *e);
     34
     35    /* These methods are called by the underlying input listeners */
    2536    static void SetMousePos(int2 coord);
    26     static int2 GetMousePos();
    2737    static void SetMouseButton(int index);
    2838    static void UnsetMouseButton(int index);
    29     static int3 GetMouseButtons();
    3039};
    3140
  • trunk/src/text.cpp

    r325 r326  
    2828
    2929private:
    30     int font;
     30    int font, align, length;
    3131    char *text;
    3232    int3 pos;
     
    4242    data->font = Forge::Register(font);
    4343    data->text = text ? strdup(text) : NULL;
     44    data->length = text ? strlen(text) : 0;
    4445    data->pos = int3(0, 0, 0);
    4546
     
    5253        free(data->text);
    5354    data->text = text ? strdup(text) : NULL;
     55    data->length = text ? strlen(text) : 0;
    5456}
    5557
     
    5860    if (data->text)
    5961        free(data->text);
    60     char buf[128];
    61     sprintf(buf, "%i", val);
    62     data->text = strdup(buf);
     62    char text[128];
     63    sprintf(text, "%i", val);
     64    data->text = strdup(text);
     65    data->length = strlen(text);
    6366}
    6467
     
    6669{
    6770    data->pos = pos;
     71}
     72
     73void Text::SetAlign(int align)
     74{
     75    data->align = align;
    6876}
    6977
     
    7583    {
    7684        Font *font = Forge::GetFont(data->font);
    77         font->Print(data->pos, data->text);
     85        int3 delta = 0;
     86        if (data->align == ALIGN_RIGHT)
     87            delta.x -= data->length * font->GetSize().x;
     88        else if (data->align == ALIGN_CENTER)
     89            delta.x -= data->length * font->GetSize().x / 2;
     90        font->Print(data->pos + delta, data->text);
    7891    }
    7992}
  • trunk/src/text.h

    r325 r326  
    3030    void SetInt(int val);
    3131    void SetPos(int3 pos);
     32    void SetAlign(int align);
     33
     34    enum
     35    {
     36        ALIGN_LEFT,
     37        ALIGN_RIGHT,
     38        ALIGN_CENTER,
     39    };
    3240
    3341protected:
Note: See TracChangeset for help on using the changeset viewer.