Mercurial > hg > index.fcgi > lj > lj046
view src/options.h @ 0:c84446dfb3f5
initial add
author | paulo@localhost |
---|---|
date | Fri, 13 Mar 2009 00:39:12 -0700 |
parents | |
children |
line source
1 /* options code for LOCKJAW, an implementation of the Soviet Mind Game
3 Copyright (C) 2007 Damian Yerrick <tepples+lj@spamcop.net>
5 This work is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 Original game concept and design by Alexey Pajitnov.
20 The Software is not sponsored or endorsed by Alexey Pajitnov, Elorg,
21 or The Tetris Company LLC.
23 */
25 #ifndef OPTIONS_H
26 #define OPTIONS_H
28 #include "lj.h"
29 #include "ljcontrol.h"
30 #include "ljlocale.h"
32 typedef struct OptionsLine {
33 FourCC name;
34 const FourCC *valueNames;
35 unsigned char minValue;
36 unsigned char nValues;
37 unsigned char startValue;
38 unsigned char style;
39 // const char *desc;
40 } OptionsLine;
42 /*
43 * OPTSTYLE_DEFAULT and no valueNames:
44 * Render value as a number.
45 * OPTSTYLE_DEFAULT and valueNames:
46 * Render value as valueNames[value - minValue]
47 * OPTSTYLE_FRAMES and no valueNames:
48 * Render value as a number and as a number times 50/3.
49 * OPTSTYLE_FRAMES and no valueNames:
50 * Similar, except override value == minValue with valueNames[0]
51 * and value == minValue + nValues - 1 with valueNames[1].
52 */
53 enum {
54 OPTSTYLE_DEFAULT, // names, or numbers
55 OPTSTYLE_FRAMES,
56 OPTSTYLE_FRAC_G
57 };
59 typedef struct OptionsPage {
60 unsigned int start;
61 const char *name;
62 } OptionsPage;
64 #define N_KICK_LIMITS 7
65 extern const OptionsLine commonOptionsMenu[];
66 extern const OptionsPage optionsPages[];
67 extern const FourCC optionsRotNames[N_ROTATION_SYSTEMS];
68 extern const FourCC optionsLockdownNames[];
69 extern const FourCC gimmickNames[LJGM_N_GIMMICKS];
70 extern const FourCC optionsPieceSetNames[];
71 extern const FourCC optionsBoolNames[2];
72 extern const FourCC optionsZangiNames[];
73 extern const FourCC optionsGluingNames[];
74 extern const FourCC optionsRandNames[];
75 extern const FourCC optionsTspinNames[LJTS_N_ALGOS];
76 extern const FourCC optionsGravNames[];
77 extern const FourCC optionsSpeedCurveNames[];
78 extern const FourCC optionsGarbageNames[];
79 extern const FourCC optionsHoldStyleNames[];
80 extern const FourCC optionsScoringNames[LJSCORE_N_STYLES];
81 extern const FourCC optionsDropScoringNames[LJDROP_N_STYLES];
82 extern const FourCC gimmickNames[LJGM_N_GIMMICKS];
83 extern const FourCC optionsSideNames[];
84 extern const FourCC optionsNextStyleNames[];
85 extern const FourCC optionsShadowNames[];
86 extern const FourCC optionsDASDelayNames[];
89 enum {
90 OPTIONS_GIMMICK,
92 OPTIONS_WIDTH,
93 OPTIONS_HEIGHT,
94 OPTIONS_ENTER_ABOVE,
95 OPTIONS_SPEED_CURVE,
96 OPTIONS_ENTRY_DELAY,
97 OPTIONS_PIECE_SET,
98 OPTIONS_RANDOMIZER,
100 OPTIONS_HOLD_PIECE,
101 OPTIONS_ROTATION_SYSTEM,
102 OPTIONS_FLOOR_KICKS,
103 OPTIONS_LOCKDOWN,
104 OPTIONS_LOCK_DELAY,
105 OPTIONS_BOTTOM_BLOCKS,
107 OPTIONS_LINE_DELAY,
108 OPTIONS_CLEAR_GRAVITY,
109 OPTIONS_GLUING,
110 OPTIONS_SCORING,
111 OPTIONS_DROP_SCORING,
112 OPTIONS_T_SPIN,
113 OPTIONS_GARBAGE,
115 OPTIONS_SIDEWAYS_DELAY,
116 OPTIONS_SIDEWAYS_SPEED,
117 OPTIONS_INITIAL_SIDEWAYS,
118 OPTIONS_IRS,
119 OPTIONS_DIAGONAL_MOTION,
120 OPTIONS_SOFT_DROP_SPEED,
121 OPTIONS_SOFT_DROP,
122 OPTIONS_HARD_DROP,
124 OPTIONS_SHADOW,
125 OPTIONS_HIDE_PF,
126 OPTIONS_NEXT_PIECES,
127 OPTIONS_SMOOTH_GRAVITY,
129 OPTIONS_MENU_LEN
130 };
132 /**
133 * Builds a string representing the value of an option.
134 * @param dst 32-byte buffer to hold this string
135 * @param line index into optionsMenu
136 * @param value the (numeric) value of the option
137 * @return the description of this value, or NULL if unknown
138 */
139 const char *getOptionsValueStr(char *dst, int line, int value);
140 #define OPTIONS_VALUE_LEN 33
142 void unpackCommonOptions(LJView *v, const unsigned char *prefs);
143 void initOptions(unsigned char *prefs);
144 const char *isDisabledOption(const unsigned char *prefs, int y);
146 void optionsWinInit(void);
147 void optionsDrawPage(int scroll, const unsigned char *prefs);
148 void optionsDrawRow(const unsigned char *prefs,
149 int dstY, int line, int value, int hilite);
150 void optionsIdle(void);
152 #endif