You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(18) |
Oct
(33) |
Nov
(27) |
Dec
(26) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(22) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(46) |
Sep
|
Oct
|
Nov
|
Dec
|
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
(13) |
May
(7) |
Jun
(9) |
Jul
(23) |
Aug
(5) |
Sep
(4) |
Oct
(6) |
Nov
(1) |
Dec
|
2009 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Pate <Fli...@CS...> - 2008-04-21 13:07:13
|
I think I almost went all the way to her stomach when she yell and scream in ecstasy. http://www.hieyague.com/ |
From: Manvi <mas...@IF...> - 2008-04-18 12:17:52
|
Give her the enlarged experience with your new weapon http://www.poweagjni.com/ |
From: Radek <Rad...@AC...> - 2008-04-17 09:45:07
|
I was at the club, and all the gals stared at me below my waist. http://www.bueryap.com/ |
From: LB <com...@Si...> - 2008-04-16 10:19:56
|
Your giant gun will explode inside her http://www.kibyueta.com/ |
From: Diniz <ans...@23...> - 2008-04-15 17:17:42
|
The hottest porn stars use this to stay in business http://www.questerni.com/ |
From: chickowski <amp...@EN...> - 2008-04-13 07:59:22
|
Medications that improves your life doesn't need to be expensive http://www.cereanti.com/ |
From: Agostino M. <ama...@sw...> - 2002-11-19 06:41:10
|
Hi, Is anyone working on Pythian with Delphi 6? If so, What steps do I need to take to get it to compile? Thanks |
From: Michael H. <mh...@us...> - 2001-08-10 22:15:26
|
Update of /cvsroot/pythianproject/CVSROOT In directory usw-pr-cvs1:/tmp/cvs-serv26134 Modified Files: loginfo Log Message: stopped syncmail for now as we add loads of stuff -mike Index: loginfo =================================================================== RCS file: /cvsroot/pythianproject/CVSROOT/loginfo,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** loginfo 2000/09/14 20:45:34 1.5 --- loginfo 2001/08/10 22:15:24 1.6 *************** *** 26,28 **** #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog ! DEFAULT $CVSROOT/CVSROOT/syncmail.py %{sVv} pyt...@li... \ No newline at end of file --- 26,28 ---- #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog ! #DEFAULT $CVSROOT/CVSROOT/syncmail.py %{sVv} #pyt...@li... \ No newline at end of file |
Update of /cvsroot/pythianproject/CVSROOT/PythianProject/Source/Units In directory usw-pr-cvs1:/tmp/cvs-serv25628/PythianProject/Source/Units Removed Files: AIs.pas AStarAIs.pas AnimatedModel.pas AnimatedModels.pas Animates.pas BaseAIs.pas BaseObjects.pas Boarddef.pas Boundaries.pas Cameras.pas Characters.pas Config.pas ContainerModels.pas DeviceMode.pas DynamicLoader.pas EvalNodes.pas EvalNodesOld.pas ExStrUt.pas INPUT.PAS MPlayerCharacter.pas Maps.pas ModelInstances.pas Models.pas MovementAIs.pas MovingObjects.pas NPCs.pas Objects.pas OpenGLWin.pas PATHS.PAS PHYSICS.PAS Points.pas PolyhInstances.pas Polyhedrons.pas QNorms.pas Rotation.pas SCRIPTS.PAS SKILLS.PAS SectorIndoor.pas SectorLimits.pas Sectors.pas Sky.pas StaticLists.pas StaticModels.pas Stdinit.pas TERRAINS.PAS TerrainEng.pas TerrainPatches.pas Textures.pas Timing.pas TriLists.pas cfg_vals.pas Log Message: removed old crud -mike --- AIs.pas DELETED --- --- AStarAIs.pas DELETED --- --- AnimatedModel.pas DELETED --- --- AnimatedModels.pas DELETED --- --- Animates.pas DELETED --- --- BaseAIs.pas DELETED --- --- BaseObjects.pas DELETED --- --- Boarddef.pas DELETED --- --- Boundaries.pas DELETED --- --- Cameras.pas DELETED --- --- Characters.pas DELETED --- --- Config.pas DELETED --- --- ContainerModels.pas DELETED --- --- DeviceMode.pas DELETED --- --- DynamicLoader.pas DELETED --- --- EvalNodes.pas DELETED --- --- EvalNodesOld.pas DELETED --- --- ExStrUt.pas DELETED --- --- INPUT.PAS DELETED --- --- MPlayerCharacter.pas DELETED --- --- Maps.pas DELETED --- --- ModelInstances.pas DELETED --- --- Models.pas DELETED --- --- MovementAIs.pas DELETED --- --- MovingObjects.pas DELETED --- --- NPCs.pas DELETED --- --- Objects.pas DELETED --- --- OpenGLWin.pas DELETED --- --- PATHS.PAS DELETED --- --- PHYSICS.PAS DELETED --- --- Points.pas DELETED --- --- PolyhInstances.pas DELETED --- --- Polyhedrons.pas DELETED --- --- QNorms.pas DELETED --- --- Rotation.pas DELETED --- --- SCRIPTS.PAS DELETED --- --- SKILLS.PAS DELETED --- --- SectorIndoor.pas DELETED --- --- SectorLimits.pas DELETED --- --- Sectors.pas DELETED --- --- Sky.pas DELETED --- --- StaticLists.pas DELETED --- --- StaticModels.pas DELETED --- --- Stdinit.pas DELETED --- --- TERRAINS.PAS DELETED --- --- TerrainEng.pas DELETED --- --- TerrainPatches.pas DELETED --- --- Textures.pas DELETED --- --- Timing.pas DELETED --- --- TriLists.pas DELETED --- --- cfg_vals.pas DELETED --- |
From: Michael H. <mh...@us...> - 2001-08-10 22:06:48
|
Update of /cvsroot/pythianproject/PythianProject/Source/GLCanvas In directory usw-pr-cvs1:/tmp/cvs-serv23470/GLCanvas Added Files: DemoGLCanvas.cfg DemoGLCanvas.dof DemoGLCanvas.dpr DemoGLCanvas.res GLCanvas.pas Main.dfm Main.pas QuadTextUnit.pas StartUp.pas glcanvas.htm glfD.pas Log Message: Adding conversation stuff -mike --- 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 -E..\..\Bin -N..\..\Bin\dcu -LNe:\program files\borland\delphi4\Lib -U..\Units;..\Textures -O..\Units;..\Textures -I..\Units;..\Textures -R..\Units;..\Textures --- 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=E:\cvs\pythianproject\PythianProject\Bin\ UnitOutputDir=..\..\Bin\dcu PackageDLLOutputDir= PackageDCPOutputDir= SearchPath=..\Units;..\Textures Packages=VCL50;VCLX50;VCLSMP50;QRPT50;VCLDB50;VCLBDE50;ibevnt50;VCLDBX50;TEEUI50;TEEDB50;TEE50;TEEQR50;VCLIB50;VCLIE50;INETDB50;INET50;NMFAST50;dclocx50;dclaxserver50 Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams= HostApplication= [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=1033 CodePage=1252 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= [Excluded Packages] E:\cvs\pythianproject\Prototypes\AI\Flocking\Flocking.bpl=RiverSoftAVG Flocking Components [HistoryLists\hlUnitAliases] Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlSearchPath] Count=6 Item0=..\Units;..\Textures Item1=..\Units Item2=..\..\PythianProject\Source\Units Item3=..\..\PythianProject\Units\ Item4=$(DELPHI)\Projects\Pythian\GameProject\Units;$(DELPHI)\Projects\Pythian\GLPanel Item5=$(DELPHI)\Projects\Pythian\GameProject\Units;$(DELPHI)\Projects\Pythian\GLPanel;$(DELPHI)\Projects\Pythian\GameProject\Picking [HistoryLists\hlUnitOutputDirectory] Count=2 Item0=..\..\Bin\dcu Item1=C:\PythianCVS\pythianproject\PythianProject\Bin\dcu [HistoryLists\hlOutputDirectorry] Count=3 Item0=E:\cvs\pythianproject\PythianProject\Bin\ Item1=..\..\Bin Item2=E:\cvs\pythianproject\PythianProject\Bin [HistoryLists\hlBPLOutput] Count=1 Item0=$(DELPHI)\Projects\Bpl --- NEW FILE --- program DemoGLCanvas; uses Forms, Main in 'Main.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. --- NEW FILE --- --- NEW FILE --- unit glCanvas; {*******************************************************} { } { GLCanvas } { } { Copyright (c) 2000- The Pythian Project } { } {*******************************************************} // This program is free software; you can redistribute it and/or modify it // // under the terms of the GNU General Public License as published by the // // Free Software Foundation; either version 2 of the License, or (at your // // option) any later version. This program is distributed in the hope that // // it will be useful, but WITHOUT ANY WARRANTY; without even the implied // // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // [...1246 lines suppressed...] end; initialization FontsDirectory := ''; // is appended to font file name // create list GLCanvasFonts := TList.Create; TGLText.RegisterFont('Arial','arial1.glf'); TGLText.RegisterFont('Courier New','courier1.glf'); TGLText.RegisterFont('Arial','Arial Grid.bmp',ARIAL_WIDTHS); TGLText.RegisterFont('Courier New','CourierNew Grid.bmp',COURIERNEW_WIDTHS); TGLText.RegisterFont('VinerHand ITC','VinerHand ITC Grid antialiased.bmp',VINERHAND_WIDTHS); TGLText.RegisterFont('Tolkien','tolkien.bmp',TOLKIEN_WIDTHS); TGLText.RegisterFont('Arial8','Arial 8.bmp',ARIAL8_WIDTHS); finalization TGLText.FreeRegisteredFonts; GLCanvasFonts.Free; end. --- NEW FILE --- ÿ Font.ColorclWindowTextFont.Heightõ Font.Name MS Sans Serif Font.Style TextHeight --- NEW FILE --- unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Cameras, GLForms, OpenGL, ExtCtrls, GLCanvas, DeviceModes, MsgLog; const datadir = 'data\gui\'; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } FGLForm: TGLForm; GLC :TGLCanvas; Scene :TGLBitmap; WelcomeText :TGLtext; VectorText :TGLText; TextScroll :integer; TextMovement:integer; procedure GLFormClose(Sender: TObject); procedure GLFormGLInit(Sender: TObject); procedure GLFormPaint(Sender: TObject); procedure GLKeypress(Sender: TObject; KeyCode, KeyData: Integer; ButtonState: TButtonState; Modifiers: TKBModifiers); procedure MakeForm; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin MakeForm; end; procedure TForm1.GLFormClose(Sender: TObject); begin Scene.Free; WelcomeText.Free; VectorText.Free; GLC.Free; GLC := nil; FGLForm.Free; FGLForm := nil; LogClose; Close; end; procedure TForm1.GLFormGLInit(Sender: TObject); begin LogOpen('GLCanvasLog.txt'); FontsDirectory := DataDir; GLC := TGLCanvas.Create(FGLForm.Width-6,FGLForm.Height-25); // must take into account window borders Scene := TGLBitmap.Create(GLCANVAS_BMP_TEXTURED); Scene.UseTransparency := true; Scene.LoadFromBitmap(datadir+'scene.png'); WelcomeText := TGLText.Create('','Arial',GLCANVAS_TEXT_QUADTEXT); WelcomeText.Precache := true; WelcomeText.Lines.LoadFromFile(datadir+'data.txt'); VectorText := TGLText.Create('GLCanvas Demo','Arial',GLCANVAS_TEXT_GLF); VectorText.SetColor(clBlack); VectorText.Size := 30; TextScroll := 0; TextMovement := 2; end; procedure TForm1.GLKeypress(Sender: TObject; KeyCode, KeyData: Integer; ButtonState: TButtonState; Modifiers: TKBModifiers); begin { if keycode = vk_escape then DestroyWindow(FGLForm.Handle) else }begin case keycode of VK_UP: begin TextScroll := TextScroll - TextMovement; if TextScroll < 0 then TextScroll := 0; end; VK_DOWN: begin TextScroll := TextScroll + TextMovement; if TextScroll < 0 then TextScroll := 0; end; end; end; end; procedure TForm1.GLFormPaint(Sender: TObject); begin // Let's look at how we use the canvas shall we? // just follow me :) // ok, we start by calling InitMatrix which just resets the // co-ordinate system to its initial values. should be called // before using the canvas. GLC.InitMatrix; // next we clear the screen. if we don't do this the remains of the // last frame will show through glClearColor(0.0,0.0,0.0,1.0); glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT); // now we switch off depth testing, this is to ensure that // things are drawn in order glDisable(GL_DEPTH_TEST); // this draws the GL bitmap object at these coordinates // draw the pretty scene here GLC.ImageAlpha := 1.0; GLC.DrawBitmap(0,0,Scene); // this draws a rectangle GLC.CurrentColor := clBlue; GLC.FillAlpha := 0.3; // we want 30% opacity GLC.Solid := true; // we want it solid GLC.Rectangle(330,220,600,440); // now draw it here! // now draw its border GLC.Solid := false; GLC.FillAlpha := 1.0; GLC.Rectangle(330,220,600,435); GLC.SetClipping(330,220,600,435); // set the clipping rect to the blue box GLC.DrawText(335,225-TextScroll,WelcomeText); GLC.CancelClipping; // now draw the logo text glColor3f(1.0,1.0,1.0); GLC.DrawText(200,70,VectorText); end; procedure TForm1.MakeForm; begin if Assigned(FGLForm) then exit; FGLForm := TGLForm.Create; FGLForm.SetBounds(0, 0, 640, 480); GetDeviceModes; FGLForm.DeviceMode := FindMode(640,480,16); FGLForm.Caption := 'GLCanvas demonstration'; FGLForm.OnClose := GLFormClose; FGLForm.OnOpenGLInit := GLFormGLInit; FGLForm.OnKeyPress := GLKeypress; FGLForm.OnPaint := GLFormPaint; try FGLForm.Open; except exit; end; FGLForm.Run; end; end. --- NEW FILE --- unit QuadTextUnit; interface { Textured Quads text system Michael Hearn (C) Pythian Project 2000 Changed - 5th December 2000: changed blending algorithm selected to fix bug. } const NUMCHARS = 85; type TQuadTextWidthsArray = array[1..NUMCHARS] of integer; const TEX_CHARS:array[1..NUMCHARS] of char = ('A','B','C','D','E','F','G','H','I','J','K','L', 'M','N','O','P','Q','R','S','T','U','V','W','X', 'Y','Z','a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z','1','2','3','4','5','6','7','8', '9','0','!','"','?','.','''','(',')',',','£','$', '&','=','+','-','<','>',':',';','/','\','#','@', '¯'); NULL_WIDTHS :TQuadTextWidthsArray = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {32} 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); COURIERNEW_WIDTHS :TQuadTextWidthsArray = ( 10, 10, 10, 10, 10, 10, 10, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 8, 3, 12, 8, 8, 8, 8, 5, 8, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 6, 7, 2, 2, 3, 3, 3, 6, 6, 6, 8, 7, 7, 8, 8, 2, 3, 6, 6, 8, 7, 20); ARIAL_WIDTHS :TQuadTextWidthsArray = ( 9, 10, 10, 10, 10, 9, 10, 10, 2, 9, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 16, 10, 10, 10, 8, 8, 8, 8, 8, 5, 8, 8, 2, 3, 8, 2, 12, 8, 8, 8, 8, 5, 8, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 6, 7, 2, 2, 3, 3, 2, 13, 14, 12, 5, 7, 2, 8, 8, 2, 2, 4, 4, 12, 15, 15); ARIAL8_WIDTHS :TQuadTextWidthsArray = ( 7, 6, 6, 6, 5, 5, 7, 6, 1, 4, 6, 5, 7, 6, 7, 4, 6, 6, 6, 7, 8, 8, 10,6, 8, 6, 5, 5, 5, 5, 5, 4, 5, 5, 1, 2, 4, 1, 7, 5, 5, 5, 5, 3, 5, 3, 5, 5, 9, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 3, 5, 1, 2, 3, 3, 1, 5, 5, 6, 5, 5, 3, 5, 5, 1, 1, 3, 3, 5, 10, 15); VINERHAND_WIDTHS :TQuadTextWidthsArray = ( 14, 11, 12, 12, 10, 10, 8, 13, 7, 8, 14, 11, 14, 14, 8, 10, 14, 11, 10, 8, 10, 10, 16, 10, 10, 10, 8, 8, 7, 8, 6, 5, 8, 8, 2, 3, 8, 2, 12, 8, 7, 8, 8, 5, 8, 5, 8, 8, 8, 8, 8, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 6, 7, 2, 2, 3, 3, 2, 13, 14, 12, 5, 7, 2, 8, 8, 2, 2, 4, 4, 12, 15, 15); TOLKIEN_WIDTHS: TQuadTextWidthsArray = ( 14, 12, 15, 17, 16, 10, 16, 15, 6, 4, 15, 11, 21, 14, 17, 15, 17, 12, 12, 17,14, 16, 21, 14, 13, 16, 10, 10, 9, 10, 9, 8, 10, 9, 4, 4, 10, 7, 12, 10, 9, 10, 10, 9, 8, 9, 10, 9, 14, 11, 10, 10, 4, 11, 11, 11, 10, 11,11, 11, 11, 11, 5, 3, 9, 2, 2, 5, 5, 2, 13, 13, 12, 5, 7, 2, 8, 8, 2, 2, 12, 12,18, 15, 15); QT_UNDERLINE_CHARACTER = '|'; type TQuadText = record TextureID :integer; GridSquareWidth,GridSquareHeight :integer; // size of grid square GridCells:integer; // how many cells in each direction GridCharSpacing:integer; // spacing between letters. SpaceWidth:integer; // size of a ' ' character. TexWidths :TQuadTextWidthsArray; end; procedure qtStart(QT: TQuadText); procedure qtStop; function qtDrawGridChar(QT:TQuadText; C:Char):integer; // returns index of char function qtDrawGridSquare(QT:TQuadText; X,Y:integer):integer; procedure qtDrawGridString(QT:TQuadText; s:String); function qtGetStringWidth(QT:TQuadText; s:string):integer; // in pixels function qtGetHeight(QT:TQuadText):integer; implementation uses OpenGL, Graphics; var dtStore :TGLBoolean; blStore :TGLBoolean; txStore :TGLBoolean; function qtGetHeight(QT:TQuadText):integer; begin result := qt.GridSquareHeight; end; function qtGetStringWidth(QT:TQuadText; s:string):integer; // in pixels var total,offset,i,j:integer; begin total := 0; for i := 1 to Length(s) do begin offset := -1; for j := 1 to NUMCHARS do if TEX_CHARS[j] = s[i] then offset := j; if offset <> -1 then total := total + QT.TexWidths[offset] + QT.GridCharSpacing else total := total + QT.SpaceWidth; end; result := total; end; function qtDrawGridChar(QT:TQuadText; C:Char):integer; var AlphaOffset :integer; x,y:integer; begin AlphaOffset := -1; for x := 1 to NUMCHARS do if TEX_CHARS[x] = C then AlphaOffset := x; result := AlphaOffset; if AlphaOffset <> -1 then begin // AlphaOffset contains the grid offset of the character now Y := (AlphaOffset div QT.GridCells); if AlphaOffset mod QT.GridCells <> 0 then // need this in case letter is last on grid line inc(y); X := AlphaOffset - ((Y-1)*QT.GridCells); qtDrawGridSquare(QT,x,y); end; end; function qtDrawGridSquare(QT:TQuadText; X,Y:integer):integer; var l,t:integer; begin l := (x-1) * QT.GridSquareWidth;//256 - (QT.GridSquareWidth * (x-1)); t := (Y - 1) * QT.GridSquareHeight; glBegin(GL_QUADS); glTexCoord2f(l,t); glVertex2f(0,0); glTexCoord2f(l,t+QT.GridSquareHeight); glVertex2f(0,QT.GridSquareHeight); // glTexCoord2f(l-QT.GridSquareWidth,t+QT.GridSquareHeight); glTexCoord2f(l+QT.GridSquareWidth,t+QT.GridSquareHeight); glVertex2f(QT.GridSquareWidth,QT.GridSquareHeight); // glTexCoord2f(l-QT.GridSquareWidth,t); glTexCoord2f(l+QT.GridSquareWidth,t); glVertex2f(QT.GridSquareWidth,0); glEnd; result := 0; end; procedure qtDrawGridString(QT:TQuadText; s:String); var o,a:integer; underline:boolean; begin // @@todo - don't draw when clipped glMatrixMode(GL_TEXTURE); // modify texture matrix; glPushMatrix; glLoadIdentity; glScalef(1/256,1/256,1); glMatrixMode(GL_MODELVIEW); // glPushMatrix; // glPushMatrix; underline := false; if length(s) = 1 then begin qtDrawGridChar(qt,s[1]); end else begin a := 1; while a <= Length(s) do begin if s[a] = #13 then begin glPopMatrix; glTranslatef(0,QT.GridSquareHeight,0); // translate down glPushMatrix; end else if s[a] = QT_UNDERLINE_CHARACTER then underline := not underline else if s[a] <> #$A then begin o := qtDrawGridChar(QT,s[a]); if o <> -1 then begin if underline then begin glDisable(GL_TEXTURE_2D); glBegin(GL_LINES); glVertex2i(0,QT.GridSquareHeight); glVertex2i(QT.TexWidths[o]+QT.GridCharSpacing,QT.GridSquareHeight); glEnd; glEnable(GL_TEXTURE_2D); end; glTranslatef(QT.TexWidths[o]+QT.GridCharSpacing,0,0) end else // translate for space character begin if underline then begin glDisable(GL_TEXTURE_2D); glBegin(GL_LINES); glVertex2i(0,QT.GridSquareHeight); glVertex2i(QT.SpaceWidth,QT.GridSquareHeight); glEnd; glEnable(GL_TEXTURE_2D); end; glTranslatef(QT.SpaceWidth,0,0); end; end; inc(a); end; end; // glPopMatrix; // glPopMatrix; glMatrixMode(GL_TEXTURE); glPopMatrix; glMatrixMode(GL_MODELVIEW); end; procedure qtStart(QT: TQuadText); begin glBindTexture(GL_TEXTURE_2D, QT.TextureID); glGetBooleanv(GL_DEPTH_TEST,@dtstore); glDisable(GL_DEPTH_TEST); glGetBooleanv(GL_TEXTURE_2D,@txstore); glEnable(GL_TEXTURE_2D); glGetBooleanv(GL_BLEND,@blStore); glEnable(GL_BLEND); // glBlendFunc(GL_ONE,GL_ONE); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); end; procedure qtStop; begin if dtstore <> 0 then glEnable(GL_DEPTH_TEST); if txStore = 0 then glDisable(GL_TEXTURE_2D); if blStore = 0 then glDisable(GL_BLEND); end; end. --- NEW FILE --- {*******************************************************} { } { GLCanvas Demo program } { } { Copyright (c) 1999 The Pythian Project } { } {*******************************************************} // This program is free software; you can redistribute it and/or modify it // // under the terms of the GNU General Public License as published by the // // Free Software Foundation; either version 2 of the License, or (at your // // option) any later version. This program is distributed in the hope that // // it will be useful, but WITHOUT ANY WARRANTY; without even the implied // // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the Free Software Foundation, // // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // unit StartUp; // This unit contains all the code necessary for the user to set up the // // application for their hardware. In will also create an EngWindow, which // // is where the OpenGL renderer will occur. // // You should not need to make any changes to this unit, except you may want // // to change the version string. // // New in v1.02 // -INI file uses W, H and BPP instead of ModeIndex. // -If user exits, configuration was saved without // getting the values from form... Fixed. interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const VersionString = 'v0.01'; // This is the version string for your application type TfrmStartup = class(TForm) cbFullScreen: TCheckBox; cbResolution: TComboBox; Label1: TLabel; lbDrivers: TListBox; Label2: TLabel; btBrowse: TButton; btStart: TButton; btClose: TButton; OpenDialog1: TOpenDialog; procedure btStartClick(Sender: TObject); procedure btCloseClick(Sender: TObject); procedure btBrowseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FDeviceMode: Integer; FDriver: string; FFullScreen: Boolean; function ChangeExt(const FileName, NewExt: string): string; procedure GetSettings; public { Public declarations } end; var frmStartup: TfrmStartup; implementation uses ClipBrd, DeviceMode, EngWindow, EngMain, INIFiles, OpenGL; {$R *.DFM} procedure TfrmStartup.btBrowseClick(Sender: TObject); begin with OpenDialog1 do begin if Execute then lbDrivers.ItemIndex := lbDrivers.Items.Add(FileName); end; end; procedure TfrmStartup.btCloseClick(Sender: TObject); begin Close; end; procedure TfrmStartup.btStartClick(Sender: TObject); var Ok: Boolean; SetModeResult: Integer; Msg: string; begin // Take the settings from the Form controls and store them in vars GetSettings; // Hide this Form Hide; Ok := True; if FFullScreen then begin // Set the Device Mode SetModeResult := SetMode(FDeviceMode); if (SetModeResult <> 0) then begin case SetModeResult of $01: Msg := 'Change Restart'; $02: Msg := 'Bad Flags'; $03: Msg := 'Failed'; $04: Msg := 'Bad Mode'; else Msg := 'Unknown Error'; end; // Report the error Msg := 'Fullscreen mode error: '+Msg; ShowMessage(Msg); Ok := False; end; end; if Ok then begin // Load the specified OpenGL Driver Ok := InitOpenGLFromLibrary(FDriver,'glu32.dll'); if Ok then begin EngMain.Width := DeviceModes[FDeviceMode].Width; EngMain.Height := DeviceModes[FDeviceMode].Height; if not InitEngine(FFullScreen,'Sample') then ShowMessage('Error: '+ErrorMsg); end else begin Msg := 'Could not initialize OpenGL driver: '+FDriver; ShowMessage(Msg); end; if FFullScreen then begin // Reset the Device Mode SetModeResult := ResetMode; if (SetModeResult <> 0) then begin case SetModeResult of $01: Msg := 'Change Restart'; $02: Msg := 'Bad Flags'; $03: Msg := 'Failed'; $04: Msg := 'Bad Mode'; else Msg := 'Unknown Error'; end; Msg := 'Fullscreen mode error: '+Msg; ShowMessage(Msg); end; end; end; Close; end; function TfrmStartup.ChangeExt(const FileName, NewExt: string): string; var Path,s: string; begin Path := ExtractFilePath(FileName); s := ExtractFileName(FileName); s := copy(s,1,Pos('.',s)-1); if (length(NewExt) > 0) and (NewExt[1] <> '.') then s := s + '.'; Result := Path + s + NewExt; end; procedure TfrmStartup.FormCreate(Sender: TObject); var i: Integer; INIFile: TINIFile; T: TStringList; s: string; Buf: PChar; DMW, DMH, DMBPP: Integer; begin Getmem(Buf, 64); GetSystemDirectory(Buf, 64); s := StrPas(Buf); FreeMem(Buf); lbDrivers.Items.Add(s+'\OpenGL32.DLL'); lbDrivers.Items.Add(s+'\OpenGL.DLL'); for i := 0 to MaxDeviceModes-1 do with DeviceModes[i] do begin cbResolution.Items.Add(Format('%d x %d x %d',[Width,Height,BitsPerPixel])); end; INIFile := TINIFile.Create(ChangeExt(Application.EXEName,'ini')); with INIFile do try T := TStringList.Create; try ReadSectionValues('Drivers',T); for i := 0 to T.Count-1 do lbDrivers.Items.Add(copy(T[i],Pos('=',T[i])+1,length(T[i]))); finally T.Free; end; lbDrivers.ItemIndex := ReadInteger('Setup','DriverIndex',0); cbFullScreen.Checked := ReadBool('Setup','FullScreen',False); //cbResolution.ItemIndex := ReadInteger('Setup','DeviceModeIndex',M640x480x32); DMW := ReadInteger('Setup','DeviceModeWidth', 640); DMH := ReadInteger('Setup','DeviceModeHeight', 480); DMBPP := ReadInteger('Setup','DeviceModeBitsPerPixel', 32); cbResolution.ItemIndex := FindMode(DMW, DMH, DMBPP); finally Free; end; end; procedure TfrmStartup.FormDestroy(Sender: TObject); var i: Integer; INIFile: TINIFile; begin GetSettings; INIFile := TINIFile.Create(ChangeExt(Application.EXEName,'ini')); with INIFile do try for i := 2 to lbDrivers.Items.Count-1 do WriteString('Drivers',IntToStr(i),lbDrivers.Items[i]); WriteInteger('Setup','DriverIndex',lbDrivers.ItemIndex); WriteBool('Setup','FullScreen',cbFullScreen.Checked); // WriteInteger('Setup','DeviceModeIndex',FDeviceMode); WriteInteger('Setup','DeviceModeWidth',DeviceModes[FDeviceMode].Width); WriteInteger('Setup','DeviceModeHeight',DeviceModes[FDeviceMode].Height); WriteInteger('Setup','DeviceModeBitsPerPixel',DeviceModes[FDeviceMode].BitsPerPixel); finally Free; end; end; procedure TfrmStartup.GetSettings; begin if cbResolution.ItemIndex < 0 then FDeviceMode := FindMode(640, 480, 24) //M640x480x24 else FDeviceMode := cbResolution.ItemIndex; FFullScreen := cbFullScreen.Checked; if (lbDrivers.ItemIndex < 0) then FDriver := 'opengl32.dll' else FDriver := lbDrivers.Items[lbDrivers.ItemIndex]; end; end. --- NEW FILE --- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><meta name="ProgId" content="FrontPage.Editor.Document"> <title>GLCanvas Documentation</title> </head> <body> <div align="Left"> <h4>GLCanvas v1.0 Documentation</h4> <hr align="Left" width="100%" size="2"><a href="mailto:mh...@su...">Michael Hearn</a><br> <a href="mailto:d_...@sy...">Darryl Long</a><br> <a href="mailto:kr...@gm...">Kamil Krauspe</a><br> <br> <hr align="Left" width="100%" size="2"><br> Change Log:<br> <br> - 14th December 2000: Changed to reflect new font registration system<br> - 4th December 2000: Add info about InitMatrix (doh!)<br> <hr align="Left" width="100%" size="2"><br> This file describes the GLCanvas objects suite and how to use it to make drawing 2D graphics onto an OpenGL canvas much easier than it would otherwise be. The algorithms used in the canvas have been designed for speed and ease of use, not necessarily simplicity. This is why some operations with it may seem a strange way of doing things. Anyway, let's go.<br> <br> <u>What it can do</u><br> <ul> <li>Images (fast)</li> <li>Bitmapped text (fast)</li> <li>Vector text (via the GLF lib)</li> <li>PNG image support</li> <li>Clipping</li> <li>Rectangle drawing<br> </li> </ul> All this is done using simple commands like Rectangle(), DrawBitmap() and DrawText().<br> <br> <u>Drawing Images</u><br> <br> Images in OpenGL are not directly supported unless you use the glDrawPixels() command which directly copies pixel data from system memory to the pixel buffer. This would be ideal but unfortunately this is a <b>very</b> slow operation, and I mean slow. Drawing a 640x480 image in this way on my machine takes almost half a second :(<br> Nevertheless, the Canvas supports this method for when performance is not the be all and end all for your app.<br> <br> However, there is a better, although significantly more complex way of doing things that results in much better framerates (ie. about 120fps on my machine for a 640x480 image :) This system breaks the image you want to draw into multiple textures and then uses polygons to display them. Because these images are hardware accellerated things move along much better. Why multiple textures? Well, most hardware cards have a limit of 256x256 pixels for textures due to the internals of their engines. So the canvas breaks an image into multiple textures when the image is loaded.<br> <br> So how do you use this then? Well, all bitmaps in the GLCanvas are represented by objects, in this case the TGLBitmap class is used. To use a bitmap it must be loaded into one of these objects, which can then be passed to the DrawBitmap() method of the GLCanvas. Here's an example:<br> <br> <code>GLC: TGLCanvas;</code><br> <code>Picture :TGLBitmap;</code><br> <br> <code>begin</code><br> <code> GLC := TGLCanvas.Create;<br> <br> GLC.InitMatrix;</code><br> <br> <code> Picture := TGLBitmap.Create;</code><br> <code> Picture.LoadFromFile("logo.png");</code><br> <br> <code> GLC.DrawBitmap(50,50,Picture);</code><br> <code>end;</code><br> <br> Note that before any GLCanvas methods can be called you must call InitMatrix, this initializes the co-ordinate systems. This example would display "logo.png"at location 50,50 from the top left of the window. As you can see, there is nothing to it. However, we can do more than this! The GLBitmap class supports transparency using a transparent colour: if we set the transparent colour to black then any black pixels in the picture will be see-through, meaning you can draw non-rectangular bitmaps. This is done by setting the <code>UseTransparency</code>property to true and setting the TransparentColor property to the colour you want (it defaults to black). Because the GLCanvas is based partly on the FastDIB library you must specify the colour as RGB data, not a Delphi colour constant. Although in some places you can use constants like clBlack or clAqua in this instance that's not allowed. You create a colour for this property using the FRGB function:<br> <br> <code>Picture := TGLBitmap.Create;<br> Picture.UseTransparency := true;<br> Picture.TransparentColor := FRGB(0,0,255); // blue is our transparent colour<br> Picture.LoadFromFile("logo.png");</code><br> <br> Notice that you <i>must</i>set the transparency properties before loading the file. If you want you can use direct drawing by using a different constructor:<br> <br> <code>Picture := TGLBitmap.Create(GLCANVAS_BMP_DIRECT);</code><br> <br> However, this isn't really supported very well - for instance transparency doesn't work with this method. Also, it's slow so it's best to avoid this.<br> <br> <u>Drawing Text</u><br> <br> Again, OpenGL has no direct support for drawing text. There are many, many different ways of drawing text (for more information on this subject check out NeHe's excellent <a href="http://nehe.gamedev.net/opengl/">tutorial pages</a>) and the Canvas offers you two which should combine the best of both worlds - bitmapped text which looks nice at small sizes, and vector text which can be resized to any area needed without losing resolution. Vector fonts are drawn using the <a href="http://romka.demonews.com">GLF library </a>written by Romka, who is a seriously cool guy. You can get more fonts from his website.<br> <br> Bitmapped fonts are drawn using my own system that uses a 256x256 bitmap with letters arranged in a grid formation. Textured polygons are drawn that use this and this means <i>fast fast fast!</i><br> <br> This also means that fonts are very easy to make, although it does take some time. You can use the included "20x20grid.bmp" file to help you create new fonts. To use the text facility you can use the TGLText object. The reason that text is represented by objects too is for performance reasons, when you use an object something called pre-caching becomes available which stores the commands for drawing the text in the hardware accellerator itself, meaning - yep, you've guessed it, faster execution! Of course, if this isn't important to you it's possible to use the DrawString() command for simplicity but it's really designed to use an object. Here's a simple example of it:<br> <br> <code>var<br> Text1 :TGLText;<br> GLC :TGLCanvas;<br> <br> begin<br> Text1 := TGLText.Create("Arial");<br> Text1.SetColor(clYellow);<br> Text1.Text := "Hello World";<br> <br> GLC.DrawText(30,30,Text1);<br> end;</code><br> <br> As you can see, this is quite easy, but you can do more :) Text objects can have multiple lines (accessed through the Lines property), and of course this can be used to load text files. The demo program shows this in action. This uses textured quads to draw bitmapped text. To use the GLF vector based text:<br> <br> <code>var Text2: TGLText;<br> <br> begin<br> Text2 := TGLText.Create("Hello World","Arial",GLCANVAS_TEXT_GLF);<br> // here we have used the other overloaded constructor to select GLF text. you can ignore<br> // the last parameter, it selects a font data array, the default one will do for now.<br> Text2.Size := 20;<br> GLC.DrawText(30,30,Text2);<br> end;</code><br> <br> If you want to change the directory fonts are loaded from (the default is for the current directory) you can set the FontsDirectory variable in the unit. This is a string that is appended to the start of the font filenames before they are loaded, and therefore they <b>must</b>have a / at the end. For instance:<br> <br> <code>FontsDirectory := "..\Data\Fonts\" // is OK<br> FontsDirectory := "..\Data\Fonts" // is not!</code><br> <br> How you add new fonts depends on the system you use. If you're drawing vector text you can simply download more GLF fonts from Romkas website but I'm not sure how you can make your own. Then you register the font as shown below. For bitmap text it's more complex (i'm afraid the canvas only comes with Arial and Courier New) but everything can be done using Paint Shop Pro or a similar program.<br> <br> To create a new bitmapped font:<br> <ol> <li>Create a new 256x256 bitmap with a black background</li> <li>Paste the "20x20 Grid.bmp" file over the top. This will show you where to place characters. If you want you can place the grid over the fonts that come with the canvas to see how it's done.</li> <li>For each character place the letter (in white) in each square aligned to the left of each grid square.</li> <li>Once this is done for every character (well, every character that is in the font set, you can see them in the other font grids) save it and change the GLCanvas.pas file in the following way:</li> <li>You also need to add a widths array to the QuadTextUnit.pas file. This array specifies the width of each character and is how the system support variable width fonts. See the code for examples of how to do this.</li> <li>Then you add an entry to the initialization section of the GLCanvas unit like this:<br> <br> TGLText.RegisterFont('Arial','Arial Grid.bmp',ARIAL_WIDTHS);<br> <br> where you specify the widths array you created above.<br> </li> <li>That's it! I know it's long winded, some time I may automate it but for now that's the way to do it. If you want to add some sort of exotic character not already in the font set add it to the array and set the rest of the widths in the other arrays to 0.</li> </ol> <br> <u>Drawing shapes</u><br> <br> You can draw rectangles using the Rectangle() method. This takes 4 coordinates, X1, X2, Y1 and Y2. It draws a rectangle based on the:<br> <br> <i>CurrentColor</i><br> <i>Solid</i><br> and <i>FillAlpha</i><br> <br> properties. If solid is true then the rectangle will be filled with the colour and at the opacity specified with FillAlpha. If solid is false then the outline is all that is drawn.<br> <br> <hr align="Left" width="100%" size="2"><br> Phew! Hopefully that clears up how to use the object. I hope you like it!<br> <br> This object was designed and built for the <a href="http://www.pythianproject.org/">Pythian Project</a><br> </div> </body> </html> --- NEW FILE --- unit glfd; interface { ============================================================================== | GLF Library | Version 1.11 | | Author: Roman Podobedov | Email: ro...@ut... | WEB: http://romka.demonews.com | Date: 12 November 2000 | | Copyright (C) 2000, Romka Graphics | This library is freely distributable without any license or permissions | for non-commercial usage. You can use this library in any non-commercial | program. In each program, where You use this library You should keep | this header (author name and coordinates)! [...1553 lines suppressed...] begin //* Return previuos state of texturing */ if bmf_texturing = GL_TRUE then glEnable(GL_TEXTURE_2D) else glDisable(GL_TEXTURE_2D); end; //* Draw one bitmapped symbol */ procedure glfDrawBSymbol(s: Char); begin glCallList(list_base + Integer(s)); end; //* Draw bitmapped string */ procedure glfDrawBString(s: string); begin glListBase(list_base); glCallLists(strlen(PChar(s)), GL_UNSIGNED_BYTE, PChar(s)); end; end. |
From: Michael H. <mh...@us...> - 2001-08-10 22:06:47
|
Update of /cvsroot/pythianproject/PythianProject/Source/Conversation/Interpreter In directory usw-pr-cvs1:/tmp/cvs-serv23470/Conversation/Interpreter Added Files: HTTSLib_TLB.pas convInterpreter.cfg convInterpreter.dof convInterpreter.dpr convInterpreter.res frmMain.dfm frmMain.pas Log Message: Adding conversation stuff -mike --- NEW FILE --- unit HTTSLib_TLB; // ************************************************************************ // // WARNING // ------- // The types declared in this file were generated from data read from a // Type Library. If this type library is explicitly or indirectly (via // another type library referring to this type library) re-imported, or the // 'Refresh' command of the Type Library Editor activated while editing the // Type Library, the contents of this file will be regenerated and all // manual modifications will be lost. // ************************************************************************ // // PASTLWTR : $Revision: 1.1 $ // File generated on 25.4.2000 21:18:34 from Type Library described below. // ************************************************************************ // // Type Lib: C:\WINDOWS\SPEECH\Vtext.dll (1) // IID\LCID: {2398E321-5C6E-11D1-8C65-0060081841DE}\0 // Helpfile: // DepndLst: // (1) v2.0 stdole, (C:\WINDOWS\SYSTEM\STDOLE2.TLB) // (2) v4.0 StdVCL, (C:\WINDOWS\SYSTEM\STDVCL40.DLL) // ************************************************************************ // {$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. interface uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL; // *********************************************************************// // GUIDS declared in the TypeLibrary. Following prefixes are used: // Type Libraries : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Non-DISP interfaces: IID_xxxx // *********************************************************************// const // TypeLibrary Major and minor versions HTTSLibMajorVersion = 1; HTTSLibMinorVersion = 0; LIBID_HTTSLib: TGUID = '{2398E321-5C6E-11D1-8C65-0060081841DE}'; DIID__TextToSpeechEvents: TGUID = '{2398E331-5C6E-11D1-8C65-0060081841DE}'; IID_ITextToSpeech: TGUID = '{2398E32E-5C6E-11D1-8C65-0060081841DE}'; CLASS_TextToSpeech: TGUID = '{2398E32F-5C6E-11D1-8C65-0060081841DE}'; type // *********************************************************************// // Forward declaration of types defined in TypeLibrary // *********************************************************************// _TextToSpeechEvents = dispinterface; ITextToSpeech = interface; ITextToSpeechDisp = dispinterface; // *********************************************************************// // Declaration of CoClasses defined in Type Library // (NOTE: Here we map each CoClass to its Default Interface) // *********************************************************************// TextToSpeech = ITextToSpeech; // *********************************************************************// // DispIntf: _TextToSpeechEvents // Flags: (4096) Dispatchable // GUID: {2398E331-5C6E-11D1-8C65-0060081841DE} // *********************************************************************// _TextToSpeechEvents = dispinterface ['{2398E331-5C6E-11D1-8C65-0060081841DE}'] procedure ClickIn(x: Integer; y: Integer); dispid 1; procedure ClickOut(x: Integer; y: Integer); dispid 2; procedure AttribChanged(attrib: Integer); dispid 3; procedure SpeakingStarted; dispid 4; procedure SpeakingDone; dispid 5; procedure Speak(const Text: WideString; const App: WideString; thetype: Integer); dispid 6; procedure Visual(Phoneme: Smallint; EnginePhoneme: Smallint; hints: Integer; MouthHeight: Smallint; bMouthWidth: Smallint; bMouthUpturn: Smallint; bJawOpen: Smallint; TeethUpperVisible: Smallint; TeethLowerVisible: Smallint; TonguePosn: Smallint; LipTension: Smallint); dispid 7; end; // *********************************************************************// // Interface: ITextToSpeech // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {2398E32E-5C6E-11D1-8C65-0060081841DE} // *********************************************************************// ITextToSpeech = interface(IDispatch) ['{2398E32E-5C6E-11D1-8C65-0060081841DE}'] function Get_initialized: Integer; safecall; procedure Set_initialized(pVal: Integer); safecall; procedure Speak(const Text: WideString); safecall; procedure StopSpeaking; safecall; procedure FastForward; safecall; procedure Pause; safecall; procedure Resume; safecall; procedure Rewind; safecall; function Get_Device: Integer; safecall; procedure Set_Device(pVal: Integer); safecall; function Get_Enabled: Integer; safecall; procedure Set_Enabled(pVal: Integer); safecall; function Get_IsSpeaking: Integer; safecall; function Get_Speed: Integer; safecall; procedure Set_Speed(pVal: Integer); safecall; function Get_TTSMode: WideString; safecall; procedure Set_TTSMode(const pVal: WideString); safecall; procedure AboutDlg(hWnd: Integer; const title: WideString); safecall; procedure GeneralDlg(hWnd: Integer; const title: WideString); safecall; procedure LexiconDlg(hWnd: Integer; const title: WideString); safecall; procedure TranslateDlg(hWnd: Integer; const title: WideString); safecall; function Get_FindEngine(const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer): Integer; safecall; function Get_CountEngines: Integer; safecall; function ModeName(index: SYSINT): WideString; safecall; function MfgName(index: SYSINT): WideString; safecall; function ProductName(index: SYSINT): WideString; safecall; function ModeID(index: SYSINT): WideString; safecall; function Speaker(index: SYSINT): WideString; safecall; function Style(index: SYSINT): WideString; safecall; function Gender(index: SYSINT): Integer; safecall; function Age(index: SYSINT): Integer; safecall; function Features(index: SYSINT): Integer; safecall; function Interfaces(index: SYSINT): Integer; safecall; function EngineFeatures(index: SYSINT): Integer; safecall; function LanguageID(index: SYSINT): Integer; safecall; function dialect(index: SYSINT): WideString; safecall; function Get_MouthHeight: Smallint; safecall; procedure Set_MouthHeight(pVal: Smallint); safecall; function Get_MouthWidth: Smallint; safecall; procedure Set_MouthWidth(pVal: Smallint); safecall; function Get_MouthUpturn: Smallint; safecall; procedure Set_MouthUpturn(pVal: Smallint); safecall; function Get_JawOpen: Smallint; safecall; procedure Set_JawOpen(pVal: Smallint); safecall; function Get_TeethUpperVisible: Smallint; safecall; procedure Set_TeethUpperVisible(pVal: Smallint); safecall; function Get_TeethLowerVisible: Smallint; safecall; procedure Set_TeethLowerVisible(pVal: Smallint); safecall; function Get_TonguePosn: Smallint; safecall; procedure Set_TonguePosn(pVal: Smallint); safecall; function Get_LipTension: Smallint; safecall; procedure Set_LipTension(pVal: Smallint); safecall; function Get_LastError: Integer; safecall; procedure Set_LastError(pVal: Integer); safecall; function Get_SuppressExceptions: Smallint; safecall; procedure Set_SuppressExceptions(pVal: Smallint); safecall; procedure Select(index: Integer); safecall; function Get_LipType: Smallint; safecall; procedure Set_LipType(pVal: Smallint); safecall; function Get_CurrentMode: Integer; safecall; procedure Set_CurrentMode(pVal: Integer); safecall; function Get_hWnd: Integer; safecall; function Find(const RankList: WideString): Integer; safecall; property initialized: Integer read Get_initialized write Set_initialized; property Device: Integer read Get_Device write Set_Device; property Enabled: Integer read Get_Enabled write Set_Enabled; property IsSpeaking: Integer read Get_IsSpeaking; property Speed: Integer read Get_Speed write Set_Speed; property TTSMode: WideString read Get_TTSMode write Set_TTSMode; property FindEngine[const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer]: Integer read Get_FindEngine; property CountEngines: Integer read Get_CountEngines; property MouthHeight: Smallint read Get_MouthHeight write Set_MouthHeight; property MouthWidth: Smallint read Get_MouthWidth write Set_MouthWidth; property MouthUpturn: Smallint read Get_MouthUpturn write Set_MouthUpturn; property JawOpen: Smallint read Get_JawOpen write Set_JawOpen; property TeethUpperVisible: Smallint read Get_TeethUpperVisible write Set_TeethUpperVisible; property TeethLowerVisible: Smallint read Get_TeethLowerVisible write Set_TeethLowerVisible; property TonguePosn: Smallint read Get_TonguePosn write Set_TonguePosn; property LipTension: Smallint read Get_LipTension write Set_LipTension; property LastError: Integer read Get_LastError write Set_LastError; property SuppressExceptions: Smallint read Get_SuppressExceptions write Set_SuppressExceptions; property LipType: Smallint read Get_LipType write Set_LipType; property CurrentMode: Integer read Get_CurrentMode write Set_CurrentMode; property hWnd: Integer read Get_hWnd; end; // *********************************************************************// // DispIntf: ITextToSpeechDisp // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {2398E32E-5C6E-11D1-8C65-0060081841DE} // *********************************************************************// ITextToSpeechDisp = dispinterface ['{2398E32E-5C6E-11D1-8C65-0060081841DE}'] property initialized: Integer dispid 1; procedure Speak(const Text: WideString); dispid 2; procedure StopSpeaking; dispid 3; procedure FastForward; dispid 4; procedure Pause; dispid 5; procedure Resume; dispid 6; procedure Rewind; dispid 7; property Device: Integer dispid 8; property Enabled: Integer dispid 9; property IsSpeaking: Integer readonly dispid 10; property Speed: Integer dispid 11; property TTSMode: WideString dispid 12; procedure AboutDlg(hWnd: Integer; const title: WideString); dispid 13; procedure GeneralDlg(hWnd: Integer; const title: WideString); dispid 14; procedure LexiconDlg(hWnd: Integer; const title: WideString); dispid 15; procedure TranslateDlg(hWnd: Integer; const title: WideString); dispid 16; property FindEngine[const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer]: Integer readonly dispid 17; property CountEngines: Integer readonly dispid 18; function ModeName(index: SYSINT): WideString; dispid 19; function MfgName(index: SYSINT): WideString; dispid 20; function ProductName(index: SYSINT): WideString; dispid 21; function ModeID(index: SYSINT): WideString; dispid 22; function Speaker(index: SYSINT): WideString; dispid 23; function Style(index: SYSINT): WideString; dispid 24; function Gender(index: SYSINT): Integer; dispid 25; function Age(index: SYSINT): Integer; dispid 26; function Features(index: SYSINT): Integer; dispid 27; function Interfaces(index: SYSINT): Integer; dispid 28; function EngineFeatures(index: SYSINT): Integer; dispid 29; function LanguageID(index: SYSINT): Integer; dispid 30; function dialect(index: SYSINT): WideString; dispid 31; property MouthHeight: Smallint dispid 49; property MouthWidth: Smallint dispid 50; property MouthUpturn: Smallint dispid 51; property JawOpen: Smallint dispid 52; property TeethUpperVisible: Smallint dispid 53; property TeethLowerVisible: Smallint dispid 54; property TonguePosn: Smallint dispid 55; property LipTension: Smallint dispid 56; property LastError: Integer dispid 59; property SuppressExceptions: Smallint dispid 60; procedure Select(index: Integer); dispid 61; property LipType: Smallint dispid 62; property CurrentMode: Integer dispid 63; property hWnd: Integer readonly dispid 64; function Find(const RankList: WideString): Integer; dispid 65; end; // *********************************************************************// // OLE Control Proxy class declaration // Control Name : TTextToSpeech // Help String : Microsoft Voice Text Class // Default Interface: ITextToSpeech // Def. Intf. DISP? : No // Event Interface: _TextToSpeechEvents // TypeFlags : (2) CanCreate // *********************************************************************// TTextToSpeechClickIn = procedure(Sender: TObject; x: Integer; y: Integer) of object; TTextToSpeechClickOut = procedure(Sender: TObject; x: Integer; y: Integer) of object; TTextToSpeechAttribChanged = procedure(Sender: TObject; attrib: Integer) of object; TTextToSpeechSpeak = procedure(Sender: TObject; const Text: WideString; const App: WideString; thetype: Integer) of object; TTextToSpeechVisual = procedure(Sender: TObject; Phoneme: Smallint; EnginePhoneme: Smallint; hints: Integer; MouthHeight: Smallint; bMouthWidth: Smallint; bMouthUpturn: Smallint; bJawOpen: Smallint; TeethUpperVisible: Smallint; TeethLowerVisible: Smallint; TonguePosn: Smallint; LipTension: Smallint) of object; TTextToSpeech = class(TOleControl) private FOnClickIn: TTextToSpeechClickIn; FOnClickOut: TTextToSpeechClickOut; FOnAttribChanged: TTextToSpeechAttribChanged; FOnSpeakingStarted: TNotifyEvent; FOnSpeakingDone: TNotifyEvent; FOnSpeak: TTextToSpeechSpeak; FOnVisual: TTextToSpeechVisual; FIntf: ITextToSpeech; function GetControlInterface: ITextToSpeech; protected procedure CreateControl; procedure InitControlData; override; function Get_FindEngine(const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer): Integer; public procedure Speak(const Text: WideString); procedure StopSpeaking; procedure FastForward; procedure Pause; procedure Resume; procedure Rewind; procedure AboutDlg(hWnd: Integer; const title: WideString); procedure GeneralDlg(hWnd: Integer; const title: WideString); procedure LexiconDlg(hWnd: Integer; const title: WideString); procedure TranslateDlg(hWnd: Integer; const title: WideString); function ModeName(index: SYSINT): WideString; function MfgName(index: SYSINT): WideString; function ProductName(index: SYSINT): WideString; function ModeID(index: SYSINT): WideString; function Speaker(index: SYSINT): WideString; function Style(index: SYSINT): WideString; function Gender(index: SYSINT): Integer; function Age(index: SYSINT): Integer; function Features(index: SYSINT): Integer; function Interfaces(index: SYSINT): Integer; function EngineFeatures(index: SYSINT): Integer; function LanguageID(index: SYSINT): Integer; function dialect(index: SYSINT): WideString; procedure Select(index: Integer); function Find(const RankList: WideString): Integer; property ControlInterface: ITextToSpeech read GetControlInterface; property DefaultInterface: ITextToSpeech read GetControlInterface; property IsSpeaking: Integer index 10 read GetIntegerProp; property FindEngine[const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer]: Integer read Get_FindEngine; property CountEngines: Integer index 18 read GetIntegerProp; property hWnd: Integer index 64 read GetIntegerProp; published property TabStop; property Align; property DragCursor; property DragMode; property ParentShowHint; property PopupMenu; property ShowHint; property TabOrder; property Visible; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnEnter; property OnExit; property OnStartDrag; property initialized: Integer index 1 read GetIntegerProp write SetIntegerProp stored False; property Device: Integer index 8 read GetIntegerProp write SetIntegerProp stored False; property Enabled: Integer index 9 read GetIntegerProp write SetIntegerProp stored False; property Speed: Integer index 11 read GetIntegerProp write SetIntegerProp stored False; property TTSMode: WideString index 12 read GetWideStringProp write SetWideStringProp stored False; property MouthHeight: Smallint index 49 read GetSmallintProp write SetSmallintProp stored False; property MouthWidth: Smallint index 50 read GetSmallintProp write SetSmallintProp stored False; property MouthUpturn: Smallint index 51 read GetSmallintProp write SetSmallintProp stored False; property JawOpen: Smallint index 52 read GetSmallintProp write SetSmallintProp stored False; property TeethUpperVisible: Smallint index 53 read GetSmallintProp write SetSmallintProp stored False; property TeethLowerVisible: Smallint index 54 read GetSmallintProp write SetSmallintProp stored False; property TonguePosn: Smallint index 55 read GetSmallintProp write SetSmallintProp stored False; property LipTension: Smallint index 56 read GetSmallintProp write SetSmallintProp stored False; property LastError: Integer index 59 read GetIntegerProp write SetIntegerProp stored False; property SuppressExceptions: Smallint index 60 read GetSmallintProp write SetSmallintProp stored False; property LipType: Smallint index 62 read GetSmallintProp write SetSmallintProp stored False; property CurrentMode: Integer index 63 read GetIntegerProp write SetIntegerProp stored False; property OnClickIn: TTextToSpeechClickIn read FOnClickIn write FOnClickIn; property OnClickOut: TTextToSpeechClickOut read FOnClickOut write FOnClickOut; property OnAttribChanged: TTextToSpeechAttribChanged read FOnAttribChanged write FOnAttribChanged; property OnSpeakingStarted: TNotifyEvent read FOnSpeakingStarted write FOnSpeakingStarted; property OnSpeakingDone: TNotifyEvent read FOnSpeakingDone write FOnSpeakingDone; property OnSpeak: TTextToSpeechSpeak read FOnSpeak write FOnSpeak; property OnVisual: TTextToSpeechVisual read FOnVisual write FOnVisual; end; procedure Register; implementation uses ComObj; procedure TTextToSpeech.InitControlData; const CEventDispIDs: array [0..6] of DWORD = ( $00000001, $00000002, $00000003, $00000004, $00000005, $00000006, $00000007); CControlData: TControlData2 = ( ClassID: '{2398E32F-5C6E-11D1-8C65-0060081841DE}'; EventIID: '{2398E331-5C6E-11D1-8C65-0060081841DE}'; EventCount: 7; EventDispIDs: @CEventDispIDs; LicenseKey: nil (*HR:$80040154*); Flags: $00000000; Version: 401); begin ControlData := @CControlData; TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnClickIn) - Cardinal(Self); end; procedure TTextToSpeech.CreateControl; procedure DoCreate; begin FIntf := IUnknown(OleObject) as ITextToSpeech; end; begin if FIntf = nil then DoCreate; end; function TTextToSpeech.GetControlInterface: ITextToSpeech; begin CreateControl; Result := FIntf; end; function TTextToSpeech.Get_FindEngine(const EngineId: WideString; const MfgName: WideString; const ProductName: WideString; const ModeID: WideString; const ModeName: WideString; LanguageID: Integer; const dialect: WideString; const Speaker: WideString; const Style: WideString; Gender: Integer; Age: Integer; Features: Integer; Interfaces: Integer; EngineFeatures: Integer; RankEngineID: Integer; RankMfgName: Integer; RankProductName: Integer; RankModeID: Integer; RankModeName: Integer; RankLanguage: Integer; RankDialect: Integer; RankSpeaker: Integer; RankStyle: Integer; RankGender: Integer; RankAge: Integer; RankFeatures: Integer; RankInterfaces: Integer; RankEngineFeatures: Integer): Integer; begin Result := DefaultInterface.Get_FindEngine(EngineId, MfgName, ProductName, ModeID, ModeName, LanguageID, dialect, Speaker, Style, Gender, Age, Features, Interfaces, EngineFeatures, RankEngineID, RankMfgName, RankProductName, RankModeID, RankModeName, RankLanguage, RankDialect, RankSpeaker, RankStyle, RankGender, RankAge, RankFeatures, RankInterfaces, RankEngineFeatures); end; procedure TTextToSpeech.Speak(const Text: WideString); begin DefaultInterface.Speak(Text); end; procedure TTextToSpeech.StopSpeaking; begin DefaultInterface.StopSpeaking; end; procedure TTextToSpeech.FastForward; begin DefaultInterface.FastForward; end; procedure TTextToSpeech.Pause; begin DefaultInterface.Pause; end; procedure TTextToSpeech.Resume; begin DefaultInterface.Resume; end; procedure TTextToSpeech.Rewind; begin DefaultInterface.Rewind; end; procedure TTextToSpeech.AboutDlg(hWnd: Integer; const title: WideString); begin DefaultInterface.AboutDlg(hWnd, title); end; procedure TTextToSpeech.GeneralDlg(hWnd: Integer; const title: WideString); begin DefaultInterface.GeneralDlg(hWnd, title); end; procedure TTextToSpeech.LexiconDlg(hWnd: Integer; const title: WideString); begin DefaultInterface.LexiconDlg(hWnd, title); end; procedure TTextToSpeech.TranslateDlg(hWnd: Integer; const title: WideString); begin DefaultInterface.TranslateDlg(hWnd, title); end; function TTextToSpeech.ModeName(index: SYSINT): WideString; begin Result := DefaultInterface.ModeName(index); end; function TTextToSpeech.MfgName(index: SYSINT): WideString; begin Result := DefaultInterface.MfgName(index); end; function TTextToSpeech.ProductName(index: SYSINT): WideString; begin Result := DefaultInterface.ProductName(index); end; function TTextToSpeech.ModeID(index: SYSINT): WideString; begin Result := DefaultInterface.ModeID(index); end; function TTextToSpeech.Speaker(index: SYSINT): WideString; begin Result := DefaultInterface.Speaker(index); end; function TTextToSpeech.Style(index: SYSINT): WideString; begin Result := DefaultInterface.Style(index); end; function TTextToSpeech.Gender(index: SYSINT): Integer; begin Result := DefaultInterface.Gender(index); end; function TTextToSpeech.Age(index: SYSINT): Integer; begin Result := DefaultInterface.Age(index); end; function TTextToSpeech.Features(index: SYSINT): Integer; begin Result := DefaultInterface.Features(index); end; function TTextToSpeech.Interfaces(index: SYSINT): Integer; begin Result := DefaultInterface.Interfaces(index); end; function TTextToSpeech.EngineFeatures(index: SYSINT): Integer; begin Result := DefaultInterface.EngineFeatures(index); end; function TTextToSpeech.LanguageID(index: SYSINT): Integer; begin Result := DefaultInterface.LanguageID(index); end; function TTextToSpeech.dialect(index: SYSINT): WideString; begin Result := DefaultInterface.dialect(index); end; procedure TTextToSpeech.Select(index: Integer); begin DefaultInterface.Select(index); end; function TTextToSpeech.Find(const RankList: WideString): Integer; begin Result := DefaultInterface.Find(RankList); end; procedure Register; begin RegisterComponents('ActiveX',[TTextToSpeech]); end; end. |
Update of /cvsroot/pythianproject/PythianProject/Source/Conversation/Editor In directory usw-pr-cvs1:/tmp/cvs-serv23470/Conversation/Editor Added Files: Branch1.bmp Conversation1.bmp ConversationEditor.cfg ConversationEditor.dof ConversationEditor.dpr ConversationEditor.res Delay1.bmp Jump1.bmp NPCResponse1.bmp NPCSpeech1.bmp PlayerOption1.bmp Script1.bmp groupClosed.bmp ignore.bmp mainWin.dfm mainWin.pas notes.txt test2.cml Log Message: Adding conversation stuff -mike --- NEW FILE --- BM6 --- NEW FILE --- BM6 --- NEW FILE --- <convdata><conversation name="Test conversation"><playeroption id="1">Hi there! How are you doing? test test 1 2 3<npcspeech id="4">Fine thanks. You?</npcspeech><playeroption id="5">Oh not bad thanks.<npcspeech id="8">That's welcome news. Now listen, I've got something to tell you.</npcspeech><jump id="23" to="21"></jump></playeroption><playeroption id="6">Actually not to good recently.<npcspeech id="7">Really? That's too bad. Anyway, listen carefully.</npcspeech><jump id="24" to="21"></jump></playeroption><group name="Joke Group" id="21"><npcspeech id="22">I've got this totally great joke to tell you!</npcspeech><playeroption id="27">Groan!<jump id="30" to=""></jump></playeroption><playeroption id="28">Go on then, shock me.<npcspeech id="29">Here we go then - What is the largest species of mouse in the world?</npcspeech><playeroption id="35">I don't know. What is the largest species of mouse in the world?<npcspeech id="36">A hippopotamouse!</npcspeech><playeroption id="37">That's pathetic.</playeroption><playeroption id="38">That's rubbish.</playeroption><playeroption id="39">That's ****.</playeroption></playeroption></playeroption></group></playeroption><playeroption id="3">Hey you - what are you doing here?<npcspeech id="12">Well if you're going to be like that I'm off!</npcspeech><script name="NPC Leaves" id="13">test script</script></playeroption></conversation><conversation name="Explanation Conversation"><npcspeech id="47">Welcome to the demo conversation :)This will show you the features of the conversation engine, and demonstrate how it works and how conversations are designed. This node is an NPC node, meaning that the character to whom this conversation is with would speak it.A conversation is organised like a tree. The interpreter runs each node in turn, starting with the top and working downwards. Here, this is spoken first, and when that is done the player options a, b and c are shown.</npcspeech><playeroption id="48">This is player option (a). The player can choose this option from a list of options that are displayed when the interpreter runs this node. If the player chooses this the options children are run. When a player option node is run, all available options are cleared.Options have two flags: "force select", which means the player -must- select that option, and "disable-on-run" which if true means that the option can only be selected once.<npcspeech id="52">This is an NPC speech node. It is run (and the speech spoken) if the player selects option (a).</npcspeech><delay time="1000" id="53"></delay><npcspeech id="54">This NPC speech is run 1 second after the first. Because nodes are run in order, you can implement several neat features like this.After this node is run, control moves immediately back up a level and the player options (b) and (c) are run. In fact, all the options are processed, but when an option is selected, it is marked as "done", and therefore not readded. When control is returning up a level, only player options are run, no others are.</npcspeech></playeroption><playeroption id="50">This is player option (b) The player can also choose this option. This node is run immediately after option (a), so the player sees the options appear virtually at the same instant.<npcspeech id="55">This is another NPC speech node. It is run when option (b) is selected.</npcspeech><playeroption id="56">This is another option (b-a). It is run when option (b) is selected by the player. If a set of children contains player options then execution halts when control is about to return up a level. This allows the player to select an option. Execution only returns to the parent level once all the player options marked "force select" have been selected. The force select flag means that the player has to choose the option before execution can return. For instance, if an option is chosen and it contains 3 other options, all with force select = true then the player must say all three things before he can go back. However, if none of them have force-select then the player can only choose 1 of them. However, the rest of the options will then be impossible to select. Force select is currently not editable.<groupenable id="72" target="68"></groupenable><npcspeech id="76">If the player sees this npc speech then the group has been enabled. That means that if the player selects option (b) then (c), they get extra options.</npcspeech></playeroption><npcspeech id="57">This node will be run immediately after the player chooses (b). However, after this node execution will stop, until a player option has been selected.</npcspeech></playeroption><playeroption id="51">This is option (c) Like the others the player can choose this at the beginning of the conversation.<npcspeech id="67">This is a response to the user selecting (c). The following nodes are in a group.</npcspeech><group name="Explanation Group" id="68"><playeroption id="69">This option is in a group. By default groups are enabled, and when execution reaches a group it passes into it without hesitation.If a group is disabled (groups can be enabled/disabled with commands) then execution may or may not pass into it. However, it is perfectly possible to jump into a group that is disabled. Groups are -not- automatically run when enabled.</playeroption><playeroption id="70">This option is also in a group. These options will only be available if the player has first selected option (b)</playeroption><jump id="81" to="80"></jump></group></playeroption><groupdisable id="78" target="79"></groupdisable><group name="Misc Group" id="79"><npcspeech id="80">This will not be run at first, because it's in a group that's disabled. However, the group can be used to store various nodes that are jumped to later. When something is jumped to, it is treated like the jumped nodes are added where the jump command is. This is to preserve context.</npcspeech><playeroption id="82">This option will appear alongside the other two before the jump, because these nodes will appear to be where the jump command is.</playeroption></group><npcspeech id="88">New NPC Speech</npcspeech></conversation></convdata> |
From: Michael H. <mh...@us...> - 2001-08-10 22:06:47
|
Update of /cvsroot/pythianproject/PythianProject/Source/Conversation/GUI In directory usw-pr-cvs1:/tmp/cvs-serv23470/Conversation/GUI Added Files: ConversationGUIComponents.pas GUIMockup.cfg GUIMockup.dof GUIMockup.dpr GUIMockup.res StartupForm.dfm StartupForm.pas Log Message: Adding conversation stuff -mike --- NEW FILE --- unit ConversationGUIComponents; interface uses Windows, Classes, Math, GLCanvas, vglClasses, Graphics, SysUtils, Trace; type TvglConversationLogItem = record Name :string; Color :TColor; Content :string; end; TvglConversationLogItemList = array of TvglConversationLogItem; TvglConversationLog = class(TvglComponent) protected FText :TGLText; // for each line FLines :TvglConversationLogItemList; FLineSpacing: integer; FMaxLines: integer; function GetComponentType:string; override; public property Lines :TvglConversationLogItemList read FLines; property LineSpacing :integer read FLineSpacing write FLineSpacing; property MaxLines :integer read FMaxLines write FMaxLines; constructor Create(aName:string; AOwner:TvglComponent); destructor Destroy; override; procedure DrawSelf(where:TRect); override; procedure AddLine(aName,aContent:string; aColor:TColor); end; TvglConversationSelectEvent = procedure (Item:integer; Sender:TObject) of object; TvglConversationSelector = class(TvglComponent) protected FSkin :TGLBitmap; FText :TGLText; FOptions :TStringList; FOptionSpacing :integer; FOptionsButtonWidth :integer; FHighlightedItem :integer; FOnItemSelect: TvglConversationSelectEvent; function GetComponentType:string; override; procedure DoOnMouseMove(X, Y: Integer); override ; procedure DoOnMouseClick(x,y:integer); override ; public property Options :TStringList read FOptions; property OptionSpacing :integer read FOptionSpacing write FOptionSpacing; property HighlightedItem :integer read FHighlightedItem write FHighlightedItem; // called when a conversation object is selected property OnItemSelect :TvglConversationSelectEvent read FOnItemSelect write FOnItemSelect; constructor Create(aName:string; AOwner:TvglComponent); destructor Destroy; override; procedure DrawSelf(where:TRect); override; end; implementation { TvglConversationLog } procedure TvglConversationLog.AddLine(aName,aContent:string; aColor:TColor); var i:TvglConversationLogItem; a:integer; begin SetLength(Flines,Length(FLines)+1); i.Name := aName; i.Content := aContent; i.Color := aColor; FLines[Length(FLines)-1] := i; if Length(FLines) > MaxLines then begin // shift them all down by one, and then remove last item. for a := 0 to Length(FLines)-1 do FLines[a] := FLines[Min(a+1,Length(Flines)-1)]; SetLength(FLines,Length(FLines)-1); end; end; constructor TvglConversationLog.Create(aName:string; AOwner: TvglComponent); begin inherited Create(aName,AOwner); SetLength(FLines,0); LineSpacing := 12; FText := TGLText.Create('Arial8'); MaxLines := 5; end; destructor TvglConversationLog.Destroy; begin FText.Free; inherited; end; procedure TvglConversationLog.DrawSelf(where: TRect); const Gap = 6; // left hand border var i,w:integer; begin inherited DrawSelf(where); // discover longest line for name alignment w := 0; for i := 0 to Length(FLines)-1 do begin FText.Text := FLines[i].Name; if FText.Width[0] > w then w := FText.Width[0]; end; for i := 0 to Length(FLines)-1 do begin FText.Text := FLines[i].Name+':'; FText.SetColor(Flines[i].Color); Canvas.DrawText(where.left+Gap+w-FText.Width[0],where.top+(i*LineSpacing),FText); FText.Text := FLines[i].Content; FText.SetColor(clWhite); Canvas.DrawText(where.left+Gap+w,where.top+(i*LineSpacing),FText); end; end; function TvglConversationLog.GetComponentType: string; begin Result := 'ConversationLog'; end; { TvglConversationSelector } constructor TvglConversationSelector.Create(aName: string; AOwner: TvglComponent); begin inherited Create(aName,aOwner); FSkin := TGLBitmap(Manager.GetResource(VGL_SKIN_1)); FText := TGLText.Create('Arial8'); FOptions := TStringList.Create; FOptionSpacing := 20; FOptionsButtonWidth := 90; HighlightedItem := 0; // no highlight FOnItemSelect := nil; end; destructor TvglConversationSelector.Destroy; begin FSkin := nil; FOptions.Free; FText.Free; inherited; end; procedure TvglConversationSelector.DoOnMouseClick(x, y: integer); var h:integer; begin inherited DoOnMouseClick(x,y); if not assigned(FOnItemSelect) then exit; if not ((X >= Bounds.Left) and (X <= Bounds.Right) and (Y >= Bounds.Top) and (Y <= Bounds.Bottom)) then exit; if (Y - Bounds.Top) > 20 then h := (Y - Bounds.Top) div 20 // which item to highlight? else h := 0; TraceString(IntToStr(h)); if (h > 0) and (h <= Options.Count) then FOnItemSelect(h,self); end; procedure TvglConversationSelector.DoOnMouseMove(X, Y: Integer); begin inherited DoOnMouseMove(x,y); if not ((X >= Bounds.Left) and (X <= Bounds.Right) and (Y >= Bounds.Top) and (Y <= Bounds.Bottom)) then exit; if (Y - Bounds.Top) > 20 then HighlightedItem := (Y - Bounds.Top) div 20 // which item to highlight? else HighlightedItem := 0; end; procedure TvglConversationSelector.DrawSelf(where: TRect); var i:integer; procedure Splat(x,y:integer); begin Canvas.DrawBitmapSubRect(x,y,VGL_SKINRECT_SMALLBUTTON1,FSkin); end; procedure SplatWithNum(x,y,n:integer); begin Splat(x,y); FText.SetColor(clWhite); FText.Text := IntToStr(n); Canvas.DrawText(x+3,y-3,FText); end; begin inherited DrawSelf(where); // Draw top line and options button Canvas.Line(where.left,where.top+7,where.right - FOptionsButtonWidth,where.top+7); SplatWithNum(where.right - FOptionsButtonWidth + 5, where.top, 0 ); FText.Text := 'Options'; Canvas.DrawText(where.right - FOptionsButtonWidth + 20, where.top-3,FText); // Draw options for i := 0 to FOptions.Count-1 do begin SplatWithNum(where.left,where.top+ (OptionSpacing*(i+1)),i+1); FText.Text := FOptions[i]; if HighlightedItem-1 = i then FText.SetColor(clYellow) else FText.SetColor(clWhite); Canvas.DrawText(where.left+20,where.top+ (OptionSpacing*(i+1)) - 3, FText); end; end; function TvglConversationSelector.GetComponentType: string; begin Result := 'ConversationSelector'; end; end. --- 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 -E..\..\..\Bin -LNe:\program files\borland\delphi4\Lib -U..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures -O..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures -I..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures -R..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures --- 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=..\..\..\Bin UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= SearchPath=..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures Packages=VCL40;VCLX40;VCLDB40;VCLDBX40;VCLSMP40;QRPT40;TEEUI40;TEEDB40;TEE40;ibevnt40;nmfast40;TreeNTControl;glPanelPkg Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams= HostApplication= [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= [Excluded Packages] E:\cvs\pythianproject\Prototypes\AI\Flocking\Flocking.bpl=RiverSoftAVG Flocking Components [HistoryLists\hlUnitAliases] Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [HistoryLists\hlSearchPath] Count=3 Item0=..\..\VGL;..\..\GLCanvas;..\..\Units;..\..\Textures Item1=..\Units;..\GLForm;..\GLCanvas;..\Textures Item2=..\Units;..\GLForm;..\GLCanvas [HistoryLists\hlOutputDirectorry] Count=7 Item0=..\..\..\Bin Item1=E:\cvs\pythianproject-openave\PythianProject\Bin Item2=E:\cvs\pythianproject\PythianProject\Bin Item3=E:\cvs\pythianproject-\PythianProject\Bin Item4=..\..\Bin Item5=.\..\..\Bin Item6="..\..\Bin" --- NEW FILE --- program GUIMockup; uses Forms, StartupForm in 'StartupForm.pas' {Form1}, ConversationGUIComponents in 'ConversationGUIComponents.pas'; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. --- NEW FILE --- --- NEW FILE --- ÿ Font.ColorclWindowTextFont.Heightõ Font.Name MS Sans Serif Font.Style TextHeight --- NEW FILE --- unit StartupForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, GLForms, GLCanvas, OpenGL, vglClasses, vglStdCtrls, vglEdits, vglAnimatedImage, DeviceModes, Trace, ConversationGUIComponents; {$DEFINE DEVELOPMENT} type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } GLForm :TGLForm; InterfaceManager :TvglInterfaceManager; GLC: TGLCanvas; Wallpaper :TvglImage; ConvLog :TvglConversationLog; ConvSelector :TvglConversationSelector; Elapsed,FirstTime:Cardinal; public { Public declarations } procedure Go; procedure OnItemSelect(Item:integer; Sender:TObject); procedure GLFormPaint(Sender:TObject); procedure GLKeypress(Sender: TObject; KeyCode, KeyData: LongInt; ButtonState: TButtonState; Modifiers: TKBModifiers); procedure GLMouseMove(Sender: TObject; X, Y: Integer; Modifiers: TKBModifiers); procedure GLMousebutton(Sender: TObject; Button: TMouseButton; X, Y: Integer; ButtonState: TButtonState; Modifiers: TKBModifiers); end; var Form1: TForm1; function timeGetTime: Cardinal; external 'winmm.dll' name 'timeGetTime'; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin go; end; procedure TForm1.GLFormPaint(Sender: TObject); begin glClear(GL_DEPTH_BUFFER_BIT); Elapsed := timeGetTime - FirstTime; // elapsed time from beginning - GLForm.Run InterfaceManager.Update(Elapsed); InterfaceManager.DrawAll; end; procedure TForm1.GLKeypress(Sender: TObject; KeyCode, KeyData: Integer; ButtonState: TButtonState; Modifiers: TKBModifiers); begin if keycode = vk_escape then DestroyWindow(GLForm.Handle) else begin case ButtonState of bsUp: InterfaceManager.KeyUp(KeyCode, KeyData); bsDown: InterfaceManager.KeyDown(KeyCode, KeyData); end; end; end; procedure TForm1.GLMousebutton(Sender: TObject; Button: TMouseButton; X, Y: Integer; ButtonState: TButtonState; Modifiers: TKBModifiers); begin case Button of mbLeft: if ButtonState = bsUp then InterfaceManager.MouseUp(VGL_MOUSE_LEFT,X,Y) else InterfaceManager.MouseDown(VGL_MOUSE_LEFT,X,Y); mbRight: if ButtonState = bsUp then InterfaceManager.MouseUp(VGL_MOUSE_RIGHT,X,Y) else InterfaceManager.MouseDown(VGL_MOUSE_RIGHT,X,Y); end; end; procedure TForm1.GLMouseMove(Sender: TObject; X, Y: Integer; Modifiers: TKBModifiers); begin InterfaceManager.MouseMove(X,Y); end; procedure TForm1.Go; begin // Begin initialization of GUI GetDeviceModes; GLForm := TGLForm.Create; GLForm.FullScreen := True; GLForm.SetBounds(0,0,640,480); GLForm.DeviceMode := FindMode(640,480,16); GLForm.Caption := 'Conversation Demo v1'; GLForm.OnPaint := GLFormPaint; GLForm.OnKeyPress := GLKeypress; GLForm.OnMouseButton := GLMousebutton; GLForm.OnMouseMove := GLMouseMove; GLForm.ShowFPS := true; // run the program GLForm.Open; {$IFDEF DEVELOPMENT} VGL_DATADIR := 'data\gui\'; FontsDirectory := 'data\gui\'; {$ENDIF} VGL_SKIN_1 := VGL_DATADIR + 'skin1.png'; VGL_SKIN_2 := VGL_DATADIR + 'newskin-background.png'; if not GLForm.FullScreen then GLC := TGLCanvas.Create(GLForm.Width-6,GLForm.Height-25) // must take into account window borders else GLC := TGLCanvas.Create(638,478); InterfaceManager := TvglInterfaceManager.Create(GLForm.Handle, GLC); // Create components Wallpaper := TvglImage.Create('Wallpaper',InterfaceManager.Desktop); Wallpaper.Bounds := Rect(0,0,640,480); Wallpaper.LoadImage('data\gui\ConversationGUIMockupBackground.png'); ConvLog := TvglConversationLog.Create('ConvLog',InterfaceManager.Desktop); ConvLog.Bounds := Rect(10,10,630,100); ConvLog.AddLine('Player','Who is that fox?',clRed); ConvLog.AddLine('Mike','Nelly Furtardo - she is a goddess',clAqua); ConvSelector := TvglConversationSelector.Create('ConvSelector',InterfaceManager.Desktop); ConvSelector.Bounds := Rect(10,370,630,470); ConvSelector.Options.Add('Yes, I agree, Nelly totally rocks'); ConvSelector.Options.Add('As always Mike you are totally correct.'); ConvSelector.Options.Add('Indeed, I went to worship her at Bargain CD Basement only the other day!'); ConvSelector.OnItemSelect := OnItemSelect; Hide; ShowCursor(false); FirstTime := timeGetTime; GLForm.Run; ShowCursor(true); // clear up GLForm.Close; GLForm.Free; InterfaceManager.Free; Close; end; procedure TForm1.OnItemSelect(Item: integer; Sender: TObject); begin ConvLog.AddLine('Player',ConvSelector.Options[item-1],clRed); ConvLog.AddLine('Mike','So what are you waiting for - go and buy her album!',clAqua); end; end. |
From: Michael H. <mh...@us...> - 2001-08-10 21:59:25
|
Update of /cvsroot/pythianproject/PythianProject/Source/Conversation/GUI In directory usw-pr-cvs1:/tmp/cvs-serv22331/GUI Log Message: Directory /cvsroot/pythianproject/PythianProject/Source/Conversation/GUI added to the repository |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:27:17
|
Update of /cvsroot/pythianproject/PythianProject/Source/ModelViewer In directory usw-pr-cvs1:/tmp/cvs-serv19583 Removed Files: ASCFiles.pas Const3DS.pas DIBCodec.pas Log Message: kk ... everything --- ASCFiles.pas DELETED --- --- Const3DS.pas DELETED --- --- DIBCodec.pas DELETED --- |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:20:37
|
Update of /cvsroot/pythianproject/PythianProject/Source/glPanel In directory usw-pr-cvs1:/tmp/cvs-serv17649 Added Files: GLDEMO.DOF GLDEMO.DPR GLDEMO.RES GLPANEL.DCR GLPanel.pas GLUNIT.DFM GLUNIT.PAS glPanelPkg.cfg glPanelPkg.dof glPanelPkg.dpk glPanelPkg.res Log Message: kk ... everything --- NEW FILE --- [Compiler] A=1 B=0 C=0 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=0 Z=1 ShowHints=0 ShowWarnings=0 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] OutputDir= SearchPath= Conditionals= [Parameters] RunParams= --- NEW FILE --- ///////////////////////////////////////////////////////////////////////// // Industrial Software Solutions // 4205 Hideaway // Arlington, Texas 76017 // Mitchell E. James // May 18, 1996 // mj...@cy... // http://www.cyberhighway.net/~mjames/ program gldemo; uses Forms, GLUnit in 'GLUnit.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. --- NEW FILE --- --- NEW FILE --- --- NEW FILE --- ///////////////////////////////////////////////////////////////////////// // Industrial Software Solutions // 4205 Hideaway // Arlington, Texas 76017 // Mitchell E. James // May 18, 1996 // mj...@cy... // http://www.cyberhighway.net/~mjames/ // note: When running under the Delphi 2.0 debugger the Windows GL subsystem errors out randomly. // note: The Windows GL subsystem seems to work fine running Delphi GL executables. // note: I haven't been running with a palette. Not sure if that works. unit GLPanel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL, ExtCtrls; type TPFDPixelType = (GLp_TYPE_RGBA, GLp_TYPE_COLORINDEX); TPFDLayerType = (GLL_MAIN_PLANE, GLL_OVERLAY_PLANE, GLL_UNDERLAY_PLANE); // PIXELFORMATDESCRIPTOR flags TPFDFlag = (GLf_DOUBLEBUFFER, GLf_STEREO, GLf_DRAW_TO_WINDOW, GLf_DRAW_TO_BITMAP, GLf_SUPPORT_GDI, GLf_SUPPORT_OPENGL, GLf_GENERIC_FORMAT, GLf_NEED_PALETTE, GLf_NEED_SYSTEM_PALETTE, GLf_SWAP_EXCHANGE, GLf_SWAP_COPY); TPFDPixelTypes = set of TPFDPixelType; TPFDLayerTypes = set of TPFDLayerType; TPFDFlags = set of TPFDFlag; TGLPanel = class(TCustomPanel) private DC: HDC; hrc: HGLRC; Palette: HPALETTE; FFirstTimeInFlag: Boolean; FPFDChanged: Boolean; FPixelType: TPFDPixelTypes; FLayerType: TPFDLayerTypes; FFlags: TPFDFlags; GPixelType: Word; GLayerType: Cardinal; GFlags: Word; FColorBits: Cardinal; FDepthBits: Cardinal; FOnGLDraw: TNotifyEvent; // pointer to users routine of GL draw commands FOnGLInit: TNotifyEvent; // pointer to users routine for GL initialization FOnGLPrep: TNotifyEvent; // pointer to users routine for static setup procedure ResetFlags (Value: TPFDFlags); procedure ResetPixelType (Value: TPFDPixelTypes); procedure ResetLayerType (Value: TPFDLayerTypes); procedure SetDCPixelFormat; procedure NewPaint; protected procedure CheckCurrent; function GetFlags : TPFDFlags; function GetPixelType: TPFDPixelTypes; function GetLayerType: TPFDLayerTypes; function GetColorBits: Cardinal; function GetDepthBits: Cardinal; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure Paint; override; procedure Resize; override; procedure SetFlags (Value: TPFDFlags); procedure SetPixelType (Value: TPFDPixelTypes); procedure SetLayerType (Value: TPFDLayerTypes); procedure SetColorBits (Value: Cardinal); procedure SetDepthBits (Value: Cardinal); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure GLReDraw; procedure NewGLPrep; published property Align; property Alignment; // property BevelInner; // property BevelOuter; // property BevelWidth; // property BorderWidth; // property BorderStyle; property DragCursor; property DragMode; property Enabled; // property Caption; // property Color; property GLColorBits: Cardinal read GetColorBits write SetColorBits default 24; // property Ctl3D; property GLDepthBits: Cardinal read GetDepthBits write SetDepthBits default 32; property GLFlags: TPFDFlags read Getflags write SetFlags default [GLf_DRAW_TO_WINDOW , GLf_SUPPORT_OPENGL]; // property Font; property GLLayerType: TPFDLayerTypes read GetLayerType write SetLayerType default [GLL_MAIN_PLANE]; property Locked; // property ParentColor; // property ParentCtl3D; // property ParentFont; property ParentShowHint; property GLPixelType: TPFDPixelTypes read GetPixelType write SetPixelType default [GLp_TYPE_RGBA]; property PopupMenu; property ShowHint; property TabOrder; property TabStop; property Visible; property OnClick; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDrag; property OnEnter; property OnExit; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnResize; property OnStartDrag; property OnGLDraw: TNotifyEvent read FOnGLDraw write FOnGLDraw; property OnGLInit: TNotifyEvent read FOnGLInit write FOnGLInit; property OnGLPrep: TNotifyEvent read FOnGLPrep write FOnGLPrep; end; procedure Register; implementation procedure TGLPanel.CheckCurrent; begin if (wglGetCurrentContext <> hrc) then begin wglMakeCurrent(DC, hrc); if Assigned(OnGLPrep) then OnGLPrep(self); end; end; procedure TGLPanel.Resize; begin CheckCurrent; inherited Resize; if Assigned(OnResize) then OnResize(self); end; procedure TGLPanel.SetDCPixelFormat; var hHeap: THandle; nColors, i: Integer; lpPalette: PLogPalette; byRedMask, byGreenMask, byBlueMask: Byte; nPixelFormat: Integer; pfd: TPixelFormatDescriptor; begin FillChar(pfd, SizeOf(pfd), 0); with pfd do begin nSize := sizeof(pfd); // Size of this structure nVersion := 1; // Version number dwFlags := GFlags; // Flags iPixelType:= GPixelType; // RGBA pixel values cColorBits:= FColorBits; // 24-bit color cDepthBits:= FDepthBits; // 32-bit depth buffer iLayerType:= GLayerType; // Layer type end; nPixelFormat := ChoosePixelFormat(DC, @pfd); SetPixelFormat(DC, nPixelFormat, @pfd); DescribePixelFormat(DC, nPixelFormat, sizeof(TPixelFormatDescriptor), pfd); if ((pfd.dwFlags and PFD_NEED_PALETTE) <> 0) then begin nColors := 1 shl pfd.cColorBits; hHeap := GetProcessHeap; lpPalette := HeapAlloc(hHeap, 0, sizeof(TLogPalette) + (nColors * sizeof(TPaletteEntry))); lpPalette^.palVersion := $300; lpPalette^.palNumEntries := nColors; byRedMask := (1 shl pfd.cRedBits) - 1; byGreenMask := (1 shl pfd.cGreenBits) - 1; byBlueMask := (1 shl pfd.cBlueBits) - 1; for i := 0 to nColors - 1 do begin lpPalette^.palPalEntry[i].peRed := (((i shr pfd.cRedShift) and byRedMask) * 255) DIV byRedMask; lpPalette^.palPalEntry[i].peGreen := (((i shr pfd.cGreenShift) and byGreenMask) * 255) DIV byGreenMask; lpPalette^.palPalEntry[i].peBlue := (((i shr pfd.cBlueShift) and byBlueMask) * 255) DIV byBlueMask; lpPalette^.palPalEntry[i].peFlags := 0; end; Palette := CreatePalette(lpPalette^); HeapFree(hHeap, 0, lpPalette); if (Palette <> 0) then begin SelectPalette(DC, Palette, False); RealizePalette(DC); end; end; end; procedure TGLPanel.ResetFlags (Value: TPFDFlags); begin GFlags := 0; if GLf_DOUBLEBUFFER in Value then GFlags := GFlags or PFD_DOUBLEBUFFER; if GLf_STEREO in Value then GFlags := GFlags or PFD_STEREO; if GLf_DRAW_TO_WINDOW in Value then GFlags := GFlags or PFD_DRAW_TO_WINDOW; if GLf_DRAW_TO_BITMAP in Value then GFlags := GFlags or PFD_DRAW_TO_BITMAP; if GLf_SUPPORT_GDI in Value then GFlags := GFlags or PFD_SUPPORT_GDI; if GLf_SUPPORT_OPENGL in Value then GFlags := GFlags or PFD_SUPPORT_OPENGL; if GLf_GENERIC_FORMAT in Value then GFlags := GFlags or PFD_GENERIC_FORMAT; if GLf_NEED_PALETTE in Value then GFlags := GFlags or PFD_NEED_PALETTE; if GLf_NEED_SYSTEM_PALETTE in Value then GFlags := GFlags or PFD_NEED_SYSTEM_PALETTE; if GLf_SWAP_EXCHANGE in Value then GFlags := GFlags or PFD_SWAP_EXCHANGE; if GLf_SWAP_COPY in Value then GFlags := GFlags or PFD_SWAP_COPY; end; procedure TGLPanel.ResetPixelType (Value: TPFDPixelTypes); begin if GLp_TYPE_RGBA in Value then GPixelType := PFD_TYPE_RGBA; if GLp_TYPE_COLORINDEX in Value then GPixelType := PFD_TYPE_COLORINDEX; end; procedure TGLPanel.ResetLayerType (Value: TPFDLayerTypes); begin if GLL_MAIN_PLANE in Value then GLayerType := PFD_MAIN_PLANE; if GLL_OVERLAY_PLANE in Value then GLayerType := PFD_OVERLAY_PLANE; if GLL_UNDERLAY_PLANE in Value then GLayerType := PFD_UNDERLAY_PLANE; end; procedure TGLPanel.SetFlags(Value: TPFDFlags); begin if FFlags <> Value then begin FFlags := Value; if not (csDesigning in ComponentState) then begin ResetFlags (Value); FPFDChanged := True; end; end; end; procedure TGLPanel.SetPixelType (Value: TPFDPixelTypes); begin if FPixelType <> Value then begin FPixelType := Value; if not (csDesigning in ComponentState) then begin ResetPixelType (Value); FPFDChanged := True; end; end; end; procedure TGLPanel.SetLayerType (Value: TPFDLayerTypes); begin if FLayerType <> Value then begin FLayerType := Value; if not (csDesigning in ComponentState) then begin ResetLayerType (Value); FPFDChanged := True; end; end; end; procedure TGLPanel.SetColorBits (Value: Cardinal); begin FColorBits := Value; end; procedure TGLPanel.SetDepthBits (Value: Cardinal); begin FDepthBits := Value; end; function TGLPanel.GetFlags : TPFDFlags; begin GetFlags := FFlags; end; function TGLPanel.GetPixelType: TPFDPixelTypes; begin GetPixelType := FPixelType; end; function TGLPanel.GetLayerType: TPFDLayerTypes; begin GetLayerType := FLayerType; end; function TGLPanel.GetColorBits: Cardinal; begin GetColorBits := FColorBits; end; function TGLPanel.GetDepthBits: Cardinal; begin GetDepthBits := FDepthBits; end; procedure TGLPanel.Paint; begin end; procedure TGLPanel.NewGLPrep; begin if Assigned(OnGLPrep) then OnGLPrep(self); if Assigned(OnResize) then OnResize(self); end; procedure TGLPanel.NewPaint; var ps : TPaintStruct; begin // inherited; if not (csDesigning in ComponentState) then begin // Draw the scene. if FPFDChanged then SetDCPixelFormat; if FFirstTimeInFlag then begin FFirstTimeInFlag := False; // Create a rendering context. InitOpenGL; {If you get a compile error on this} DC := GetDC(Handle); {line, you need to go in to the} SetDCPixelFormat; {delphi5\source\rtl\win\ folder and} hrc := wglCreateContext(DC); {rename opengl.pas to opengl_old.pas} {and delete the delphi5\lib\opengl.dcu} CheckCurrent; {Also, make sure the pythian } {source\units is in your lib path} if Assigned(OnGLInit) then OnGlInit(self); { if Assigned(OnGLPrep) then OnGLPrep(self); if Assigned(OnResize) then OnResize(self);} end else CheckCurrent; BeginPaint(Handle, ps); if Assigned(OnGLDraw) then OnGLDraw(self); if GLf_DOUBLEBUFFER in FFlags then SwapBuffers(DC); EndPaint(Handle, ps); end; end; constructor TGLPanel.Create(AOwner: TComponent); begin inherited Create(AOwner); FPFDChanged := False; FPixelType := [GLp_TYPE_RGBA]; FFlags := [GLf_DRAW_TO_WINDOW, GLf_SUPPORT_OPENGL, GLf_DOUBLEBUFFER]; FLayerType := [GLL_MAIN_PLANE]; FColorBits := 24; FDepthBits := 32; ResetFlags(FFlags); ResetPixelType(FPixelType); ResetLayerType(FLayerType); FFirstTimeInFlag := True; end; destructor TGLPanel.Destroy; begin if not (csDesigning in ComponentState) then begin // Clean up and terminate. IF not(FFirstTimeInFlag) then begin wglMakeCurrent(0, 0); wglDeleteContext(hrc); end; if (Palette <> 0) then DeleteObject(Palette); end; inherited; end; procedure TGLPanel.GLReDraw; begin NewPaint; end; procedure TGLPanel.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin CheckCurrent; inherited; end; procedure TGLPanel.MouseMove(Shift: TShiftState; X, Y: Integer); begin CheckCurrent; inherited; end; procedure TGLPanel.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin CheckCurrent; inherited; end; procedure Register; begin RegisterComponents('Pythian', [TGLPanel]); end; end. --- NEW FILE --- ÿ Font.ColorclWindowTextFont.Heightõ Font.Name MS Sans Serif Font.Style TextHeight Font.ColorclMaroonFont.Heightí Font.NameArial Font.StylefsBoldfsItalic ParentFont Font.ColorclMaroonFont.Heightí Font.NameArial Font.StylefsBoldfsItalic ParentFont Font.ColorclMaroonFont.Heightí Font.NameArial Font.StylefsBoldfsItalic ParentFont --- NEW FILE --- ///////////////////////////////////////////////////////////////////////// // Industrial Software Solutions // 4205 Hideaway // Arlington, Texas 76017 // Mitchell E. James // May 18, 1996 // mj...@cy... // http://www.cyberhighway.net/~mjames/ unit GLUnit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, Gl, Glu, StdCtrls, GLPanel; const DRAWCUBE = 1; type TForm1 = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; Timer1: TTimer; TrackBar1: TTrackBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GLPanel1: TGLPanel; procedure GLPanel1GLDraw(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure GLPanel1GLInit(Sender: TObject); procedure GLPanel1GLPrep(Sender: TObject); procedure SetProjection(Sender: TObject); private { Private declarations } Angle: GLfloat; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.GLPanel1GLDraw(Sender: TObject); var i, j, k: GLdouble; begin // // Clear the color and depth buffers. // glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // // Define the modelview transformation. // glMatrixMode(GL_MODELVIEW); glLoadIdentity; glTranslatef(0.0, 0.0, -32.0); glRotatef(30.0, 1.0, 0.0, 0.0); glRotatef(Angle, 0.0, 1.0, 0.0); // // Draw a three-dimensional array of cubes. // i := -3.0; while (i <= 3.0) do begin j := -3.0; while (j <= 3.0) do begin k := -3.0; while (k <= 3.0) do begin glPushMatrix; glTranslatef(i, j, k); glCallList(DRAWCUBE); glPopMatrix; k := k + 3.0; end; j := j + 3.0; end; i := i + 3.0; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Angle := Angle + 2.0; if (Angle >= 90.0) then Angle := 0.0; Label1.Caption := FloatToStr(Timer1.Interval); GLPanel1.GLReDraw; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin Timer1.Interval := TrackBar1.Position * 10; end; procedure TForm1.GLPanel1GLInit(Sender: TObject); const glfLightAmbient : Array[0..3] of GLfloat = (0.1, 0.1, 0.1, 1.0); glfLightDiffuse : Array[0..3] of GLfloat = (0.7, 0.7, 0.7, 1.0); glfLightSpecular: Array[0..3] of GLfloat = (0.0, 0.0, 0.0, 1.0); begin // // Enable depth testing and backface culling. // glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); Timer1.Interval := TrackBar1.Position * 10; // // Add a light to the scene. // glLightfv(GL_LIGHT0, GL_AMBIENT, @glfLightAmbient); glLightfv(GL_LIGHT0, GL_DIFFUSE, @glfLightDiffuse); glLightfv(GL_LIGHT0, GL_SPECULAR,@glfLightSpecular); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); end; procedure TForm1.SetProjection(Sender: TObject); var gldAspect : GLdouble; begin // Redefine the viewing volume and viewport when the window size changes. gldAspect := GLPanel1.Width / GLPanel1.Height; glMatrixMode(GL_PROJECTION); glLoadIdentity; gluPerspective(30.0, // Field-of-view angle gldAspect, // Aspect ratio of viewing volume 1.0, // Distance to near clipping plane 100.0); // Distance to far clipping plane glViewport(0, 0, GLPanel1.Width, GLPanel1.Height); InvalidateRect(Handle, nil, False); end; procedure TForm1.GLPanel1GLPrep(Sender: TObject); const glfMaterialColor: Array[0..3] of GLfloat = (0.0, 0.0, 1.0, 1.0); begin glNewList(DRAWCUBE, GL_COMPILE); // // Define the reflective properties of the cube's faces. // glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, @glfMaterialColor); // // Draw the six faces of the cube. // glBegin(GL_POLYGON); glNormal3f(0.0, 0.0, 1.0); glVertex3f(1.0, 1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); glVertex3f(1.0, -1.0, 1.0); glEnd; glBegin(GL_POLYGON); glNormal3f(0.0, 0.0, -1.0); glVertex3f(1.0, 1.0, -1.0); glVertex3f(1.0, -1.0, -1.0); glVertex3f(-1.0, -1.0, -1.0); glVertex3f(-1.0, 1.0, -1.0); glEnd; glBegin(GL_POLYGON); glNormal3f(-1.0, 0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); glVertex3f(-1.0, -1.0, -1.0); glVertex3f(-1.0, -1.0, 1.0); glEnd; glBegin(GL_POLYGON); glNormal3f(1.0, 0.0, 0.0); glVertex3f(1.0, 1.0, 1.0); glVertex3f(1.0, -1.0, 1.0); glVertex3f(1.0, -1.0, -1.0); glVertex3f(1.0, 1.0, -1.0); glEnd; glBegin(GL_POLYGON); glNormal3f(0.0, 1.0, 0.0); glVertex3f(-1.0, 1.0, -1.0); glVertex3f(-1.0, 1.0, 1.0); glVertex3f(1.0, 1.0, 1.0); glVertex3f(1.0, 1.0, -1.0); glEnd; glBegin(GL_POLYGON); glNormal3f(0.0, -1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); glVertex3f(1.0, -1.0, -1.0); glVertex3f(1.0, -1.0, 1.0); glVertex3f(-1.0, -1.0, 1.0); glEnd; glEndList (); end; end. --- 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 -LNe:\program files\borland\delphi4\Lib -Z --- NEW FILE --- [Compiler] A=1 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=0 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= Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams= HostApplication= [Version Info] IncludeVerInfo=1 AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 Locale=1033 CodePage=1252 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= --- NEW FILE --- package glPanelPkg; {$R *.RES} {$R 'Glpanel.dcr'} {$ALIGN ON} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS OFF} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST ON} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$IMPLICITBUILD OFF} requires vcl40; contains GLPanel in 'Glpanel.pas'; end. --- NEW FILE --- |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:18:47
|
Update of /cvsroot/pythianproject/PythianProject/Source/Utilities/Trace In directory usw-pr-cvs1:/tmp/cvs-serv16943 Added Files: ABOUT.DFM ABOUT.PAS DGCTRACE.DFM DGCTRACE.PAS README.TXT TRACEWIN.DOF TRACEWIN.DPR TRACEWIN.ICO TRACEWIN.RES Log Message: kk ... everything --- NEW FILE --- [Compiler] A=1 B=0 C=0 D=0 E=0 F=0 G=1 H=1 I=1 J=1 K=0 L=0 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=0 Z=1 ShowHints=0 ShowWarnings=0 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] OutputDir= SearchPath= Conditionals= [Parameters] RunParams= |
Update of /cvsroot/pythianproject/PythianProject/Source/MainEngine/Tank Server In directory usw-pr-cvs1:/tmp/cvs-serv8009/Source/MainEngine/Tank Server Added Files: TankServer.cfg TankServer.dof TankServer.dpr TankServer.res uServerName.dfm uServerName.pas Log Message: kk ... everything ***** Bogus filespec: Server ***** Error reading new file: [Errno 2] No such file or directory: 'TankServer.cfg' ***** Error reading new file: [Errno 2] No such file or directory: 'TankServer.dof' ***** Error reading new file: [Errno 2] No such file or directory: 'TankServer.dpr' ***** Error reading new file: [Errno 2] No such file or directory: 'TankServer.res' ***** Error reading new file: [Errno 2] No such file or directory: 'uServerName.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'uServerName.pas' |
Update of /cvsroot/pythianproject/PythianProject/Source/MainEngine In directory usw-pr-cvs1:/tmp/cvs-serv8009/Source/MainEngine Added Files: Bass.pas BassPlayerEngines.pas CharEngines.pas DMusicPlayerEngines.pas Dynamic_Bass.pas GUIEngines.pas GameEngines.pas GraphicsEngines.pas InputEngines.pas InputKeys.pas MPEGPlay.pas Main.dfm Main.pas MainEngine.cfg MainEngine.dof MainEngine.dpr MainEngine.dsk MainEngine.res MapEngines.pas Mp3PlayerEngines.pas MusicEngines.pas PhysicsEngines.pas SoundEngines.pas TankChars.pas TankEngines.pas readme.txt readme_bass.txt uConsts.pas Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'Bass.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'BassPlayerEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'CharEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'DMusicPlayerEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'Dynamic_Bass.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'GUIEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'GameEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'GraphicsEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'InputEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'InputKeys.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'MPEGPlay.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'Main.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'Main.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'MainEngine.cfg' ***** Error reading new file: [Errno 2] No such file or directory: 'MainEngine.dof' ***** Error reading new file: [Errno 2] No such file or directory: 'MainEngine.dpr' ***** Error reading new file: [Errno 2] No such file or directory: 'MainEngine.dsk' ***** Error reading new file: [Errno 2] No such file or directory: 'MainEngine.res' ***** Error reading new file: [Errno 2] No such file or directory: 'MapEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'Mp3PlayerEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'MusicEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'PhysicsEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'SoundEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'TankChars.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'TankEngines.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'readme.txt' ***** Error reading new file: [Errno 2] No such file or directory: 'readme_bass.txt' ***** Error reading new file: [Errno 2] No such file or directory: 'uConsts.pas' |
Update of /cvsroot/pythianproject/PythianProject/Source/LevelEditor In directory usw-pr-cvs1:/tmp/cvs-serv8009/Source/LevelEditor Added Files: AutoTexUtils.pas CarvingToolForm.dfm CarvingToolForm.pas EditorClipboardOp.pas EditorSectors.pas ExStrUt.pas ImportMaps.pas InsertSectorForm.dfm InsertSectorForm.pas InsertSolidForm.dfm InsertSolidForm.pas LockNodesForm.dfm LockNodesForm.pas LvlEdit.cfg LvlEdit.dof LvlEdit.dpr LvlEdit.dsk LvlEdit.res Main.dfm Main.pas ObjEditForm.dfm ObjEditForm.pas ObjPropEditorForm.dfm ObjPropEditorForm.pas ObjectClassForm.dfm ObjectClassForm.pas OptionsForm.dfm OptionsForm.pas PortalForm.dfm PortalForm.pas ProgrsForm.dfm ProgrsForm.pas ReportForm.dfm ReportForm.pas SectorShapes.pas SelectSectorsForm.dfm SelectSectorsForm.pas SplitPanelForm.dfm SplitPanelForm.pas TexEdForm.dfm TexEdForm.pas TransformForm.dfm TransformForm.pas TreeNT.zip ViewProcs.pas Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'AutoTexUtils.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'CarvingToolForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'CarvingToolForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'EditorClipboardOp.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'EditorSectors.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ExStrUt.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ImportMaps.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'InsertSectorForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'InsertSectorForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'InsertSolidForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'InsertSolidForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'LockNodesForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'LockNodesForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'LvlEdit.cfg' ***** Error reading new file: [Errno 2] No such file or directory: 'LvlEdit.dof' ***** Error reading new file: [Errno 2] No such file or directory: 'LvlEdit.dpr' ***** Error reading new file: [Errno 2] No such file or directory: 'LvlEdit.dsk' ***** Error reading new file: [Errno 2] No such file or directory: 'LvlEdit.res' ***** Error reading new file: [Errno 2] No such file or directory: 'Main.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'Main.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjEditForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjEditForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjPropEditorForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjPropEditorForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjectClassForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'ObjectClassForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'OptionsForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'OptionsForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'PortalForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'PortalForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ProgrsForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'ProgrsForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'ReportForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'ReportForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'SectorShapes.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'SelectSectorsForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'SelectSectorsForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'SplitPanelForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'SplitPanelForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'TexEdForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'TexEdForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'TransformForm.dfm' ***** Error reading new file: [Errno 2] No such file or directory: 'TransformForm.pas' ***** Error reading new file: [Errno 2] No such file or directory: 'TreeNT.zip' ***** Error reading new file: [Errno 2] No such file or directory: 'ViewProcs.pas' |
Update of /cvsroot/pythianproject/PythianProject/Bin/DATA/textures In directory usw-pr-cvs1:/tmp/cvs-serv8009/Bin/DATA/textures Added Files: Ceilar.jpg Clouds.jpg Europa.png FLAME1.jpg FLAME2.jpg FLAME3.jpg FLAME4.jpg FLAME5.jpg FLAME6.jpg FLAME7.jpg FLAME8.jpg FireTex.bmp GLOW.jpg GRYDIRT1.JPG Hueteotl.bmp LIMESTO4.jpg MagicTex.bmp Moon.png Stars.jpg Sunbase.jpg Sunflare.jpg blocks10.jpg blocks11b.jpg blocks15.jpg chicken.bmp concrete2.bmp darkwood2.bmp dirt2.bmp flare.atf grass2.bmp killtrim.jpg lightflare.jpg metal2.bmp mud2.bmp river2.jpg rock1.bmp ruffmet.bmp stone2.bmp walkway.jpg wall2.bmp wood2.bmp Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'Ceilar.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'Clouds.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'Europa.png' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME1.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME2.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME3.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME4.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME5.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME6.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME7.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FLAME8.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'FireTex.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'GLOW.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'GRYDIRT1.JPG' ***** Error reading new file: [Errno 2] No such file or directory: 'Hueteotl.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'LIMESTO4.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'MagicTex.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'Moon.png' ***** Error reading new file: [Errno 2] No such file or directory: 'Stars.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'Sunbase.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'Sunflare.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'blocks10.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'blocks11b.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'blocks15.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'chicken.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'concrete2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'darkwood2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'dirt2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'flare.atf' ***** Error reading new file: [Errno 2] No such file or directory: 'grass2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'killtrim.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'lightflare.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'metal2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'mud2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'river2.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'rock1.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'ruffmet.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'stone2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'walkway.jpg' ***** Error reading new file: [Errno 2] No such file or directory: 'wall2.bmp' ***** Error reading new file: [Errno 2] No such file or directory: 'wood2.bmp' |
Update of /cvsroot/pythianproject/PythianProject/Bin/DATA/models In directory usw-pr-cvs1:/tmp/cvs-serv8009/Bin/DATA/models Added Files: Guy.pmf Hueteotl.pmf Missle.pmf Table.pmf Tank.pmf Torch.pmf chicken.pmf rock1.pmf tree1.pmf Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'Missle.pmf' ***** Error reading new file: [Errno 2] No such file or directory: 'Table.pmf' ***** Error reading new file: [Errno 2] No such file or directory: 'Tank.pmf' ***** Error reading new file: [Errno 2] No such file or directory: 'Torch.pmf' ***** Error reading new file: [Errno 2] No such file or directory: 'chicken.pmf' |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:04:36
|
Update of /cvsroot/pythianproject/PythianProject/Source/DirectX7 In directory usw-pr-cvs1:/tmp/cvs-serv8009/Source/DirectX7 Added Files: DirectX7.zip Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'DirectX7.zip' |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:04:36
|
Update of /cvsroot/pythianproject/PythianProject/Bin/DATA/maps In directory usw-pr-cvs1:/tmp/cvs-serv8009/Bin/DATA/maps Added Files: House052d.pem temple01.pem Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'House052d.pem' ***** Error reading new file: [Errno 2] No such file or directory: 'temple01.pem' |
From: Kamil K. <kkr...@us...> - 2001-08-08 20:04:36
|
Update of /cvsroot/pythianproject/PythianProject/Source/AIDesigner In directory usw-pr-cvs1:/tmp/cvs-serv8009/Source/AIDesigner Added Files: AIDesigner.cfg AIDesigner.dof AIDesigner.dpr AIDesigner.res AIEditorMainForm.dfm AIEditorMainForm.pas DesignerEngine.pas ScriptIcon.bmp aiIcon.bmp aimlFileIcon.bmp goalIcon.bmp ideaIcon.bmp keyIcon.bmp keysetIcon.bmp questionIcon.bmp stimIcon.bmp walisten.bmp Log Message: kk ... everything ***** Error reading new file: [Errno 2] No such file or directory: 'walisten.bmp' |