dxx-rebirth/common/ui/keypad.cpp

516 lines
18 KiB
C++
Raw Normal View History

2006-03-20 17:12:09 +00:00
/*
2014-06-01 17:55:23 +00:00
* Portions of this file are copyright Rebirth contributors and licensed as
* described in COPYING.txt.
* Portions of this file are copyright Parallax Software and licensed
* according to the Parallax license below.
* See COPYING.txt for license details.
2006-03-20 17:12:09 +00:00
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*/
#include <memory>
2006-03-20 17:12:09 +00:00
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "physfsx.h"
2012-07-01 02:54:33 +00:00
#include "maths.h"
2006-03-20 17:12:09 +00:00
#include "pstypes.h"
#include "gr.h"
#include "key.h"
#include "ui.h"
#include "u_mem.h"
#include "func.h"
#include "dxxerror.h"
2006-03-20 17:12:09 +00:00
#include "compiler-make_unique.h"
#include "compiler-range_for.h"
2006-03-20 17:12:09 +00:00
#define MAX_NUM_PADS 20
static array<std::unique_ptr<UI_GADGET_BUTTON>, 17> Pad;
static array<std::unique_ptr<UI_KEYPAD>, MAX_NUM_PADS> KeyPad;
2006-03-20 17:12:09 +00:00
static int active_pad;
static int desc_x, desc_y;
static int HotKey[17];
static int HotKey1[17];
int ui_pad_get_current()
{
return active_pad;
}
void ui_pad_init()
{
KeyPad = {};
2006-03-20 17:12:09 +00:00
active_pad = -1;
}
void ui_pad_close()
{
KeyPad = {};
2006-03-20 17:12:09 +00:00
}
2013-10-27 22:00:14 +00:00
static void LineParse( int n, char * dest, char * source )
2006-03-20 17:12:09 +00:00
{
int i = 0, j=0, cn = 0;
// Go to the n'th line
while (cn < n )
if ((unsigned char) source[i++] == 179)
cn++;
// Read up until the next comma
while ((unsigned char) source[i] != 179)
{
dest[j] = source[i++];
j++;
}
// Null-terminate
dest[j++] = 0;
}
void ui_pad_activate( UI_DIALOG * dlg, int x, int y )
2006-03-20 17:12:09 +00:00
{
int w,h,row,col, n;
int bh, bw;
bw = 56; bh = 30;
x += 5;
y += 20;
desc_x = x+2;
desc_y = y-17;
n=0; row = 0; col = 0; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=1; row = 0; col = 1; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=2; row = 0; col = 2; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=3; row = 0; col = 3; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=4; row = 1; col = 0; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=5; row = 1; col = 1; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=6; row = 1; col = 2; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=7; row = 1; col = 3; w = 1; h = 2;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=8; row = 2; col = 0; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=9; row = 2; col = 1; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=10; row = 2; col = 2; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=11; row = 3; col = 0; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=12; row = 3; col = 1; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=13; row = 3; col = 2; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=14; row = 3; col = 3; w = 1; h = 2;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=15; row = 4; col = 0; w = 2; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
n=16; row = 4; col = 2; w = 1; h = 1;
Pad[n] = ui_add_gadget_button( dlg, x+(bw*col), y+(bh*row), bw*w, bh*h, NULL, NULL );
2014-07-20 03:48:27 +00:00
Pad[n]->canvas->cv_font = ui_small_font.get();
2006-03-20 17:12:09 +00:00
HotKey[0] = KEY_CTRLED + KEY_NUMLOCK;
HotKey[1] = KEY_CTRLED + KEY_PADDIVIDE;
HotKey[2] = KEY_CTRLED + KEY_PADMULTIPLY;
HotKey[3] = KEY_CTRLED + KEY_PADMINUS;
HotKey[4] = KEY_CTRLED + KEY_PAD7;
HotKey[5] = KEY_CTRLED + KEY_PAD8;
HotKey[6] = KEY_CTRLED + KEY_PAD9;
HotKey[7] = KEY_CTRLED + KEY_PADPLUS;
HotKey[8] = KEY_CTRLED + KEY_PAD4;
HotKey[9] = KEY_CTRLED + KEY_PAD5;
HotKey[10] = KEY_CTRLED + KEY_PAD6;
HotKey[11] = KEY_CTRLED + KEY_PAD1;
HotKey[12] = KEY_CTRLED + KEY_PAD2;
HotKey[13] = KEY_CTRLED + KEY_PAD3;
HotKey[14] = KEY_CTRLED + KEY_PADENTER;
HotKey[15] = KEY_CTRLED + KEY_PAD0;
HotKey[16] = KEY_CTRLED + KEY_PADPERIOD;
HotKey1[0] = KEY_SHIFTED + KEY_CTRLED + KEY_NUMLOCK;
HotKey1[1] = KEY_SHIFTED + KEY_CTRLED + KEY_PADDIVIDE;
HotKey1[2] = KEY_SHIFTED + KEY_CTRLED + KEY_PADMULTIPLY;
HotKey1[3] = KEY_SHIFTED + KEY_CTRLED + KEY_PADMINUS;
HotKey1[4] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD7;
HotKey1[5] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD8;
HotKey1[6] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD9;
HotKey1[7] = KEY_SHIFTED + KEY_CTRLED + KEY_PADPLUS;
HotKey1[8] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD4;
HotKey1[9] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD5;
HotKey1[10] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD6;
HotKey1[11] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD1;
HotKey1[12] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD2;
HotKey1[13] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD3;
HotKey1[14] = KEY_SHIFTED + KEY_CTRLED + KEY_PADENTER;
HotKey1[15] = KEY_SHIFTED + KEY_CTRLED + KEY_PAD0;
HotKey1[16] = KEY_SHIFTED + KEY_CTRLED + KEY_PADPERIOD;
active_pad = -1;
}
void ui_pad_deactivate()
{
for (int i=0; i<17; i++ )
2006-03-20 17:12:09 +00:00
{
Pad[i]->text.clear();
2006-03-20 17:12:09 +00:00
}
}
void ui_pad_draw(UI_DIALOG *dlg, int x, int y)
{
int bh, bw;
bw = 56; bh = 30;
ui_dialog_set_current_canvas( dlg );
ui_draw_box_in( x, y, x+(bw*4)+10 + 200, y+(bh*5)+45 );
gr_set_current_canvas( NULL );
gr_setcolor( CWHITE );
gr_urect( desc_x, desc_y, desc_x+ 56*4-1, desc_y+15 );
gr_set_fontcolor( CBLACK, CWHITE );
gr_ustring(desc_x, desc_y, KeyPad[active_pad]->description.data());
}
2006-03-20 17:12:09 +00:00
static void ui_pad_set_active( int n )
{
int np;
2013-09-02 23:21:13 +00:00
const char * name;
2006-03-20 17:12:09 +00:00
for (int i=0; i<17; i++ )
2006-03-20 17:12:09 +00:00
{
Pad[i]->text = KeyPad[n]->buttontext[i].data();
2006-03-20 17:12:09 +00:00
Pad[i]->status = 1;
Pad[i]->user_function = NULL;
Pad[i]->dim_if_no_function = 1;
Pad[i]->hotkey = -1;
for (int j=0; j< KeyPad[n]->numkeys; j++ )
2006-03-20 17:12:09 +00:00
{
if (HotKey[i] == KeyPad[n]->keycode[j] )
{
Pad[i]->hotkey = HotKey[i];
Pad[i]->user_function = func_nget( KeyPad[n]->function_number[j], &np, &name );
}
if (HotKey1[i] == KeyPad[n]->keycode[j] )
{
Pad[i]->hotkey1 = HotKey1[i];
Pad[i]->user_function1 = func_nget( KeyPad[n]->function_number[j], &np, &name );
}
}
}
active_pad = n;
}
void ui_pad_goto(int n)
{
if ( KeyPad[n] != NULL )
ui_pad_set_active(n);
}
void ui_pad_goto_next()
{
int i, si;
i = active_pad + 1;
si = i;
while( KeyPad[i]==NULL )
{
i++;
if (i >= MAX_NUM_PADS)
i = 0;
if (i == si )
break;
}
ui_pad_set_active(i);
}
void ui_pad_goto_prev()
{
2011-09-26 23:31:19 +00:00
int i;
2006-03-20 17:12:09 +00:00
if (active_pad == -1 )
active_pad = MAX_NUM_PADS;
i = active_pad - 1;
if (i<0) i= MAX_NUM_PADS - 1;
while( KeyPad[i]==NULL )
{
i--;
if (i < 0)
i = MAX_NUM_PADS-1;
if (i == active_pad )
break;
}
ui_pad_set_active(i);
}
UI_KEYPAD::UI_KEYPAD() :
numkeys(0)
{
description[0] = 0;
range_for (auto &i, buttontext)
i[0] = 0;
}
void ui_pad_read( int n, const char * filename )
2006-03-20 17:12:09 +00:00
{
char * ptr;
char text[100];
PHYSFS_file * infile;
2006-03-20 17:12:09 +00:00
int linenumber = 0;
int keycode, functionnumber;
infile = PHYSFSX_openReadBuffered( filename );
2006-03-20 17:12:09 +00:00
if (!infile) {
Warning( "Couldn't find %s\n", filename );
2006-03-20 17:12:09 +00:00
return;
}
2014-12-20 04:36:08 +00:00
auto &kpn = *(KeyPad[n] = make_unique<UI_KEYPAD>());
2006-03-20 17:12:09 +00:00
2014-09-07 19:48:10 +00:00
PHYSFSX_gets_line_t<100> buffer;
2006-03-20 17:12:09 +00:00
while ( linenumber < 22)
{
PHYSFSX_fgets( buffer, infile );
2006-03-20 17:12:09 +00:00
switch( linenumber+1 )
{
case 1:
2014-12-20 04:36:08 +00:00
strncpy(kpn.description.data(), buffer, kpn.description.size() - 1);
kpn.description.back() = 0;
2006-03-20 17:12:09 +00:00
break;
//===================== ROW 0 ==============================
case 3:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[0].data(), kpn.buttontext[0].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[1].data(), kpn.buttontext[1].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[2].data(), kpn.buttontext[2].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[3].data(), kpn.buttontext[3].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
break;
case 4:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[0].data(), kpn.buttontext[0].size(), "%s%s\n", kpn.buttontext[0].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[1].data(), kpn.buttontext[1].size(), "%s%s\n", kpn.buttontext[1].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[2].data(), kpn.buttontext[2].size(), "%s%s\n", kpn.buttontext[2].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[3].data(), kpn.buttontext[3].size(), "%s%s\n", kpn.buttontext[3].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 5:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[0].data(), kpn.buttontext[0].size(), "%s%s", kpn.buttontext[0].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[1].data(), kpn.buttontext[1].size(), "%s%s", kpn.buttontext[1].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[2].data(), kpn.buttontext[2].size(), "%s%s", kpn.buttontext[2].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[3].data(), kpn.buttontext[3].size(), "%s%s", kpn.buttontext[3].data(),text );
2006-03-20 17:12:09 +00:00
break;
//===================== ROW 1 ==============================
case 7:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[4].data(), kpn.buttontext[4].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[5].data(), kpn.buttontext[5].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer);
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[6].data(), kpn.buttontext[6].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
break;
case 8:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[4].data(), kpn.buttontext[4].size(), "%s%s\n", kpn.buttontext[4].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[5].data(), kpn.buttontext[5].size(), "%s%s\n", kpn.buttontext[5].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[6].data(), kpn.buttontext[6].size(), "%s%s\n", kpn.buttontext[6].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s\n", kpn.buttontext[7].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 9:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[4].data(), kpn.buttontext[4].size(), "%s%s", kpn.buttontext[4].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[5].data(), kpn.buttontext[5].size(), "%s%s", kpn.buttontext[5].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[6].data(), kpn.buttontext[6].size(), "%s%s", kpn.buttontext[6].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s\n", kpn.buttontext[7].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 10:
ptr = strrchr( buffer, (char) 179 );
*ptr = 0;
ptr = strrchr( buffer, (char) 180 ); ptr++;
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s\n", kpn.buttontext[7].data(),ptr );
2006-03-20 17:12:09 +00:00
break;
//======================= ROW 2 ==============================
case 11:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[8].data(), kpn.buttontext[8].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[9].data(), kpn.buttontext[9].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer);
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[10].data(), kpn.buttontext[10].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s\n", kpn.buttontext[7].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 12:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[8].data(), kpn.buttontext[8].size(), "%s%s\n", kpn.buttontext[8].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[9].data(), kpn.buttontext[9].size(), "%s%s\n", kpn.buttontext[9].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[10].data(), kpn.buttontext[10].size(), "%s%s\n", kpn.buttontext[10].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s\n", kpn.buttontext[7].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 13:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[8].data(), kpn.buttontext[8].size(), "%s%s", kpn.buttontext[8].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[9].data(), kpn.buttontext[9].size(), "%s%s", kpn.buttontext[9].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[10].data(), kpn.buttontext[10].size(), "%s%s", kpn.buttontext[10].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[7].data(), kpn.buttontext[7].size(), "%s%s", kpn.buttontext[7].data(),text );
2006-03-20 17:12:09 +00:00
break;
// ====================== ROW 3 =========================
case 15:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[11].data(), kpn.buttontext[11].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[12].data(), kpn.buttontext[12].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer);
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[13].data(), kpn.buttontext[13].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
break;
case 16:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[11].data(), kpn.buttontext[11].size(), "%s%s\n", kpn.buttontext[11].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[12].data(), kpn.buttontext[12].size(), "%s%s\n", kpn.buttontext[12].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[13].data(), kpn.buttontext[13].size(), "%s%s\n", kpn.buttontext[13].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s\n", kpn.buttontext[14].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 17:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[11].data(), kpn.buttontext[11].size(), "%s%s", kpn.buttontext[11].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[12].data(), kpn.buttontext[12].size(), "%s%s", kpn.buttontext[12].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[13].data(), kpn.buttontext[13].size(), "%s%s", kpn.buttontext[13].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 4, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s\n", kpn.buttontext[14].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 18:
ptr = strrchr( buffer, (char) 179 );
*ptr = 0;
ptr = strrchr( buffer, (char) 180 ); ptr++;
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s\n", kpn.buttontext[14].data(), ptr );
2006-03-20 17:12:09 +00:00
break;
//======================= ROW 4 =========================
case 19:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[15].data(), kpn.buttontext[15].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[16].data(), kpn.buttontext[16].size(), "%s\n", text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s\n", kpn.buttontext[14].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 20:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[15].data(), kpn.buttontext[15].size(), "%s%s\n", kpn.buttontext[15].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[16].data(), kpn.buttontext[16].size(), "%s%s\n", kpn.buttontext[16].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s\n", kpn.buttontext[14].data(),text );
2006-03-20 17:12:09 +00:00
break;
case 21:
LineParse( 1, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[15].data(), kpn.buttontext[15].size(), "%s%s", kpn.buttontext[15].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 2, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[16].data(), kpn.buttontext[16].size(), "%s%s", kpn.buttontext[16].data(),text );
2006-03-20 17:12:09 +00:00
LineParse( 3, text, buffer );
2014-12-20 04:36:08 +00:00
snprintf(kpn.buttontext[14].data(), kpn.buttontext[14].size(), "%s%s", kpn.buttontext[14].data(),text );
2006-03-20 17:12:09 +00:00
break;
}
linenumber++;
}
// Get the keycodes...
2014-09-07 19:48:10 +00:00
PHYSFSX_gets_line_t<200> line_buffer;
while (PHYSFSX_fgets(line_buffer, infile))
2006-03-20 17:12:09 +00:00
{
2014-09-07 19:48:10 +00:00
sscanf(line_buffer, " %s %99s ", text, buffer.line());
2006-03-20 17:12:09 +00:00
keycode = DecodeKeyText(text);
functionnumber = func_get_index(buffer);
if (functionnumber==-1)
{
2014-09-07 19:48:10 +00:00
Error( "Unknown function, %s, in %s\n", buffer.line(), filename );
2006-03-20 17:12:09 +00:00
} else if (keycode==-1)
{
Error( "Unknown keystroke, %s, in %s\n", text, filename );
//ui_messagebox( -2, -2, 1, buffer, "Ok" );
2006-03-20 17:12:09 +00:00
} else {
2014-12-20 04:36:08 +00:00
kpn.keycode[kpn.numkeys] = keycode;
kpn.function_number[kpn.numkeys] = functionnumber;
kpn.numkeys++;
2006-03-20 17:12:09 +00:00
}
}
PHYSFS_close(infile);
2006-03-20 17:12:09 +00:00
}