mirror of
https://github.com/UberGames/GtkRadiant.git
synced 2024-11-10 06:31:41 +00:00
basic architecture for game configuration at runtime. writes out a .game, no sanity checks, does not copy any game pak data
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@192 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
parent
0975f4af11
commit
1099f571fe
51 changed files with 340 additions and 33937 deletions
0
ChangeLog
Normal file
0
ChangeLog
Normal file
10
TODO
Normal file
10
TODO
Normal file
|
@ -0,0 +1,10 @@
|
|||
- add browse buttons to CGameInstall dialog for engine folder
|
||||
|
||||
- copy content, only generating the .game atm
|
||||
|
||||
- delete .game files? should we also delete files that were copied?
|
||||
|
||||
- when doing Q3 + mod, the mod has to be setup in the preferences
|
||||
(that's a bit awkward)
|
||||
|
||||
- the game list reload doesn't work right, the entries in the combo probably need to be initialized again
|
|
@ -152,9 +152,11 @@ class Config:
|
|||
env.Append( CPPDEFINES = [ 'Q_NO_STLPORT' ] )
|
||||
if ( config == 'debug' ):
|
||||
env.Append( CFLAGS = [ '-g' ] )
|
||||
env.Append( CXXFLAGS = [ '-g' ] )
|
||||
env.Append( CPPDEFINES = [ '_DEBUG' ] )
|
||||
else:
|
||||
env.Append( CFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations' ] )
|
||||
env.Append( CXXFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations' ] )
|
||||
#env.Append( CFLAGS = [ '-march=pentium3' ] )
|
||||
|
||||
# env.Append( LINKFLAGS = [ '-m32' ] )
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
*.BAK
|
File diff suppressed because it is too large
Load diff
|
@ -1,130 +0,0 @@
|
|||
usefull global variables in Radiant:
|
||||
g_strAppPath has the path to the binary
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
using prefs / ini settings:
|
||||
are stored in Radiant.ini and *.bin files
|
||||
win32:
|
||||
looks in the current directory for a Radiant.ini file
|
||||
if found, will use it and set the ini directory to the proper location
|
||||
if not found:
|
||||
the registry has a path to the default directory?
|
||||
under key HKEY_CURRENT_USER/Software/GtkRadiant/PrimaryEditorPath
|
||||
(DefaultEditorPath cause that gets used for
|
||||
if the key doesn't exist create in current directory and set the key
|
||||
NOTE: need some registry version info, when we find in another dir than ours,
|
||||
check version and prompt to use existing settings or our own?
|
||||
|
||||
storing version information:
|
||||
each build publicly released should have a version string
|
||||
- use it in the about box
|
||||
- store it in the Radiant.ini file
|
||||
- use it in the registry GtkRadiant/
|
||||
do we need major and minor? minor could be used for versions that don't break .ini compatibility
|
||||
(well I'm lazy .. won't do)
|
||||
|
||||
linux:
|
||||
look in the current directory (check write permission!)
|
||||
if found, use it
|
||||
if not found:
|
||||
look in ~/.q3a/radiant
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
icons:
|
||||
look for bitmaps/ under g_strAppPath
|
||||
win32:
|
||||
if not found, use DefaultEditorPath registry key and try to locate there
|
||||
linux:
|
||||
we also need a DefaultEditorPath kind of thing?
|
||||
somewhere in ~/.q3a/radiant?
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
project file:
|
||||
Radiant.ini must have full path to the project file
|
||||
if no project file path:
|
||||
win32:
|
||||
we have to locate BASEPATH one way or the other. we have code that will look for the
|
||||
main directory and go down into baseq3/scripts. If that fails we prompt the user.
|
||||
it would be good to store BASEPATH in the .ini as well!
|
||||
linux:
|
||||
store path to Radiant installation somewhere in ~/.q3a/radiant
|
||||
if not found try some defaults and prompt the user
|
||||
|
||||
NOTE: on linux radiant is in /usr/local/games/quake3/ instead of some
|
||||
quake3/tools directory. This makes looking for the basepath easier.
|
||||
|
||||
g_PrefsDlg.m_strLastProject points to the project to be loaded
|
||||
if radiant cannot find it at startup it will try to guess and/or ask the user
|
||||
once the project file is loaded you can deduce a lot of things..
|
||||
but project file parsing has some prerequisites: __QERPATH / __QERHOMEPATH ??
|
||||
need to unify between win32 and linux!
|
||||
PrefsDlg has a bunch of defaults, but it must not try to guess
|
||||
__QERPATH and __QERHOMEPATH until there has been an ini load (or a lack of)
|
||||
the involved members are:
|
||||
m_strQuake2 <- points to the engine path, renamed to m_strBasePath m_strEngine
|
||||
m_strPAKFile <- built from m_strBasePath, removed (not used?)
|
||||
and: need to add more, like map compilers directory m_strToolsPath
|
||||
|
||||
project file syntax:
|
||||
linux version is using __QERPATH / __QERHOMEPATH
|
||||
win32 has __Q2PATH __QERPATH
|
||||
and the overall syntax is different!
|
||||
|
||||
big problem is user customization, it performs expansion and saves with static
|
||||
paths. but we'd like to keep the original one with generic naming. (cause if the
|
||||
config fucks up and user reinstalls he'll still get broken project settings)
|
||||
so: we try to load quake.qe4 project, expand it, and save as user.qe4
|
||||
(on linux, user.qe4 goes in ~/.q3a/baseq3/scripts)
|
||||
|
||||
TODO: how is "New project" supposed to work? would copy the current project..
|
||||
TODO: get rid of m_bLoadLast .. we require having a project loaded for use?
|
||||
TODO: store path to the tools in prefs? (see usage for project file expansion?)
|
||||
-> so you can use q3map in a given dir etc?
|
||||
|
||||
unifying project file syntaxes:
|
||||
|
||||
get rid of BuildShortPathName things!
|
||||
|
||||
-----------------------------------------------------------------
|
||||
some common operations and portable code:
|
||||
document XP use of stat, checking for directory / file existence
|
||||
|
||||
how to have code that reads well across XP:
|
||||
don't use TABS, have them emulated to 2 spaces
|
||||
|
||||
-----------------------------------------------------------------
|
||||
project files:
|
||||
unless we rewrite a whole bunch of it from scratch there's no much
|
||||
hope for evolution of the project files. Nevertheless, introduced
|
||||
a new "version" key that describes the version of the project file.
|
||||
version 2 adds a # keyword for q3map global options
|
||||
NOTE: and it's a compatibility nightmare, we can't call this one
|
||||
quake.qe4 or default.qe4 cause it will break backward compatibility
|
||||
|
||||
-----------------------------------------------------------------
|
||||
monitoring BSP process:
|
||||
we monitor through network connections
|
||||
we need to stop the process if an error occurs during one of the three steps
|
||||
and launch quake3 when all is done
|
||||
we don't want to CreateProcess and watch cause for rsh mode it will return immediately
|
||||
a BSP process is decomposed in several steps and we expect a connection at each step
|
||||
- later we can add custom steps that don't net connect and then we just spawn and
|
||||
watch them
|
||||
- we could add a name to the step to identify them, for now we'll just assume
|
||||
the first connection that we get is the one of the process we spawned
|
||||
when we loose the connection we wait one sec and spawn the next one...
|
||||
- we don't use batch file, just produce the command lines for each steps, the batch file
|
||||
will be produced only if we don't monitor the process (we can add an option to output
|
||||
the BAT file anyway)
|
||||
|
||||
what stuff goes in prefs? "Monitor BSP process"
|
||||
|
||||
detecting when the socket closes?
|
||||
using select() one can detect if a socket has closed or if there's some input
|
||||
NOTE: when launching a new BSP process we may still be connected. Need to ask the user
|
||||
about overridding and closing current connection.
|
||||
|
||||
in prefs, boolean flag for process monitoring .. g_PrefsDlg.m_bWatchBSP
|
||||
|
||||
when running in monitored mode, the BSP watcher is in charge of spawning and watching
|
||||
the processes (and more later when it will be parsing the output).
|
|
@ -1,33 +0,0 @@
|
|||
find and xargs:
|
||||
<TTimo> I need to remember that grep trick
|
||||
<Mercury> 'find -type f | xargs grep -n whatever' is handy..
|
||||
<Mercury> find -type f -name '*.[ch]' is even better at times.
|
||||
|
||||
stdout / stderr redirections:
|
||||
make -f makefile.cygwin 2> err.log
|
||||
make -f makefile.cygwin >& full.log
|
||||
|
||||
escape shell expansion:
|
||||
find gtk-20001023 -name "*.zip" -exec unzip {} \;
|
||||
find and -exec:
|
||||
find //c/Donwload/Gtk-20001226 -name '*src*zip' -exec unzip {} \;
|
||||
find //c/Donwload/Gtk-20001226 -name '*dev*zip' -exec unzip {} \;
|
||||
|
||||
simple encryption for /etc/passwd entries:
|
||||
perl -e 'print crypt("password","hk");'
|
||||
|
||||
debian and /etc/init.d
|
||||
update-rc.d
|
||||
|
||||
silly hint on sed and regexp:
|
||||
cat bspfile.c | sed -e 's/\([^_]\)malloc/\1safe_malloc/' | grep malloc
|
||||
|
||||
*poke 10*
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
|
@ -1,76 +0,0 @@
|
|||
<?xml version = "1.0" encoding = "ISO-8859-1" ?>
|
||||
<!DOCTYPE argo SYSTEM "argo.dtd" >
|
||||
<argo>
|
||||
<documentation>
|
||||
<authorname></authorname>
|
||||
<version></version>
|
||||
<description>
|
||||
|
||||
</description>
|
||||
</documentation>
|
||||
|
||||
<searchpath href="PROJECT_DIR" />
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_classdiagram1.pgml"
|
||||
/>
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_usecasediagram1.pgml"
|
||||
/>
|
||||
<member
|
||||
type="xmi"
|
||||
name="Inspectors.xmi"
|
||||
/>
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_collaborationdiagram1.pgml"
|
||||
/>
|
||||
<historyfile name="" />
|
||||
<stats>
|
||||
<stat name="clicksInToDoPane"
|
||||
value="0" />
|
||||
<stat name="dblClicksInToDoPane"
|
||||
value="0" />
|
||||
<stat name="longestToDoList"
|
||||
value="56" />
|
||||
<stat name="longestAdd"
|
||||
value="0" />
|
||||
<stat name="longestHot"
|
||||
value="0" />
|
||||
<stat name="numCriticsFired"
|
||||
value="54081" />
|
||||
<stat name="numNotValid"
|
||||
value="10" />
|
||||
<stat name="numCriticsApplied"
|
||||
value="0" />
|
||||
<stat name="toDoPerspectivesChanged"
|
||||
value="0" />
|
||||
<stat name="navPerspectivesChanged"
|
||||
value="0" />
|
||||
<stat name="clicksInNavPane"
|
||||
value="42" />
|
||||
<stat name="numFinds"
|
||||
value="0" />
|
||||
<stat name="numJumpToRelated"
|
||||
value="0" />
|
||||
<stat name="numDecisionModel"
|
||||
value="0" />
|
||||
<stat name="numGoalsModel"
|
||||
value="0" />
|
||||
<stat name="numCriticBrowser"
|
||||
value="0" />
|
||||
<stat name="numNavConfig"
|
||||
value="0" />
|
||||
<stat name="numHushes"
|
||||
value="0" />
|
||||
<stat name="numChecks"
|
||||
value="0" />
|
||||
<stat name="Num_Button_Clicks"
|
||||
value="3" />
|
||||
<stat name="Drags_To_New"
|
||||
value="0" />
|
||||
<stat name="Drags_To_Existing"
|
||||
value="1" />
|
||||
</stats>
|
||||
</argo>
|
|
@ -1,247 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE XMI SYSTEM "uml13.dtd">
|
||||
<XMI xmi.version="1.0">
|
||||
<XMI.header>
|
||||
<XMI.metamodel xmi.name="UML" xmi.version="1.3"/>
|
||||
</XMI.header>
|
||||
<XMI.content>
|
||||
<Model_Management.Model xmi.id="xmi.1" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-8000">
|
||||
<Foundation.Core.ModelElement.name>Surface inspectors</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Namespace.ownedElement>
|
||||
<Foundation.Core.Class xmi.id="xmi.2" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7fff">
|
||||
<Foundation.Core.ModelElement.name>SurfaceDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.3"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Classifier.feature>
|
||||
<Foundation.Core.Operation xmi.id="xmi.4">
|
||||
<Foundation.Core.ModelElement.name>Toggle</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.BehavioralFeature.isQuery xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.BehavioralFeature.parameter>
|
||||
<Foundation.Core.Parameter xmi.id="xmi.5">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.Parameter.kind xmi.value="return"/>
|
||||
<Foundation.Core.Parameter.behavioralFeature>
|
||||
<Foundation.Core.Operation xmi.idref="xmi.4"/>
|
||||
</Foundation.Core.Parameter.behavioralFeature>
|
||||
<Foundation.Core.Parameter.type>
|
||||
<Foundation.Core.Class xmi.idref="xmi.6"/>
|
||||
</Foundation.Core.Parameter.type>
|
||||
</Foundation.Core.Parameter>
|
||||
</Foundation.Core.BehavioralFeature.parameter>
|
||||
</Foundation.Core.Operation>
|
||||
<Foundation.Core.Attribute xmi.id="xmi.7">
|
||||
<Foundation.Core.ModelElement.name>activeInspectors</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.visibility xmi.value="public"/>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.Attribute.initialValue>
|
||||
<Foundation.Data_Types.Expression xmi.id="xmi.8">
|
||||
<Foundation.Data_Types.Expression.language>Java</Foundation.Data_Types.Expression.language>
|
||||
<Foundation.Data_Types.Expression.body>0</Foundation.Data_Types.Expression.body>
|
||||
</Foundation.Data_Types.Expression>
|
||||
</Foundation.Core.Attribute.initialValue>
|
||||
<Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.StructuralFeature.type>
|
||||
<Foundation.Core.Class xmi.idref="xmi.9"/>
|
||||
</Foundation.Core.StructuralFeature.type>
|
||||
</Foundation.Core.Attribute>
|
||||
</Foundation.Core.Classifier.feature>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.10" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7ffc">
|
||||
<Foundation.Core.ModelElement.name>Dialog</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.specialization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.3"/>
|
||||
</Foundation.Core.GeneralizableElement.specialization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.3" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7ffb">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.10"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.6">
|
||||
<Foundation.Core.ModelElement.name>void</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.11" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffe">
|
||||
<Foundation.Core.ModelElement.name>ISurfaceDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.specialization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.12"/>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.13"/>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.14"/>
|
||||
</Foundation.Core.GeneralizableElement.specialization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.15" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffa">
|
||||
<Foundation.Core.ModelElement.name>CQ3BrushDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.12"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.12" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff9">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.15"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.16" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff7">
|
||||
<Foundation.Core.ModelElement.name>CQ3PatchDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.13"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.13" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff6">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.16"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.17" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff5">
|
||||
<Foundation.Core.ModelElement.name>COtherGameDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.14"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.14" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff4">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.17"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Model_Management.Package xmi.id="xmi.18" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff3">
|
||||
<Foundation.Core.ModelElement.name>Undo / Redo code</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Model_Management.Package>
|
||||
<Model_Management.Package xmi.id="xmi.19" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff2">
|
||||
<Foundation.Core.ModelElement.name>Messaging API</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Model_Management.Package>
|
||||
<Foundation.Core.Class xmi.id="xmi.20">
|
||||
<Foundation.Core.ModelElement.name>int</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.9">
|
||||
<Foundation.Core.ModelElement.name>list</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
</Foundation.Core.Namespace.ownedElement>
|
||||
</Model_Management.Model>
|
||||
</XMI.content>
|
||||
</XMI>
|
|
@ -1,571 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLClassDiagram|-93--68-50-122-179f67:e1b3a63c86:-8000"
|
||||
name="class diagram 1"
|
||||
>
|
||||
<group name="Fig0"
|
||||
description="uci.uml.visual.FigClass[33, 144, 103, 80]"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7fff"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig0.0"
|
||||
x="34"
|
||||
y="145"
|
||||
width="101"
|
||||
height="78"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
/>
|
||||
<text name="Fig0.1"
|
||||
x="33"
|
||||
y="144"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>SurfaceDlg</text>
|
||||
<text name="Fig0.2"
|
||||
x="33"
|
||||
y="161"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>public int newAttr = 0</text>
|
||||
<text name="Fig0.3"
|
||||
x="33"
|
||||
y="192"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>void Toggle()</text>
|
||||
</group>
|
||||
<group name="Fig1"
|
||||
description="uci.uml.visual.FigClass[33, 40, 97, 60]"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7ffc"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig1.0"
|
||||
x="34"
|
||||
y="41"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
/>
|
||||
<text name="Fig1.1"
|
||||
x="33"
|
||||
y="40"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Dialog</text>
|
||||
<text name="Fig1.2"
|
||||
x="33"
|
||||
y="57"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig1.3"
|
||||
x="33"
|
||||
y="78"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig3"
|
||||
x="149"
|
||||
y="192"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Toggle hide/shows SurfaceDlg
|
||||
replace DoSurface and ByeByeSurfaceDialog</text>
|
||||
<group name="Fig4"
|
||||
description="uci.uml.visual.FigClass[32, 256, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffe"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig4.0"
|
||||
x="33"
|
||||
y="257"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig4.1"
|
||||
x="32"
|
||||
y="256"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>ISurfaceDlg</text>
|
||||
<text name="Fig4.2"
|
||||
x="32"
|
||||
y="273"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig4.3"
|
||||
x="32"
|
||||
y="294"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig5"
|
||||
x="140"
|
||||
y="256"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Available in the plugin API
|
||||
defined in ISurfacePlugin.h</text>
|
||||
<group name="Fig6"
|
||||
description="uci.uml.visual.FigClass[32, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffa"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig6.0"
|
||||
x="33"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig6.1"
|
||||
x="32"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>CQ3BrushDlg</text>
|
||||
<text name="Fig6.2"
|
||||
x="32"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig6.3"
|
||||
x="32"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<group name="Fig8"
|
||||
description="uci.uml.visual.FigClass[153, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff7"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig8.0"
|
||||
x="154"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig8.1"
|
||||
x="153"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>CQ3PatchDlg</text>
|
||||
<text name="Fig8.2"
|
||||
x="153"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig8.3"
|
||||
x="153"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig10"
|
||||
x="70"
|
||||
y="448"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>These two hardcoded in Radiant</text>
|
||||
<group name="Fig11"
|
||||
description="uci.uml.visual.FigClass[288, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff5"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig11.0"
|
||||
x="289"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig11.1"
|
||||
x="288"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>COtherGameDlg</text>
|
||||
<text name="Fig11.2"
|
||||
x="288"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig11.3"
|
||||
x="288"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig13"
|
||||
x="284"
|
||||
y="448"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Implemented in a plugin</text>
|
||||
<group name="Fig14"
|
||||
description="uci.uml.visual.FigPackage[520, 16, 140, 100]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff3"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig14.0"
|
||||
x="521"
|
||||
y="17"
|
||||
width="138"
|
||||
height="98"
|
||||
fill="0"
|
||||
stroke="0"
|
||||
/>
|
||||
<text name="Fig14.1"
|
||||
x="520"
|
||||
y="16"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Undo / Redo code</text>
|
||||
<text name="Fig14.2"
|
||||
x="520"
|
||||
y="34"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
></text>
|
||||
</group>
|
||||
<group name="Fig15"
|
||||
description="uci.uml.visual.FigPackage[520, 128, 140, 100]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff2"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig15.0"
|
||||
x="521"
|
||||
y="129"
|
||||
width="138"
|
||||
height="98"
|
||||
fill="0"
|
||||
stroke="0"
|
||||
/>
|
||||
<text name="Fig15.1"
|
||||
x="520"
|
||||
y="128"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Messaging API</text>
|
||||
<text name="Fig15.2"
|
||||
x="520"
|
||||
y="146"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig16"
|
||||
x="378"
|
||||
y="144"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Selection / Deselection messages</text>
|
||||
<text name="Fig17"
|
||||
x="341"
|
||||
y="32"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Store a snapshot of something for later use</text>
|
||||
<text name="Fig18"
|
||||
x="141"
|
||||
y="152"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>List of the SurfaceDlg objects we currently need
|
||||
Updated on the way when we get messages</text>
|
||||
<group name="Fig2"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7ffb"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig0"
|
||||
destPortFig="Fig1"
|
||||
sourceFigNode="Fig0"
|
||||
destFigNode="Fig1"
|
||||
</private>
|
||||
<path name="Fig2.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="80"
|
||||
y="144" />
|
||||
<lineto x="80"
|
||||
y="100" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig7"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff9"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig6"
|
||||
destPortFig="Fig4"
|
||||
sourceFigNode="Fig6"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig7.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="80"
|
||||
y="376" />
|
||||
<lineto x="80"
|
||||
y="316" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig9"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff6"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig8"
|
||||
destPortFig="Fig4"
|
||||
sourceFigNode="Fig8"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig9.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="153"
|
||||
y="376" />
|
||||
<lineto x="129"
|
||||
y="316" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig12"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff4"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig11.0"
|
||||
destPortFig="Fig4.0"
|
||||
sourceFigNode="Fig11"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig12.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="289"
|
||||
y="377" />
|
||||
<lineto x="128"
|
||||
y="315" />
|
||||
</path>
|
||||
</group>
|
||||
</pgml>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLCollaborationDiagram|-93--68-50-122-1e11a1:e1b4a53a8a:-7ff0"
|
||||
name="collaboration diagram 1"
|
||||
>
|
||||
</pgml>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLUseCaseDiagram|-93--68-50-122-179f67:e1b3a63c86:-8000"
|
||||
name="use case diagram 1"
|
||||
>
|
||||
</pgml>
|
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB |
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLCollaborationDiagram|-93--68-50-122-1e11a1:e1b4a53a8a:-7ff0"
|
||||
name="collaboration diagram 1"
|
||||
>
|
||||
</pgml>
|
|
@ -1,266 +0,0 @@
|
|||
OK. Again I would have liked to get a design document before it being done. Main functionalities we
|
||||
need in the inspector:
|
||||
|
||||
- Unifiy the inspector under a single dialog box, called with 'S'
|
||||
|
||||
- Depending on what is currently selected, display several frames in the inspector:
|
||||
only brushes -> surface inspector
|
||||
only patches -> patch inspector
|
||||
brushes & patches -> both
|
||||
and later when brush primitives are mixed with regular brushes + plugin entities, raise whatever
|
||||
additional inspector stuff we need
|
||||
|
||||
- The camera view must update realtime when we change some parameters.
|
||||
|
||||
- Get rid of the Apply button, use the Undo code to store settings when surface inspector is
|
||||
raised. If user hits Cancel, call the undo stuff.
|
||||
|
||||
- Use the message broadcasting stuff to keep the inspectors up to date when the user changes the
|
||||
current selection. Be careful to keep the undo stuff in sync with the select / deselect operations.
|
||||
|
||||
- Use a 3-state scheme to display the params in the widgets. If two faces are selected that don't
|
||||
have the same shift increment, just grey out the shift box.
|
||||
|
||||
Messaging:
|
||||
- a good chunk of the work is moving the selection/creation stuff to the messaging API
|
||||
we no longer use UpdateSurfaceDialog, we post messages instead ..
|
||||
the surface inspector has hooked one of it's listeners into the corresponding message
|
||||
we may need to reorganize the messages, maybe introduce a hierarchy?
|
||||
or pass a void * param with messages?
|
||||
|
||||
- we don't post messages like "update surface inspector", we post messages that say "this and that
|
||||
have changed", then the surface inspector reacts if it needs to.
|
||||
Do we need marshalling in the messages? Very likely .. maybe using Gtk signal stuff would be interesting?
|
||||
|
||||
-> the messaging stuff is a big chunk of work and our surface inspector changes are not totally
|
||||
dependent on it. Better leave that for l8r
|
||||
|
||||
the inspector works by states and transitions? Or we post messages to it?
|
||||
Use case:
|
||||
the user raises the inspector .. if we are up we'll ignore, if we are hidden we'll
|
||||
go through the whole process (initialise, look at what is selected, display)
|
||||
then we enter an active state (listening for select / deselects and applying stuff)
|
||||
|
||||
all in all it seems to be too big a change for next release. will see later probably.
|
||||
Trying a few more days with it, see what happens. after all the interface is fairly restricted
|
||||
so there's a good chance our changes are fairly stable in the end. But rebuilding the whole interface
|
||||
part might be too much ...
|
||||
We need something state based? AND a set of messages ..
|
||||
but first, need to write the initialisation loop
|
||||
build the dialog, get the current surface information and display
|
||||
|
||||
Undoing the changes on the selected stuff:
|
||||
at any point in time, one can get a snapshot of selected stuff and use it to store the surface
|
||||
properties settings for later on. But what happens if the user modifies the selected brush, pushing
|
||||
it in the undo stack? Then we would cancel the changes? (and just backup to the state right after
|
||||
the modif)
|
||||
We could has the 'Apply' button used for that .. grey it out when the current state is the one in
|
||||
the backup. This happens whenever we hit 'Apply' or change something in the selection.
|
||||
The selection has several items: entities, brushes and selected faces (possibly later generic plugin entities)
|
||||
Current undo stuff is aimed at entities and brushes.
|
||||
NOTE: you can't have selected faces and brushes/entities at the same time, that's a good point to
|
||||
keep that seperated to deal with undo and storage
|
||||
On what side should the implemetation be ? undo.cpp select.cpp or surfacedialog.cpp ?
|
||||
We are going to do it with the messaging API anyway..
|
||||
And hook in the undo stuff, to reset the snapshot each time something gets pushed in the undo?
|
||||
|
||||
We have advanced stuff on the Inspector branch, doing basics on Alpha branch.
|
||||
Start writing the watch code in surfacedialog.cpp, see if we need some merging with Undo stuff l8r
|
||||
We need to track for the patch inspector as well..
|
||||
|
||||
basic code for CSurfaceUndo written. need to add hooks for the snapshot stuff and undo stuff. and a
|
||||
debug flag to monitor the life cycle of the object.
|
||||
|
||||
some use cases:
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- check we had the debug messages from CSurfaceUndo (initialise, activate, snapshot)
|
||||
- edit the surface settings
|
||||
- check the views are updating correctly
|
||||
- hit Ok
|
||||
- check we had a deactivate message
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- check we had the debug messages from CSurfaceUndo (initialise, activate, snapshot)
|
||||
- edit the surface settings
|
||||
- check the views are updating correctly
|
||||
- hit cancel / escape
|
||||
- check we have a undo and deactivate from CSurfaceUndo
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up the surface inspector
|
||||
- edit the surface settings
|
||||
- hit apply
|
||||
- edit them again
|
||||
- hit cancel / escape
|
||||
- check you get back to the apply state
|
||||
OK
|
||||
|
||||
- make two brushes
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- change settings
|
||||
- select an additional brush
|
||||
- check the surface inspector, new snapshot
|
||||
- hit cancel
|
||||
- check brushes remained in the same state
|
||||
- use standard Undo
|
||||
- check the first brush got back to it's initial settings
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- change settings
|
||||
- select an additional brush
|
||||
- check the surface inspector, new snapshot
|
||||
- change more settings
|
||||
- hit cancel
|
||||
- check the first brush returned to intermediate state, and second to initial state (i.e. last snapshot)
|
||||
OK
|
||||
|
||||
g_surfaceUndo acts as a layer on top of the core Undo code when the surface inspector is activated.
|
||||
We need it because the surface inspector can edit faces which are not handled by the undo?
|
||||
(or does the current code push the whole brush when editing a face?)
|
||||
|
||||
not sure of the utility of the g_surfaceDialog hooks here ..
|
||||
default undo usage in the sruface inspector sends way too many undo messages.
|
||||
with the new scheme we store in undo only when select/deselect or user hits apply
|
||||
that way the 'Cancel' and later Ctrl+Z calls make sense
|
||||
but is it worth implementing a new class to achieve that?? .. yes because we intend a later cleanup
|
||||
of this part. (ahem is this reason good enough..)
|
||||
this part is actually much closer from the undo code than I had expected..
|
||||
'Cancel' call being an Undo call..
|
||||
|
||||
going to Inspector3:
|
||||
don't create a new class, simply use the Undo more intelligently?
|
||||
i.e. don't create undo stuff when editing the brush
|
||||
-> we add a flag to turn off the default undo behaviour and force Undo storage when we want
|
||||
we could also store the undo Id we are interested in and call undo several times to get it back
|
||||
|
||||
NOTE: what happens if the user hits undo when the surface inspector is up?
|
||||
-> we'll have to take his request into account?
|
||||
err .. performing which undo? The texture positioning or something else?
|
||||
seems the snapshot approach would still make sense then?
|
||||
|
||||
more use cases, see with Undo calls and select/deselect events
|
||||
NOTE: this whole thing is probably a single call to select_settexture that needs to be turned on/off
|
||||
instead of working at the undo level. but we would like to move to messaging so maybe it still makes sense
|
||||
the undo call is in Select_SetTexture (which does not have that many callers, I was expecting more)
|
||||
|
||||
the question about having the undo code keep working when surface inspector is around is still raised.
|
||||
but it makes it a lot harder, gotta have a real inspector mode in the undo?
|
||||
dunno, think about it again later
|
||||
|
||||
two operations are mixed in a single one and should not be:
|
||||
reading the map to get the current data we'll manipulate
|
||||
feed it in the dialog box widgets
|
||||
WARNING: when putting stuff in the widgets, it raises a shitload of update messages and therefor completely
|
||||
fucks up our OnOK OnApply OnCancel scheme (specially OnApply!)
|
||||
|
||||
NOTE: we want to switch between Surface inspector for brushes only and Patch inspector for patches only
|
||||
there's some crappy code in the surface inspector that we need to get rid of
|
||||
but need to check about that before with Spog or others
|
||||
|
||||
Forcing the way into using the surface inspector is SCREWED?
|
||||
Doesn't seem to work the way we want to. Always get parasite Undo messages and stuff.
|
||||
We could use a seperate stack for Undo with the surface inspector?
|
||||
Just store the surface properties in a seperate stack?
|
||||
When user hits cancel you go back and apply whatever you had?
|
||||
Doesn't seem like a clean way either.
|
||||
|
||||
Now dealing with both regular surface inspector and patch inspector:
|
||||
we have some stuff that needs to be on/off with the two inspectors
|
||||
what about catching the messages and issuing new snapshots?
|
||||
the main surface inspector is doing it?
|
||||
no!
|
||||
so what, we have several states?
|
||||
FUCKED UP
|
||||
|
||||
INSPECTOR 5 ----------------------------------------------------------------
|
||||
restarted from scratch, made much more simple changes.
|
||||
trying another trick for undo (!)
|
||||
just let the undo work as usual, but call undo ourselves in SetTexMods if we have create the last do
|
||||
requires proper initialization/deinitialisation.. in SetTexMods and GetTexMods..
|
||||
|
||||
getting rid of patch manipulation code in the regular surface inspector. The buttons will
|
||||
still work, but manip will require the patch inspector. (seems the patch inspector doesn't have that
|
||||
much success anyway)
|
||||
|
||||
TODO:
|
||||
OK get rid of patch stuff
|
||||
OK get rid of the texture toolbar? (it's broken right now)
|
||||
(and doesn't have anything usefull..)
|
||||
OK (Partial) OnCancel? we need to cancel the texdef as well
|
||||
store an undo texdef each time we grab new texdef stuff
|
||||
this works in reverse than the Undo code? When we do the initial
|
||||
problem is, in some cases the settings that show up are not in sync with what's in the inspector??
|
||||
(we can't avoid that because if a brush is selected there's no single setting)
|
||||
prolly get it out as is and let Spog or others send feedback about what it's supposed to do..
|
||||
for now: store stuff in the cancel texdef when we initialize an undo loop
|
||||
revert to that if OnCancel is used
|
||||
OK message when spinning over a patch?
|
||||
DUPLICATE (.. see below ..) check the increments we store in the SI are used when shift + arrows etc.
|
||||
no it doesn't work .. the shifting on keyboard shortcuts is done with m_nTextureTweak
|
||||
seems m_nTextureTweak is nowhere available in the prefs (and it's not in MFC builds either)
|
||||
some cleanup to be done around that it seems
|
||||
OK (.. merged with below, maybe some special cases left ..) texture widget (catch the Enter key to force-call an OnApply)
|
||||
OK (.. see above ..) catch Enter key at dialog level to call OnDone
|
||||
NO (.. it's clean, but thats too many lines of code ..) move the code that blokes updates to use gtk_signal_handler_block_by_func and gtk_signal_handler_block_by_func
|
||||
OK shift + arrow must match the SI settings,
|
||||
OK (FIXME .. not using the right scale (using the scale step instead! + add a button in SI to 'Match grid')
|
||||
POSTPONED (.. m_nTextureTweak is used in the nudge commands ..
|
||||
.. and nudge shortcuts are broken right now ..) get rid of m_nTextureTweak
|
||||
+ SI and PI always on top!
|
||||
|
||||
+ known issues: "Match Grid" is broken in BP mode
|
||||
|
||||
now on the patch inspector (nightmare!):
|
||||
OK (.. put it as readonly .. don't bother ..) texture name widget is screwed?
|
||||
OK the spinners scheme doesn't work, the stuff in the dialog is the inc step and we just need arrows
|
||||
OK get rid of the 'Type' dialog box
|
||||
POSTPONED (.. can't do undo on PI without proper Undo module ..) add proper Done Apply Cancel with Undo
|
||||
NO (.. too much work for something that sucks ..) make the changes reflect in the views when manipulating the entries
|
||||
OK (.. using %g ..) cut down on the number of digits!
|
||||
OK increment steps to be stored in the registry
|
||||
|
||||
putting the Cancel stuff in the surface inspector: only based on the Undo code, no cancel settings to store
|
||||
because we don't have actual storage of a current texdef (we only send alterations) BTW we should do that for
|
||||
brushes as well
|
||||
the patch inspector works by increments, Patch_SetTextureInfo to incrementally modify the patch.
|
||||
we can still do some undo by having a texdef storing the changes and working together with the undo
|
||||
if the undo is recognized, it means our current texdef increment is valid
|
||||
no, we can't represent the combination of several increments scale and rotate in a single texdef..
|
||||
get rid of the undo code for now .. only Apply and Done left
|
||||
|
||||
it seems it's still vastly broken when you select something. or is it on linux only?
|
||||
need a LOT of testing and figuring it out!!
|
||||
selecting a brush breaks totally.. (the texture screws up it seems)
|
||||
does it attempt to change the texture of the selected object??
|
||||
also: it seems you can multiple select a same brush??
|
||||
|
||||
the UNDO code of the SURFACE INSPECTOR IS STILL BROKEN ????
|
||||
(ok I'm really screwed, time to sleep)
|
||||
-> can't reproduce now?? maybe it's linux specific problem, I can't tell
|
||||
|
||||
FOUND A WAY TO REPRODUCE THE CRASH:
|
||||
+ select brush
|
||||
+ hit "Fit"
|
||||
+ hit the shift spinners two times
|
||||
OR:
|
||||
+ select single face on brush
|
||||
+ manually edit scale values
|
||||
-> maybe we have a problem with current texture? (NO)
|
||||
it's some kind of infinite loop? we call UpdateSurfaceInspector from Select_Brush and bang!
|
||||
no, it's a texdef from a face that got deleted
|
||||
prolly that hooking the undo code in there screws up the selected faces stuff
|
||||
if you undo a selected face operation, you end up with the whole brush selected.
|
||||
but that does not necessarily explain why you remove the face at Undo_Start
|
||||
ho well .. removed the undo buffering when selected faces and everything's better
|
||||
would need to re-establish the right face selection after undo, might solve the problem
|
||||
(actually you'd still need to have the settings point to the right object)
|
||||
|
||||
From PJ about the 'Match Grid' stuff: textures are moved in pixels, not units.
|
||||
We must rely on the current texture scale AND gridsize to compute the shift increment
|
|
@ -1,92 +0,0 @@
|
|||
./replace.pl bsp.c 255
|
||||
./replace.pl facebsp.c 240
|
||||
./replace.pl facebsp.c 251
|
||||
./replace.pl facebsp.c 260
|
||||
./replace.pl fog.c 83
|
||||
./replace.pl fog.c 439
|
||||
./replace.pl fog.c 529
|
||||
./replace.pl fog.c 530
|
||||
./replace.pl fog.c 531
|
||||
./replace.pl fog.c 532
|
||||
./replace.pl leakfile.c 34
|
||||
./replace.pl leakfile.c 75
|
||||
light.c:212: qprintf ("--- CountLightmaps ---\n");
|
||||
light.c:228: qprintf( "%5i drawSurfaces\n", numDrawSurfaces );
|
||||
light.c:229: qprintf( "%5i lightmaps\n", count );
|
||||
light.c:252: qprintf ("--- CreateSurfaceLights ---\n");
|
||||
light.c:1730: qprintf( "%5i gridPoints\n", numGridPoints );
|
||||
light.c:1786: qprintf ("--- CreateLights ---\n");
|
||||
light.c:1788: qprintf ("%i point lights\n", numPointLights);
|
||||
light.c:1789: qprintf ("%i area lights\n", numAreaLights);
|
||||
light.c:1792: qprintf ("--- TraceGrid ---\n");
|
||||
light.c:1794: qprintf( "%i x %i x %i = %i grid\n", gridBounds[0], gridBounds[1],
|
||||
light.c:1798: qprintf ("--- TraceLtm ---\n");
|
||||
light.c:1800: qprintf( "%5i visible samples\n", c_visible );
|
||||
light.c:1801: qprintf( "%5i occluded samples\n", c_occluded );
|
||||
lightmaps.c:312: qprintf ("--- AllocateLightmaps ---\n");
|
||||
lightmaps.c:347: qprintf( "%5i unique shaders\n", numSortShaders );
|
||||
lightmaps.c:369: qprintf( "%7i exact lightmap texels\n", c_exactLightmap );
|
||||
lightmaps.c:370: qprintf( "%7i block lightmap texels\n", numLightmaps * LIGHTMAP_WIDTH*LIGHTMAP_HEIGHT );
|
||||
lightv.c:4769: qprintf("light in solid at %1.1f %1.1f %1.1f\n", light->origin[0], light->origin[1], light->origin[2]);
|
||||
lightv.c:4771: qprintf("spot light in solid at %1.1f %1.1f %1.1f\n", light->origin[0], light->origin[1], light->origin[2]);
|
||||
map.c:294: qprintf ("Entity %i, Brush %i: mixed face contents\n"
|
||||
map.c:1138: qprintf ("--- LoadMapFile ---\n");
|
||||
map.c:1163: qprintf ("%5i total world brushes\n", CountBrushList( entities[0].brushes ) );
|
||||
map.c:1164: qprintf ("%5i detail brushes\n", c_detail );
|
||||
map.c:1165: qprintf ("%5i patches\n", numMapPatches);
|
||||
map.c:1166: qprintf ("%5i boxbevels\n", c_boxbevels);
|
||||
map.c:1167: qprintf ("%5i edgebevels\n", c_edgebevels);
|
||||
map.c:1168: qprintf ("%5i entities\n", num_entities);
|
||||
map.c:1169: qprintf ("%5i planes\n", nummapplanes);
|
||||
map.c:1170: qprintf ("%5i areaportals\n", c_areaportals);
|
||||
map.c:1171: qprintf ("size: %5.0f,%5.0f,%5.0f to %5.0f,%5.0f,%5.0f\n", map_mins[0],map_mins[1],map_mins[2],
|
||||
misc_model.c:411: qprintf("----- AddTriangleModels -----\n");
|
||||
misc_model.c:446: qprintf( "%5i triangle models\n", c_triangleModels );
|
||||
misc_model.c:447: qprintf( "%5i triangle surfaces\n", c_triangleSurfaces );
|
||||
misc_model.c:448: qprintf( "%5i triangle vertexes\n", c_triangleVertexes );
|
||||
misc_model.c:449: qprintf( "%5i triangle indexes\n", c_triangleIndexes );
|
||||
patch.c:176: qprintf( "----- PatchMapDrawSurfs -----\n" );
|
||||
patch.c:262: qprintf( "%5i patches\n", patchCount );
|
||||
patch.c:263: qprintf( "%5i patch LOD groups\n", groupCount );
|
||||
portals.c:500: qprintf( "----- MakeTreePortals -----\n");
|
||||
portals.c:503: qprintf("%6d tiny portals\n", c_tinyportals);
|
||||
portals.c:589: qprintf ("--- FloodEntities ---\n");
|
||||
portals.c:608: qprintf("%5i flooded leafs\n", c_floodedleafs );
|
||||
portals.c:612: qprintf ("no entities in open -- no filling\n");
|
||||
portals.c:616: qprintf ("entity reached from outside -- no filling\n");
|
||||
portals.c:762: qprintf ("--- FloodAreas ---\n");
|
||||
portals.c:768: qprintf ("%5i areas\n", c_areas);
|
||||
portals.c:813: qprintf ("--- FillOutside ---\n");
|
||||
portals.c:815: qprintf ("%5i solid leafs\n", c_solid);
|
||||
portals.c:816: qprintf ("%5i leafs filled\n", c_outside);
|
||||
portals.c:817: qprintf ("%5i inside leafs\n", c_inside);
|
||||
prtfile.c:213: qprintf ("--- NumberClusters ---\n");
|
||||
prtfile.c:218: qprintf ("%5i visclusters\n", num_visclusters);
|
||||
prtfile.c:219: qprintf ("%5i visportals\n", num_visportals);
|
||||
prtfile.c:220: qprintf ("%5i solidfaces\n", num_solidfaces);
|
||||
prtfile.c:232: qprintf ("--- WritePortalFile ---\n");
|
||||
shaders.c:301:// qprintf( "shaderFile: %s\n", filename );
|
||||
shaders.c:600: qprintf( "%5i shaderInfo\n", numShaderInfo);
|
||||
surface.c:176: qprintf( "----- MergeSides -----\n");
|
||||
surface.c:182: qprintf( "%5i siderefs\n", numSideRefs );
|
||||
surface.c:266: qprintf( "----- SubdivideDrawSurfs -----\n");
|
||||
surface.c:365: qprintf( "----- ClipSidesIntoTree -----\n");
|
||||
surface.c:1013: qprintf( "----- FilterDrawsurfsIntoTree -----\n");
|
||||
surface.c:1045: qprintf( "%5i emited drawsurfs\n", c_surfs );
|
||||
surface.c:1046: qprintf( "%5i references\n", c_refs );
|
||||
surface.c:1047: qprintf( "%5i stripfaces\n", c_stripSurfaces );
|
||||
surface.c:1048: qprintf( "%5i fanfaces\n", c_fanSurfaces );
|
||||
tjunction.c:476: qprintf("----- FixTJunctions -----\n");
|
||||
tjunction.c:508: qprintf( "%6i axial edge lines\n", axialEdgeLines );
|
||||
tjunction.c:509: qprintf( "%6i non-axial edge lines\n", numEdgeLines - axialEdgeLines );
|
||||
tjunction.c:510: qprintf( "%6i degenerate edges\n", c_degenerateEdges );
|
||||
tjunction.c:525: qprintf( "%6i verts added for tjunctions\n", c_addedVerts );
|
||||
tjunction.c:526: qprintf( "%6i total verts\n", c_totalVerts );
|
||||
tjunction.c:527: qprintf( "%6i naturally ordered\n", c_natural );
|
||||
tjunction.c:528: qprintf( "%6i rotated orders\n", c_rotate );
|
||||
tjunction.c:529: qprintf( "%6i can't order\n", c_cant );
|
||||
vis.c:223: qprintf ("cluster %4i : %4i visible\n", leafnum, numvis);
|
||||
visflow.c:642: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
visflow.c:774: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
visflow.c:1037: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
writebsp.c:388: qprintf ("--- EndModel ---\n");
|
|
@ -1,92 +0,0 @@
|
|||
./replace.pl bsp.c 255
|
||||
./replace.pl facebsp.c 240
|
||||
./replace.pl facebsp.c 251
|
||||
./replace.pl facebsp.c 260
|
||||
./replace.pl fog.c 83
|
||||
./replace.pl fog.c 439
|
||||
./replace.pl fog.c 529
|
||||
./replace.pl fog.c 530
|
||||
./replace.pl fog.c 531
|
||||
./replace.pl fog.c 532
|
||||
./replace.pl leakfile.c 34
|
||||
./replace.pl leakfile.c 75
|
||||
./replace.pl light.c 212
|
||||
./replace.pl light.c 228
|
||||
./replace.pl light.c 229
|
||||
./replace.pl light.c 252
|
||||
./replace.pl light.c 1730
|
||||
./replace.pl light.c 1786
|
||||
./replace.pl light.c 1788
|
||||
./replace.pl light.c 1789
|
||||
./replace.pl light.c 1792
|
||||
./replace.pl light.c 1794
|
||||
./replace.pl light.c 1798
|
||||
./replace.pl light.c 1800
|
||||
./replace.pl light.c 1801
|
||||
./replace.pl lightmaps.c 312
|
||||
./replace.pl lightmaps.c 347
|
||||
./replace.pl lightmaps.c 369
|
||||
./replace.pl lightmaps.c 370
|
||||
./replace.pl lightv.c 4769
|
||||
./replace.pl lightv.c 4771
|
||||
./replace.pl map.c 294
|
||||
./replace.pl map.c 1138
|
||||
./replace.pl map.c 1163
|
||||
./replace.pl map.c 1164
|
||||
./replace.pl map.c 1165
|
||||
./replace.pl map.c 1166
|
||||
./replace.pl map.c 1167
|
||||
./replace.pl map.c 1168
|
||||
./replace.pl map.c 1169
|
||||
./replace.pl map.c 1170
|
||||
./replace.pl map.c 1171
|
||||
./replace.pl misc_model.c 411
|
||||
./replace.pl misc_model.c 446
|
||||
./replace.pl misc_model.c 447
|
||||
./replace.pl misc_model.c 448
|
||||
./replace.pl misc_model.c 449
|
||||
./replace.pl patch.c 176
|
||||
./replace.pl patch.c 262
|
||||
./replace.pl patch.c 263
|
||||
./replace.pl portals.c 500
|
||||
./replace.pl portals.c 503
|
||||
./replace.pl portals.c 589
|
||||
./replace.pl portals.c 608
|
||||
./replace.pl portals.c 612
|
||||
./replace.pl portals.c 616
|
||||
./replace.pl portals.c 762
|
||||
./replace.pl portals.c 768
|
||||
./replace.pl portals.c 813
|
||||
./replace.pl portals.c 815
|
||||
./replace.pl portals.c 816
|
||||
./replace.pl portals.c 817
|
||||
./replace.pl prtfile.c 213
|
||||
./replace.pl prtfile.c 218
|
||||
./replace.pl prtfile.c 219
|
||||
./replace.pl prtfile.c 220
|
||||
./replace.pl prtfile.c 232
|
||||
./replace.pl shaders.c 301
|
||||
./replace.pl shaders.c 600
|
||||
./replace.pl surface.c 176
|
||||
./replace.pl surface.c 182
|
||||
./replace.pl surface.c 266
|
||||
./replace.pl surface.c 365
|
||||
./replace.pl surface.c 1013
|
||||
./replace.pl surface.c 1045
|
||||
./replace.pl surface.c 1046
|
||||
./replace.pl surface.c 1047
|
||||
./replace.pl surface.c 1048
|
||||
./replace.pl tjunction.c 476
|
||||
./replace.pl tjunction.c 508
|
||||
./replace.pl tjunction.c 509
|
||||
./replace.pl tjunction.c 510
|
||||
./replace.pl tjunction.c 525
|
||||
./replace.pl tjunction.c 526
|
||||
./replace.pl tjunction.c 527
|
||||
./replace.pl tjunction.c 528
|
||||
./replace.pl tjunction.c 529
|
||||
./replace.pl vis.c 223
|
||||
./replace.pl visflow.c 642
|
||||
./replace.pl visflow.c 774
|
||||
./replace.pl visflow.c 1037
|
||||
./replace.pl writebsp.c 388
|
|
@ -1,4 +0,0 @@
|
|||
#s/.*:/.\/replace.pl &/
|
||||
#s/\(.*\):\([0-9]*\):\(.*\):/.\/replace.pl \1 \2/
|
||||
#s/\(.*\):\([0-9]*\):/.\/replace.pl \1 \2 /
|
||||
s/\(.*\):\([0-9]*\):\(.*\)/.\/replace.pl \1 \2 /
|
|
@ -1,17 +0,0 @@
|
|||
#!perl
|
||||
rename("$ARGV[0]", "$ARGV[0].old");
|
||||
open(FILE, "$ARGV[0].old");
|
||||
open(OFILE, ">$ARGV[0]");
|
||||
while(<FILE>)
|
||||
{
|
||||
if($. != $ARGV[1])
|
||||
{
|
||||
print OFILE;
|
||||
next;
|
||||
}
|
||||
s/Sys_Printf \(/Sys_FPrintf \(SYS_VRB,/;
|
||||
s/Sys_Printf\(/Sys_FPrintf \(SYS_VRB,/;
|
||||
print OFILE;
|
||||
}
|
||||
close(OFILE);
|
||||
close(FILE);
|
|
@ -1,17 +0,0 @@
|
|||
#!perl
|
||||
rename("brush.c", "brush.c.old");
|
||||
open(FILE, "brush.c.old");
|
||||
open(OFILE, ">brush.c");
|
||||
while(<FILE>)
|
||||
{
|
||||
if($. != 150)
|
||||
{
|
||||
print OFILE;
|
||||
next;
|
||||
}
|
||||
s/Sys_Printf \(/Sys_FPrintf \(SYS_VRB,/;
|
||||
s/Sys_Printf\(/Sys_FPrintf \(SYS_VRB,/;
|
||||
print OFILE;
|
||||
}
|
||||
close(OFILE);
|
||||
close(FILE);
|
|
@ -1,19 +0,0 @@
|
|||
a few basic contacts for people willing to test GtkRadiant:
|
||||
|
||||
+ everyone on the RadiantBinaries mailing list
|
||||
|
||||
+ -----------------------
|
||||
|UL|FeNiX: (5:20 PM) when will you be letting loose a new beta for this "completely" new radiant?
|
||||
|UL|FeNiX: (5:20 PM) I would love the honor to help you alpha and or beta test anything.......
|
||||
|UL|FeNiX: (5:20 PM) you could consider me your win2K tester......
|
||||
Tim: (5:21 PM) well .. within a few days I hope .. it will need lots of testing
|
||||
but I want something that is basically usable before we can go forward
|
||||
yeah, w2k testing is much needed
|
||||
what's your email?
|
||||
|
||||
|UL|FeNiX: (5:21 PM) kingfenix1@home.com
|
||||
Tim: (5:21 PM) k
|
||||
|
||||
+ GL slowdowns tests --------------------------------------------
|
||||
mac (from Q3W forum)
|
||||
gangstapoodle@hotmail.com
|
|
@ -1,123 +0,0 @@
|
|||
Things that need to be done in Q3Radiant Linux:
|
||||
|
||||
- copy and paste to other instances
|
||||
|
||||
Bugs:
|
||||
|
||||
- The surface inspector is not updated if you close it,
|
||||
select another brush and open it again. (Win32 too)
|
||||
|
||||
Win32 version BUGS/TODO list:
|
||||
|
||||
- write an XP version of _stat / FileExists in cmdlib
|
||||
- put the sleep thing in a proper place, bind it in the keyboard shortcuts
|
||||
- console output bugs: properly format the output, fix "console not scrolling but keeps
|
||||
overwriting lines"
|
||||
we no longer need to convert to CR/LF to output in the console. removed that.
|
||||
interesting piece about the text widget here:
|
||||
http://www.gtk.org/tutorial/gtk_tut-14.html
|
||||
added freeze and thaw calls in Sys_BeginWait Sys_EndWait
|
||||
need to call Sys_BeginWait Sys_EndWait in all appropriate places (Map_LoadFile)
|
||||
need to limit size of the console, and scroll down on output
|
||||
wrote a test program that reproduces the bug with scrolling
|
||||
- write a coding directions document (what and where to put stuff)
|
||||
qe3.h, globals, map data storage structures
|
||||
see DevDocs/draft, need to do something along those lines
|
||||
- remember maximized state (not only the size)
|
||||
and various window position settings
|
||||
- get rid of the SGIOpenGL flag, (make it default?)
|
||||
actually, remove all the prefs crap that's not relevant
|
||||
- widgets too big?
|
||||
at least the menus, or the dialog boxes as well?
|
||||
- get rid of Texture_LoadTGATexture (or rename it)
|
||||
(do l8r)
|
||||
- sleep mode
|
||||
- proper about box
|
||||
- have basic default position and size for the windows in the four views
|
||||
- plugin API
|
||||
- have plugin links accessed from plugins menu
|
||||
- make sure the registry cleaning works
|
||||
- version information!
|
||||
- custom shortcut keys file!
|
||||
shortcut.ini ?
|
||||
- problem with strPrefab
|
||||
|
||||
- fix user.qe4 thing, don't overwrite. And tell the user about it. Actually allow him to
|
||||
select another location / name for the project file.
|
||||
|
||||
- command map: changing the file to command.ini? put it in the same dir as radiant.ini
|
||||
(get rid of user path
|
||||
|
||||
- logging console: add the checkbox
|
||||
- add the radiant.pid detection!! (this is from 200 -> 201)
|
||||
- remember window position on the desktop and maximized state
|
||||
- fix browsing for a directory, the win32 dialog to browse for a dir is fucked
|
||||
- check creating a new project on linux, I rewrote it and tested on win
|
||||
- cleanup the q3map code, remove the dirty __TTIMOBUILD stuff
|
||||
|
||||
- changes to the jpeg library for the MFC version, must make their way to Gtk
|
||||
(proper error handling)
|
||||
|
||||
- saving window pos in MainFrame::OnDestroy crashes in 4-view mode (Sagnor)
|
||||
- 4-view: [00:31] <Sagnor> oh and the "o" for the console doens't work
|
||||
|
||||
FIXED: --------
|
||||
- Printing: Saving screenshot instead
|
||||
- icon in KDE has "name=quake3": Fixed in the latest setup (thanks Stephane)
|
||||
- add precompiled headers to speedup building
|
||||
done. basically added stdafx.h, the VC5 project needs to be updated
|
||||
stdafx.cpp: generate precompiled header with stdafx.h
|
||||
all other files: automatic use of precompiled headers...
|
||||
(maybe later add more headers to stdafx)
|
||||
- context switch problems
|
||||
seem to have disappeared since I fixed a bug in Str
|
||||
no it's definitely back!
|
||||
fix by Leo, hacked into gdk.dll for CS_OWNDC window class style
|
||||
- use proper texture when not found instead of white
|
||||
Leo fixed, bug in the custom gluBuild2DMipmaps
|
||||
- use registry
|
||||
for window positions <- Leo did
|
||||
have proper default positions!
|
||||
- bitmap loading broken (can't get anything to load up)
|
||||
ok Leo fixed
|
||||
- renaming some files .. linux_dlgs.cpp to dlgs.cpp etc. let's be neutral!
|
||||
done that .. removed linux_*, renamed qgl_linux.c to qgl.c
|
||||
(Makefile and VC5 project need updating)
|
||||
- prefs stuff? big open/close loop on radiant.ini?
|
||||
fixed radiant.ini growing huge on win32 (doesn't seem to affect the linux version)
|
||||
will have to check with a profiler if that's so bad
|
||||
- fixed m_strQuake2 (change name and have proper defaults)
|
||||
it's the path to the engine we've all been waiting for!
|
||||
- fixed the new project step
|
||||
- fixed paklog crashes if /tmp/paklog.txt and the dir tmp doesn't exist on win32
|
||||
(ask windows for the temp directory? .. I would put in radiant current dir .. on win32)
|
||||
also check on a machine that doesn't define a HOME env var!
|
||||
- can't reproduce: crash in gluBuild2DMipmaps? seems very random. was not able to reproduce
|
||||
it for sure. First time happened on base_trim/pewter.
|
||||
happens on image[k++] = *ubptr++; (l1038)
|
||||
- merge 201 in, use the console logging stuff to debug project settings things
|
||||
|
||||
DISCUSSION LOG ABOUT GL SPEED:
|
||||
[19:17] <Neo|Work> Then why not use your own main, calling g_main_iteration at even intervals? :)
|
||||
[19:17] <MEGASTeP> shuoldn't be too hard. I hve plenty of code like that
|
||||
[19:18] *** Joins: Centove (gregm@coco.comstar.net)
|
||||
[19:18] <Neo|Work> while(1) { while(g_main_iteration(0)) /* do nothing, process until done */; [do own stuff]; pause(); } or so
|
||||
[19:18] <TTimo> I see .. well actually my main problem is that the GL view is dead slow
|
||||
[19:19] <TTimo> at first we though it was because of all the stuff between windows and the handlers
|
||||
[19:19] <TTimo> but the problem seems somwhere else
|
||||
[19:20] <Neo|Work> can you profile the code?
|
||||
[19:21] <TTimo> we'll try .. but actually I don't know for sure where the perfomance hit happens
|
||||
[19:21] <TTimo> might be because it doesn't process the mouse messages quickly enough, or because the refresh messages are sent once every g_main_interaction
|
||||
[19:22] <TTimo> but compared to the MFC version, it feels sluggish
|
||||
[19:22] <mordred> yoda: fwiw, it looks like Lance mispaired two sets of speakers when he packed up the Utah offices. If you have no complaints, I'll put my mismatched pair back and take a known pair, which should leave you even. 'k?
|
||||
[19:22] <Neo|Work> I believe that g_main can block
|
||||
[19:23] <TTimo> block? what do you mean?
|
||||
[19:23] <Neo|Work> g_main_iteration(1) blocks if there are no events to process
|
||||
[19:23] <Neo|Work> might not be at all what's wrong here though. :)
|
||||
[19:23] <TTimo> you mean it sleeps until more events happen?
|
||||
[19:23] <Neo|Work> yeahj
|
||||
[19:24] <TTimo> well that would not be a problem .. the problem is I'd like to emit paint messages faster when the user interacts with the GL window
|
||||
[19:24] <Neo|Work> I don't know g_main works, but I would assume it uses g_main_iteration(1)
|
||||
[19:24] <TTimo> ok, well thanks for the insight .. we'll keep looking anyway
|
||||
[19:24] <Neo|Work> hmm. Your own main look might do the trick, possibly. Dunno. :)
|
||||
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -1,247 +0,0 @@
|
|||
THIS FILE IS OFFICIALLY OUTDATED CLOSED NO LONGER USED
|
||||
|
||||
All the stuff that needs to be settled for win32 beta of GtkRadiant:
|
||||
|
||||
- need to add more code checking BSP process execution (Q_Exec or engine spawning)
|
||||
(TTimo: Assigned to self)
|
||||
|
||||
- the BSP commands are switching in order randomly
|
||||
|
||||
- Need more error checking when executing q3map (in any mode)
|
||||
(Q_Exec goes out of resources sometimes)
|
||||
|
||||
- Region compiling is broken
|
||||
|
||||
- GL font on win32 uses the default system font .. which can be .. yiddish or cyrilic etc.
|
||||
force to courier?
|
||||
NOTE: actually I'm not sure this really is the problem .. some people are getting weird bitmap fonts
|
||||
|
||||
- view n2 needs to wake on whatever widget you raise first
|
||||
Fixed.
|
||||
|
||||
- entity information box on entity inspector displays with nasty characters
|
||||
maybe the same problem as above?
|
||||
|
||||
- map snapshot has a bug (allocation and stuff around Str class)
|
||||
OK (don't use CString stuff = other_stuff; do CString stuff; stuff = other_stuff;)
|
||||
|
||||
- sleep mode on view 2&3 crashing
|
||||
Fixed for the floating windows mode.
|
||||
|
||||
- sleep mode: need to bring back the bitmap fonts
|
||||
Fixed
|
||||
|
||||
- sleep mode: need to rebuild the data on models and patches! (call Map_BuildBrushData)
|
||||
Calling Map_BuildBrushData in Mainframe::OnSleep.
|
||||
OK (added some crap to reload) ... Maybe more to do
|
||||
|
||||
- sleep mode: need to trigger out sleep mode when raising again!
|
||||
Done.
|
||||
|
||||
- console: we want output while it's processing .. otherwise it's just useless ..
|
||||
OK!
|
||||
|
||||
- win32 help format distribution of the manual?
|
||||
|
||||
- update the links page, add stuff from the forum
|
||||
(TTimo .. will do)
|
||||
|
||||
- check maximized state is working(?)
|
||||
|
||||
<<<<<<< WIN32BETA
|
||||
- view n.3 crashes on exit in MainFrame::OnDestroy..
|
||||
(trying to save prefs)
|
||||
|
||||
Fixed.
|
||||
=======
|
||||
- remove high color textures from prefs .. remnant from Q2 .. always on .. off is broken anyway
|
||||
Done.
|
||||
|
||||
- test sleep mode!
|
||||
|
||||
- check my project template bug checking code is ok
|
||||
NOTE: it's fuxored. Need a central function to shrink and standardize file paths:
|
||||
lowercase
|
||||
short dos8.2 names
|
||||
unix style forward slashes /
|
||||
-> then perform the comparisons
|
||||
|
||||
- surface and patch inspector:
|
||||
[23:37] <G_DeWan> WHen you make adjustments in surface window, it should show results immediately. Pressing Apply after each change to see how it looks is a pain.
|
||||
[23:41] <TTimo> true
|
||||
[23:42] <TTimo> is it the behaviour of the MFC version or not?
|
||||
[23:42] <TTimo> on the MFC version when you make adjustements it updates on the fly right?
|
||||
[23:43] <G_DeWan> Yeah.
|
||||
[23:44] <G_DeWan> ANd the fit and axial buittons do not seem to do anything, even if you press Apply afterwords.
|
||||
[23:44] <G_DeWan> HDidn't check patches at all, don't know about them.
|
||||
Fixed
|
||||
|
||||
- check the engine path changes I made didn't break on linux
|
||||
|
||||
- user INI path in prefs: need to look into it .. but my guess is .. it's broken/useless
|
||||
|
||||
- view n.2: doesn't remember the window positions
|
||||
Fixed
|
||||
|
||||
- view n.2: the Z window doesn't shrink below the default size
|
||||
Fixed
|
||||
|
||||
- do some performance comparisons with 202
|
||||
(specially BrushBuild step)
|
||||
|
||||
- a quickstart.txt file with some explanations about the transition 202 -> GtkRadiant?
|
||||
like:
|
||||
what are the actual new features
|
||||
(new way to deal with project settings, sleep mode, net connect for BSP process)
|
||||
what are we testing in the alpha
|
||||
where to report bugs, who is doing what
|
||||
how to contribute as a coder
|
||||
some of this stuff goes into the changelog!
|
||||
>>>>>>> 1.15
|
||||
|
||||
- is there a way to have something actually drawing when moving the splitters?
|
||||
|
||||
- view n.4: the Z window gets pushed when you resize with the leftmost vertical splitter
|
||||
|
||||
- disable the groups view (it's not functional)
|
||||
Fixed
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
if a message gets printed, the console will raise up. But if something else was active
|
||||
(like Entities) .. the widgets are still active .. start moving the mouse on top of
|
||||
the entity window and stuff will start to appear
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
when moving in the 2D window the console outputs lots of error messages:
|
||||
ERROR: glXMakeCurrent failed.. Error:0
|
||||
Please restart Q3Radiant if the Map view is not working
|
||||
but everything seems to work fine, no graphic glitches
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
the Z window doesn't resize
|
||||
|
||||
- more window position storage, store maximized state and position on the desktop
|
||||
Note: maximized state doesn't exist under X, it depends on the WM.
|
||||
|
||||
- keyboard shortcuts break if click in the console window, it keeps the focus..
|
||||
Fixed (using GtkText again).
|
||||
|
||||
<<<<<<< WIN32BETA
|
||||
- upgrade to latest Gtk distribution (there's been a new release) and make sure we are ok
|
||||
|
||||
- enable undo/redo
|
||||
|
||||
Fixed.
|
||||
|
||||
- make sure the BSP monitoring stuff is stored in registry
|
||||
|
||||
- remove the "Buggy GL driver" thing, we'll use another strategy for hardware-specific issues
|
||||
|
||||
- remove the QE4 update model, force always on
|
||||
|
||||
- assertion failed when raising the prefs box for the first time?
|
||||
|
||||
=======
|
||||
>>>>>>> 1.15
|
||||
- use the other view modes to check nothing's wrong with them
|
||||
|
||||
- win32 console doesn't release the focus if you click into it
|
||||
it also has resize issues .. doesn't seem to want to shrink down
|
||||
Fixed the focus problem (using GtkText again).
|
||||
|
||||
- some problems with file permissions under linux?
|
||||
seems it used to create the log and pid file with no write permissions for the user
|
||||
ends up that when you try to open the console file for output it fails or the .pid remains when you try to erase it
|
||||
(NOTE: I need someone with an old install to check that)
|
||||
on win32 more or less same problem. It's created with an archive flag that
|
||||
fordibs removal as well.
|
||||
<<<<<<< WIN32BETA
|
||||
|
||||
Fixed: missing fclose in main.cpp that could be causing this problem.
|
||||
=======
|
||||
leo: there was a missing fclose in main.cpp that could be causing this problem.
|
||||
>>>>>>> 1.15
|
||||
|
||||
- engine path / project loading
|
||||
when we load a template project file we are using the engine path to build it
|
||||
if user has several installs and old prefs that rely on another engine path, project
|
||||
template construction fails. (i.e. is still based on old engine path)
|
||||
I don't know how to solve:
|
||||
-check the engine path when we do the template thing?
|
||||
-check engine path at each project load
|
||||
actually we can check everytime and ask the user, it seems this happens in weird cases
|
||||
.. anyway it's not supposed to be a "stable" situation anytime
|
||||
|
||||
- make sure the BSP monitoring stuff is stored in registry
|
||||
OK (added)
|
||||
|
||||
- the Radiant logo is screwed in the about dialog box?
|
||||
OK (Leo:) The logo.bmp file in the CVS server is screwed, fixed.
|
||||
|
||||
- remove the "Buggy GL driver" thing, we'll use another strategy for hardware-specific issues
|
||||
OK (Leo fixed)
|
||||
|
||||
- engine path dialog is broken (need split to get the actual path)
|
||||
OK (splitting the path, can't edit it must go through the dialog)
|
||||
|
||||
- assertion failed when raising the prefs box for the first time?
|
||||
WORKSFORM (can't reprodcue this one)
|
||||
leo: Used to happen sometimes for me (not anymore ?)
|
||||
|
||||
- view n.3 crashes on exit in MainFrame::OnDestroy..
|
||||
(trying to save prefs)
|
||||
Fixed
|
||||
|
||||
- remove the QE4 update model, force always on
|
||||
Done.
|
||||
|
||||
- custom keyboard shortcuts is buggy .. works halfway
|
||||
OK all fixed
|
||||
|
||||
- upgrade to latest Gtk distribution (there's been a new release) and make sure we are ok
|
||||
OK (tested and stuff .. I'm using the latest in the setup)
|
||||
|
||||
- enable undo/redo
|
||||
leo: it's already enabled
|
||||
(ok fixed, had to enable back the menus)
|
||||
OK
|
||||
|
||||
- project settings. GtkRadiant uses a new version of project settings.
|
||||
Default name is quakev2.qe4
|
||||
Must be able to read old project settings as well .. BSP monitoring disabled
|
||||
if using old project settings
|
||||
When searching for project settings, will look for quakev2.qe4 first, then quake.qe4
|
||||
No more overwriting the loaded project settings. We detect "template" project settings
|
||||
(ie. the ones we distribute) with a "user_project" "1" keyval
|
||||
When a template is loaded, save as userxx.qe4 where xx = 1 2 3 4 5 6 etc.
|
||||
It will trash scripts/ a bit but it doesn't matter ..
|
||||
|
||||
I did some cleanup to the project code, tested on both linux and win32, will need more
|
||||
testing and stuff while in alpha/beta I guess. But it should be stabilized now.
|
||||
|
||||
OK
|
||||
|
||||
-unify the project file syntax on both platforms! (and yes, the problem is
|
||||
radiant on linux is in quake3/ instead of quake3/tools)
|
||||
the expansion rules are not the same between version 1 and v2 project files!
|
||||
we change the string names so we don't have to adapt..
|
||||
NOTE: later we'll remove support for old v1 syntax?
|
||||
NOTE: we may need to add a g_strHomePath for ~/.q3a/ on linux
|
||||
|
||||
see above, the v2 project file is in data/quakev2.qe4
|
||||
|
||||
OK
|
||||
|
||||
- preferences dialog for BSP monitoring: do / don't do, launch engine after
|
||||
compilation.
|
||||
Right now all the params are in prefs, just need the interface
|
||||
|
||||
OK, need more testing, and the sleep mode code
|
||||
.. may also want to add more configurable stuff later .. though I'd rather have it done
|
||||
by a plugin
|
||||
|
||||
- in QE_LoadProject, check the template reading works ok, specially with the new
|
||||
globals Leo added some time ago
|
||||
|
||||
OK, tested on both win32 and linux
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
Summary of TODO and BUGS for GtkRadiant setup files on win32:
|
||||
|
||||
(most of the times the stuff has to be checked in both versions of the setup)
|
||||
|
||||
- installer back button is broken
|
||||
OK (it just bails out if you try to back instead)
|
||||
|
||||
- need proper setup splash screen
|
||||
is there someone skilled with gimp at loki :) ?
|
||||
OK (Maj did)
|
||||
|
||||
- don't have several files for license and readme .. use a central version
|
||||
(scripts or proper settings in InstallShield)
|
||||
in private/GtkRadiant/data <- where we put all the install specific stuff?
|
||||
NOTE: we could put the gtk.dll libs there as well
|
||||
OK
|
||||
|
||||
- remove curry from the alpha (it's still MFC)
|
||||
remove GenSurf as well .. try to get some info from David Hyde
|
||||
OK
|
||||
|
||||
- have a changelog for the end user (not the DevDocs/CHANGES kind of thing)
|
||||
something that focuses on features and bug fixes more than on the internals
|
||||
OK .. need to fill it up a bit
|
||||
|
||||
- use quakev2.qe4 instead of quake.qe4 (both in nomedia and full)
|
||||
added it in the advanced files section
|
||||
(need to prompt the user about overwriting it)
|
||||
for now the nomedia installation needs to run on top of 202
|
||||
OK
|
||||
|
||||
- fix bug with shaders names (skies and liquids)
|
||||
OK
|
||||
|
||||
- add Wolfen to the credits!
|
||||
OK
|
|
@ -1,27 +0,0 @@
|
|||
printf mess in q3map
|
||||
(and in the libs)
|
||||
|
||||
q3map: several breeds .. qprintf _printf printf
|
||||
should all resolve to use a single Sys_Printf thing
|
||||
and put #define printf ..
|
||||
|
||||
for the static libs? need to use function pointers..
|
||||
|
||||
q3map uses common/cmdlib.c
|
||||
Radiant links against cmdlib.lib based on libs/cmdlib/cmdlib.cpp
|
||||
|
||||
but eventually we'll want to use the same Sys_Printf scheme in q3map AND Radiant?
|
||||
qprintf and _printf are defined in common/cmdlib.c
|
||||
BUT: modifying cmdlib would probably break bspc and other stuff that relies on it?
|
||||
|
||||
moving q3map to use a custom version of cmdlib.c in q3map/cmdlib.c
|
||||
removing the qprintf and _printf stuff, moving to a seperate printout.c file
|
||||
|
||||
compiling libxml on win32: need to turn off a bunch of stuff.
|
||||
problem: we got two xmlversion.h files??
|
||||
we can't get rid of using libxml/xmlversion.h, so the solution is to get rid of xmlversion.h
|
||||
(add ../libxml to the paths)
|
||||
|
||||
fuck!
|
||||
we also compile some .c files from common/ !
|
||||
-> create a common2/ dir ..
|
|
@ -1,34 +0,0 @@
|
|||
========================================================================
|
||||
CONSOLE APPLICATION : XMLPush
|
||||
========================================================================
|
||||
|
||||
|
||||
AppWizard has created this XMLPush application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your XMLPush application.
|
||||
|
||||
XMLPush.dsp
|
||||
This file (the project file) contains information at the project level and
|
||||
is used to build a single project or subproject. Other users can share the
|
||||
project (.dsp) file, but they should export the makefiles locally.
|
||||
|
||||
XMLPush.cpp
|
||||
This is the main application source file.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named XMLPush.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
|
@ -1,8 +0,0 @@
|
|||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// XMLPush.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
|
@ -1,22 +0,0 @@
|
|||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_)
|
||||
#define AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_)
|
||||
|
||||
#include "libxml/parser.h"
|
||||
#include "libxml/tree.h"
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<q3map_feedback>
|
||||
<message level="1">Q3Map - built for GtkRadiant v1.1b - based on v1.0q (c) 1999 Id Software Inc.
|
||||
</message>
|
||||
<message level="3">************ ERROR ************
|
||||
usage: q3map [general options] [options] mapfile
|
||||
</message>
|
||||
</q3map_feedback>
|
|
@ -1,30 +0,0 @@
|
|||
// XMLPush.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
FILE *f;
|
||||
xmlDocPtr doc;
|
||||
|
||||
f = fopen("XMLDump.xml", "r");
|
||||
if (f != NULL) {
|
||||
int res, size = 1024;
|
||||
char chars[1024];
|
||||
xmlParserCtxtPtr ctxt;
|
||||
|
||||
res = fread(chars, 1, 4, f);
|
||||
if (res > 0) {
|
||||
ctxt = xmlCreatePushParserCtxt(NULL, NULL,
|
||||
chars, res, "foooo (filename)?");
|
||||
while ((res = fread(chars, 1, size, f)) > 0) {
|
||||
xmlParseChunk(ctxt, chars, res, 0);
|
||||
}
|
||||
xmlParseChunk(ctxt, chars, 0, 1);
|
||||
doc = ctxt->myDoc;
|
||||
xmlFreeParserCtxt(ctxt);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
XMLmap branch:
|
||||
|
||||
need to move the map loading / saving code out in a module
|
||||
what are the main dependencies?
|
||||
|
||||
main functions to move out:
|
||||
Map_LoadFile
|
||||
Map_SaveFile
|
||||
(and all their direct dependencies/call graph)
|
||||
ex Entity_Parse Brush_Parse Entity_Write Brush_Write
|
||||
|
||||
but? even changing to XML format we would need those functions too?
|
||||
is it worth having the .map and .xmlmap through a same interface?
|
||||
|
||||
what dependencies?
|
||||
-> active_brushes
|
||||
-> GetToken etc.
|
||||
-> LoadFile (load into a buffer) .. that's VFS right?
|
||||
|
||||
first step: move some code out in map module and try to compile it..
|
||||
Map_LoadFile for example
|
||||
or the whole map.cpp?
|
||||
|
||||
first problem: entity_t is declared in entity.h, currently not available to
|
||||
the plugin API. Clean way would be to create a wrapper, but speed says we
|
||||
should move entity_t to qertypes.h..
|
||||
|
|
@ -1,455 +0,0 @@
|
|||
diff -rup ../Q3Radiant201/PrefsDlg.cpp Q3Radiant/PrefsDlg.cpp
|
||||
--- ../Q3Radiant201/PrefsDlg.cpp Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/PrefsDlg.cpp Thu Aug 3 17:19:16 2000
|
||||
@@ -224,6 +232,8 @@ void CPrefsDlg::DoDataExchange(CDataExch
|
||||
DDX_Text(pDX, IDC_EDIT_UNDOLEVELS, m_nUndoLevels);
|
||||
DDV_MinMaxInt(pDX, m_nUndoLevels, 1, 64);
|
||||
DDX_Check(pDX, IDC_CHECK_VERTEXMODE, m_bVertexSplit);
|
||||
+ DDX_Check(pDX, IDC_CHECK_LOG, m_bLogConsole);
|
||||
+ DDX_Check(pDX, IDC_NOALPHA, m_bDisableAlphaChannel);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
@@ -236,6 +246,7 @@ BEGIN_MESSAGE_MAP(CPrefsDlg, CDialog)
|
||||
ON_BN_CLICKED(IDC_BTN_BROWSEUSERINI, OnBtnBrowseuserini)
|
||||
ON_CBN_SELCHANGE(IDC_COMBO_WHATGAME, OnSelchangeComboWhatgame)
|
||||
ON_BN_CLICKED(IDC_BUTTON_CLEAN, OnButtonClean)
|
||||
+ ON_BN_CLICKED(IDC_NOALPHA, OnNoalpha)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
@@ -332,7 +344,7 @@ bool SetQdirFromPath( const char *path )
|
||||
len = strlen(BASEDIRNAME);
|
||||
for (c=path+strlen(path)-1 ; c != path ; c--)
|
||||
{
|
||||
- int i;
|
||||
+ unsigned int i;
|
||||
|
||||
if (strnicmp (c, BASEDIRNAME, len) == 0)
|
||||
{
|
||||
@@ -448,7 +460,12 @@ void CPrefsDlg::LoadPrefs()
|
||||
|
||||
m_strQuake2 = AfxGetApp()->GetProfileString(PREF_SECTION, Q2_KEY);
|
||||
// if the path to the engine is empty, we set this flag to call InitEnginePath later
|
||||
- if (m_strQuake2.GetLength() == 0)
|
||||
+ // if the path to the engine is empty or points to a file that doesn't exist we call InitEnginePath
|
||||
+ struct _finddata_t fileinfo;
|
||||
+ int handle;
|
||||
+ handle = _findfirst (m_strQuake2.GetBuffer(0), &fileinfo);
|
||||
+ _findclose( handle );
|
||||
+ if (handle == -1 || m_strQuake2.GetLength() == 0)
|
||||
InitEnginePath();
|
||||
|
||||
m_iLastLightIntensity = AfxGetApp()->GetProfileInt(PREF_SECTION, "LastLightIntensity", 300);
|
||||
@@ -697,4 +731,10 @@ void CPrefsDlg::OnButtonClean()
|
||||
theApp.ResetRegistry();
|
||||
g_pParentWnd->OnFileExit();
|
||||
}
|
||||
+}
|
||||
+
|
||||
+void CPrefsDlg::OnNoalpha()
|
||||
+{
|
||||
+ if (static_cast<CButton *>(GetDlgItem(IDC_NOALPHA))->GetState() & 0x0003)
|
||||
+ MessageBox( "If alpha channel support is disabled, Curry plugin might not work as expected.", "Alpha channel support", MB_OK );
|
||||
}
|
||||
diff -rup ../Q3Radiant201/Radiant.rc Q3Radiant/Radiant.rc
|
||||
--- ../Q3Radiant201/Radiant.rc Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/Radiant.rc Thu Aug 3 17:19:22 2000
|
||||
@@ -1518,7 +1520,7 @@ BEGIN
|
||||
LTEXT "Height",IDC_STATIC,131,136,22,8
|
||||
END
|
||||
|
||||
-IDD_DLG_PREFS DIALOG DISCARDABLE 0, 0, 386, 351
|
||||
+IDD_DLG_PREFS DIALOG DISCARDABLE 0, 0, 386, 380
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Q3Radiant Preferences"
|
||||
FONT 8, "MS Sans Serif"
|
||||
@@ -1561,103 +1563,108 @@ BEGIN
|
||||
CONTROL "Texture subset",IDC_CHECK_TEXTUREWINDOW,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,308,94,63,10
|
||||
CONTROL "Right click to drop entities",IDC_CHECK_RIGHTCLICK,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,137,95,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,150,95,10
|
||||
CONTROL "Face selection",IDC_CHECK_FACE,"Button",BS_AUTOCHECKBOX |
|
||||
- WS_TABSTOP,13,149,62,10
|
||||
- EDITTEXT IDC_EDIT_ROTATION,58,161,24,12,ES_AUTOHSCROLL
|
||||
+ WS_TABSTOP,13,162,62,10
|
||||
+ EDITTEXT IDC_EDIT_ROTATION,58,174,24,12,ES_AUTOHSCROLL
|
||||
CONTROL "ALT + multi-drag",IDC_CHECK_ALTDRAG,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,137,68,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,150,68,10
|
||||
CONTROL "Snap T to Grid",IDC_CHECK_SNAPT,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,149,62,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,162,62,10
|
||||
CONTROL "Mouse chaser",IDC_CHECK_MOUSECHASE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,160,68,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,173,68,10
|
||||
CONTROL "Patch Toolbar",IDC_CHECK_WIDETOOLBAR,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,137,61,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,150,61,10
|
||||
CONTROL "Light drawing",IDC_CHECK_LIGHTDRAW,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,149,58,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,162,58,10
|
||||
CONTROL "Paint sizing info",IDC_CHECK_SIZEPAINT,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,160,65,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,173,65,10
|
||||
CONTROL "Hi Color Textures",IDC_CHECK_HICOLOR,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,281,137,70,10
|
||||
- LTEXT "Startup Shaders:",IDC_STATIC,281,150,54,8
|
||||
- COMBOBOX IDC_COMBO_SHADERS,281,160,82,54,CBS_DROPDOWNLIST |
|
||||
+ BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
+ WS_TABSTOP,281,150,70,10
|
||||
+ LTEXT "Startup Shaders:",IDC_STATIC,281,163,54,8
|
||||
+ COMBOBOX IDC_COMBO_SHADERS,281,173,82,54,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
- EDITTEXT IDC_EDIT_QUAKE2,13,215,229,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSE,248,216,16,11
|
||||
+ EDITTEXT IDC_EDIT_QUAKE2,13,228,229,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSE,248,230,16,11
|
||||
CONTROL "Use internal (DLL) QBSP....",IDC_CHECK_INTERNALBSP,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,234,102,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,247,102,10
|
||||
CONTROL "Don't clamp plane points",IDC_CHECK_NOCLAMP,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,246,93,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,260,93,10
|
||||
CONTROL "Snapshots",IDC_CHECK_SNAPSHOTS,"Button",BS_AUTOCHECKBOX |
|
||||
- WS_TABSTOP,13,258,49,10
|
||||
+ WS_TABSTOP,13,271,49,10
|
||||
CONTROL "Use +setgame for run",IDC_CHECK_SETGAME,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,270,83,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,284,83,10
|
||||
CONTROL "Run game after QBSP3...",IDC_CHECK_RUNQUAKE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,234,96,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,247,96,10
|
||||
CONTROL "Load last project on open",IDC_CHECK_LOADLAST,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,246,96,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,260,96,10
|
||||
CONTROL "Load last map on open",IDC_CHECK_LOADLASTMAP,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,258,88,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,271,88,10
|
||||
CONTROL "Auto save every ",IDC_CHECK_AUTOSAVE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,270,66,10
|
||||
- EDITTEXT IDC_EDIT_AUTOSAVE,188,270,27,12,ES_AUTOHSCROLL |
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,284,66,10
|
||||
+ EDITTEXT IDC_EDIT_AUTOSAVE,188,284,27,12,ES_AUTOHSCROLL |
|
||||
ES_NUMBER
|
||||
CONTROL "Spin1",IDC_SPIN_AUTOSAVE,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,212,268,11,14
|
||||
- LTEXT "Status point size:",IDC_STATIC,258,235,54,8
|
||||
- EDITTEXT IDC_EDIT_STATUSPOINTSIZE,315,233,29,12,ES_AUTOHSCROLL
|
||||
+ UDS_ARROWKEYS,212,282,11,14
|
||||
+ LTEXT "Status point size:",IDC_STATIC,258,249,54,8
|
||||
+ EDITTEXT IDC_EDIT_STATUSPOINTSIZE,315,247,29,12,ES_AUTOHSCROLL
|
||||
CONTROL "Spin1",IDC_SPIN_POINTSIZE,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,344,232,11,14
|
||||
- LTEXT "Undo Levels:",IDC_STATIC,258,248,43,8
|
||||
- EDITTEXT IDC_EDIT_UNDOLEVELS,315,246,29,12,ES_AUTOHSCROLL
|
||||
+ UDS_ARROWKEYS,344,246,11,14
|
||||
+ LTEXT "Undo Levels:",IDC_STATIC,258,262,43,8
|
||||
+ EDITTEXT IDC_EDIT_UNDOLEVELS,315,260,29,12,ES_AUTOHSCROLL
|
||||
CONTROL "Spin1",IDC_SPIN_UNDO,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,344,246,11,14
|
||||
+ UDS_ARROWKEYS,344,260,11,14
|
||||
CONTROL "Use PAK/PK3 file(s):",IDC_CHECK_PAK,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,289,81,10
|
||||
- EDITTEXT IDC_EDIT_PAKFILE,95,288,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEPAK,328,289,16,11
|
||||
- EDITTEXT IDC_EDIT_PREFABPATH,95,305,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEPREFAB,328,306,16,11
|
||||
- EDITTEXT IDC_EDIT_USERPATH,95,322,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEUSERINI,328,323,16,11
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,303,81,10
|
||||
+ EDITTEXT IDC_EDIT_PAKFILE,95,302,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEPAK,328,303,16,11
|
||||
+ EDITTEXT IDC_EDIT_PREFABPATH,95,319,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEPREFAB,328,319,16,11
|
||||
+ EDITTEXT IDC_EDIT_USERPATH,95,335,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEUSERINI,328,337,16,11
|
||||
DEFPUSHBUTTON "OK",IDOK,341,7,38,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,341,24,38,14
|
||||
CONTROL "Entities are DLL based",IDC_CHECK_DLLENTITIES,"Button",
|
||||
BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | NOT WS_VISIBLE |
|
||||
- WS_DISABLED | WS_TABSTOP,273,178,88,12
|
||||
+ WS_DISABLED | WS_TABSTOP,273,191,88,12
|
||||
CONTROL "Write face color info",IDC_CHECK_FACECOLOR,"Button",
|
||||
BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
- WS_TABSTOP,189,178,79,10
|
||||
- LTEXT "minutes",IDC_STATIC,216,271,25,8
|
||||
+ WS_TABSTOP,189,191,79,10
|
||||
+ LTEXT "minutes",IDC_STATIC,216,284,25,8
|
||||
GROUPBOX "Mouse",IDC_STATIC,179,7,103,28
|
||||
- GROUPBOX "Views / Rendering",IDC_STATIC,7,38,372,86
|
||||
+ GROUPBOX "Views / Rendering",IDC_STATIC,7,38,372,98
|
||||
GROUPBOX "Game path / Tool settings / Stuff that wouldn't fit anywhere else",
|
||||
- IDC_STATIC,7,205,372,139
|
||||
+ IDC_STATIC,7,216,372,157
|
||||
CONTROL 147,IDB_VIEWDEFAULT,"Static",SS_BITMAP,13,48,21,19
|
||||
CONTROL 148,IDB_VIEWDEFAULT2,"Static",SS_BITMAP,40,48,21,19
|
||||
CONTROL 149,IDB_VIEWDEFAULT3,"Static",SS_BITMAP,67,48,21,19
|
||||
- GROUPBOX "New functionality:",IDC_STATIC,7,126,372,74
|
||||
+ GROUPBOX "New functionality:",IDC_STATIC,7,139,372,74
|
||||
CONTROL 150,IDB_VIEWDEFAULT_Z,"Static",SS_BITMAP,93,48,21,19
|
||||
LTEXT "slow",IDC_STATIC,131,69,15,8
|
||||
LTEXT "fast",IDC_STATIC,204,69,12,8
|
||||
- GROUPBOX "Camera ",IDC_STATIC,126,47,100,72
|
||||
- LTEXT "Prefab path:",IDC_STATIC,54,306,40,8
|
||||
+ GROUPBOX "Camera ",IDC_STATIC,126,47,100,84
|
||||
+ LTEXT "Prefab path:",IDC_STATIC,54,319,40,8
|
||||
GROUPBOX "Optimize interface for",IDC_STATIC,7,7,170,28
|
||||
- LTEXT "User INI path:",IDC_STATIC,49,324,45,8
|
||||
- LTEXT "Rotation inc:",IDC_STATIC,15,163,41,8
|
||||
+ LTEXT "User INI path:",IDC_STATIC,49,338,45,8
|
||||
+ LTEXT "Rotation inc:",IDC_STATIC,15,176,41,8
|
||||
CONTROL "Use Shaders",IDC_CHECK_USESHADERS,"Button",
|
||||
BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
- WS_TABSTOP,129,178,57,10
|
||||
- GROUPBOX "Texturing",IDC_STATIC,231,47,141,72
|
||||
+ WS_TABSTOP,129,191,57,10
|
||||
+ GROUPBOX "Texturing",IDC_STATIC,231,47,141,84
|
||||
LTEXT "Quality",IDC_STATIC,237,57,22,8
|
||||
LTEXT "Low",IDC_STATIC,239,81,14,8
|
||||
LTEXT "High",IDC_STATIC,347,82,16,8
|
||||
CONTROL "Vertex editing splits faces",IDC_CHECK_VERTEXMODE,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,179,94,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,192,94,10
|
||||
PUSHBUTTON "Reset Registry",IDC_BUTTON_CLEAN,287,24,50,14
|
||||
+ CONTROL "Log console to Radiant.log",IDC_CHECK_LOG,"Button",
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,356,97,11
|
||||
+ CONTROL "Ignore alpha channel",IDC_NOALPHA,"Button",
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,236,117,127,10
|
||||
END
|
||||
|
||||
IDD_DLG_MAPINFO DIALOG DISCARDABLE 0, 0, 181, 183
|
||||
diff -rup ../Q3Radiant201/TexWnd.cpp Q3Radiant/TexWnd.cpp
|
||||
--- ../Q3Radiant201/TexWnd.cpp Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/TexWnd.cpp Thu Aug 3 17:19:23 2000
|
||||
@@ -1439,31 +1550,46 @@ void Delay(float fSeconds)
|
||||
void ViewShader(const char *pFile, const char *pName)
|
||||
{
|
||||
// we load the .shader file to find where it actually is
|
||||
- CString str;
|
||||
+ CString fullName = ValueForKey( g_qeglobals.d_project_entity, "basepath" );
|
||||
+ fullName += '/';
|
||||
+ fullName += pFile;
|
||||
char* pBuff = NULL;
|
||||
- int nSize = LoadFile(pFile, reinterpret_cast<void**>(&pBuff));
|
||||
+ int nSize = LoadFile(fullName.GetBuffer(0), reinterpret_cast<void**>(&pBuff));
|
||||
if (nSize == -1)
|
||||
{
|
||||
- nSize = PakLoadAnyFile(pFile, reinterpret_cast<void**>(&pBuff));
|
||||
- }
|
||||
-
|
||||
- if (nSize > 0)
|
||||
- {
|
||||
- str = pBuff;
|
||||
+ Sys_Printf("Failed to load shader file %s ... check your project settings!\n", pFile );
|
||||
+ return;
|
||||
}
|
||||
- int nStart = 0;
|
||||
- if (str.GetLength() > 0)
|
||||
+ // look for the shader declaration
|
||||
+ int nStart;
|
||||
+ CString strFind = pName;
|
||||
+ CString strLook = pBuff;
|
||||
+ strLook.MakeLower();
|
||||
+ strFind.MakeLower();
|
||||
+ // offset used when jumping over commented out definitions
|
||||
+ int nOffset = 0;
|
||||
+ while (true)
|
||||
{
|
||||
- CString strFind = pName;
|
||||
- CString strLook = str;
|
||||
- strLook.MakeLower();
|
||||
- strFind.MakeLower();
|
||||
- int n = strLook.Find(strFind);
|
||||
- if (n >= 0)
|
||||
- {
|
||||
- nStart = n;
|
||||
+ nStart = strLook.Find(strFind, nOffset);
|
||||
+ if (nStart == -1)
|
||||
+ break;
|
||||
+ // we have found something, maybe it's a commented out shader name?
|
||||
+ char *strCheck = new char[strLook.GetLength()+1];
|
||||
+ strcpy( strCheck, strLook.GetBuffer(0) );
|
||||
+ strCheck[nStart] = 0;
|
||||
+ char *pCheck = strrchr( strCheck, '\n' );
|
||||
+ // if there's a commentary sign in-between we'll continue
|
||||
+ if (pCheck && strstr( pCheck, "//" ))
|
||||
+ {
|
||||
+ delete[] strCheck;
|
||||
+ nOffset = nStart + 1;
|
||||
+ continue;
|
||||
}
|
||||
+ delete[] strCheck;
|
||||
+ break;
|
||||
}
|
||||
+ // now close the file
|
||||
+ free(pBuff);
|
||||
|
||||
CString s= "editpad ";
|
||||
// build the full shader name
|
||||
@@ -1472,7 +1598,9 @@ void ViewShader(const char *pFile, const
|
||||
s += pFile;
|
||||
WinExec(s, SW_SHOWNORMAL);
|
||||
|
||||
- Delay(1.5);
|
||||
+ // TTimo: we used to call Delay here, to continue processing messages. But it seems to induce a lot of instabilities.
|
||||
+ // so now the user will simply have to wait.
|
||||
+ Sleep( 1500 );
|
||||
|
||||
// now grab the edit window and scroll to the shader we want to edit
|
||||
HWND hwndEdit = FindEditWindow();
|
||||
@@ -1485,8 +1613,6 @@ void ViewShader(const char *pFile, const
|
||||
{
|
||||
Sys_Printf("Unable to load shader editor.\n");
|
||||
}
|
||||
-
|
||||
-
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2319,10 +2459,21 @@ void CTexWnd::OnVScroll(UINT nSBCode, UI
|
||||
|
||||
void LoadShaders()
|
||||
{
|
||||
+ CStringList lst;
|
||||
+ BuildShaderList( lst );
|
||||
+ if (lst.GetCount() == 0)
|
||||
+ return;
|
||||
+ POSITION pos = lst.GetHeadPosition();
|
||||
+ while (pos != NULL)
|
||||
+ {
|
||||
+ QERApp_LoadShaderFile( lst.GetAt(pos).GetBuffer(0) );
|
||||
+ lst.GetNext(pos);
|
||||
+ }
|
||||
+
|
||||
+ //++timo clean
|
||||
+#if 0
|
||||
char dirstring[1024];
|
||||
char *path;
|
||||
- //struct _finddata_t fileinfo;
|
||||
- //int handle;
|
||||
path = ValueForKey (g_qeglobals.d_project_entity, "basepath");
|
||||
sprintf (dirstring, "%s/scripts/shaderlist.txt", path);
|
||||
char *pBuff = NULL;
|
||||
@@ -2354,9 +2505,9 @@ void LoadShaders()
|
||||
}
|
||||
else
|
||||
{
|
||||
- Sys_Printf("Unable to load shaderlist.txt, shaders not loaded!");
|
||||
+ Sys_Printf("Unable to load %s, shaders not loaded!\n", dirstring);
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
}
|
||||
|
||||
// TTimo: modified to expect the reletive path to the skin as input
|
||||
diff -rup ../Q3Radiant201/WIN_QE3.CPP Q3Radiant/WIN_QE3.CPP
|
||||
--- ../Q3Radiant201/WIN_QE3.CPP Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/WIN_QE3.CPP Thu Aug 3 17:19:24 2000
|
||||
@@ -3,6 +3,11 @@
|
||||
#include "mru.h"
|
||||
#include "PrefsDlg.h"
|
||||
|
||||
+// for the logging part
|
||||
+#include <io.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// BSP frontend plugin
|
||||
// global flag for BSP frontend plugin is g_qeglobals.bBSPFrontendPlugin
|
||||
@@ -42,10 +47,18 @@ void Sys_SetTitle (char *text)
|
||||
}
|
||||
|
||||
HCURSOR waitcursor;
|
||||
+#define TIMING_STATS
|
||||
+#ifdef TIMING_STATS
|
||||
+double start,end;
|
||||
+#endif
|
||||
|
||||
void Sys_BeginWait (void)
|
||||
{
|
||||
waitcursor = SetCursor (LoadCursor (NULL, IDC_WAIT));
|
||||
+#ifdef TIMING_STATS
|
||||
+ Sys_Printf("Sys_BeginWait\n");
|
||||
+ start = Sys_DoubleTime();
|
||||
+#endif
|
||||
}
|
||||
|
||||
void Sys_EndWait (void)
|
||||
@@ -55,9 +68,12 @@ void Sys_EndWait (void)
|
||||
SetCursor (waitcursor);
|
||||
waitcursor = NULL;
|
||||
}
|
||||
+#ifdef TIMING_STATS
|
||||
+ end = Sys_DoubleTime();
|
||||
+ Sys_Printf ("Sys_EndWait: %i ms\n", (int)(1000*(end-start)));
|
||||
+#endif
|
||||
}
|
||||
|
||||
-
|
||||
void Sys_GetCursorPos (int *x, int *y)
|
||||
{
|
||||
POINT lpPoint;
|
||||
diff -rup ../Q3Radiant201/Win_main.cpp Q3Radiant/Win_main.cpp
|
||||
--- ../Q3Radiant201/Win_main.cpp Mon Jun 26 12:31:01 2000
|
||||
+++ Q3Radiant/Win_main.cpp Thu Aug 3 17:19:24 2000
|
||||
@@ -341,54 +341,6 @@ void RunBsp (char *command)
|
||||
Sleep (100); // give the new process a chance to open it's window
|
||||
|
||||
BringWindowToTop( g_qeglobals.d_hwndMain ); // pop us back on top
|
||||
-#if 0
|
||||
- //
|
||||
- // write qe3bsp.bat
|
||||
- //
|
||||
- sprintf (batpath, "%sqe3bsp.bat", temppath);
|
||||
- hFile = fopen(batpath, "w");
|
||||
- if (!hFile)
|
||||
- Error ("Can't write to %s", batpath);
|
||||
- fprintf (hFile, sys);
|
||||
- fclose (hFile);
|
||||
-
|
||||
- //
|
||||
- // write qe3bsp2.bat
|
||||
- //
|
||||
- sprintf (batpath, "%sqe3bsp2.bat", temppath);
|
||||
- hFile = fopen(batpath, "w");
|
||||
- if (!hFile)
|
||||
- Error ("Can't write to %s", batpath);
|
||||
- fprintf (hFile, "%sqe3bsp.bat > %s", temppath, outputpath);
|
||||
- fclose (hFile);
|
||||
-
|
||||
- Pointfile_Delete ();
|
||||
-
|
||||
- GetStartupInfo (&startupinfo);
|
||||
-
|
||||
- ret = CreateProcess(
|
||||
- batpath, // pointer to name of executable module
|
||||
- NULL, // pointer to command line string
|
||||
- NULL, // pointer to process security attributes
|
||||
- NULL, // pointer to thread security attributes
|
||||
- FALSE, // handle inheritance flag
|
||||
- 0 /*DETACHED_PROCESS*/, // creation flags
|
||||
- NULL, // pointer to new environment block
|
||||
- NULL, // pointer to current directory name
|
||||
- &startupinfo, // pointer to STARTUPINFO
|
||||
- &ProcessInformation // pointer to PROCESS_INFORMATION
|
||||
- );
|
||||
-
|
||||
- if (!ret)
|
||||
- Error ("CreateProcess failed");
|
||||
-
|
||||
- bsp_process = ProcessInformation.hProcess;
|
||||
-
|
||||
- Sleep (100); // give the new process a chance to open it's window
|
||||
-
|
||||
- //BringWindowToTop( g_qeglobals.d_hwndMain ); // pop us back on top
|
||||
- //SetFocus (g_qeglobals.d_hwndCamera);
|
||||
-#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
for filename in $*; do
|
||||
if [ -f $filename ]; then
|
||||
echo -n $filename
|
||||
tr -d '\r' < $filename > ___$filename_d2u___
|
||||
mv ___$filename_d2u___ $filename
|
||||
echo " converted."
|
||||
else
|
||||
echo "$filename is not a file."
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo done.
|
||||
|
||||
# end of d2u ...
|
|
@ -1,76 +0,0 @@
|
|||
Listing of required modules and interfaces as an XML file
|
||||
=========================================================
|
||||
|
||||
Purpose:
|
||||
--------
|
||||
|
||||
Make the editor more data driven. Be able to specify during
|
||||
startup the full running configuration of the editor:
|
||||
- what modules to load
|
||||
- general execution paths (i.e. what's in the project settings)
|
||||
- configuration for the loaded modules
|
||||
- user preferences
|
||||
|
||||
Feature Requirements:
|
||||
---------------------
|
||||
|
||||
This is primarily intended for multiple games support. A restart
|
||||
of the editor may be required when going from one game to the
|
||||
other, but otherwise it should read the XML file and initialize
|
||||
the right modules and APIs from there.
|
||||
|
||||
Don't have a clear view of what multiple games support is gonna
|
||||
be like. Can list a few things:
|
||||
|
||||
- some interfaces are required for startup in a given game mode.
|
||||
That's primarily what the XML config file is there for.
|
||||
For instance in Q3 you will require Q3 map format module
|
||||
and Q1 will require Q1 map format module
|
||||
|
||||
- some modules are to be ignored? that's primary intended to
|
||||
avoid loading unneeded modules.
|
||||
|
||||
- some plugins are loaded for all games?
|
||||
- some plugins are only relevant for some games?
|
||||
(those two suggest various installation paths for modules
|
||||
and directory-based scan?)
|
||||
|
||||
- a plugin might require some other APIs to complete it's loading
|
||||
process (i.e. sending it's own XML description of required
|
||||
interfaces).
|
||||
|
||||
Constaints:
|
||||
-----------
|
||||
|
||||
We have a nasty collision between preferences / project settings
|
||||
and XML requirements. All three things need to be unified in some way.
|
||||
The long term target being to have a central installation location
|
||||
for the editor, and independant packages for each game.
|
||||
|
||||
What kind of difference is there between project settings and prefs?
|
||||
Prefs would be user settings that survive throughout all games,
|
||||
whereas project settings are per-game / per-mod configuration. Turns
|
||||
out it's all a matter of loading the right configuration chunks at the
|
||||
right time.
|
||||
|
||||
Proposed implementation:
|
||||
------------------------
|
||||
|
||||
Use key/values (== property bags) based on XML format for everything.
|
||||
Use them on project settings, and user prefs. The only difference
|
||||
between what would be project settings and what would be user pref
|
||||
is in which game configuration they are loaded, and how they are used.
|
||||
|
||||
Project templates: We have a particular syntax to build settings from
|
||||
a 'template' version. Instead of loading a project template, we should
|
||||
be selecting a template from a list.
|
||||
|
||||
Default startup: If we are configured to load last project on startup,
|
||||
load it .. otherwise display a list of games and templates?
|
||||
|
||||
Module library:
|
||||
---------------
|
||||
|
||||
The dynamic loading / interfaces sharing / pure virtual classes needs
|
||||
to be implemented in a generic module. It should be the basis of the
|
||||
editor startup process.
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
for i in *.h; do
|
||||
sed -e "s/BasePath/EnginePath/" $i > $i.tmp
|
||||
mv -f $i.tmp $i
|
||||
done
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
** currently supported debug messages:
|
||||
|
||||
* map leaked / pointfile information
|
||||
+ tested
|
||||
|
||||
* duplicate plane
|
||||
+ tested
|
||||
|
||||
* degenerate plane, mirrored plane
|
||||
+ testing may not be necessary, exact same code as duplicate plane
|
||||
|
||||
* mixed CONTENTS_DETAIL and CONTENTS_STRUCTURAL
|
||||
- not tested!
|
||||
|
||||
* fog brush has multiple visible sides
|
||||
+ tested
|
||||
|
||||
* WindingFromDrawSurf failed: MAX_POINTS_ON_WINDING exceeded
|
||||
+ tested, only outputs a single point, would need much improvement
|
||||
(TstMaps/western.map)
|
||||
|
||||
* MAX_BUILD_SIDES
|
||||
uses xml_Select as other warnings, switched xml_Select to error or warn
|
||||
+ tested
|
||||
|
||||
** to-be-added list (and associated test map file if any)
|
||||
|
||||
* Node without a volume
|
||||
* leaf with too many portals
|
||||
-> both in Desktop_p_leaf.map, contributed by y_lavanant@vistech.ie
|
||||
|
||||
Mesh lightmap miscount
|
||||
(no test map)
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
|
||||
<game
|
||||
name="Quake III Arena"
|
||||
enginepath="/usr/local/games/quake3"
|
||||
gametools="/home/timo/SVN/ZeroRadiant/install/games"
|
||||
gamename="quake3"
|
||||
/>
|
|
@ -108,7 +108,7 @@ void Dialog::Destroy ()
|
|||
}
|
||||
}
|
||||
|
||||
void Dialog::AddDialogData (GtkObject *object, void *buf, DLG_DATA_TYPE type)
|
||||
void Dialog::AddDialogData( GtkObject *object, void *buf, DLG_DATA_TYPE type )
|
||||
{
|
||||
DLG_DATA *data;
|
||||
|
||||
|
@ -120,10 +120,9 @@ void Dialog::AddDialogData (GtkObject *object, void *buf, DLG_DATA_TYPE type)
|
|||
m_pDataList = g_slist_append (m_pDataList, data);
|
||||
}
|
||||
|
||||
void Dialog::AddModalButton (GtkWidget *widget, int ret)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (widget), "clicked",
|
||||
GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (ret));
|
||||
void Dialog::AddModalButton( GtkWidget *widget, int ret ) {
|
||||
gtk_signal_connect( GTK_OBJECT( widget ), "clicked",
|
||||
GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( ret ) );
|
||||
}
|
||||
|
||||
void Dialog::UpdateData (bool retrieve)
|
||||
|
@ -261,35 +260,33 @@ void Dialog::UpdateData (bool retrieve)
|
|||
}
|
||||
}
|
||||
|
||||
void Dialog::EndModal (int code)
|
||||
{
|
||||
void Dialog::EndModal( int code ) {
|
||||
m_nLoop = 0;
|
||||
m_nReturn = code;
|
||||
}
|
||||
|
||||
int Dialog::DoModal ()
|
||||
int Dialog::DoModal()
|
||||
{
|
||||
Create ();
|
||||
UpdateData (FALSE);
|
||||
Create();
|
||||
UpdateData( FALSE );
|
||||
|
||||
PreModal();
|
||||
|
||||
gtk_grab_add (m_pWidget);
|
||||
gtk_widget_show (m_pWidget);
|
||||
gtk_grab_add( m_pWidget );
|
||||
gtk_widget_show( m_pWidget );
|
||||
|
||||
m_nLoop = 1;
|
||||
while (m_nLoop)
|
||||
gtk_main_iteration ();
|
||||
|
||||
if (m_pWidget != NULL)
|
||||
{
|
||||
UpdateData (TRUE);
|
||||
|
||||
gtk_grab_remove (m_pWidget);
|
||||
gtk_widget_hide (m_pWidget);
|
||||
while ( m_nLoop ) {
|
||||
gtk_main_iteration();
|
||||
}
|
||||
PostModal (m_nReturn);
|
||||
|
||||
if ( m_pWidget != NULL ) {
|
||||
UpdateData( TRUE );
|
||||
|
||||
gtk_grab_remove( m_pWidget );
|
||||
gtk_widget_hide( m_pWidget );
|
||||
}
|
||||
PostModal( m_nReturn );
|
||||
|
||||
return m_nReturn;
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ class Dialog
|
|||
/*!
|
||||
used in overloaded BuildDialog implementations to configure modal behaviour easily
|
||||
*/
|
||||
void AddModalButton (GtkWidget *widget, int ret);
|
||||
void AddModalButton( GtkWidget *widget, int ret );
|
||||
|
||||
private:
|
||||
GSList* m_pDataList;
|
||||
|
|
|
@ -851,14 +851,13 @@ GtkWidget* create_menu_in_menu_with_mnemonic (GtkWidget *menu, const gchar *mnem
|
|||
// =============================================================================
|
||||
// Message Boxes
|
||||
|
||||
void dialog_button_callback (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
void dialog_button_callback( GtkWidget *widget, gpointer data ) {
|
||||
GtkWidget *parent;
|
||||
int *loop, *ret;
|
||||
|
||||
parent = gtk_widget_get_toplevel (widget);
|
||||
loop = (int*)g_object_get_data (G_OBJECT (parent), "loop");
|
||||
ret = (int*)g_object_get_data (G_OBJECT (parent), "ret");
|
||||
parent = gtk_widget_get_toplevel( widget );
|
||||
loop = (int*)g_object_get_data( G_OBJECT( parent ), "loop" );
|
||||
ret = (int*)g_object_get_data( G_OBJECT( parent ), "ret" );
|
||||
|
||||
*loop = 0;
|
||||
*ret = (int)data;
|
||||
|
|
|
@ -419,10 +419,9 @@ void error_redirect (const gchar *domain, GLogLevelFlags log_level, const gchar
|
|||
// Sys_FPrintf (SYS_NOCON, buf);
|
||||
}
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
char *libgl, *ptr;
|
||||
int i, j, k;
|
||||
int main( int argc, char* argv[] ) {
|
||||
char *libgl, *ptr;
|
||||
int i, j, k;
|
||||
|
||||
#ifdef _WIN32
|
||||
libgl = "opengl32.dll";
|
||||
|
@ -442,9 +441,9 @@ int main (int argc, char* argv[])
|
|||
char *loginname;
|
||||
struct passwd *pw;
|
||||
seteuid(getuid());
|
||||
if (geteuid() == 0 && (loginname = getlogin()) != NULL &&
|
||||
(pw = getpwnam(loginname)) != NULL)
|
||||
setuid(pw->pw_uid);
|
||||
if ( geteuid() == 0 && ( loginname = getlogin() ) != NULL && ( pw = getpwnam(loginname) ) != NULL ) {
|
||||
setuid(pw->pw_uid);
|
||||
}
|
||||
#endif
|
||||
|
||||
gtk_disable_setlocale();
|
||||
|
@ -507,24 +506,9 @@ int main (int argc, char* argv[])
|
|||
g_strBitmapsPath = g_strAppPath;
|
||||
g_strBitmapsPath += "bitmaps/";
|
||||
|
||||
#if 0
|
||||
// http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=639
|
||||
// now check if we are running from a network installation
|
||||
// use a dummy file as the flag
|
||||
FILE *f_netrun;
|
||||
CString strNetrun;
|
||||
strNetrun = g_strAppPath; strNetrun += NETRUN_FILENAME;
|
||||
f_netrun = fopen(strNetrun.GetBuffer(), "r");
|
||||
if (f_netrun)
|
||||
{
|
||||
fclose(f_netrun);
|
||||
g_PrefsDlg.m_bUseHomePath = true;
|
||||
}
|
||||
#endif
|
||||
CGameDialog::UpdateNetrun(false); // read the netrun configuration
|
||||
|
||||
if (CGameDialog::GetNetrun())
|
||||
{
|
||||
if ( CGameDialog::GetNetrun() ) {
|
||||
// we have to find a per-user g_strTempPath
|
||||
// this behaves the same as on Linux
|
||||
g_strTempPath = getenv("USERPROFILE");
|
||||
|
@ -573,19 +557,12 @@ int main (int argc, char* argv[])
|
|||
|
||||
g_strAppPath = real;
|
||||
|
||||
#if 0
|
||||
printf("g_strAppPath: %s\n", g_strAppPath.GetBuffer());
|
||||
#endif
|
||||
|
||||
// radiant is installed in the parent dir of "tools/"
|
||||
// NOTE: this is not very easy for debugging
|
||||
// maybe add options to lookup in several places?
|
||||
// (for now I had to create symlinks)
|
||||
g_strBitmapsPath = g_strAppPath;
|
||||
g_strBitmapsPath += "bitmaps/";
|
||||
#if 0
|
||||
printf("g_strBitmapsPath: %s\n", g_strBitmapsPath.GetBuffer());
|
||||
#endif
|
||||
|
||||
// we will set this right after the game selection is done
|
||||
g_strGameToolsPath = g_strAppPath;
|
||||
|
@ -607,9 +584,8 @@ int main (int argc, char* argv[])
|
|||
g_pidFile += "radiant.pid";
|
||||
|
||||
FILE *pid;
|
||||
pid = fopen (g_pidFile.GetBuffer(), "r");
|
||||
if (pid != NULL)
|
||||
{
|
||||
pid = fopen( g_pidFile.GetBuffer(), "r" );
|
||||
if ( pid != NULL ) {
|
||||
fclose (pid);
|
||||
CString msg;
|
||||
|
||||
|
@ -651,9 +627,10 @@ int main (int argc, char* argv[])
|
|||
}
|
||||
|
||||
// create a primary .pid for global init run
|
||||
pid = fopen (g_pidFile.GetBuffer(), "w");
|
||||
if (pid)
|
||||
fclose (pid);
|
||||
pid = fopen( g_pidFile.GetBuffer(), "w" );
|
||||
if ( pid ) {
|
||||
fclose( pid );
|
||||
}
|
||||
|
||||
// a safe check to avoid people running broken installations
|
||||
// (otherwise, they run it, crash it, and blame us for not forcing them hard enough to pay attention while installing)
|
||||
|
@ -661,7 +638,7 @@ int main (int argc, char* argv[])
|
|||
// let's leave it disabled in debug mode in any case
|
||||
// http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=431
|
||||
#ifndef _DEBUG
|
||||
#define CHECK_VERSION
|
||||
//#define CHECK_VERSION
|
||||
#endif
|
||||
#ifdef CHECK_VERSION
|
||||
// locate and open RADIANT_MAJOR and RADIANT_MINOR
|
||||
|
@ -728,11 +705,10 @@ int main (int argc, char* argv[])
|
|||
#endif
|
||||
|
||||
g_qeglobals.disable_ini = false;
|
||||
g_PrefsDlg.Init ();
|
||||
g_PrefsDlg.Init();
|
||||
|
||||
// close the primary
|
||||
if (remove (g_pidFile.GetBuffer ()) == -1)
|
||||
{
|
||||
if ( remove( g_pidFile.GetBuffer () ) == -1 ) {
|
||||
CString msg;
|
||||
msg = "WARNING: Could not delete "; msg += g_pidGameFile;
|
||||
gtk_MessageBox (NULL, msg, "Radiant", MB_OK | MB_ICONERROR );
|
||||
|
@ -845,7 +821,7 @@ int main (int argc, char* argv[])
|
|||
#endif
|
||||
|
||||
#ifndef SKIP_SPLASH
|
||||
create_splash ();
|
||||
create_splash();
|
||||
#endif
|
||||
|
||||
if (!QGL_Init(libgl, ""))
|
||||
|
@ -865,30 +841,31 @@ int main (int argc, char* argv[])
|
|||
#endif
|
||||
|
||||
// redirect Gtk warnings to the console
|
||||
g_log_set_handler ("Gdk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING|
|
||||
g_log_set_handler( "Gdk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING|
|
||||
G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, NULL);
|
||||
g_log_set_handler ("Gtk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING|
|
||||
g_log_set_handler( "Gtk", (GLogLevelFlags)(G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING|
|
||||
G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO|G_LOG_LEVEL_DEBUG), error_redirect, NULL);
|
||||
|
||||
// spog - creates new filters list for the first time
|
||||
g_qeglobals.d_savedinfo.filters = NULL; //initialise to NULL
|
||||
g_qeglobals.d_savedinfo.filters = NULL;
|
||||
g_qeglobals.d_savedinfo.filters = FilterUpdate(g_qeglobals.d_savedinfo.filters);
|
||||
|
||||
g_pParentWnd = new MainFrame ();
|
||||
g_pParentWnd = new MainFrame();
|
||||
|
||||
if (g_PrefsDlg.m_bLoadLastMap && g_PrefsDlg.m_strLastMap.GetLength() > 0)
|
||||
Map_LoadFile(g_PrefsDlg.m_strLastMap.GetBuffer());
|
||||
else
|
||||
Map_New();
|
||||
if ( g_PrefsDlg.m_bLoadLastMap && g_PrefsDlg.m_strLastMap.GetLength() > 0 ) {
|
||||
Map_LoadFile(g_PrefsDlg.m_strLastMap.GetBuffer());
|
||||
} else {
|
||||
Map_New();
|
||||
}
|
||||
|
||||
// load up shaders now that we have the map loaded
|
||||
// eviltypeguy
|
||||
Texture_ShowStartupShaders ();
|
||||
Texture_ShowStartupShaders();
|
||||
|
||||
#ifndef SKIP_SPLASH
|
||||
gdk_window_raise (splash_screen->window);
|
||||
gtk_window_set_transient_for (GTK_WINDOW (splash_screen), GTK_WINDOW (g_pParentWnd->m_pWidget));
|
||||
gtk_timeout_add (1000, try_destroy_splash, NULL);
|
||||
gdk_window_raise(splash_screen->window);
|
||||
gtk_window_set_transient_for( GTK_WINDOW( splash_screen ), GTK_WINDOW( g_pParentWnd->m_pWidget ) );
|
||||
gtk_timeout_add( 1000, try_destroy_splash, NULL );
|
||||
#endif
|
||||
|
||||
g_pParentWnd->GetSynapseServer().DumpActiveClients();
|
||||
|
@ -896,7 +873,7 @@ int main (int argc, char* argv[])
|
|||
//++timo: temporary debug
|
||||
g_pParentWnd->DoWatchBSP();
|
||||
|
||||
gtk_main ();
|
||||
gtk_main();
|
||||
|
||||
// close the log file if any
|
||||
// NOTE: don't save prefs past this point!
|
||||
|
@ -908,7 +885,7 @@ int main (int argc, char* argv[])
|
|||
// NOTE TTimo not sure what this _exit(0) call is worth
|
||||
// restricting it to linux build
|
||||
#ifdef __linux__
|
||||
_exit (0);
|
||||
_exit( 0 );
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#include "stdafx.h"
|
||||
#include <glib.h>
|
||||
#include <assert.h>
|
||||
#if defined (__linux__) || defined (__APPLE__)
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -957,56 +958,70 @@ void CGameDialog::SavePrefs()
|
|||
Sys_FPrintf(SYS_ERR, "Error occured while saving global prefs file '%s'\n", strGlobalPref.GetBuffer());
|
||||
}
|
||||
|
||||
void CGameDialog::DoGameDialog()
|
||||
{
|
||||
// show the UI
|
||||
DoModal();
|
||||
void CGameDialog::DoGameInstall() {
|
||||
mGameInstall.Run();
|
||||
}
|
||||
|
||||
// unhook so we can use in other places
|
||||
// we manually incref'ed it when creating, it won't be freed (destructor)
|
||||
gtk_container_remove (GTK_CONTAINER (mTopBox), GetGlobalFrame());
|
||||
void CGameDialog::DoGameDialog() {
|
||||
// allow looping the game selection dialog with calls to the game configure dialog in between
|
||||
while ( m_bDoGameInstall ) {
|
||||
|
||||
m_bDoGameInstall = false;
|
||||
|
||||
// we save the prefs file
|
||||
SavePrefs();
|
||||
DoModal();
|
||||
|
||||
if ( m_bDoGameInstall ) {
|
||||
DoGameInstall();
|
||||
ScanForGames();
|
||||
// and we will loop to do another DoModal dialog
|
||||
}
|
||||
}
|
||||
|
||||
// unhook so we can use in other places
|
||||
// we manually incref'ed it when creating, it won't be freed (destructor)
|
||||
gtk_container_remove( GTK_CONTAINER( mTopBox ), GetGlobalFrame() );
|
||||
|
||||
// we save the prefs file
|
||||
SavePrefs();
|
||||
}
|
||||
|
||||
GtkWidget* CGameDialog::GetGlobalFrame()
|
||||
{
|
||||
GtkWidget *vbox, *text, *combo, *check;
|
||||
|
||||
if (mFrame)
|
||||
return mFrame;
|
||||
if ( mFrame != NULL ) {
|
||||
return mFrame;
|
||||
}
|
||||
|
||||
mFrame = gtk_frame_new(NULL);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(mFrame), 5);
|
||||
gtk_widget_show(mFrame);
|
||||
mFrame = gtk_frame_new( NULL );
|
||||
gtk_container_set_border_width( GTK_CONTAINER( mFrame ), 5 );
|
||||
gtk_widget_show( mFrame );
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 6);
|
||||
gtk_widget_show (vbox);
|
||||
gtk_container_add (GTK_CONTAINER (mFrame), vbox);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
vbox = gtk_vbox_new( FALSE, 6 );
|
||||
gtk_widget_show( vbox );
|
||||
gtk_container_add( GTK_CONTAINER( mFrame ), vbox );
|
||||
gtk_container_set_border_width( GTK_CONTAINER( vbox ), 5 );
|
||||
|
||||
text = gtk_label_new("Select the game:");
|
||||
gtk_widget_show(text);
|
||||
gtk_box_pack_start (GTK_BOX(vbox), text, FALSE, FALSE, 0);
|
||||
text = gtk_label_new( "Select the game:" );
|
||||
gtk_widget_show( text );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), text, FALSE, FALSE, 0 );
|
||||
|
||||
combo = gtk_combo_new();
|
||||
gtk_widget_show(combo);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), combo, FALSE, FALSE, 0);
|
||||
gtk_widget_show( combo );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), combo, FALSE, FALSE, 0 );
|
||||
|
||||
// fill in with the game descriptions
|
||||
GList *combo_list = (GList*)NULL;
|
||||
list<CGameDescription *>::iterator iGame;
|
||||
for(iGame=mGames.begin(); iGame!=mGames.end(); iGame++)
|
||||
{
|
||||
combo_list = g_list_append (combo_list, (void *)(*iGame)->mGameName.GetBuffer());
|
||||
for( iGame = mGames.begin(); iGame != mGames.end(); iGame++ ) {
|
||||
combo_list = g_list_append( combo_list, (void *)(*iGame)->mGameName.GetBuffer() );
|
||||
}
|
||||
gtk_combo_set_popdown_strings (GTK_COMBO (combo), combo_list);
|
||||
g_list_free (combo_list);
|
||||
gtk_combo_set_popdown_strings( GTK_COMBO( combo ), combo_list );
|
||||
g_list_free( combo_list );
|
||||
|
||||
AddDialogData (combo, &m_nComboSelect, DLG_COMBO_INT);
|
||||
AddDialogData( combo, &m_nComboSelect, DLG_COMBO_INT );
|
||||
|
||||
check = gtk_check_button_new_with_label("Auto load selected game on startup");
|
||||
check = gtk_check_button_new_with_label( "Auto load selected game on startup" );
|
||||
gtk_widget_show(check);
|
||||
gtk_box_pack_start (GTK_BOX(vbox), check, FALSE, FALSE, 0);
|
||||
AddDialogData (check, &m_bAutoLoadGame, DLG_CHECK_BOOL);
|
||||
|
@ -1016,25 +1031,24 @@ GtkWidget* CGameDialog::GetGlobalFrame()
|
|||
gtk_box_pack_start (GTK_BOX(vbox), text, FALSE, FALSE, 0);
|
||||
|
||||
#ifdef _WIN32
|
||||
check = gtk_check_button_new_with_label("Networked install - per-user settings");
|
||||
gtk_widget_show(check);
|
||||
gtk_box_pack_start (GTK_BOX(vbox), check, FALSE, FALSE, 0);
|
||||
AddDialogData (check, &m_bNetRun, DLG_CHECK_BOOL);
|
||||
check = gtk_check_button_new_with_label( "Networked install - per-user settings" );
|
||||
gtk_widget_show( check );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), check, FALSE, FALSE, 0 );
|
||||
AddDialogData( check, &m_bNetRun, DLG_CHECK_BOOL );
|
||||
#endif
|
||||
|
||||
check = gtk_check_button_new_with_label("Log the console to radiant.log");
|
||||
gtk_widget_show(check);
|
||||
gtk_box_pack_start (GTK_BOX(vbox), check, FALSE, FALSE, 0);
|
||||
AddDialogData (check, &m_bLogConsole, DLG_CHECK_BOOL);
|
||||
check = gtk_check_button_new_with_label( "Log the console to radiant.log" );
|
||||
gtk_widget_show( check );
|
||||
gtk_box_pack_start( GTK_BOX( vbox ), check, FALSE, FALSE, 0 );
|
||||
AddDialogData( check, &m_bLogConsole, DLG_CHECK_BOOL );
|
||||
|
||||
// incref it so we can pass it around
|
||||
gtk_widget_ref (GTK_WIDGET(mFrame));
|
||||
gtk_widget_ref( GTK_WIDGET( mFrame ) );
|
||||
|
||||
return mFrame;
|
||||
}
|
||||
|
||||
void CGameDialog::UpdateData (bool retrieve)
|
||||
{
|
||||
void CGameDialog::UpdateData( bool retrieve ) {
|
||||
if (!retrieve)
|
||||
{
|
||||
// use m_sGameFile to set m_nComboSelect
|
||||
|
@ -1070,25 +1084,37 @@ void CGameDialog::UpdateData (bool retrieve)
|
|||
}
|
||||
}
|
||||
|
||||
void CGameDialog::BuildDialog()
|
||||
{
|
||||
GtkWidget *dlg, *vbox1, *button;
|
||||
void CGameDialog::SInstallCallback( GtkWidget *widget, gpointer data ) {
|
||||
CGameDialog *d = static_cast< CGameDialog* >( data );
|
||||
d->m_bDoGameInstall = true;
|
||||
d->EndModal( 0 );
|
||||
}
|
||||
|
||||
dlg = m_pWidget;
|
||||
gtk_window_set_title (GTK_WINDOW (dlg), "Select Game");
|
||||
void CGameDialog::BuildDialog() {
|
||||
GtkWidget *dlg, *vbox1, *button, *setup_button;
|
||||
|
||||
dlg = m_pWidget;
|
||||
gtk_window_set_title( GTK_WINDOW( dlg ), "Select Game" );
|
||||
|
||||
vbox1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_widget_show(vbox1);
|
||||
gtk_container_add (GTK_CONTAINER (dlg), vbox1);
|
||||
vbox1 = gtk_vbox_new( FALSE, 0 );
|
||||
gtk_widget_show( vbox1 );
|
||||
gtk_container_add( GTK_CONTAINER( dlg ), vbox1 );
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (vbox1), GetGlobalFrame());
|
||||
mTopBox = vbox1;
|
||||
gtk_container_add( GTK_CONTAINER( vbox1 ), GetGlobalFrame() );
|
||||
mTopBox = vbox1;
|
||||
|
||||
button = gtk_button_new_with_label ("OK");
|
||||
gtk_widget_show (button);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), button, FALSE, FALSE, 0);
|
||||
AddModalButton(button, IDOK);
|
||||
gtk_widget_set_usize (button, 60, -2);
|
||||
setup_button = gtk_button_new_with_label( "Configure more games" );
|
||||
gtk_widget_show( setup_button );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), setup_button, FALSE, FALSE, 0 );
|
||||
gtk_signal_connect( GTK_OBJECT( setup_button ), "clicked",
|
||||
GTK_SIGNAL_FUNC( SInstallCallback ), this );
|
||||
|
||||
button = gtk_button_new_with_label( "OK" );
|
||||
gtk_widget_show( button );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), button, FALSE, FALSE, 0 );
|
||||
AddModalButton( button, IDOK );
|
||||
|
||||
gtk_widget_set_usize( button, 60, -2 );
|
||||
}
|
||||
|
||||
void CGameDialog::ScanForGames()
|
||||
|
@ -1100,7 +1126,16 @@ void CGameDialog::ScanForGames()
|
|||
strGamesPath += "games";
|
||||
const char *path = strGamesPath.GetBuffer();
|
||||
|
||||
Sys_Printf("Scanning for game description files: %s\n", path);
|
||||
if ( !mGames.empty() ) {
|
||||
Sys_Printf( "Clearing game list\n" );
|
||||
list<CGameDescription*>::iterator iGame;
|
||||
for ( iGame = mGames.begin(); iGame != mGames.end(); iGame++ ) {
|
||||
delete (*iGame);
|
||||
}
|
||||
mGames.clear();
|
||||
}
|
||||
|
||||
Sys_Printf( "Scanning for game description files: %s\n", path );
|
||||
|
||||
/*!
|
||||
\todo FIXME LINUX:
|
||||
|
@ -1136,7 +1171,7 @@ void CGameDialog::ScanForGames()
|
|||
xmlDocPtr pDoc = xmlParseFile(strPath.GetBuffer());
|
||||
if (pDoc)
|
||||
{
|
||||
mGames.push_front(new CGameDescription(pDoc, dirlist));
|
||||
mGames.push_front( new CGameDescription( pDoc, dirlist ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1163,29 +1198,6 @@ CGameDescription* CGameDialog::GameDescriptionForComboItem()
|
|||
return NULL; // not found
|
||||
}
|
||||
|
||||
/*GString* CGameDialog::InitGlobalPrefPath()
|
||||
{
|
||||
GString* global_rc_path;
|
||||
// configure m_global_rc_path
|
||||
#if defined (__linux__) || defined (__APPLE__)
|
||||
global_rc_path = g_string_new (g_get_home_dir ());
|
||||
|
||||
if (global_rc_path->str[global_rc_path->len-1] != '/')
|
||||
g_string_append (global_rc_path, "/");
|
||||
|
||||
g_string_append (global_rc_path, ".radiant/");
|
||||
mkdir (global_rc_path->str, 0775);
|
||||
g_string_append (global_rc_path, RADIANT_VERSION);
|
||||
g_string_append (global_rc_path, "/");
|
||||
mkdir (global_rc_path->str, 0775);
|
||||
#elif WIN32
|
||||
global_rc_path = g_string_new (g_strAppPath.GetBuffer() );
|
||||
#else
|
||||
#error "WTF are you compiling under"
|
||||
#endif
|
||||
return global_rc_path;
|
||||
}*/
|
||||
|
||||
void CGameDialog::InitGlobalPrefPath()
|
||||
{
|
||||
GString *global_rc_path;
|
||||
|
@ -1208,13 +1220,15 @@ void CGameDialog::Init()
|
|||
{
|
||||
InitGlobalPrefPath();
|
||||
ScanForGames();
|
||||
if (mGames.empty())
|
||||
{
|
||||
Error("Didn't find any valid game file descriptions, aborting\n");
|
||||
if ( mGames.empty() ) {
|
||||
DoGameInstall();
|
||||
ScanForGames();
|
||||
if ( mGames.empty() ) {
|
||||
Error( "No games setup, aborting\n" );
|
||||
}
|
||||
}
|
||||
LoadPrefs();
|
||||
if (m_bAutoLoadGame)
|
||||
{
|
||||
if ( m_bAutoLoadGame ) {
|
||||
// search by .game name
|
||||
list<CGameDescription *>::iterator iGame;
|
||||
for(iGame=mGames.begin(); iGame!=mGames.end(); iGame++)
|
||||
|
@ -1226,13 +1240,13 @@ void CGameDialog::Init()
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!m_bAutoLoadGame || !m_pCurrentGameDescription)
|
||||
{
|
||||
if ( !m_bAutoLoadGame || !m_pCurrentGameDescription ) {
|
||||
DoGameDialog();
|
||||
// use m_nComboSelect to identify the game to run as and set the globals
|
||||
m_pCurrentGameDescription = GameDescriptionForComboItem();
|
||||
if (!m_pCurrentGameDescription)
|
||||
Error("Lookup of game description object failed, can't continue\n");
|
||||
if ( !m_pCurrentGameDescription ) {
|
||||
Error("Lookup of game description object failed, can't continue\n");
|
||||
}
|
||||
}
|
||||
g_pGameDescription = m_pCurrentGameDescription;
|
||||
|
||||
|
@ -1494,7 +1508,7 @@ void PrefsDlg::BuildDialog ()
|
|||
gtk_widget_show(button);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
|
||||
gtk_widget_set_usize(button, 60, -2);
|
||||
AddModalButton (button, IDCANCEL);
|
||||
AddModalButton(button, IDCANCEL);
|
||||
|
||||
button = gtk_button_new_with_label ("Clean");
|
||||
gtk_widget_show(button);
|
||||
|
@ -3015,10 +3029,11 @@ void PrefsDlg::SavePrefs ()
|
|||
if (!mLocalPrefs.WriteXMLFile(m_inipath->str))
|
||||
Sys_FPrintf(SYS_ERR, "Error occured while saving local prefs file '%s'\n", m_inipath->str);
|
||||
|
||||
if (m_nMouse == 0)
|
||||
m_nMouseButtons = 2;
|
||||
else
|
||||
m_nMouseButtons = 3;
|
||||
if ( m_nMouse == 0 ) {
|
||||
m_nMouseButtons = 2;
|
||||
} else {
|
||||
m_nMouseButtons = 3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -3100,3 +3115,107 @@ void PrefsDlg::DoSensitivity()
|
|||
gtk_widget_set_sensitive( GTK_WIDGET(g_object_get_data( G_OBJECT(m_pWidget), "check_sleep" )), FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
============================================================
|
||||
CGameInstall
|
||||
============================================================
|
||||
*/
|
||||
|
||||
void CGameInstall::BuildDialog() {
|
||||
GtkWidget *dlg, *vbox1, *button, *text, *combo, *entry;
|
||||
|
||||
dlg = m_pWidget;
|
||||
gtk_window_set_title( GTK_WINDOW( dlg ), "Configure games" );
|
||||
|
||||
vbox1 = gtk_vbox_new( FALSE, 0 );
|
||||
gtk_widget_show( vbox1 );
|
||||
gtk_container_add( GTK_CONTAINER( dlg ), vbox1 );
|
||||
|
||||
text = gtk_label_new( "Select the game to configure" );
|
||||
gtk_widget_show( text );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), text, FALSE, FALSE, 0 );
|
||||
|
||||
combo = gtk_combo_new();
|
||||
gtk_widget_show( combo );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), combo, FALSE, FALSE, 0 );
|
||||
|
||||
GList *combo_list = NULL;
|
||||
combo_list = g_list_append( combo_list, "Quake III Arena and mods" );
|
||||
combo_list = g_list_append( combo_list, "Urban Terror standalone" );
|
||||
combo_list = g_list_append( combo_list, "Warsaw" );
|
||||
gtk_combo_set_popdown_strings( GTK_COMBO( combo ), combo_list );
|
||||
g_list_free( combo_list );
|
||||
AddDialogData( combo, &m_nComboSelect, DLG_COMBO_INT );
|
||||
|
||||
text = gtk_label_new( "Name:" );
|
||||
gtk_widget_show( text );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), text, FALSE, FALSE, 0 );
|
||||
|
||||
entry = gtk_entry_new();
|
||||
gtk_widget_show( entry );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), entry, FALSE, FALSE, 0 );
|
||||
AddDialogData( entry, &m_strName, DLG_ENTRY_TEXT );
|
||||
|
||||
text = gtk_label_new( "Engine directory:" );
|
||||
gtk_widget_show( text );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), text, FALSE, FALSE, 0 );
|
||||
|
||||
entry = gtk_entry_new();
|
||||
gtk_widget_show( entry );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), entry, FALSE, FALSE, 0 );
|
||||
AddDialogData( entry, &m_strEngine, DLG_ENTRY_TEXT );
|
||||
|
||||
// this gets done in the project stuff atm
|
||||
#if 0
|
||||
text = gtk_label_new( "Mod subdirectory:" );
|
||||
gtk_widget_show( text );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), text, FALSE, FALSE, 0 );
|
||||
|
||||
entry = gtk_entry_new();
|
||||
gtk_widget_show( entry );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), entry, FALSE, FALSE, 0 );
|
||||
AddDialogData( entry, &m_strMod, DLG_ENTRY_TEXT );
|
||||
#endif
|
||||
|
||||
button = gtk_button_new_with_label( "OK" );
|
||||
gtk_widget_show( button );
|
||||
gtk_box_pack_start( GTK_BOX( vbox1 ), button, FALSE, FALSE, 0 );
|
||||
AddModalButton( button, IDOK );
|
||||
|
||||
gtk_widget_set_usize( button, 60, -2 );
|
||||
}
|
||||
|
||||
void CGameInstall::Run() {
|
||||
DoModal();
|
||||
Sys_Printf( "combo: %d name: %s engine: %s mod: %s\n", m_nComboSelect, m_strName.GetBuffer(), m_strEngine.GetBuffer(), m_strMod.GetBuffer() );
|
||||
|
||||
// write out the game file
|
||||
Str gameFilePath = g_strAppPath.GetBuffer();
|
||||
gameFilePath += "games/";
|
||||
gameFilePath += m_strName.GetBuffer();
|
||||
gameFilePath += ".game";
|
||||
Sys_Printf( "game file: %s\n", gameFilePath.GetBuffer() );
|
||||
|
||||
FILE *fg = fopen( gameFilePath.GetBuffer(), "w" );
|
||||
if ( fg == NULL ) {
|
||||
Error( "Failed to open %s for writing\n", gameFilePath.GetBuffer() );
|
||||
}
|
||||
fprintf( fg, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>\n<game\n" );
|
||||
fprintf( fg, " name=\"%s\"\n", m_strName.GetBuffer() );
|
||||
fprintf( fg, " gametools=\"%sgames\"\n", g_strAppPath.GetBuffer() );
|
||||
fprintf( fg, " enginepath=\"%s\"\n", m_strEngine.GetBuffer() );
|
||||
switch ( m_nComboSelect ) {
|
||||
case GAME_Q3:
|
||||
fprintf( fg, " basegame=\"baseq3\"\n" );
|
||||
break;
|
||||
case GAME_URT:
|
||||
fprintf( fg, " basegame=\"q3ut4\"\n" );
|
||||
break;
|
||||
case GAME_WARSOW:
|
||||
fprintf( fg, " basegame=\"basewsw\"\n" );
|
||||
break;
|
||||
}
|
||||
fprintf( fg, "/>\n" );
|
||||
fclose( fg );
|
||||
}
|
||||
|
|
|
@ -193,6 +193,27 @@ public:
|
|||
void Dump();
|
||||
};
|
||||
|
||||
/*!
|
||||
select games, copy editing assets and write out configuration files
|
||||
*/
|
||||
class CGameInstall : public Dialog {
|
||||
public:
|
||||
void Run();
|
||||
void BuildDialog();
|
||||
|
||||
enum gameType_e {
|
||||
GAME_Q3,
|
||||
GAME_URT,
|
||||
GAME_WARSOW
|
||||
};
|
||||
|
||||
protected:
|
||||
Str m_strName;
|
||||
Str m_strMod;
|
||||
Str m_strEngine;
|
||||
int m_nComboSelect;
|
||||
};
|
||||
|
||||
/*!
|
||||
standalone dialog for games selection, and more generally global settings
|
||||
*/
|
||||
|
@ -217,6 +238,10 @@ class CGameDialog : public Dialog
|
|||
static bool m_bNetRun;
|
||||
#endif
|
||||
|
||||
bool m_bDoGameInstall;
|
||||
|
||||
CGameInstall mGameInstall;
|
||||
|
||||
protected:
|
||||
|
||||
int m_nComboSelect; ///< intermediate int value for combo in dialog box
|
||||
|
@ -258,10 +283,16 @@ public:
|
|||
*/
|
||||
list<CGameDescription *> mGames;
|
||||
|
||||
CGameDialog() { mFrame = NULL; m_pCurrentGameDescription = NULL; m_bLogConsole = false; m_bForceLogConsole = false; }
|
||||
CGameDialog() {
|
||||
mFrame = NULL;
|
||||
m_pCurrentGameDescription = NULL;
|
||||
m_bLogConsole = false;
|
||||
m_bForceLogConsole = false;
|
||||
m_bDoGameInstall = true; // go through DoModal at least once
|
||||
}
|
||||
virtual ~CGameDialog();
|
||||
|
||||
void AddPacksURL(Str &s);
|
||||
void AddPacksURL( Str &s );
|
||||
|
||||
/*!
|
||||
intialize the game dialog, called at CPrefsDlg::Init
|
||||
|
@ -279,12 +310,17 @@ public:
|
|||
*/
|
||||
void DoGameDialog();
|
||||
|
||||
/*!
|
||||
call out to the game installation dialog
|
||||
*/
|
||||
void DoGameInstall();
|
||||
|
||||
/*!
|
||||
Dialog API
|
||||
this is only called when the dialog is built at startup for main engine select
|
||||
*/
|
||||
void BuildDialog ();
|
||||
void UpdateData (bool retrieve);
|
||||
void BuildDialog();
|
||||
void UpdateData( bool retrieve );
|
||||
|
||||
/*!
|
||||
construction of the dialog frame
|
||||
|
@ -335,6 +371,11 @@ private:
|
|||
uses m_nComboItem to find the right mGames
|
||||
*/
|
||||
CGameDescription *GameDescriptionForComboItem();
|
||||
|
||||
/*!
|
||||
callback for the game install button
|
||||
*/
|
||||
static void SInstallCallback( GtkWidget *widget, gpointer data );
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -1699,31 +1699,27 @@ void Sys_ClearPrintf (void)
|
|||
// used to be around 32000, that should be way enough already
|
||||
#define BUFFER_SIZE 4096
|
||||
|
||||
extern "C" void Sys_FPrintf_VA (int level, const char *text, va_list args)
|
||||
{
|
||||
extern "C" void Sys_FPrintf_VA( int level, const char *text, va_list args ) {
|
||||
char buf[BUFFER_SIZE];
|
||||
|
||||
buf[0] = 0;
|
||||
vsnprintf(buf, BUFFER_SIZE, text, args);
|
||||
vsnprintf( buf, BUFFER_SIZE, text, args );
|
||||
buf[BUFFER_SIZE-1] = 0;
|
||||
const unsigned int length = strlen(buf);
|
||||
|
||||
if (g_qeglobals.hLogFile)
|
||||
{
|
||||
if ( g_qeglobals.hLogFile ) {
|
||||
#ifdef _WIN32
|
||||
_write(g_qeglobals.hLogFile, buf,length);
|
||||
_commit(g_qeglobals.hLogFile);
|
||||
_write( g_qeglobals.hLogFile, buf, length );
|
||||
_commit( g_qeglobals.hLogFile );
|
||||
#endif
|
||||
#if defined (__linux__) || defined (__APPLE__)
|
||||
write(g_qeglobals.hLogFile, buf, length);
|
||||
write( g_qeglobals.hLogFile, buf, length );
|
||||
#endif
|
||||
}
|
||||
|
||||
if (level != SYS_NOCON)
|
||||
{
|
||||
if ( level != SYS_NOCON ) {
|
||||
// TTimo: FIXME: killed the console to avoid GDI leak fuckup
|
||||
if (g_qeglobals_gui.d_edit != NULL)
|
||||
{
|
||||
if ( g_qeglobals_gui.d_edit != NULL ) {
|
||||
GtkTextBuffer* buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(g_qeglobals_gui.d_edit));
|
||||
|
||||
GtkTextIter iter;
|
||||
|
@ -1778,13 +1774,12 @@ extern "C" void Sys_Printf_VA (const char *text, va_list args)
|
|||
Sys_FPrintf_VA (SYS_STD, text, args);
|
||||
}
|
||||
|
||||
extern "C" void Sys_Printf (const char *text, ...)
|
||||
{
|
||||
extern "C" void Sys_Printf( const char *text, ... ) {
|
||||
va_list args;
|
||||
|
||||
va_start (args, text);
|
||||
Sys_FPrintf_VA (SYS_STD, text, args);
|
||||
va_end (args);
|
||||
va_start( args, text );
|
||||
Sys_FPrintf_VA( SYS_STD, text, args );
|
||||
va_end( args );
|
||||
}
|
||||
|
||||
extern "C" void Sys_FPrintf (int level, const char *text, ...)
|
||||
|
|
Loading…
Reference in a new issue