From: Kamil K. <kkr...@us...> - 2000-09-16 07:37:03
|
Update of /cvsroot/pythianproject/PythianProject/Source/Conversation/Interpreter/second In directory slayer.i.sourceforge.net:/tmp/cvs-serv23238 Added Files: convInterpreter.cfg convInterpreter.dof convInterpreter.dpr frmMain.dfm frmMain.pas HTTSLib_TLB.dcr HTTSLib_TLB.pas Log Message: 2nd Interpreter kk 16/9/2000 --- NEW FILE --- -$A+ -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J+ -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T- -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ -M -$M16384,1048576 -K$00400000 -LE"d:\program files\borland\delphi5\Projects\Bpl" -LN"d:\program files\borland\delphi5\Projects\Bpl" --- NEW FILE --- [Compiler] A=1 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=1 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=0 U=0 V=1 W=0 X=1 Y=1 Z=1 ShowHints=1 ShowWarnings=1 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 RemoteSymbols=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= SearchPath= Packages=VCL40;VCLX40;VCLDB40;VCLDBX40;VCLSMP40;QRPT40;TEEUI40;TEEDB40;TEE40;ibevnt40;nmfast40;Python_d4;PythonVCL_d4;NtfyIcon;glPanelPkg Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams= HostApplication= [Language] ActiveLang= ProjectLang=$0000041B RootDir= [Version Info] IncludeVerInfo=0 AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 Locale=2057 CodePage=1252 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= [HistoryLists\hlUnitAliases] Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlSearchPath] Count=1 Item0=e:\cvsroot\pythianproject\source\units\ --- NEW FILE --- program convInterpreter; uses Forms, frmMain in 'frmMain.pas' {frm_Main}; {$R *.RES} begin Application.Initialize; Application.CreateForm(Tfrm_Main, frm_Main); Application.Run; end. --- NEW FILE --- ÿ Font.ColorclWindowTextFont.Heightõ Font.Name MS Sans Serif Font.Style FormCreate OnDestroyFormDestroy PixelsPerInch` TextHeight pnlTopLeftLeft BevelOuterbvNoneBorderStylebsSingleCaptionNo options!Font.CharsetDEFAULT_CHARSET Font.ColorclWindowTextFont.Heightõ Font.NameArial Font.StylefsBold ParentFontTabOrder BevelOuterbvNoneBorderStylebsSingleCtl3DParentCtl3DTabOrder ScrollBars ssVerticalTabOrder pnlControlLeft BevelOuterbvNoneBorderStylebsSingleTabOrder btnOpenCMLLeftTopWidthSHeightAnchorsakTopakRight BevelOuterbvNoneBorderStylebsSingleCaptionPanel1TabOrder log memo. /Messages with prefix "NPC" are NPC's talks. If 0there's "PC Choosing", you can choose from your options (what to say).2To choose a option, click on one radio button and press "Say this" button DelayTimerEnabledInterval OpenDialogCtl3D DefaultExtcmlFilter*CML Files (*.cml)|*.cml|Any file (*.*)|*.* InitialDir.OptionsofHideReadOnlyofPathMustExistofFileMustExistofEnableSizing SpellTimerEnabledIntervaldOnTimerSpellTimerTimerLeft¹TopQ --- NEW FILE --- unit frmMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, XDOM, conversationObjectsUnit, OleCtrls, HTTSLib_TLB, Spin; type Tfrm_Main = class(TForm) pnlTopLeft: TPanel; rdgPlayerOption: TRadioGroup; pnlBottom: TPanel; Label2: TLabel; OutMemo: TMemo; pnlControl: TPanel; btnStart: TButton; btnQuit: TButton; btnOpenCML: TButton; Panel1: TPanel; HelpMemo: TMemo; Splitter1: TSplitter; Splitter2: TSplitter; btnPOOK: TButton; XmlToDomParser1: TXmlToDomParser; DomImplementation1: TDomImplementation; DelayTimer: TTimer; chbProDelays: TCheckBox; OpenDialog: TOpenDialog; CheckBox1: TCheckBox; SpellTimer: TTimer; procedure btnStartClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure btnQuitClick(Sender: TObject); procedure DelayTimerTimer(Sender: TObject); procedure btnPOOKClick(Sender: TObject); procedure rdgPlayerOptionClick(Sender: TObject); procedure btnOpenCMLClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure SpellTimerTimer(Sender: TObject); private currentXMLDoc :TdomDocument; curConv: TConversation; curObj: TConversationObject; CurFileName: string; Speller: TTextToSpeech; FUseSpelling: Boolean; sengPLY, sengNPC: Integer; procedure LoadXML(filename:string); virtual ; procedure ClearConv; procedure DisplayThis; function LogLine: string; procedure NextItem; public { Public declarations } end; var frm_Main: Tfrm_Main; implementation uses convFileIO; {$R *.DFM} procedure Tfrm_Main.FormCreate(Sender: TObject); var i: Integer; begin ConversationEngine := TConversationEngine.Create; convFileIO.DOMImpl := DomImplementation1; CurFileName := 'data.cml'; FUseSpelling := False; try Speller := TTextToSpeech.Create(nil); Speller.Visible := False; i := Speller.CountEngines; if i <= 0 then raise Exception.Create('') else if i = 1 then begin sengPLY := 0; sengNPC := 1; end else if i > 1 then begin Randomize; repeat sengPLY := Random(i); sengNPC := Random(i); until sengPLY <> sengNPC; end; except try Speller.Free; finally CheckBox1.Enabled := False; end; end; end; procedure Tfrm_Main.LoadXML; begin try currentXMLDoc := XmlToDomParser1.FileToDom(filename); CurFileName := fileName; except on Exception do begin ShowMessage('WARNING: Could not parse CML, empty tree created...'); currentXMLDoc := DomImplementation1.createDocument('convdata',nil); end; end; // turn currentXMLDoc into conversation objects TranslateDOMToConvTree(currentXMLDoc); curConv := ConversationEngine.Conversations[0]; end; procedure Tfrm_Main.btnStartClick(Sender: TObject); begin ClearConv; LoadXML(CurFileName); DelayTimer.Enabled := False; curObj := curConv; DisplayThis; Update; NextItem; end; procedure Tfrm_Main.ClearConv; begin rdgPlayerOption.Hide; btnPOOK.Hide; OutMemo.Lines.Clear; if assigned(CurrentXMLDoc) then DomImplementation1.FreeDocument(currentXMLDoc); ConversationEngine.Conversations.Clear; curConv := nil; end; procedure Tfrm_Main.FormDestroy(Sender: TObject); begin ClearConv; end; procedure Tfrm_Main.DisplayThis; begin OutMemo.Lines.Append(LogLine); end; function Tfrm_Main.LogLine: string; begin Result := curObj.ReturnStrRepr; if curObj is TConversation then Result := 'System: Conversation Data' else if curObj is TNPCSpeech then Result := 'NPC: ' + TNPCSpeech(curObj).Text.Text else if curObj is TPlayerOption then Result := 'PC Choosing ' else if curObj is TConversationScript then Result := 'Script: ' + Result else if curObj is TConversationGroupEnable then Result := 'GROUP ENABLER: ' + Result else if curObj is TConversationGroupDisable then Result := 'GROUP DISABLER: ' + Result else if curObj is TConvGroup then Result := 'GROUP: ' + Result; end; procedure Tfrm_Main.btnQuitClick(Sender: TObject); begin Close; end; procedure Tfrm_Main.NextItem; label lblBEGIN; var TempObj: TConversationObject; chPD: Boolean; begin chPD := chbProDelays.Checked; lblBEGIN: TempObj := curObj.Next; if TempObj <> nil then begin curObj := TempObj; DisplayThis; Update; if (curObj is TConversationDelay) and chPD then begin pnlTopLeft.Caption := 'TConversationDelay in progress. Please Wait!'; DelayTimer.Enabled := False; DelayTimer.Interval := TConversationDelay(curObj).DelayPeriod; DelayTimer.Enabled := True; Exit; end else if curObj is TPlayerOption then begin TempObj := curObj; rdgPlayerOption.Items.BeginUpdate; rdgPlayerOption.Items.Clear; while TempObj <> nil do begin rdgPlayerOption.Items.AddObject(TPlayerOption(TempObj).ReturnStrRepr, TempObj); TempObj := TPlayerOption(TempObj).NextPlayerOption; end; rdgPlayerOption.Items.EndUpdate; rdgPlayerOption.Show; rdgPlayerOption.SetFocus; rdgPlayerOption.ItemIndex := 0; btnPOOK.Enabled := True; btnPOOK.Show; Exit; end else if curObj is TNPCSpeech then begin if FUseSpelling then begin Speller.StopSpeaking; Speller.Select(sengNPC); Speller.Speak(TNPCSpeech(curObj).Text.Text); SpellTimer.Enabled := True; Exit; end; end else if curObj is TConversationCommand then if not (curObj is TConversationScript) then TConversationCommand(curObj).Run; goto lblBEGIN end else begin OutMemo.Lines.Append('Conversation over!'); pnlTopLeft.Caption := 'Conversation over!'; end; end; procedure Tfrm_Main.DelayTimerTimer(Sender: TObject); begin if curObj is TConversationDelay then begin pnlTopLeft.Caption := 'No options!'; DelayTimer.Enabled := False; NextItem; end; end; procedure Tfrm_Main.btnPOOKClick(Sender: TObject); var TempObj: TConversationObject; begin if rdgPlayerOption.ItemIndex < 0 then Exit; TempObj := TConversationObject(rdgPlayerOption.Items.Objects[rdgPlayerOption.ItemIndex]); rdgPlayerOption.Hide; btnPOOK.Hide; rdgPlayerOption.Items.Clear; btnPOOK.Enabled := False; OutMemo.Lines.Append('PC: ' + TempObj.ReturnStrRepr); Update; CurObj := TempObj; if (FUseSpelling) and (sengPLY > 0) then begin Speller.StopSpeaking; Speller.Select(sengPLY); Speller.Speak(TPlayerOption(TempObj).Text.Text); SpellTimer.Enabled := True; end else NextItem; end; procedure Tfrm_Main.rdgPlayerOptionClick(Sender: TObject); begin if rdgPlayerOption.ItemIndex >= 0 then btnPOOK.Enabled := True; end; procedure Tfrm_Main.btnOpenCMLClick(Sender: TObject); begin if OpenDialog.Execute then CurFileName := OpenDialog.FileName; end; procedure Tfrm_Main.CheckBox1Click(Sender: TObject); begin FUseSpelling := CheckBox1.Checked and Assigned(Speller); end; procedure Tfrm_Main.SpellTimerTimer(Sender: TObject); begin if Speller.IsSpeaking = 0 then begin SpellTimer.Enabled := False; NextItem; end; end; end. --- NEW FILE --- ***** Error reading new file: (2, 'No such file or directory') |