📄 introscn.pas
字号:
unit IntroScn;
interface
uses
svn, Windows, Messages, SysUtils, Classes, Graphics, StdCtrls, Controls, Forms, Dialogs,
extctrls, DXDraws, DXClass, FState, Grobal2, cliUtil, clFunc, SoundUtil, DWinCtl,
DXSounds, HUtil32;
const
SELECTEDFRAME = 16;
FREEZEFRAME = 13;
EFFECTFRAME = 14;
type
TLoginState = (lsLogin, lsNewid, lsNewidRetry, lsChgpw, lsCloseAll);
TSceneType = (stIntro, stLogin, stSelectCountry, stSelectChr, stNewChr{, stLoading,
stLoginNotice}, stPlayGame);
TSelChar = record
Valid: Boolean;
UserChr: TUserCharacterInfo;
Selected: Boolean;
FreezeState: Boolean;
Unfreezing: Boolean;
Freezing: Boolean;
AniIndex: integer;
DarkLevel: integer;
EffIndex: integer;
StartTime: longword;
moretime: longword;
startefftime: longword;
IsCreating: boolean;
end;
TScene = class
private
public
SceneType: TSceneType;
constructor Create (scenetype: TSceneType);
procedure Initialize; dynamic;
procedure Finalize; dynamic;
procedure OpenScene; dynamic;
procedure CloseScene; dynamic;
procedure OpeningScene; dynamic;
procedure KeyPress (var Key: Char); dynamic;
procedure KeyDown (var Key: Word; Shift: TShiftState); dynamic;
procedure MouseMove (Shift: TShiftState; X, Y: Integer); dynamic;
procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic;
procedure PlayScene (MSurface: TDirectDrawSurface); dynamic;
end;
TIntroScene = class (TScene)
private
public
constructor Create;
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene (MSurface: TDirectDrawSurface); override;
end;
TLoginScene = class (TScene)
private
m_EdId :TEdit;
m_EdPasswd :TEdit;
m_EdNewId :TEdit;
m_EdNewPasswd :TEdit;
m_EdConfirm :TEdit;
m_EdYourName :TEdit;
m_EdSSNo :TEdit;
m_EdBirthDay :TEdit;
m_EdQuiz1 :TEdit;
m_EdAnswer1 :TEdit;
m_EdQuiz2 :TEdit;
m_EdAnswer2 :TEdit;
m_EdPhone :TEdit;
m_EdMobPhone :TEdit;
m_EdEMail :TEdit;
m_EdChgId :TEdit;
m_EdChgCurrentpw :TEdit;
m_EdChgNewPw :TEdit;
m_EdChgRepeat :TEdit;
m_nCurFrame :Integer;
m_nMaxFrame :Integer;
m_dwStartTime :LongWord;
m_boNowOpening :Boolean;
m_boOpenFirst :Boolean;
m_NewIdRetryUE :TUserEntry;
m_NewIdRetryAdd :TUserEntryAdd;
procedure EdLoginIdKeyPress (Sender: TObject; var Key: Char);
procedure EdLoginPasswdKeyPress (Sender: TObject; var Key: Char);
procedure EdNewIdKeyPress (Sender: TObject; var Key: Char);
procedure EdNewOnEnter (Sender: TObject);
function CheckUserEntrys: Boolean;
function NewIdCheckNewId: Boolean;
function NewIdCheckSSno: Boolean;
function NewIdCheckBirthDay: Boolean;
public
m_sLoginId :String;
m_sLoginPasswd :String;
m_boUpdateAccountMode :Boolean;
constructor Create;
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene (MSurface: TDirectDrawSurface); override;
procedure ChangeLoginState (state: TLoginState);
procedure NewClick;
procedure NewIdRetry (boupdate: Boolean);
procedure UpdateAccountInfos (ue: TUserEntry);
procedure OkClick;
procedure ChgPwClick;
procedure NewAccountOk;
procedure NewAccountClose;
procedure ChgpwOk;
procedure ChgpwCancel;
procedure HideLoginBox;
procedure OpenLoginDoor;
procedure PassWdFail;
end;
TSelectChrScene = class (TScene)
private
SoundTimer: TTimer;
CreateChrMode: Boolean;
EdChrName: TEdit;
m_dwStartTime :LongWord;
Numbert :integer;
Help1 :integer;
Help2 :integer;
logodxdindex :integer;
m_LoadingTime :LongWord;
m_LoadingWaitTime :LongWord;
m_boNowLoading :Boolean;
m_nCurFrame :Integer;
m_nMaxFrame :Integer;
procedure SoundOnTimer (Sender: TObject);
procedure MakeNewChar (index: integer);
procedure EdChrnameKeyPress (Sender: TObject; var Key: Char);
public
NewIndex: integer;
OldIndex: integer;
ChrArr: array[0..2] of TSelChar;
constructor Create;
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene (MSurface: TDirectDrawSurface); override;
procedure SelChrSelect1Click;
procedure SelChrSelect2Click;
procedure SelChrSelect3Click;
procedure SelChrStartClick;
procedure SelChrNewChrClick;
procedure SelChrEraseChrClick;
procedure SelChrCreditsClick;
procedure SelChrExitClick;
procedure SelChrNewClose;
procedure SelChrNewJob (job: integer);
procedure SelChrNewm_btSex (sex: integer);
procedure SelChrNewPrevHair;
procedure SelChrNewNextHair;
procedure SelChrNewOk;
procedure ClearChrs;
procedure AddChr (uname: string; job, hair, level, sex: integer);
procedure SelectChr (index: integer);
procedure OpenLoading;
procedure HideSelectChrBox;
procedure LoadHelp1;
procedure LoadHelp2;
end;
{ TLoading = class (TScene)
private
m_nCurFrame :Integer;
m_nMaxFrame :Integer;
public
constructor Create;
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene (MSurface: TDirectDrawSurface); override;
end;}
{ TLoginNotice = class (TScene)
private
public
constructor Create;
destructor Destroy; override;
end;}
implementation
uses
ClMain, MShare, Share;
constructor TScene.Create (scenetype: TSceneType);
begin
SceneType := scenetype;
end;
procedure TScene.Initialize;
begin
end;
procedure TScene.Finalize;
begin
end;
procedure TScene.OpenScene;
begin
;
end;
procedure TScene.CloseScene;
begin
;
end;
procedure TScene.OpeningScene;
begin
end;
procedure TScene.KeyPress (var Key: Char);
begin
end;
procedure TScene.KeyDown (var Key: Word; Shift: TShiftState);
begin
end;
procedure TScene.MouseMove (Shift: TShiftState; X, Y: Integer);
begin
end;
procedure TScene.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
end;
procedure TScene.PlayScene (MSurface: TDirectDrawSurface);
begin
;
end;
{------------------- TIntroScene ----------------------}
constructor TIntroScene.Create;
begin
inherited Create (stIntro);
end;
destructor TIntroScene.Destroy;
begin
inherited Destroy;
end;
procedure TIntroScene.OpenScene;
begin
end;
procedure TIntroScene.CloseScene;
begin
end;
procedure TIntroScene.PlayScene (MSurface: TDirectDrawSurface);
begin
end;
{--------------------- Login ----------------------}
constructor TLoginScene.Create;
var
nx, ny: integer;
begin
inherited Create (stLogin);
m_EdId := TEdit.Create (FrmMain.Owner);
with m_EdId do begin
Parent := FrmMain;
Color := clBlack;
Font.Color := clWhite;
Font.Size := 10;
MaxLength := 10;
BorderStyle := bsNone;
OnKeyPress := EdLoginIdKeyPress;
Visible := FALSE;
Tag := 10;
end;
m_EdPasswd := TEdit.Create (FrmMain.Owner);
with m_EdPasswd do begin
Parent := FrmMain; Color := clBlack; Font.Size := 10; MaxLength := 10; Font.Color := clWhite;
BorderStyle := bsNone; PasswordChar := '*';
OnKeyPress := EdLoginPasswdKeyPress; Visible := FALSE;
Tag := 10;
end;
nx := SCREENWIDTH div 2 - 320;
ny := SCREENHEIGHT div 2 - 238;
m_EdNewId := TEdit.Create (FrmMain.Owner);
with m_EdNewId do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 116;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 10;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdNewPasswd := TEdit.Create (FrmMain.Owner);
with m_EdNewPasswd do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 137;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 10;
PasswordChar := '*'; Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdConfirm := TEdit.Create (FrmMain.Owner);
with m_EdConfirm do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 158;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 10;
PasswordChar := '*'; Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdYourName := TEdit.Create (FrmMain.Owner);
with m_EdYourName do begin
Parent := FrmMain; Height := 16; Width := 116; Left := nx + 161; Top := ny + 187;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 20;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdSSNo := TEdit.Create (FrmMain.Owner);
with m_EdSSNo do begin
Parent := FrmMain; Height := 16; Width := 116; Left := nx + 161; Top := ny + 207;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 14;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdBirthDay := TEdit.Create (FrmMain.Owner);
with m_EdBirthDay do begin
Parent := FrmMain; Height := 16; Width := 116; Left := nx + 161; Top := ny + 227;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 10;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdQuiz1 := TEdit.Create (FrmMain.Owner);
with m_EdQuiz1 do begin
Parent := FrmMain; Height := 16; Width := 163; Left := nx + 161; Top := ny + 256;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 20;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdAnswer1 := TEdit.Create (FrmMain.Owner);
with m_EdAnswer1 do begin
Parent := FrmMain; Height := 16; Width := 163; Left := nx + 161; Top := ny + 276;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 12;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdQuiz2 := TEdit.Create (FrmMain.Owner);
with m_EdQuiz2 do begin
Parent := FrmMain; Height := 16; Width := 163; Left := nx + 161; Top := ny + 297;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 20;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdAnswer2 := TEdit.Create (FrmMain.Owner);
with m_EdAnswer2 do begin
Parent := FrmMain; Height := 16; Width := 163; Left := nx + 161; Top := ny + 317;
BorderStyle := bsNone; Color := clBlack; Font.Color := clWhite; MaxLength := 12;
Visible := FALSE; OnKeyPress := EdNewIdKeyPress; OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdPhone := TEdit.Create (FrmMain.Owner);
with m_EdPhone do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 347;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 14;
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdMobPhone := TEdit.Create (FrmMain.Owner);
with m_EdMobPhone do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 368;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 13;
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 11;
end;
m_EdEMail := TEdit.Create (FrmMain.Owner);
with m_EdEMail do begin
Parent := FrmMain;
Height := 16;
Width := 116;
Left := nx + 161;
Top := ny + 388;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 40;
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 11;
end;
nx := SCREENWIDTH div 2 - 210;
ny := SCREENHEIGHT div 2 - 150;
m_EdChgId := TEdit.Create (FrmMain.Owner);
with m_EdChgId do begin
Parent := FrmMain;
Height := 16;
Width := 137;
Left := nx+239;
Top := ny+117;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 10;
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 12;
end;
m_EdChgCurrentpw := TEdit.Create (FrmMain.Owner);
with m_EdChgCurrentpw do begin
Parent := FrmMain;
Height := 16;
Width := 137;
Left := nx+239;
Top := ny+149;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 10;
PasswordChar := '*';
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 12;
end;
m_EdChgNewPw := TEdit.Create (FrmMain.Owner);
with m_EdChgNewPw do begin
Parent := FrmMain;
Height := 16;
Width := 137;
Left := nx+239;
Top := ny+176;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 10;
PasswordChar := '*';
Visible := FALSE;
OnKeyPress := EdNewIdKeyPress;
OnEnter := EdNewOnEnter;
Tag := 12;
end;
m_EdChgRepeat := TEdit.Create (FrmMain.Owner);
with m_EdChgRepeat do begin
Parent := FrmMain;
Height := 16;
Width := 137;
Left := nx+239;
Top := ny+208;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
MaxLength := 10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -