📄 introscn.pas
字号:
unit IntroScn;
// no problems
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, StdCtrls, Controls, Forms, Dialogs,
extctrls, DXDraws, DXClass, FState;
type
TLoginState = (lsLogin, lsNewid, lsNewidRetry, lsChgpw, lsCloseAll);
TSceneType = (stIntro, stLogin, stSelectCountry, stSelectChr, stNewChr, stLoading,
stLoginNotice, stPlayGame);
TScene = class
private
public
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
EdId: TEdit;
EdPasswd: TEdit;
procedure EdLoginIdKeyPress (Sender: TObject; var Key: Char);
procedure EdLoginPasswdKeyPress (Sender: TObject; var Key: Char);
public
LoginId, LoginPasswd: string;
constructor Create;
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene (MSurface: TDirectDrawSurface); override;
procedure ChangeLoginState (state: TLoginState);
procedure NewClick; //新用户按钮被点击
procedure OkClick; //提交按钮被点击
// procedure ChgPwClick; //修改密码按钮被点击,,那么关闭场景x按钮呢
end;
implementation
uses
ClMain;
constructor TScene.Create (scenetype: TSceneType);
begin
//dfg
end;
procedure TScene.Initialize;
begin
end;
procedure TScene.Finalize;
begin
end;
procedure TScene.OpenScene;
begin
//fg
end;
procedure TScene.CloseScene;
begin
//fdg
end;
procedure TScene.OpeningScene;
begin
//kh
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
//uo
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);
//登陆ID输入框
EdId := TEdit.Create (FrmMain.Owner);
with EdId do begin
Parent := FrmMain; Color := clBlack; Font.Color := clWhite; Font.Size := 10; MaxLength := 10;
BorderStyle := bsNone; OnKeyPress := EdLoginIdKeyPress; Visible := FALSE;
Tag := 10;
end;
//密码输入框
EdPasswd := TEdit.Create (FrmMain.Owner);
with 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;
end;
destructor TLoginScene.Destroy;
begin
inherited Destroy;
end;
procedure TLoginScene.OpenScene;
var
i: integer;
d: TDirectDrawSurface;
begin
LoginId := '';
LoginPasswd := '';
with EdId do begin
Left := 350;
Top := 259;
Height := 16;
Width := 137;
Visible := FALSE;
end;
with EdPasswd do begin
Left := 350;
Top := 291;
Height := 16;
Width := 137;
Visible := FALSE;
end;
FrmDlg.DLogin.Visible := TRUE;
end;
procedure TLoginScene.CloseScene;
begin
EdId.Visible := FALSE;
EdPasswd.Visible := FALSE;
FrmDlg.DLogin.Visible := FALSE;
end;
procedure TLoginScene.EdLoginIdKeyPress (Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
LoginId := LowerCase(EdId.Text);
if LoginId <> '' then begin
EdPasswd.SetFocus;
end;
end;
end;
procedure TLoginScene.ChangeLoginState (state: TLoginState);
var
i, focus: integer;
c: TControl;
begin
focus := -1;
case state of
lsLogin: focus := 10;
lsNewIdRetry, lsNewId: focus := 11;
lsChgpw: focus := 12;
lsCloseAll: focus := -1;
end;
with FrmMain do begin //login
for i:=0 to ControlCount-1 do begin
c := Controls[i];
if c is TEdit then begin
if c.Tag in [10..12] then begin
if c.Tag = focus then begin
c.Visible := TRUE;
TEdit(c).Text := '';
end else begin
c.Visible := FALSE;
TEdit(c).Text := '';
end;
end;
end;
end;
case state of
lsLogin:
begin
// FrmDlg.DNewAccount.Visible := FALSE;
// FrmDlg.DChgPw.Visible := FALSE;
FrmDlg.DLogin.Visible := TRUE;
if EdId.Visible then EdId.SetFocus;
end;
lsNewIdRetry,lsNewId:
begin
// if BoUpdateAccountMode then
// EdNewId.Enabled := FALSE
// else
// EdNewId.Enabled := TRUE;
// FrmDlg.DNewAccount.Visible := TRUE;
// FrmDlg.DChgPw.Visible := FALSE;
FrmDlg.DLogin.Visible := false;
// if EdNewId.Visible and EdNewId.Enabled then begin
// EdNewId.SetFocus;
// end else begin
// if EdConfirm.Visible and EdConfirm.Enabled then
// EdConfirm.SetFocus;
end;
lsChgpw:
begin
// FrmDlg.DNewAccount.Visible := FALSE;
// FrmDlg.DChgPw.Visible := TRUE;
FrmDlg.DLogin.Visible := false;
// if EdChgId.Visible then EdChgId.SetFocus;
end;
lsCloseAll:
begin
// FrmDlg.DNewAccount.Visible := FALSE;
// FrmDlg.DChgPw.Visible := FALSE;
FrmDlg.DLogin.Visible := false;
end;
end;
end;
end;
procedure TLoginScene.EdLoginPasswdKeyPress (Sender: TObject; var Key: Char);
begin
if (Key = '~') or (Key = '''') then Key := '_';
if Key = #13 then begin
Key := #0;
LoginId := LowerCase(EdId.Text);
LoginPasswd := EdPasswd.Text;
if (LoginId <> '') and (LoginPasswd <> '') then begin
//拌沥栏肺 肺弊牢 茄促.
// FrmMain.SendLogin (LoginId, LoginPasswd);
EdId.Text := '';
EdPasswd.Text := '';
EdId.Visible := FALSE;
EdPasswd.Visible := FALSE;
end else
if (EdId.Visible) and (EdId.Text = '') then EdId.SetFocus;
end;
end;
procedure TLoginScene.NewClick;
begin
//这里原程序的作用仅仅在于:转换场景
end;
procedure TLoginScene.OkClick;
var
key: char;
begin
key := #13;
EdLoginPasswdKeyPress (self, key);
end;
procedure TLoginScene.PlayScene (MSurface: TDirectDrawSurface);
var
d: TDirectDrawSurface;
begin
EdId.Visible := TRUE;
EdPasswd.Visible := TRUE;
// EdId.SetFocus;
if d <> nil then begin
MSurface.Draw (0, 0, d.ClientRect, d, FALSE);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -