Browse Source

Add missing ui file

pull/25/head
Anders Jenbo 7 years ago
parent
commit
59fcb9d2e7
  1. 2
      CMakeLists.txt
  2. 2
      Stub/DiabloUI/sdlrender.cpp
  3. 7
      Stub/DiabloUI/sdlrender.h
  4. 138
      Stub/DiabloUI/selconn.cpp

2
CMakeLists.txt

@ -147,7 +147,7 @@ set(STUB_SOURCES
Stub/DiabloUI/sdlrender.cpp
Stub/DiabloUI/selconn.cpp
Stub/DiabloUI/selhero.cpp
Stub/DiabloUI/title.cpp
Stub/DiabloUI/title.cpp
3rdParty/StormLib/src/FileStream.cpp
3rdParty/StormLib/src/SBaseCommon.cpp

2
Stub/DiabloUI/sdlrender.cpp

@ -257,7 +257,7 @@ int GetAnimationFrame(int frames, int fps = 60)
return frame > frames ? 0 : frame;
}
void UiFadeIn(int steps)
bool UiFadeIn(int steps)
{
if (fadeValue < 256) {
fadeValue += steps;

7
Stub/DiabloUI/sdlrender.h

@ -68,19 +68,20 @@ typedef enum TXT_JUST {
bool IsInsideRect(const SDL_Event *event, const SDL_Rect *rect);
bool LoadArtImage(char *pszFile, void **pBuffer, int frames, DWORD *data, PALETTEENTRY *pPalette = NULL);
bool UiFadeIn(int steps = 10);
bool UiFadeOut(int steps = 5);
int GetAnimationFrame(int frames, int fps = 60);
int GetCenterOffset(int w, int bw = 0);
void DrawArtImage(int SX, int SY, int SW, int SH, int nFrame, void *pBuffer, BYTE *bMask = NULL);
void DrawMouse();
void DrawSelector16(int x, int y, int width, int padding, int spacing);
void DrawSelector42(int x, int y, int width, int padding, int spacing);
void DrawSelector(int x, int y, int width, int padding, int spacing);
void DrawSelector42(int x, int y, int width, int padding, int spacing);
void FreeMenuItems();
void LoadHeroStats();
void LoadTitelArt(char *pszFile);
void PrintText16Silver(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
void PrintText16Gold(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
void PrintText16Silver(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
void PrintText24Gold(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
void PrintText24Silver(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
void PrintText30Gold(int x, int y, char *text, TXT_JUST align = JustLeft, int bw = 0);
@ -90,4 +91,4 @@ void RenderDiabloLogo();
void RenderDiabloLogoSm();
void SdlDiabloMainWindow();
void SetMenu(int MenuId);
void UiFadeIn(int steps = 10);

138
Stub/DiabloUI/selconn.cpp

@ -0,0 +1,138 @@
#include "../../types.h"
void selconn_Render()
{
DrawArtImage(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, pPcxTitleImage);
RenderDiabloLogoSm();
PrintText30Silver(-1, 161, "Multi Player Game", JustCentre);
int w = 334;
int x = 280;
int y = 261;
PrintText30Silver(x, 211, "Select Connection", JustCentre, w);
char *connections[5] = {
"Battle.net",
"Local Area Network (IPC)",
"Modem",
"Direct Cable Connection",
"Local Area Network (UDP)"
};
int selectorTop = y;
for (int i = 0; i < 5; i++) {
PrintText16Gold(x - 1, y, connections[i], JustCentre, w);
y += 26;
}
DrawSelector16(x, selectorTop - 2, w, 35, 26);
PrintText16Silver(35, 218, "Players Supported: 4");
PrintText16Silver(35, 256, "Requirements:");
// TODO need a word wrap function
PrintText16Silver(35, 275, "All computers must be");
PrintText16Silver(35, 291, "connected to an");
PrintText16Silver(35, 307, "IPX-compatible network.");
PrintText24Silver(26, 356, "no gateway needed", JustCentre, 226);
PrintText30Gold(349, 429, "OK");
PrintText30Gold(476, 429, "Cancel");
}
void selconn_Loade()
{
LoadTitelArt("ui_art\\selgame.pcx");
}
void selconn_Free()
{
mem_free_dbg(pPcxTitleImage);
pPcxTitleImage = NULL;
}
int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info,
_SNETVERSIONDATA *file_info, int *type)
{
selconn_Loade();
SelectedItem = 1;
SelectedItemMax = 5;
SDL_Event event;
bool done = false;
while (done == false) {
selconn_Render();
if (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case SDLK_UP:
SelectedItem--;
if (SelectedItem < MAINMENU_SINGLE_PLAYER) {
SelectedItem = SelectedItemMax;
}
effects_play_sound("sfx\\items\\titlemov.wav");
break;
case SDLK_DOWN:
SelectedItem++;
if (SelectedItem > SelectedItemMax) {
SelectedItem = MAINMENU_SINGLE_PLAYER;
}
effects_play_sound("sfx\\items\\titlemov.wav");
break;
case SDLK_ESCAPE:
if (PreviousItem[submenu]) {
SetMenu(PreviousItem[submenu]);
break;
}
return FALSE;
case SDLK_RETURN:
case SDLK_KP_ENTER:
case SDLK_SPACE:
switch (SelectedItem) {
case 1:
effects_play_sound("sfx\\items\\titlslct.wav");
done = SNetInitializeProvider('ipc', client_info, user_info, ui_info, file_info);
SelectedItem = 1;
SelectedItemMax = 3;
break;
case 2:
effects_play_sound("sfx\\items\\titlslct.wav");
done = SNetInitializeProvider('dial', client_info, user_info, ui_info, file_info);
SelectedItem = 1;
SelectedItemMax = 3;
break;
case 3:
effects_play_sound("sfx\\items\\titlslct.wav");
done = SNetInitializeProvider('null', client_info, user_info, ui_info, file_info);
SelectedItem = 1;
SelectedItemMax = 3;
break;
}
break;
}
break;
case SDL_QUIT:
exit(0);
}
}
DrawMouse();
if (!done) {
UiFadeIn();
} else if (UiFadeOut()) {
break;
}
}
selconn_Free();
return TRUE;
}
Loading…
Cancel
Save