summaryrefslogtreecommitdiff
path: root/src/client/saveDialog.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-08-14 14:47:44 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-08-14 14:47:44 +0000
commit50ba3d5e1e9f9eeda049a348efa4645af07610bc (patch)
tree3a41428f4ce755e596a4d5c2c69668515935e5b0 /src/client/saveDialog.c
parent5b67651831ad9b160b41990288c938c7a05c1db1 (diff)
- novy widget widget_choicegroup
- moznost ukladat a nacitavat rozohranu hru ( uklada sa pomocou F2) ( neda sa ulozit sietovy multiplayer, a este nie je dokonce ulozenie hranie s AI ) git-svn-id: http://opensvn.csie.org/tuxanci_ng@195 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/client/saveDialog.c')
-rw-r--r--src/client/saveDialog.c160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/client/saveDialog.c b/src/client/saveDialog.c
new file mode 100644
index 0000000..0595d1e
--- /dev/null
+++ b/src/client/saveDialog.c
@@ -0,0 +1,160 @@
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "main.h"
+#include "list.h"
+#include "myTimer.h"
+#include "tux.h"
+#include "space.h"
+#include "arena.h"
+#include "net_multiplayer.h"
+
+#include "interface.h"
+#include "saveDialog.h"
+#include "image.h"
+#include "font.h"
+#include "saveLoad.h"
+
+#include "widget_label.h"
+#include "widget_button.h"
+#include "widget_textfield.h"
+
+static image_t *g_background;
+static bool_t activeSaveDialog;
+static my_time_t lastActive;
+
+static widget_label_t *widgetLabelMsg;
+static widget_textfield_t *widgetTextFieldName;
+
+static widget_button_t *widgetButtonSave;
+static widget_button_t *widgetButtonBack;
+
+static void switchTerm()
+{
+ if( activeSaveDialog == TRUE )
+ {
+ activeSaveDialog = FALSE;
+ }
+ else
+ {
+ activeSaveDialog = TRUE;
+ }
+}
+
+static void eventWidget(void *p)
+{
+ widget_button_t *button;
+
+ button = (widget_button_t *)p;
+
+ if( button == widgetButtonSave )
+ {
+ saveArena(widgetTextFieldName->text, getCurrentArena());
+ switchTerm();
+ }
+
+ if( button == widgetButtonBack )
+ {
+ switchTerm();
+ }
+}
+
+void initSaveDialog()
+{
+ activeSaveDialog = FALSE;
+ lastActive = getMyTime();
+
+ g_background = getImage(IMAGE_GROUP_BASE, "screen_main");
+
+ widgetLabelMsg = newWidgetLabel(
+ "name",
+ SAVE_DIALOG_LOCATIN_X+20,
+ SAVE_DIALOG_LOCATIN_Y+20,
+ WIDGET_LABEL_LEFT);
+
+ widgetTextFieldName = newWidgetTextfield(
+ "noname",
+ WIDGET_TEXTFIELD_FILTER_ALPHANUM,
+ widgetLabelMsg->x+widgetLabelMsg->w+10,
+ widgetLabelMsg->y);
+
+ widgetButtonSave = newWidgetButton(
+ "Save",
+ SAVE_DIALOG_LOCATIN_X+20,
+ SAVE_DIALOG_LOCATIN_Y+60,
+ eventWidget);
+
+ widgetButtonBack = newWidgetButton(
+ "Back",
+ SAVE_DIALOG_LOCATIN_X+20+WIDGET_BUTTON_WIDTH+20,
+ SAVE_DIALOG_LOCATIN_Y+60,
+ eventWidget);
+}
+
+bool_t isSaveDialogActive()
+{
+ return activeSaveDialog;
+}
+
+void drawSaveDialog()
+{
+ if( activeSaveDialog == FALSE )
+ {
+ return;
+ }
+
+ drawImage(g_background,
+ SAVE_DIALOG_LOCATIN_X,
+ SAVE_DIALOG_LOCATIN_Y,
+ SAVE_DIALOG_LOCATIN_X,
+ SAVE_DIALOG_LOCATIN_Y,
+ SAVE_DIALOG_SIZE_X, SAVE_DIALOG_SIZE_Y);
+
+ drawWidgetLabel(widgetLabelMsg);
+ drawWidgetTextfield(widgetTextFieldName);
+ drawWidgetButton(widgetButtonSave);
+ drawWidgetButton(widgetButtonBack);
+}
+
+void eventSaveDialog()
+{
+ my_time_t currentTime;
+ Uint8 *mapa;
+
+ if( getNetTypeGame() != NET_GAME_TYPE_NONE )
+ {
+ return;
+ }
+
+ mapa = SDL_GetKeyState(NULL);
+
+ currentTime = getMyTime();
+
+ if( mapa[SDLK_F2] == SDL_PRESSED )
+ {
+ if( currentTime - lastActive > SAVEDIALOG_ACTIVE_TIME_INTERVAL )
+ {
+ lastActive = currentTime;
+ switchTerm();
+ }
+ }
+
+ if( activeSaveDialog == FALSE )
+ {
+ return;
+ }
+
+ eventWidgetTextfield(widgetTextFieldName);
+ eventWidgetButton(widgetButtonSave);
+ eventWidgetButton(widgetButtonBack);
+
+}
+
+void quitSaveDialog()
+{
+ destroyWidgetLabel(widgetLabelMsg);
+ destroyWidgetTextfield(widgetTextFieldName);
+ destroyWidgetButton(widgetButtonSave);
+ destroyWidgetButton(widgetButtonBack);
+}