[sanguoforciv4] r341 committed - add 3.17 files that are different between English and Chinese version

32 views
Skip to first unread message

codesite...@google.com

unread,
Sep 20, 2009, 11:56:23 AM9/20/09
to sanguom...@googlegroups.com
Revision: 341
Author: TongShen.Martin
Date: Sun Sep 20 08:55:19 2009
Log: add 3.17 files that are different between English and Chinese version
http://code.google.com/p/sanguoforciv4/source/detail?r=341

Added:
/trunk/317Difference
/trunk/317Difference/Assets
/trunk/317Difference/Assets/Art
/trunk/317Difference/Assets/Art/interface
/trunk/317Difference/Assets/Art/interface/Classical Main Menu
/trunk/317Difference/Assets/Art/interface/Classical Main
Menu/CIV4MainMenuBG.nif
/trunk/317Difference/Assets/Art/interface/Classical Main
Menu/CrossroadsOfTheWorld.dds
/trunk/317Difference/Assets/Art/interface/Main Menu
/trunk/317Difference/Assets/Art/interface/Main Menu/ArrowLEFT.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/ArrowRIGHT.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/AtmosOpacity3.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/CIV4MainMenuBG.nif
/trunk/317Difference/Assets/Art/interface/Main Menu/CivTitle.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/CivTitle2.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/Clouds2.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/DayNight.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/SolarGlare.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/Thumbs.db
/trunk/317Difference/Assets/Art/interface/Main Menu/citylight.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/earth.dds
/trunk/317Difference/Assets/Art/interface/Main Menu/stars.dds
/trunk/317Difference/Assets/Art/interface/screens
/trunk/317Difference/Assets/Art/interface/screens/loading

/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBG.dds

/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGBeyondtheSword.dds

/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGClassical.dds

/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGslideshowBeyondtheSword.dds

/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGslideshowClassical.dds
/trunk/317Difference/Assets/Python
/trunk/317Difference/Assets/Python/CvEventManager.py
/trunk/317Difference/Assets/Python/CvUtil.py
/trunk/317Difference/Assets/Python/EntryPoints
/trunk/317Difference/Assets/Python/EntryPoints/CvAppInterface.py

/trunk/317Difference/Assets/Python/EntryPoints/CvOptionsScreenCallbackInterface.py
/trunk/317Difference/Assets/Python/pyWB
/trunk/317Difference/Assets/Python/pyWB/CvWBDesc.py
/trunk/317Difference/Assets/Res
/trunk/317Difference/Assets/Res/Fonts
/trunk/317Difference/Assets/Res/Fonts/GameFont.tga
/trunk/317Difference/Assets/Res/Fonts/GameFont_75.tga
/trunk/317Difference/Assets/XML
/trunk/317Difference/Assets/XML/Art
/trunk/317Difference/Assets/XML/Art/CIV4ArtDefines_Misc.xml
/trunk/317Difference/Resource
/trunk/317Difference/Resource/Themes
/trunk/317Difference/Resource/Themes/Civ4Theme_Button.thm
/trunk/317Difference/Resource/Themes/Civ4Theme_Common.thm
/trunk/317Difference/Resource/Themes/Civ4Theme_Edit.thm
/trunk/317Difference/Resource/Themes/Civ4Theme_Label.thm
/trunk/317Difference/Resource/Themes/Civ4Theme_Scroll.thm
/trunk/317Difference/Resource/Themes/Civ4Theme_Window.thm

=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Classical Main
Menu/CIV4MainMenuBG.nif Sun Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Classical Main
Menu/CrossroadsOfTheWorld.dds Sun Sep 20 08:55:19 2009
File is too large to display a diff.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/ArrowLEFT.dds Sun
Sep 20 08:55:19 2009
@@ -0,0 +1,7 @@
+DDS |
+
DXT3 @
+2¨!ªªê~ 2È)Ä €àz ! B2·¦þ½÷% UUÕ-2#§&Þ%¯ þÿ§)U}R\ 2!¥Rü ÷g!UUÕ-2¦¦ýýÿÿÿÞ÷Ä Õ- þÿÿÿÿïÿÏßÿ ¥ @n K ' % ¾ÿ‡)TVUU1Ø!S ! üÞÈ)%UUUÿÿÙÿSÚ!cÞ÷‡) %UÿßÿÿÿÿêÿÿÿóœÀ
& : ] Ÿ ï& UWV\ +2é)z€ !
+2F ~è€ së!s " ÚÞˆ!-ÕUUß%ë8„7"#þÿ¨)Xs}U 1!¦“þ<çÈ1UUÕ
+1F¶Kî)ß <çè1UmpPrì „ ! Þÿé1-ÕUUï ì:”[!Eþÿ*:XrmU v´]“m uXƈ!õËËõ
+
+ |-[ññÿÿ ¯sÐkþÿÿÿ
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/ArrowRIGHT.dds Sun
Sep 20 08:55:19 2009
@@ -0,0 +1,6 @@
+DDS |
+
DXT3 @ 2#bzRí1úþÿ‡)U}
+5 $ {#ïj½÷% UUWx # È)Ä ­
+2È)ÿ¯¯õ!æ ´ r R¾ÿg) •UUÿïÿÿþÿüÿž÷ ¥À j#ßjÿßÿÿÞ÷ä Wx€ # Z Ï% ÷‡!UUWx b £!Õ1ù ï% UÕ•5ýÿÿÿÿÿÿ®ÿÿÓ” `ÿÿÿ ­56 ¾÷‡) €XU 5 üÞÈ)XUUURýƒ¾sH2"þÿ¨)%Í}U¾77 " úæ‡!xWUU +2G!µ«
+ +2ê1­ d ´k’îQý]ç :Uy
+ j ï9<çÈ1UUWpaþ£ÎµIT ÿÿ*:% yUÎ'H Þÿé1xWUUg ÕKÖ9W Xƨ)_ãã_X X |
-[ôôÿÿ ¯sÐkþÿÿÿ
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/AtmosOpacity3.dds
Sun Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/CIV4MainMenuBG.nif
Sun Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/CivTitle.dds Sun
Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/CivTitle2.dds Sun
Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/Clouds2.dds Sun Sep
20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/DayNight.dds Sun
Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/SolarGlare.dds Sun
Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/Thumbs.db Sun Sep
20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/citylight.dds Sun
Sep 20 08:55:19 2009
@@ -0,0 +1,2 @@
+DDS |
+ €
DXT1 @ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/earth.dds Sun Sep
20 08:55:19 2009
File is too large to display a diff.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Art/interface/Main Menu/stars.dds Sun Sep
20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBG.dds
Sun Sep 20 08:55:19 2009
File is too large to display a diff.
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGBeyondtheSword.dds
Sun Sep 20 08:55:19 2009
File is too large to display a diff.
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGClassical.dds
Sun Sep 20 08:55:19 2009
File is too large to display a diff.
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGslideshowBeyondtheSword.dds
Sun Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Art/interface/screens/loading/LoadingScreenBGslideshowClassical.dds
Sun Sep 20 08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Python/CvEventManager.py Sun Sep 20
08:55:19 2009
@@ -0,0 +1,1080 @@
+## Sid Meier's Civilization 4
+## Copyright Firaxis Games 2006
+##
+## CvEventManager
+## This class is passed an argsList from CvAppInterface.onEvent
+## The argsList can contain anything from mouse location to key info
+## The EVENTLIST that are being notified can be found
+
+
+from CvPythonExtensions import *
+import CvUtil
+import CvScreensInterface
+import CvDebugTools
+import CvWBPopups
+import PyHelpers
+import Popup as PyPopup
+import CvCameraControls
+import CvTopCivs
+import sys
+import CvWorldBuilderScreen
+import CvAdvisorUtils
+import CvTechChooser
+
+gc = CyGlobalContext()
+localText = CyTranslator()
+PyPlayer = PyHelpers.PyPlayer
+PyInfo = PyHelpers.PyInfo
+
+
+# globals
+###################################################
+class CvEventManager:
+ def __init__(self):
+ #################### ON EVENT MAP ######################
+ #print "EVENTMANAGER INIT"
+
+ self.bCtrl = False
+ self.bShift = False
+ self.bAlt = False
+ self.bAllowCheats = False
+
+ # OnEvent Enums
+ self.EventLButtonDown=1
+ self.EventLcButtonDblClick=2
+ self.EventRButtonDown=3
+ self.EventBack=4
+ self.EventForward=5
+ self.EventKeyDown=6
+ self.EventKeyUp=7
+
+ self.__LOG_MOVEMENT = 0
+ self.__LOG_BUILDING = 0
+ self.__LOG_COMBAT = 0
+ self.__LOG_CONTACT = 0
+ self.__LOG_IMPROVEMENT =0
+ self.__LOG_CITYLOST = 0
+ self.__LOG_CITYBUILDING = 0
+ self.__LOG_TECH = 0
+ self.__LOG_UNITBUILD = 0
+ self.__LOG_UNITKILLED = 1
+ self.__LOG_UNITLOST = 0
+ self.__LOG_UNITPROMOTED = 0
+ self.__LOG_UNITSELECTED = 0
+ self.__LOG_UNITPILLAGE = 0
+ self.__LOG_GOODYRECEIVED = 0
+ self.__LOG_GREATPERSON = 0
+ self.__LOG_RELIGION = 0
+ self.__LOG_RELIGIONSPREAD = 0
+ self.__LOG_GOLDENAGE = 0
+ self.__LOG_ENDGOLDENAGE = 0
+ self.__LOG_WARPEACE = 0
+ self.__LOG_PUSH_MISSION = 0
+
+ ## EVENTLIST
+ self.EventHandlerMap = {
+ 'mouseEvent' : self.onMouseEvent,
+ 'kbdEvent' : self.onKbdEvent,
+ 'ModNetMessage' : self.onModNetMessage,
+ 'Init' : self.onInit,
+ 'Update' : self.onUpdate,
+ 'UnInit' : self.onUnInit,
+ 'OnSave' : self.onSaveGame,
+ 'OnPreSave' : self.onPreSave,
+ 'OnLoad' : self.onLoadGame,
+ 'GameStart' : self.onGameStart,
+ 'GameEnd' : self.onGameEnd,
+ 'plotRevealed' : self.onPlotRevealed,
+ 'plotFeatureRemoved' : self.onPlotFeatureRemoved,
+ 'plotPicked' : self.onPlotPicked,
+ 'nukeExplosion' : self.onNukeExplosion,
+ 'gotoPlotSet' : self.onGotoPlotSet,
+ 'BeginGameTurn' : self.onBeginGameTurn,
+ 'EndGameTurn' : self.onEndGameTurn,
+ 'BeginPlayerTurn' : self.onBeginPlayerTurn,
+ 'EndPlayerTurn' : self.onEndPlayerTurn,
+ 'endTurnReady' : self.onEndTurnReady,
+ 'combatResult' : self.onCombatResult,
+ 'combatLogCalc' : self.onCombatLogCalc,
+ 'combatLogHit' : self.onCombatLogHit,
+ 'improvementBuilt' : self.onImprovementBuilt,
+ 'improvementDestroyed' : self.onImprovementDestroyed,
+ 'routeBuilt' : self.onRouteBuilt,
+ 'firstContact' : self.onFirstContact,
+ 'cityBuilt' : self.onCityBuilt,
+ 'cityRazed' : self.onCityRazed,
+ 'cityAcquired' : self.onCityAcquired,
+ 'cityAcquiredAndKept' : self.onCityAcquiredAndKept,
+ 'cityLost' : self.onCityLost,
+ 'cultureExpansion' : self.onCultureExpansion,
+ 'cityGrowth' : self.onCityGrowth,
+ 'cityDoTurn' : self.onCityDoTurn,
+ 'cityBuildingUnit' : self.onCityBuildingUnit,
+ 'cityBuildingBuilding' : self.onCityBuildingBuilding,
+ 'cityRename' : self.onCityRename,
+ 'cityHurry' : self.onCityHurry,
+ 'selectionGroupPushMission' : self.onSelectionGroupPushMission,
+ 'unitMove' : self.onUnitMove,
+ 'unitSetXY' : self.onUnitSetXY,
+ 'unitCreated' : self.onUnitCreated,
+ 'unitBuilt' : self.onUnitBuilt,
+ 'unitKilled' : self.onUnitKilled,
+ 'unitLost' : self.onUnitLost,
+ 'unitPromoted' : self.onUnitPromoted,
+ 'unitSelected' : self.onUnitSelected,
+ 'UnitRename' : self.onUnitRename,
+ 'unitPillage' : self.onUnitPillage,
+ 'unitSpreadReligionAttempt' : self.onUnitSpreadReligionAttempt,
+ 'unitGifted' : self.onUnitGifted,
+ 'unitBuildImprovement' : self.onUnitBuildImprovement,
+ 'goodyReceived' : self.onGoodyReceived,
+ 'greatPersonBorn' : self.onGreatPersonBorn,
+ 'buildingBuilt' : self.onBuildingBuilt,
+ 'projectBuilt' : self.onProjectBuilt,
+ 'techAcquired' : self.onTechAcquired,
+ 'techSelected' : self.onTechSelected,
+ 'religionFounded' : self.onReligionFounded,
+ 'religionSpread' : self.onReligionSpread,
+ 'religionRemove' : self.onReligionRemove,
+ 'corporationFounded' : self.onCorporationFounded,
+ 'corporationSpread' : self.onCorporationSpread,
+ 'corporationRemove' : self.onCorporationRemove,
+ 'goldenAge' : self.onGoldenAge,
+ 'endGoldenAge' : self.onEndGoldenAge,
+ 'chat' : self.onChat,
+ 'victory' : self.onVictory,
+ 'vassalState' : self.onVassalState,
+ 'changeWar' : self.onChangeWar,
+ 'setPlayerAlive' : self.onSetPlayerAlive,
+ 'playerChangeStateReligion' : self.onPlayerChangeStateReligion,
+ 'playerGoldTrade' : self.onPlayerGoldTrade,
+ 'windowActivation' : self.onWindowActivation,
+ 'gameUpdate' : self.onGameUpdate, # sample generic event
+ }
+
+ ################## Events List ###############################
+ #
+ # Dictionary of Events, indexed by EventID (also used at popup context
id)
+ # entries have name, beginFunction, applyFunction [, randomization
weight...]
+ #
+ # Normal events first, random events after
+ #
+ ################## Events List ###############################
+ self.Events={
+ CvUtil.EventEditCityName : ('EditCityName',
self.__eventEditCityNameApply, self.__eventEditCityNameBegin),
+ CvUtil.EventEditCity : ('EditCity', self.__eventEditCityApply,
self.__eventEditCityBegin),
+ CvUtil.EventPlaceObject : ('PlaceObject', self.__eventPlaceObjectApply,
self.__eventPlaceObjectBegin),
+ CvUtil.EventAwardTechsAndGold: ('AwardTechsAndGold',
self.__eventAwardTechsAndGoldApply, self.__eventAwardTechsAndGoldBegin),
+ CvUtil.EventEditUnitName : ('EditUnitName',
self.__eventEditUnitNameApply, self.__eventEditUnitNameBegin),
+ CvUtil.EventWBAllPlotsPopup : ('WBAllPlotsPopup',
self.__eventWBAllPlotsPopupApply, self.__eventWBAllPlotsPopupBegin),
+ CvUtil.EventWBLandmarkPopup : ('WBLandmarkPopup',
self.__eventWBLandmarkPopupApply, self.__eventWBLandmarkPopupBegin),
+ CvUtil.EventWBScriptPopup : ('WBScriptPopup',
self.__eventWBScriptPopupApply, self.__eventWBScriptPopupBegin),
+ CvUtil.EventWBStartYearPopup : ('WBStartYearPopup',
self.__eventWBStartYearPopupApply, self.__eventWBStartYearPopupBegin),
+ CvUtil.EventShowWonder: ('ShowWonder', self.__eventShowWonderApply,
self.__eventShowWonderBegin),
+ }
+#################### EVENT STARTERS ######################
+ def handleEvent(self, argsList):
+ 'EventMgr entry point'
+ # extract the last 6 args in the list, the first arg has already been
consumed
+ self.origArgsList = argsList # point to original
+ tag = argsList[0] # event type string
+ idx = len(argsList)-6
+ bDummy = false
+ self.bDbg, bDummy, self.bAlt, self.bCtrl, self.bShift, self.bAllowCheats
= argsList[idx:]
+ ret = 0
+ if self.EventHandlerMap.has_key(tag):
+ fxn = self.EventHandlerMap[tag]
+ ret = fxn(argsList[1:idx])
+ return ret
+
+#################### EVENT APPLY ######################
+ def beginEvent( self, context, argsList=-1 ):
+ 'Begin Event'
+ entry = self.Events[context]
+ return entry[2]( argsList )
+
+ def applyEvent( self, argsList ):
+ 'Apply the effects of an event '
+ context, playerID, netUserData, popupReturn = argsList
+
+ if context == CvUtil.PopupTypeEffectViewer:
+ return CvDebugTools.g_CvDebugTools.applyEffectViewer( playerID,
netUserData, popupReturn )
+
+ entry = self.Events[context]
+
+ if ( context not in CvUtil.SilentEvents ):
+ self.reportEvent(entry, context, (playerID, netUserData, popupReturn) )
+ return entry[1]( playerID, netUserData, popupReturn ) # the apply
function
+
+ def reportEvent(self, entry, context, argsList):
+ 'Report an Event to Events.log '
+ if (gc.getGame().getActivePlayer() != -1):
+ message = "DEBUG Event: %s (%s)" %(entry[0],
gc.getActivePlayer().getName())
+ CyInterface().addImmediateMessage(message,"")
+ CvUtil.pyPrint(message)
+ return 0
+
+#################### ON EVENTS ######################
+ def onKbdEvent(self, argsList):
+ 'keypress handler - return 1 if the event was consumed'
+
+ eventType,key,mx,my,px,py = argsList
+ game = gc.getGame()
+
+ if (self.bAllowCheats):
+ # notify debug tools of input to allow it to override the control
+ argsList =
(eventType,key,self.bCtrl,self.bShift,self.bAlt,mx,my,px,py,gc.getGame().isNetworkMultiPlayer())
+ if ( CvDebugTools.g_CvDebugTools.notifyInput(argsList) ):
+ return 0
+
+ if ( eventType == self.EventKeyDown ):
+ theKey=int(key)
+
+ CvCameraControls.g_CameraControls.handleInput( theKey )
+
+ if (self.bAllowCheats):
+ # Shift - T (Debug - No MP)
+ if (theKey == int(InputTypes.KB_T)):
+ if ( self.bShift ):
+ self.beginEvent(CvUtil.EventAwardTechsAndGold)
+ #self.beginEvent(CvUtil.EventCameraControlPopup)
+ return 1
+
+ elif (theKey == int(InputTypes.KB_W)):
+ if ( self.bShift and self.bCtrl):
+ self.beginEvent(CvUtil.EventShowWonder)
+ return 1
+
+ # Shift - ] (Debug - currently mouse-overd unit, health += 10
+ elif (theKey == int(InputTypes.KB_LBRACKET) and self.bShift ):
+ unit = CyMap().plot(px, py).getUnit(0)
+ if ( not unit.isNone() ):
+ d = min( unit.maxHitPoints()-1, unit.getDamage() + 10 )
+ unit.setDamage( d, PlayerTypes.NO_PLAYER )
+
+ # Shift - [ (Debug - currently mouse-overd unit, health -= 10
+ elif (theKey == int(InputTypes.KB_RBRACKET) and self.bShift ):
+ unit = CyMap().plot(px, py).getUnit(0)
+ if ( not unit.isNone() ):
+ d = max( 0, unit.getDamage() - 10 )
+ unit.setDamage( d, PlayerTypes.NO_PLAYER )
+
+ elif (theKey == int(InputTypes.KB_F1)):
+ if ( self.bShift ):
+ CvScreensInterface.replayScreen.showScreen(False)
+ return 1
+ # don't return 1 unless you want the input consumed
+
+ elif (theKey == int(InputTypes.KB_F2)):
+ if ( self.bShift ):
+ import CvDebugInfoScreen
+ CvScreensInterface.showDebugInfoScreen()
+ return 1
+
+ elif (theKey == int(InputTypes.KB_F3)):
+ if ( self.bShift ):
+ CvScreensInterface.showDanQuayleScreen(())
+ return 1
+
+ elif (theKey == int(InputTypes.KB_F4)):
+ if ( self.bShift ):
+ CvScreensInterface.showUnVictoryScreen(())
+ return 1
+
+ return 0
+
+ def onModNetMessage(self, argsList):
+ 'Called whenever CyMessageControl().sendModNetMessage() is called - this
is all for you modders!'
+
+ iData1, iData2, iData3, iData4, iData5 = argsList
+
+ print("Modder's net message!")
+
+ CvUtil.pyPrint( 'onModNetMessage' )
+
+ def onInit(self, argsList):
+ 'Called when Civ starts up'
+ CvUtil.pyPrint( 'OnInit' )
+
+ def onUpdate(self, argsList):
+ 'Called every frame'
+ fDeltaTime = argsList[0]
+
+ # allow camera to be updated
+ CvCameraControls.g_CameraControls.onUpdate( fDeltaTime )
+
+ def onWindowActivation(self, argsList):
+ 'Called when the game window activates or deactivates'
+ bActive = argsList[0]
+
+ def onUnInit(self, argsList):
+ 'Called when Civ shuts down'
+ CvUtil.pyPrint('OnUnInit')
+
+ def onPreSave(self, argsList):
+ "called before a game is actually saved"
+ CvUtil.pyPrint('OnPreSave')
+
+ def onSaveGame(self, argsList):
+ "return the string to be saved - Must be a string"
+ return ""
+
+ def onLoadGame(self, argsList):
+ CvAdvisorUtils.resetNoLiberateCities()
+ return 0
+
+ def onGameStart(self, argsList):
+ 'Called at the start of the game'
+ if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR") and
not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
+ for iPlayer in range(gc.getMAX_PLAYERS()):
+ player = gc.getPlayer(iPlayer)
+ if (player.isAlive() and player.isHuman()):
+ popupInfo = CyPopupInfo()
+
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
+ popupInfo.setText(u"showDawnOfMan")
+ popupInfo.addPopup(iPlayer)
+ else:
+ CyInterface().setSoundSelectionReady(true)
+
+ if gc.getGame().isPbem():
+ for iPlayer in range(gc.getMAX_PLAYERS()):
+ player = gc.getPlayer(iPlayer)
+ if (player.isAlive() and player.isHuman()):
+ popupInfo = CyPopupInfo()
+ popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_DETAILS)
+ popupInfo.setOption1(true)
+ popupInfo.addPopup(iPlayer)
+
+ CvAdvisorUtils.resetNoLiberateCities()
+
+ def onGameEnd(self, argsList):
+ 'Called at the End of the game'
+ print("Game is ending")
+ return
+
+ def onBeginGameTurn(self, argsList):
+ 'Called at the beginning of the end of each turn'
+ iGameTurn = argsList[0]
+ CvTopCivs.CvTopCivs().turnChecker(iGameTurn)
+
+ def onEndGameTurn(self, argsList):
+ 'Called at the end of the end of each turn'
+ iGameTurn = argsList[0]
+
+ def onBeginPlayerTurn(self, argsList):
+ 'Called at the beginning of a players turn'
+ iGameTurn, iPlayer = argsList
+
+ def onEndPlayerTurn(self, argsList):
+ 'Called at the end of a players turn'
+ iGameTurn, iPlayer = argsList
+
+ if (gc.getGame().getElapsedGameTurns() == 1):
+ if (gc.getPlayer(iPlayer).isHuman()):
+ if (gc.getPlayer(iPlayer).canRevolution(0)):
+ popupInfo = CyPopupInfo()
+ popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_CHANGECIVIC)
+ popupInfo.addPopup(iPlayer)
+
+ CvAdvisorUtils.resetAdvisorNags()
+ CvAdvisorUtils.endTurnFeats(iPlayer)
+
+ def onEndTurnReady(self, argsList):
+ iGameTurn = argsList[0]
+
+ def onFirstContact(self, argsList):
+ 'Contact'
+ iTeamX,iHasMetTeamY = argsList
+ if (not self.__LOG_CONTACT):
+ return
+ CvUtil.pyPrint('Team %d has met Team %d' %(iTeamX, iHasMetTeamY))
+
+ def onCombatResult(self, argsList):
+ 'Combat Result'
+ pWinner,pLoser = argsList
+ playerX = PyPlayer(pWinner.getOwner())
+ unitX = PyInfo.UnitInfo(pWinner.getUnitType())
+ playerY = PyPlayer(pLoser.getOwner())
+ unitY = PyInfo.UnitInfo(pLoser.getUnitType())
+ if (not self.__LOG_COMBAT):
+ return
+ if playerX and playerX and unitX and playerY:
+ CvUtil.pyPrint('Player %d Civilization %s Unit %s has defeated
Player %d Civilization %s Unit %s'
+ %(playerX.getID(), playerX.getCivilizationName(),
unitX.getDescription(),
+ playerY.getID(), playerY.getCivilizationName(),
unitY.getDescription()))
+
+ def onCombatLogCalc(self, argsList):
+ 'Combat Result'
+ genericArgs = argsList[0][0]
+ cdAttacker = genericArgs[0]
+ cdDefender = genericArgs[1]
+ iCombatOdds = genericArgs[2]
+ CvUtil.combatMessageBuilder(cdAttacker, cdDefender, iCombatOdds)
+
+ def onCombatLogHit(self, argsList):
+ 'Combat Message'
+ global gCombatMessages, gCombatLog
+ genericArgs = argsList[0][0]
+ cdAttacker = genericArgs[0]
+ cdDefender = genericArgs[1]
+ iIsAttacker = genericArgs[2]
+ iDamage = genericArgs[3]
+
+ if cdDefender.eOwner == cdDefender.eVisualOwner:
+ szDefenderName = gc.getPlayer(cdDefender.eOwner).getNameKey()
+ else:
+ szDefenderName = localText.getText("TXT_KEY_TRAIT_PLAYER_UNKNOWN", ())
+ if cdAttacker.eOwner == cdAttacker.eVisualOwner:
+ szAttackerName = gc.getPlayer(cdAttacker.eOwner).getNameKey()
+ else:
+ szAttackerName = localText.getText("TXT_KEY_TRAIT_PLAYER_UNKNOWN", ())
+
+ if (iIsAttacker == 0):
+ combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_HIT",
(szDefenderName, cdDefender.sUnitName, iDamage, cdDefender.iCurrHitPoints,
cdDefender.iMaxHitPoints))
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+ if (cdDefender.iCurrHitPoints <= 0):
+ combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_DEFEATED",
(szAttackerName, cdAttacker.sUnitName, szDefenderName,
cdDefender.sUnitName))
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+ elif (iIsAttacker == 1):
+ combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_HIT",
(szAttackerName, cdAttacker.sUnitName, iDamage, cdAttacker.iCurrHitPoints,
cdAttacker.iMaxHitPoints))
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+ if (cdAttacker.iCurrHitPoints <= 0):
+ combatMessage = localText.getText("TXT_KEY_COMBAT_MESSAGE_DEFEATED",
(szDefenderName, cdDefender.sUnitName, szAttackerName,
cdAttacker.sUnitName))
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+
+ def onImprovementBuilt(self, argsList):
+ 'Improvement Built'
+ iImprovement, iX, iY = argsList
+ if (not self.__LOG_IMPROVEMENT):
+ return
+ CvUtil.pyPrint('Improvement %s was built at %d, %d'
+ %(PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
+
+ def onImprovementDestroyed(self, argsList):
+ 'Improvement Destroyed'
+ iImprovement, iOwner, iX, iY = argsList
+ if (not self.__LOG_IMPROVEMENT):
+ return
+ CvUtil.pyPrint('Improvement %s was Destroyed at %d, %d'
+ %(PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
+
+ def onRouteBuilt(self, argsList):
+ 'Route Built'
+ iRoute, iX, iY = argsList
+ if (not self.__LOG_IMPROVEMENT):
+ return
+ CvUtil.pyPrint('Route %s was built at %d, %d'
+ %(gc.getRouteInfo(iRoute).getDescription(), iX, iY))
+
+ def onPlotRevealed(self, argsList):
+ 'Plot Revealed'
+ pPlot = argsList[0]
+ iTeam = argsList[1]
+
+ def onPlotFeatureRemoved(self, argsList):
+ 'Plot Revealed'
+ pPlot = argsList[0]
+ iFeatureType = argsList[1]
+ pCity = argsList[2] # This can be null
+
+ def onPlotPicked(self, argsList):
+ 'Plot Picked'
+ pPlot = argsList[0]
+ CvUtil.pyPrint('Plot was picked at %d, %d'
+ %(pPlot.getX(), pPlot.getY()))
+
+ def onNukeExplosion(self, argsList):
+ 'Nuke Explosion'
+ pPlot, pNukeUnit = argsList
+ CvUtil.pyPrint('Nuke detonated at %d, %d'
+ %(pPlot.getX(), pPlot.getY()))
+
+ def onGotoPlotSet(self, argsList):
+ 'Nuke Explosion'
+ pPlot, iPlayer = argsList
+
+ def onBuildingBuilt(self, argsList):
+ 'Building Completed'
+ pCity, iBuildingType = argsList
+ game = gc.getGame()
+ if ((not gc.getGame().isNetworkMultiPlayer()) and (pCity.getOwner() ==
gc.getGame().getActivePlayer()) and
isWorldWonderClass(gc.getBuildingInfo(iBuildingType).getBuildingClassType())):
+ # If this is a wonder...
+ popupInfo = CyPopupInfo()
+ popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
+ popupInfo.setData1(iBuildingType)
+ popupInfo.setData2(pCity.getID())
+ popupInfo.setData3(0)
+ popupInfo.setText(u"showWonderMovie")
+ popupInfo.addPopup(pCity.getOwner())
+
+ CvAdvisorUtils.buildingBuiltFeats(pCity, iBuildingType)
+
+ if (not self.__LOG_BUILDING):
+ return
+ CvUtil.pyPrint('%s was finished by Player %d Civilization %s'
+ %(PyInfo.BuildingInfo(iBuildingType).getDescription(),
pCity.getOwner(),
gc.getPlayer(pCity.getOwner()).getCivilizationDescription(0)))
+
+ def onProjectBuilt(self, argsList):
+ 'Project Completed'
+ pCity, iProjectType = argsList
+ game = gc.getGame()
+ if ((not gc.getGame().isNetworkMultiPlayer()) and (pCity.getOwner() ==
gc.getGame().getActivePlayer())):
+ popupInfo = CyPopupInfo()
+ popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
+ popupInfo.setData1(iProjectType)
+ popupInfo.setData2(pCity.getID())
+ popupInfo.setData3(2)
+ popupInfo.setText(u"showWonderMovie")
+ popupInfo.addPopup(pCity.getOwner())
+
+ def onSelectionGroupPushMission(self, argsList):
+ 'selection group mission'
+ eOwner = argsList[0]
+ eMission = argsList[1]
+ iNumUnits = argsList[2]
+ listUnitIds = argsList[3]
+
+ if (not self.__LOG_PUSH_MISSION):
+ return
+ if pHeadUnit:
+ CvUtil.pyPrint("Selection Group pushed mission %d" %(eMission))
+
+ def onUnitMove(self, argsList):
+ 'unit move'
+ pPlot,pUnit,pOldPlot = argsList
+ player = PyPlayer(pUnit.getOwner())
+ unitInfo = PyInfo.UnitInfo(pUnit.getUnitType())
+ if (not self.__LOG_MOVEMENT):
+ return
+ if player and unitInfo:
+ CvUtil.pyPrint('Player %d Civilization %s unit %s is moving to %d, %d'
+ %(player.getID(), player.getCivilizationName(),
unitInfo.getDescription(),
+ pUnit.getX(), pUnit.getY()))
+
+ def onUnitSetXY(self, argsList):
+ 'units xy coords set manually'
+ pPlot,pUnit = argsList
+ player = PyPlayer(pUnit.getOwner())
+ unitInfo = PyInfo.UnitInfo(pUnit.getUnitType())
+ if (not self.__LOG_MOVEMENT):
+ return
+
+ def onUnitCreated(self, argsList):
+ 'Unit Completed'
+ unit = argsList[0]
+ player = PyPlayer(unit.getOwner())
+ if (not self.__LOG_UNITBUILD):
+ return
+
+ def onUnitBuilt(self, argsList):
+ 'Unit Completed'
+ city = argsList[0]
+ unit = argsList[1]
+ player = PyPlayer(city.getOwner())
+
+ CvAdvisorUtils.unitBuiltFeats(city, unit)
+
+ if (not self.__LOG_UNITBUILD):
+ return
+ CvUtil.pyPrint('%s was finished by Player %d Civilization %s'
+ %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(),
player.getCivilizationName()))
+
+ def onUnitKilled(self, argsList):
+ 'Unit Killed'
+ unit, iAttacker = argsList
+ player = PyPlayer(unit.getOwner())
+ attacker = PyPlayer(iAttacker)
+ if (not self.__LOG_UNITKILLED):
+ return
+ CvUtil.pyPrint('Player %d Civilization %s Unit %s was killed by
Player %d'
+ %(player.getID(), player.getCivilizationName(),
PyInfo.UnitInfo(unit.getUnitType()).getDescription(), attacker.getID()))
+
+ def onUnitLost(self, argsList):
+ 'Unit Lost'
+ unit = argsList[0]
+ player = PyPlayer(unit.getOwner())
+ if (not self.__LOG_UNITLOST):
+ return
+ CvUtil.pyPrint('%s was lost by Player %d Civilization %s'
+ %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(),
player.getCivilizationName()))
+
+ def onUnitPromoted(self, argsList):
+ 'Unit Promoted'
+ pUnit, iPromotion = argsList
+ player = PyPlayer(pUnit.getOwner())
+ if (not self.__LOG_UNITPROMOTED):
+ return
+ CvUtil.pyPrint('Unit Promotion Event: %s
- %s' %(player.getCivilizationName(), pUnit.getName(),))
+
+ def onUnitSelected(self, argsList):
+ 'Unit Selected'
+ unit = argsList[0]
+ player = PyPlayer(unit.getOwner())
+ if (not self.__LOG_UNITSELECTED):
+ return
+ CvUtil.pyPrint('%s was selected by Player %d Civilization %s'
+ %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(),
player.getCivilizationName()))
+
+ def onUnitRename(self, argsList):
+ 'Unit is renamed'
+ pUnit = argsList[0]
+ if (pUnit.getOwner() == gc.getGame().getActivePlayer()):
+ self.__eventEditUnitNameBegin(pUnit)
+
+ def onUnitPillage(self, argsList):
+ 'Unit pillages a plot'
+ pUnit, iImprovement, iRoute, iOwner = argsList
+ iPlotX = pUnit.getX()
+ iPlotY = pUnit.getY()
+ pPlot = CyMap().plot(iPlotX, iPlotY)
+
+ if (not self.__LOG_UNITPILLAGE):
+ return
+ CvUtil.pyPrint("Player %d's %s pillaged improvement %d and route %d at
plot at (%d, %d)"
+ %(iOwner, PyInfo.UnitInfo(pUnit.getUnitType()).getDescription(),
iImprovement, iRoute, iPlotX, iPlotY))
+
+ def onUnitSpreadReligionAttempt(self, argsList):
+ 'Unit tries to spread religion to a city'
+ pUnit, iReligion, bSuccess = argsList
+
+ iX = pUnit.getX()
+ iY = pUnit.getY()
+ pPlot = CyMap().plot(iX, iY)
+ pCity = pPlot.getPlotCity()
+
+ def onUnitGifted(self, argsList):
+ 'Unit is gifted from one player to another'
+ pUnit, iGiftingPlayer, pPlotLocation = argsList
+
+ def onUnitBuildImprovement(self, argsList):
+ 'Unit begins enacting a Build (building an Improvement or Route)'
+ pUnit, iBuild, bFinished = argsList
+
+ def onGoodyReceived(self, argsList):
+ 'Goody received'
+ iPlayer, pPlot, pUnit, iGoodyType = argsList
+ if (not self.__LOG_GOODYRECEIVED):
+ return
+ CvUtil.pyPrint('%s received a
goody' %(gc.getPlayer(iPlayer).getCivilizationDescription(0)),)
+
+ def onGreatPersonBorn(self, argsList):
+ 'Unit Promoted'
+ pUnit, iPlayer, pCity = argsList
+ player = PyPlayer(iPlayer)
+ if pUnit.isNone() or pCity.isNone():
+ return
+ if (not self.__LOG_GREATPERSON):
+ return
+ CvUtil.pyPrint('A %s was born for %s in %s' %(pUnit.getName(),
player.getCivilizationName(), pCity.getName()))
+
+ def onTechAcquired(self, argsList):
+ 'Tech Acquired'
+ iTechType, iTeam, iPlayer, bAnnounce = argsList
+ # Note that iPlayer may be NULL (-1) and not a refer to a player object
+
+ # Show tech splash when applicable
+ if (iPlayer > -1 and bAnnounce and not CyInterface().noTechSplash()):
+ if (gc.getGame().isFinalInitialized() and not
gc.getGame().GetWorldBuilderMode()):
+ if ((not gc.getGame().isNetworkMultiPlayer()) and (iPlayer ==
gc.getGame().getActivePlayer())):
+ popupInfo = CyPopupInfo()
+
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
+ popupInfo.setData1(iTechType)
+ popupInfo.setText(u"showTechSplash")
+ popupInfo.addPopup(iPlayer)
+
+ if (not self.__LOG_TECH):
+ return
+ CvUtil.pyPrint('%s was finished by Team %d'
+ %(PyInfo.TechnologyInfo(iTechType).getDescription(), iTeam))
+
+ def onTechSelected(self, argsList):
+ 'Tech Selected'
+ iTechType, iPlayer = argsList
+ if (not self.__LOG_TECH):
+ return
+ CvUtil.pyPrint('%s was selected by
Player %d' %(PyInfo.TechnologyInfo(iTechType).getDescription(), iPlayer))
+
+ def onReligionFounded(self, argsList):
+ 'Religion Founded'
+ iReligion, iFounder = argsList
+ player = PyPlayer(iFounder)
+
+ iCityId = gc.getGame().getHolyCity(iReligion).getID()
+ if (gc.getGame().isFinalInitialized() and not
gc.getGame().GetWorldBuilderMode()):
+ if ((not gc.getGame().isNetworkMultiPlayer()) and (iFounder ==
gc.getGame().getActivePlayer())):
+ popupInfo = CyPopupInfo()
+
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
+ popupInfo.setData1(iReligion)
+ popupInfo.setData2(iCityId)
+ popupInfo.setData3(1)
+ popupInfo.setText(u"showWonderMovie")
+ popupInfo.addPopup(iFounder)
+
+ if (not self.__LOG_RELIGION):
+ return
+ CvUtil.pyPrint('Player %d Civilization %s has founded %s'
+ %(iFounder, player.getCivilizationName(),
gc.getReligionInfo(iReligion).getDescription()))
+
+ def onReligionSpread(self, argsList):
+ 'Religion Has Spread to a City'
+ iReligion, iOwner, pSpreadCity = argsList
+ player = PyPlayer(iOwner)
+ if (not self.__LOG_RELIGIONSPREAD):
+ return
+ CvUtil.pyPrint('%s has spread to Player %d Civilization %s city of %s'
+ %(gc.getReligionInfo(iReligion).getDescription(), iOwner,
player.getCivilizationName(), pSpreadCity.getName()))
+
+ def onReligionRemove(self, argsList):
+ 'Religion Has been removed from a City'
+ iReligion, iOwner, pRemoveCity = argsList
+ player = PyPlayer(iOwner)
+ if (not self.__LOG_RELIGIONSPREAD):
+ return
+ CvUtil.pyPrint('%s has been removed from Player %d Civilization %s city
of %s'
+ %(gc.getReligionInfo(iReligion).getDescription(), iOwner,
player.getCivilizationName(), pRemoveCity.getName()))
+
+ def onCorporationFounded(self, argsList):
+ 'Corporation Founded'
+ iCorporation, iFounder = argsList
+ player = PyPlayer(iFounder)
+
+ if (not self.__LOG_RELIGION):
+ return
+ CvUtil.pyPrint('Player %d Civilization %s has founded %s'
+ %(iFounder, player.getCivilizationName(),
gc.getCorporationInfo(iCorporation).getDescription()))
+
+ def onCorporationSpread(self, argsList):
+ 'Corporation Has Spread to a City'
+ iCorporation, iOwner, pSpreadCity = argsList
+ player = PyPlayer(iOwner)
+ if (not self.__LOG_RELIGIONSPREAD):
+ return
+ CvUtil.pyPrint('%s has spread to Player %d Civilization %s city of %s'
+ %(gc.getCorporationInfo(iCorporation).getDescription(), iOwner,
player.getCivilizationName(), pSpreadCity.getName()))
+
+ def onCorporationRemove(self, argsList):
+ 'Corporation Has been removed from a City'
+ iCorporation, iOwner, pRemoveCity = argsList
+ player = PyPlayer(iOwner)
+ if (not self.__LOG_RELIGIONSPREAD):
+ return
+ CvUtil.pyPrint('%s has been removed from Player %d Civilization %s city
of %s'
+ %(gc.getReligionInfo(iReligion).getDescription(), iOwner,
player.getCivilizationName(), pRemoveCity.getName()))
+
+ def onGoldenAge(self, argsList):
+ 'Golden Age'
+ iPlayer = argsList[0]
+ player = PyPlayer(iPlayer)
+ if (not self.__LOG_GOLDENAGE):
+ return
+ CvUtil.pyPrint('Player %d Civilization %s has begun a golden age'
+ %(iPlayer, player.getCivilizationName()))
+
+ def onEndGoldenAge(self, argsList):
+ 'End Golden Age'
+ iPlayer = argsList[0]
+ player = PyPlayer(iPlayer)
+ if (not self.__LOG_ENDGOLDENAGE):
+ return
+ CvUtil.pyPrint('Player %d Civilization %s golden age has ended'
+ %(iPlayer, player.getCivilizationName()))
+
+ def onChangeWar(self, argsList):
+ 'War Status Changes'
+ bIsWar = argsList[0]
+ iTeam = argsList[1]
+ iRivalTeam = argsList[2]
+ if (not self.__LOG_WARPEACE):
+ return
+ if (bIsWar):
+ strStatus = "declared war"
+ else:
+ strStatus = "declared peace"
+ CvUtil.pyPrint('Team %d has %s on Team %d'
+ %(iTeam, strStatus, iRivalTeam))
+
+ def onChat(self, argsList):
+ 'Chat Message Event'
+ chatMessage = "%s" %(argsList[0],)
+
+ def onSetPlayerAlive(self, argsList):
+ 'Set Player Alive Event'
+ iPlayerID = argsList[0]
+ bNewValue = argsList[1]
+ CvUtil.pyPrint("Player %d's alive status set to: %d" %(iPlayerID,
int(bNewValue)))
+
+ def onPlayerChangeStateReligion(self, argsList):
+ 'Player changes his state religion'
+ iPlayer, iNewReligion, iOldReligion = argsList
+
+ def onPlayerGoldTrade(self, argsList):
+ 'Player Trades gold to another player'
+ iFromPlayer, iToPlayer, iGoldAmount = argsList
+
+ def onCityBuilt(self, argsList):
+ 'City Built'
+ city = argsList[0]
+ if (city.getOwner() == gc.getGame().getActivePlayer()):
+ self.__eventEditCityNameBegin(city, False)
+ CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
+
+ def onCityRazed(self, argsList):
+ 'City Razed'
+ city, iPlayer = argsList
+ iOwner = city.findHighestCulture()
+
+ # Partisans!
+ # if city.getPopulation > 1 and iOwner != -1 and iPlayer != -1:
+ # owner = gc.getPlayer(iOwner)
+ # if not owner.isBarbarian() and owner.getNumCities() > 0:
+ # if
gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
+ # if gc.getNumEventTriggerInfos() > 0: # prevents mods that don't
have events from getting an error
+ # iEvent = CvUtil.findInfoTypeNum(gc.getEventTriggerInfo,
gc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
+ # if iEvent != -1 and gc.getGame().isEventActive(iEvent) and
owner.getEventTriggerWeight(iEvent) < 0:
+ # triggerData = owner.initTriggeredData(iEvent, true, -1,
city.getX(), city.getY(), iPlayer, city.getID(), -1, -1, -1, -1)
+
+ CvUtil.pyPrint("City Razed Event: %s" %(city.getName(),))
+
+ def onCityAcquired(self, argsList):
+ 'City Acquired'
+ iPreviousOwner,iNewOwner,pCity,bConquest,bTrade = argsList
+ CvUtil.pyPrint('City Acquired Event: %s' %(pCity.getName()))
+
+ def onCityAcquiredAndKept(self, argsList):
+ 'City Acquired and Kept'
+ iOwner,pCity = argsList
+ CvUtil.pyPrint('City Acquired and Kept Event: %s' %(pCity.getName()))
+
+ def onCityLost(self, argsList):
+ 'City Lost'
+ city = argsList[0]
+ player = PyPlayer(city.getOwner())
+ if (not self.__LOG_CITYLOST):
+ return
+ CvUtil.pyPrint('City %s was lost by Player %d Civilization %s'
+ %(city.getName(), player.getID(), player.getCivilizationName()))
+
+ def onCultureExpansion(self, argsList):
+ 'City Culture Expansion'
+ pCity = argsList[0]
+ iPlayer = argsList[1]
+ CvUtil.pyPrint("City %s's culture has expanded" %(pCity.getName(),))
+
+ def onCityGrowth(self, argsList):
+ 'City Population Growth'
+ pCity = argsList[0]
+ iPlayer = argsList[1]
+ CvUtil.pyPrint("%s has grown" %(pCity.getName(),))
+
+ def onCityDoTurn(self, argsList):
+ 'City Production'
+ pCity = argsList[0]
+ iPlayer = argsList[1]
+
+ CvAdvisorUtils.cityAdvise(pCity, iPlayer)
+
+ def onCityBuildingUnit(self, argsList):
+ 'City begins building a unit'
+ pCity = argsList[0]
+ iUnitType = argsList[1]
+ if (not self.__LOG_CITYBUILDING):
+ return
+ CvUtil.pyPrint("%s has begun building
a %s" %(pCity.getName(),gc.getUnitInfo(iUnitType).getDescription()))
+
+ def onCityBuildingBuilding(self, argsList):
+ 'City begins building a Building'
+ pCity = argsList[0]
+ iBuildingType = argsList[1]
+ if (not self.__LOG_CITYBUILDING):
+ return
+ CvUtil.pyPrint("%s has begun building
a %s" %(pCity.getName(),gc.getBuildingInfo(iBuildingType).getDescription()))
+
+ def onCityRename(self, argsList):
+ 'City is renamed'
+ pCity = argsList[0]
+ if (pCity.getOwner() == gc.getGame().getActivePlayer()):
+ self.__eventEditCityNameBegin(pCity, True)
+
+ def onCityHurry(self, argsList):
+ 'City is renamed'
+ pCity = argsList[0]
+ iHurryType = argsList[1]
+
+ def onVictory(self, argsList):
+ 'Victory'
+ iTeam, iVictory = argsList
+ if (iVictory >= 0 and iVictory < gc.getNumVictoryInfos()):
+ victoryInfo = gc.getVictoryInfo(int(iVictory))
+ CvUtil.pyPrint("Victory! Team %d achieves a %s victory"
+ %(iTeam, victoryInfo.getDescription()))
+
+ def onVassalState(self, argsList):
+ 'Vassal State'
+ iMaster, iVassal, bVassal = argsList
+
+ if (bVassal):
+ CvUtil.pyPrint("Team %d becomes a Vassal State of Team %d"
+ %(iVassal, iMaster))
+ else:
+ CvUtil.pyPrint("Team %d revolts and is no longer a Vassal State of
Team %d"
+ %(iVassal, iMaster))
+
+ def onGameUpdate(self, argsList):
+ 'sample generic event, called on each game turn slice'
+ genericArgs = argsList[0][0] # tuple of tuple of my args
+ turnSlice = genericArgs[0]
+
+ def onMouseEvent(self, argsList):
+ 'mouse handler - returns 1 if the event was consumed'
+ eventType,mx,my,px,py,interfaceConsumed,screens = argsList
+ if ( px!=-1 and py!=-1 ):
+ if ( eventType == self.EventLButtonDown ):
+ if (self.bAllowCheats and self.bCtrl and self.bAlt and
CyMap().plot(px,py).isCity() and not interfaceConsumed):
+ # Launch Edit City Event
+ self.beginEvent( CvUtil.EventEditCity, (px,py) )
+ return 1
+
+ elif (self.bAllowCheats and self.bCtrl and self.bShift and not
interfaceConsumed):
+ # Launch Place Object Event
+ self.beginEvent( CvUtil.EventPlaceObject, (px, py) )
+ return 1
+
+ if ( eventType == self.EventBack ):
+ return CvScreensInterface.handleBack(screens)
+ elif ( eventType == self.EventForward ):
+ return CvScreensInterface.handleForward(screens)
+
+ return 0
+
+
+#################### TRIGGERED EVENTS ##################
+
+ def __eventEditCityNameBegin(self, city, bRename):
+ popup = PyPopup.PyPopup(CvUtil.EventEditCityName,
EventContextTypes.EVENTCONTEXT_ALL)
+ popup.setUserData((city.getID(), bRename))
+ popup.setHeaderString(localText.getText("TXT_KEY_NAME_CITY", ()))
+ popup.setBodyString(localText.getText("TXT_KEY_SETTLE_NEW_CITY_NAME",
()))
+ popup.createEditBox(city.getName())
+ popup.setEditBoxMaxCharCount( 15 )
+ popup.launch()
+
+ def __eventEditCityNameApply(self, playerID, userData, popupReturn):
+ 'Edit City Name Event'
+ iCityID = userData[0]
+ bRename = userData[1]
+ player = gc.getPlayer(playerID)
+ city = player.getCity(iCityID)
+ cityName = popupReturn.getEditBoxString(0)
+ if (len(cityName) > 30):
+ cityName = cityName[:30]
+ city.setName(cityName, not bRename)
+
+ def __eventEditCityBegin(self, argsList):
+ 'Edit City Event'
+ px,py = argsList
+ CvWBPopups.CvWBPopups().initEditCity(argsList)
+
+ def __eventEditCityApply(self, playerID, userData, popupReturn):
+ 'Edit City Event Apply'
+ if (getChtLvl() > 0):
+ CvWBPopups.CvWBPopups().applyEditCity( (popupReturn, userData) )
+
+ def __eventPlaceObjectBegin(self, argsList):
+ 'Place Object Event'
+ CvDebugTools.CvDebugTools().initUnitPicker(argsList)
+
+ def __eventPlaceObjectApply(self, playerID, userData, popupReturn):
+ 'Place Object Event Apply'
+ if (getChtLvl() > 0):
+ CvDebugTools.CvDebugTools().applyUnitPicker( (popupReturn, userData) )
+
+ def __eventAwardTechsAndGoldBegin(self, argsList):
+ 'Award Techs & Gold Event'
+ CvDebugTools.CvDebugTools().cheatTechs()
+
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Python/CvUtil.py Sun Sep 20 08:55:19 2009
@@ -0,0 +1,485 @@
+## Sid Meier's Civilization 4
+## Copyright Firaxis Games 2005
+#
+# for error reporting
+import traceback
+
+# for file ops
+import os
+import sys
+
+# For Civ game code access
+from CvPythonExtensions import *
+
+# For exception handling
+SHOWEXCEPTIONS = 1
+
+# for C++ compatibility
+false=False
+true=True
+
+# globals
+gc = CyGlobalContext()
+FontIconMap = {}
+localText = CyTranslator()
+
+#
+# Popup context enums, values greater than 999 are reserved for events
+#
+
+# DEBUG TOOLS
+PopupTypeEntityEventTest = 4
+PopupTypeEffectViewer = 5
+
+# HELP SCREENS
+PopupTypeMilitaryAdvisor = 103
+PopupTypePlayerSelect = 104
+
+# WORLD BUILDER
+PopupTypeWBContextStart = 200
+PopupTypeWBEditCity = PopupTypeWBContextStart
+PopupTypeWBEditUnit = 201
+PopupTypeWBContextEnd = 299
+
+# EVENT ID VALUES (also used in popup contexts)
+EventGetEspionageTarget = 4999
+EventEditCityName = 5000
+EventEditCity = 5001
+EventPlaceObject = 5002
+EventAwardTechsAndGold = 5003
+EventEditUnitName = 5006
+EventCityWarning = 5007
+EventWBAllPlotsPopup = 5008
+EventWBLandmarkPopup = 5009
+EventWBScriptPopup = 5010
+EventWBStartYearPopup = 5011
+EventShowWonder = 5012
+
+EventLButtonDown=1
+EventLcButtonDblClick=2
+EventRButtonDown=3
+EventBack=4
+EventForward=5
+EventKeyDown=6
+EventKeyUp=7
+
+# List of unreported Events
+SilentEvents = [EventEditCityName, EventEditUnitName]
+
+# BUG - Core - start
+
+# Event IDs
+BUG_FIRST_EVENT = 5050
+g_nextEventID = BUG_FIRST_EVENT
+g_bugEvents = {}
+def getNewEventID(name=None, silent=True):
+ """
+ Defines a new event and returns its unique ID to be passed to
BugEventManager.beginEvent(id).
+ If name is given, it is stored in a map for lookup by ID later for
debugging.
+ """
+ global g_nextEventID
+ id = g_nextEventID
+ g_nextEventID += 1
+ if name:
+ g_bugEvents[id] = name
+ if silent:
+ addSilentEvent(id)
+ return id
+
+def getEventName(id):
+ return g_bugEvents[id]
+
+def addSilentEvent(id):
+ if id not in SilentEvents:
+ SilentEvents.append(id)
+
+# Screen IDs
+BUG_FIRST_SCREEN = 1000
+g_nextScreenID = BUG_FIRST_SCREEN
+def getNewScreenID():
+ """
+ Returns the next unique screen ID to be used with CyGInterfaceScreen.
+ """
+ global g_nextScreenID
+ id = g_nextScreenID
+ g_nextScreenID += 1
+ return id
+# BUG - Core - end
+
+# Popup defines (TODO: Expose these from C++)
+FONT_CENTER_JUSTIFY=1<<2
+FONT_RIGHT_JUSTIFY=1<<1
+FONT_LEFT_JUSTIFY=1<<0
+
+def convertToUnicode(s):
+ "if the string is non unicode, convert it to unicode by decoding it using
8859-1, latin_1"
+ if (isinstance(s, str)):
+# >>> CYBERFRONT // character code: codepage
+# return s.decode("latin_1")
+ return s.decode("utf-8","ignore")
+# <<< CYBERFRONT
+ return s
+
+def convertToStr(s):
+ "if the string is unicode, convert it to str by encoding it using 8859-1,
latin_1"
+ #### Sanguo Mod codec, start, added by poyuzhe 08.28.09
+ if CyGame().getCurrentLanguage() == 5:
+ return s
+ #### Sanguo Mod codec, end
+ if (isinstance(s, unicode)):
+# >>> CYBERFRONT // character code: codepage
+# return s.encode("latin_1")
+ return s.encode("utf-8","ignore")
+# <<< CYBERFRONT
+ return s
+
+class RedirectDebug:
+ """Send Debug Messages to Civ Engine"""
+ def __init__(self):
+ self.m_PythonMgr = CyPythonMgr()
+ def write(self, stuff):
+ # if str is non unicode and contains encoded unicode data, supply the
right encoder to encode it into a unicode object
+ if (isinstance(stuff, unicode)):
+ self.m_PythonMgr.debugMsgWide(stuff)
+ else:
+ self.m_PythonMgr.debugMsg(stuff)
+
+class RedirectError:
+ """Send Error Messages to Civ Engine"""
+ def __init__(self):
+ self.m_PythonMgr = CyPythonMgr()
+ def write(self, stuff):
+ # if str is non unicode and contains encoded unicode data, supply the
right encoder to encode it into a unicode object
+ if (isinstance(stuff, unicode)):
+ self.m_PythonMgr.errorMsgWide(stuff)
+ else:
+ self.m_PythonMgr.errorMsg(stuff)
+
+def myExceptHook(type, value, tb):
+ lines=traceback.format_exception(type, value, tb)
+ #pre= "---------------------Traceback lines-----------------------\n"
+ mid="\n".join(lines)
+ #post="-----------------------------------------------------------"
+ #total = pre+mid+post
+ total=mid
+ if SHOWEXCEPTIONS:
+ sys.stderr.write(total)
+ else:
+ sys.stdout.write(total)
+
+def pyPrint(stuff):
+ stuff = 'PY:' + stuff + "\n"
+ sys.stdout.write(stuff)
+
+def pyAssert(cond, msg):
+ if (cond==False):
+ sys.stderr.write(msg)
+ assert(cond, msg)
+
+def getScoreComponent(iRawScore, iInitial, iMax, iFactor, bExponential,
bFinal, bVictory):
+
+ if gc.getGame().getEstimateEndTurn() == 0:
+ return 0
+
+ if bFinal and bVictory:
+ fTurnRatio = float(gc.getGame().getGameTurn()) /
float(gc.getGame().getEstimateEndTurn())
+ if bExponential and (iInitial != 0):
+ fRatio = iMax / iInitial
+ iMax = iInitial * pow(fRatio, fTurnRatio)
+ else:
+ iMax = iInitial + fTurnRatio * (iMax - iInitial)
+
+ iFree = (gc.getDefineINT("SCORE_FREE_PERCENT") * iMax) / 100
+ if (iFree + iMax) != 0:
+ iScore = (iFactor * (iRawScore + iFree)) / (iFree + iMax)
+ else:
+ iScore = iFactor
+
+ if bVictory:
+ iScore = ((100 + gc.getDefineINT("SCORE_VICTORY_PERCENT")) * iScore) /
100
+
+ if bFinal:
+ iScore = ((100 + gc.getDefineINT("SCORE_HANDICAP_PERCENT_OFFSET") +
(gc.getGame().getHandicapType() *
gc.getDefineINT("SCORE_HANDICAP_PERCENT_PER"))) * iScore) / 100
+
+ return int(iScore)
+
+def getOppositeCardinalDirection(dir):
+ return (dir + 2) % CardinalDirectionTypes.NUM_CARDINALDIRECTION_TYPES
+
+def shuffle(num, rand):
+ "returns a tuple of size num of shuffled numbers"
+ piShuffle = [0]*num
+ shuffleList(num, rand, piShuffle) # implemented in C for speed
+ return piShuffle
+
+def spawnUnit(iUnit, pPlot, pPlayer):
+ pPlayer.initUnit(iUnit, pPlot.getX(), pPlot.getY(),
UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
+ return 1
+
+def findInfoTypeNum(infoGetter, numInfos, typeStr):
+ if (typeStr == 'NONE'):
+ return -1
+ idx = gc.getInfoTypeForString(typeStr)
+ pyAssert(idx != -1, "Can't find type enum for type tag %s" %(typeStr,))
+ return idx
+
+def getInfo(strInfoType, strInfoName): # returns info for InfoType
+ #set Type to lowercase
+ strInfoType = strInfoType.lower()
+ strInfoName = strInfoName.capitalize()
+
+ #get the appropriate dictionary item
+ infoDict = GlobalInfosMap.get(strInfoType)
+ #get the number of infos
+ numInfos = infoDict['NUM']()
+ #loop through each info
+ for i in range(numInfos):
+ loopInfo = infoDict['GET'](i)
+
+ if loopInfo.getDescription() == strInfoName:
+ #and return the one requested
+ return loopInfo
+
+def AdjustBuilding(add, all, BuildingIdx, pCity): # adds/removes buildings
from a city
+ "Function for toggling buildings in cities"
+ if (BuildingIdx!= -1):
+ if (all): #Add/Remove ALL
+ for i in range(BuildingIdx):
+ pCity.setNumRealBuildingIdx(i,add)
+ else:
+ pCity.setNumRealBuildingIdx(BuildingIdx,add)
+ return 0
+
+def getIcon(iconEntry): # returns Font Icons
+ global FontIconMap
+
+ iconEntry = iconEntry.lower()
+ if (FontIconMap.has_key(iconEntry)):
+ return FontIconMap.get(iconEntry)
+ else:
+ return (u"%c" %(191,))
+
+def combatDetailMessageBuilder(cdUnit, ePlayer, iChange):
+ if (cdUnit.iExtraCombatPercent != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_EXTRA_COMBAT_PERCENT",(cdUnit.iExtraCombatPercent
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAnimalCombatModifierTA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_ANIMAL_COMBAT",(cdUnit.iAnimalCombatModifierTA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAIAnimalCombatModifierTA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_AI_ANIMAL_COMBAT",(cdUnit.iAIAnimalCombatModifierTA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAnimalCombatModifierAA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_ANIMAL_COMBAT",(cdUnit.iAnimalCombatModifierAA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAIAnimalCombatModifierAA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_AI_ANIMAL_COMBAT",(cdUnit.iAIAnimalCombatModifierAA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iBarbarianCombatModifierTB != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_BARBARIAN_COMBAT",(cdUnit.iBarbarianCombatModifierTB
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAIBarbarianCombatModifierTB != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_BARBARIAN_AI_COMBAT",(cdUnit.iAIBarbarianCombatModifierTB
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iBarbarianCombatModifierAB != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_BARBARIAN_COMBAT",(cdUnit.iBarbarianCombatModifierAB
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAIBarbarianCombatModifierAB != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_BARBARIAN_AI_COMBAT",(cdUnit.iAIBarbarianCombatModifierAB
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iPlotDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_PLOT_DEFENSE",(cdUnit.iPlotDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iFortifyModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_FORTIFY",(cdUnit.iFortifyModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iCityDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CITY_DEFENSE",(cdUnit.iCityDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iHillsAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_HILLS_ATTACK",(cdUnit.iHillsAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iHillsDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_HILLS",(cdUnit.iHillsDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iFeatureAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_FEATURE_ATTACK",(cdUnit.iFeatureAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iFeatureDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_FEATURE",(cdUnit.iFeatureDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iTerrainAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_TERRAIN_ATTACK",(cdUnit.iTerrainAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iTerrainDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_TERRAIN",(cdUnit.iTerrainDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iCityAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CITY_ATTACK",(cdUnit.iCityAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iDomainDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CITY_DOMAIN_DEFENSE",(cdUnit.iDomainDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iCityBarbarianDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CITY_BARBARIAN_DEFENSE",(cdUnit.iCityBarbarianDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iClassDefenseModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_DEFENSE",(cdUnit.iClassDefenseModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iClassAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_ATTACK",(cdUnit.iClassAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iCombatModifierT != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_COMBAT",(cdUnit.iCombatModifierT
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iCombatModifierA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_COMBAT",(cdUnit.iCombatModifierA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iDomainModifierA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_DOMAIN",(cdUnit.iDomainModifierA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iDomainModifierT != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_DOMAIN",(cdUnit.iDomainModifierT
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAnimalCombatModifierA != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_ANIMAL_COMBAT",(cdUnit.iAnimalCombatModifierA
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAnimalCombatModifierT != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_ANIMAL_COMBAT",(cdUnit.iAnimalCombatModifierT
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iRiverAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_RIVER_ATTACK",(cdUnit.iRiverAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+ if (cdUnit.iAmphibAttackModifier != 0):
+
msg=localText.getText("TXT_KEY_COMBAT_MESSAGE_CLASS_AMPHIB_ATTACK",(cdUnit.iAmphibAttackModifier
* iChange,))
+ CyInterface().addCombatMessage(ePlayer,msg)
+
+def combatMessageBuilder(cdAttacker, cdDefender, iCombatOdds):
+ combatMessage = ""
+ if (cdAttacker.eOwner == cdAttacker.eVisualOwner):
+# >>> CYBERFRONT // message: combat
+# combatMessage += "%s's" %(gc.getPlayer(cdAttacker.eOwner).getName(),)
+ combatMessage
+= "%s%s" %(gc.getPlayer(cdAttacker.eOwner).getName(),localText.getText("TXT_KEY_APOSTROPHE_S",
()),)
+# <<< CYBERFRONT
+ combatMessage += " %s
(%.2f)" %(cdAttacker.sUnitName,cdAttacker.iCurrCombatStr/100.0,)
+ combatMessage += " " + localText.getText("TXT_KEY_COMBAT_MESSAGE_VS", ())
+ " "
+ if (cdDefender.eOwner == cdDefender.eVisualOwner):
+# >>> CYBERFRONT // message: combat
+# combatMessage += "%s's" %(gc.getPlayer(cdDefender.eOwner).getName(),)
+ combatMessage
+= "%s%s" %(gc.getPlayer(cdDefender.eOwner).getName(),localText.getText("TXT_KEY_APOSTROPHE_S",
()),)
+# <<< CYBERFRONT
+ combatMessage += "%s
(%.2f)" %(cdDefender.sUnitName,cdDefender.iCurrCombatStr/100.0,)
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+ combatMessage
= "%s %.1f%%" %(localText.getText("TXT_KEY_COMBAT_MESSAGE_ODDS",
()),iCombatOdds/10.0,)
+ CyInterface().addCombatMessage(cdAttacker.eOwner,combatMessage)
+ CyInterface().addCombatMessage(cdDefender.eOwner,combatMessage)
+ combatDetailMessageBuilder(cdAttacker,cdAttacker.eOwner,-1)
+ combatDetailMessageBuilder(cdDefender,cdAttacker.eOwner,1)
+ combatDetailMessageBuilder(cdAttacker,cdDefender.eOwner,-1)
+ combatDetailMessageBuilder(cdDefender,cdDefender.eOwner,1)
+
+def initDynamicFontIcons():
+ global FontIconMap
+
+ info = ""
+ desc = ""
+ # add Commerce Icons
+ for i in range(CommerceTypes.NUM_COMMERCE_TYPES):
+ info = gc.getCommerceInfo(i)
+ desc = info.getDescription().lower()
+ addIconToMap(info.getChar, desc)
+ # add Yield Icons
+ for i in range(YieldTypes.NUM_YIELD_TYPES):
+ info = gc.getYieldInfo(i)
+ desc = info.getDescription().lower()
+ addIconToMap(info.getChar, desc)
+ # add Religion & Holy City Icons
+ for i in range(gc.getNumReligionInfos()):
+ info = gc.getReligionInfo(i)
+ desc = info.getDescription().lower()
+ addIconToMap(info.getChar, desc)
+ addIconToMap(info.getHolyCityChar, desc)
+ for key in OtherFontIcons.keys():
+ #print key
+ FontIconMap[key] = (u"%c" %
CyGame().getSymbolID(OtherFontIcons.get(key)))
+
+ #print FontIconMap
+
+def addIconToMap(infoChar, desc):
+ global FontIconMap
+ desc = convertToStr(desc)
+ print "%s - %s" %(infoChar(), desc)
+ uc = infoChar()
+ if (uc>=0):
+ FontIconMap[desc] = u"%c" %(uc,)
+
+OtherFontIcons = { 'happy' : FontSymbols.HAPPY_CHAR,
+ 'unhappy' : FontSymbols.UNHAPPY_CHAR,
+ 'healthy' : FontSymbols.HEALTHY_CHAR,
+ 'unhealthy' : FontSymbols.UNHEALTHY_CHAR,
+ 'bullet' : FontSymbols.BULLET_CHAR,
+ 'strength' : FontSymbols.STRENGTH_CHAR,
+ 'moves' : FontSymbols.MOVES_CHAR,
+ 'religion' : FontSymbols.RELIGION_CHAR,
+ 'star' : FontSymbols.STAR_CHAR,
+ 'silver star' : FontSymbols.SILVER_STAR_CHAR,
+ 'trade' : FontSymbols.TRADE_CHAR,
+ 'defense' : FontSymbols.DEFENSE_CHAR,
+ 'greatpeople' : FontSymbols.GREAT_PEOPLE_CHAR,
+ 'badgold' : FontSymbols.BAD_GOLD_CHAR,
+ 'badfood' : FontSymbols.BAD_FOOD_CHAR,
+ 'eatenfood' : FontSymbols.EATEN_FOOD_CHAR,
+ 'goldenage' : FontSymbols.GOLDEN_AGE_CHAR,
+ 'angrypop' : FontSymbols.ANGRY_POP_CHAR,
+ 'openBorders' : FontSymbols.OPEN_BORDERS_CHAR,
+ 'defensivePact' : FontSymbols.DEFENSIVE_PACT_CHAR,
+ 'map' : FontSymbols.MAP_CHAR,
+ 'occupation' : FontSymbols.OCCUPATION_CHAR,
+ 'power' : FontSymbols.POWER_CHAR,
+ }
+
+GlobalInfosMap = { 'bonus': {'NUM': gc.getNumBonusInfos, 'GET':
gc.getBonusInfo},
+ 'improvement': {'NUM': gc.getNumImprovementInfos, 'GET':
gc.getImprovementInfo},
+ 'yield': {'NUM': YieldTypes.NUM_YIELD_TYPES, 'GET': gc.getYieldInfo},
+ 'religion': {'NUM': gc.getNumReligionInfos, 'GET':
gc.getReligionInfo},
+ 'tech': {'NUM': gc.getNumTechInfos, 'GET': gc.getTechInfo},
+ 'unit': {'NUM': gc.getNumUnitInfos, 'GET': gc.getUnitInfo},
+ 'civic': {'NUM': gc.getNumCivicInfos, 'GET': gc.getCivicInfo},
+ 'building': {'NUM': gc.getNumBuildingInfos, 'GET':
gc.getBuildingInfo},
+ 'terrain': {'NUM': gc.getNumTerrainInfos, 'GET': gc.getTerrainInfo},
+ 'trait': {'NUM': gc.getNumTraitInfos, 'GET': gc.getTraitInfo},
+ 'feature' : {'NUM': gc.getNumFeatureInfos, 'GET': gc.getFeatureInfo},
+ 'route': {'NUM': gc.getNumRouteInfos, 'GET': gc.getRouteInfo},
+ 'promotion': {'NUM':gc.getNumPromotionInfos, 'GET':
gc.getPromotionInfo},
+ }
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Python/EntryPoints/CvAppInterface.py Sun
Sep 20 08:55:19 2009
@@ -0,0 +1,321 @@
+# Sid Meier's Civilization 4
+# Copyright Firaxis Games 2005
+#
+# CvAppInterface.py
+#
+# These functions are App Entry Points from C++
+# WARNING: These function names should not be changed
+# WARNING: These functions can not be placed into a class
+#
+# No other modules should import this
+#
+# DONT ADD ANY MORE IMPORTS HERE - Moose
+import sys
+import os
+import CvUtil
+#
+
+from CvPythonExtensions import *
+
+# globals
+gc = CyGlobalContext()
+
+# don't make this an event - Moose
+def init():
+ # for PythonExtensions Help File
+ PythonHelp = 0 # doesn't work on systems which haven't installed Python
+
+ # dump Civ python module directory
+ if PythonHelp:
+ import CvPythonExtensions
+ helpFile=file("CvPythonExtensions.hlp.txt", "w")
+ sys.stdout=helpFile
+ import pydoc
+ pydoc.help(CvPythonExtensions)
+ helpFile.close()
+
+ sys.stderr=CvUtil.RedirectError()
+ sys.excepthook = CvUtil.myExceptHook
+ sys.stdout=CvUtil.RedirectDebug()
+
+def onSave():
+ 'Here is your chance to save data. This function should return a string'
+ import CvWBDesc
+ import pickle
+ import CvEventInterface
+ # if the tutorial is active, it will save out the Shown Messages list
+ saveDataStr = pickle.dumps( CvEventInterface.onEvent( ('OnSave',0,0,0,0,0
) ) )
+ return saveDataStr
+
+def onLoad(argsList):
+ 'Called when a file is loaded'
+ import pickle
+ import CvEventInterface
+ loadDataStr=argsList[0]
+ if len(loadDataStr):
+ CvEventInterface.onEvent( ('OnLoad',pickle.loads(loadDataStr),0,0,0,0,0
) )
+
+def preGameStart():
+ import CvScreensInterface
+
+# BUG - core - start
+ import CvEventInterface
+ CvEventInterface.getEventManager().fireEvent("PreGameStart")
+# BUG - core - end
+
+ if not CyGame().isPitbossHost():
+ NiTextOut("Initializing font icons")
+ # Load dynamic font icons into the icon map
+ CvUtil.initDynamicFontIcons()
+
+ if not CyGame().isPitbossHost():
+ # Preload the tech chooser..., only do this release builds, in debug
build we may not be raising the tech chooser
+ if (not gc.isDebugBuild()):
+ NiTextOut("Preloading tech chooser")
+ CvScreensInterface.showTechChooser()
+ CvScreensInterface.techChooser.hideScreen()
+
+ NiTextOut("Loading main interface...")
+ CvScreensInterface.showMainInterface()
+
+def onPbemSend(argsList):
+# >>> CYBERFRONT // pbem:
+# import sys, smtplib, MimeWriter, base64, StringIO
+ import sys, smtplib
+ from email import Encoders
+ from email.Header import Header
+ from email.MIMEText import MIMEText
+ from email.MIMEMultipart import MIMEMultipart
+ from email.MIMEBase import MIMEBase
+# <<< CYBERFRONT
+
+ szToAddr = argsList[0]
+ szFromAddr = argsList[1]
+ szSubject = argsList[2]
+ szPath = argsList[3]
+ szFilename = argsList[4]
+ szHost = argsList[5]
+ szUser = argsList[6]
+ szPassword = argsList[7]
+
+ print 'sending e-mail'
+ print 'To:', szToAddr
+ print 'From:', szFromAddr
+ print 'Subject:', szSubject
+ print 'Path:', szPath
+ print 'File:', szFilename
+ print 'Server:', szHost
+ print 'User:', szUser
+
+ if len(szFromAddr) == 0 or len(szHost) == 0:
+ print 'host or address empty'
+ return 1
+
+# >>> CYBERFRONT // pbem:
+# message = StringIO.StringIO()
+# writer = MimeWriter.MimeWriter(message)
+#
+# writer.addheader('To', szToAddr)
+# writer.addheader('From', szFromAddr)
+# writer.addheader('Subject', szSubject)
+# writer.addheader('MIME-Version', '1.0')
+# writer.startmultipartbody('mixed')
+#
+# part = writer.nextpart()
+# body = part.startbody('text/plain')
+# body.write('CIV4 PBEM save attached')
+#
+# part = writer.nextpart()
+# part.addheader('Content-Transfer-Encoding', 'base64')
+# szStartBody = "application/CivBeyondSwordSave; name=%s" % szFilename
+# body = part.startbody(szStartBody)
+# base64.encode(open(szPath+szFilename, 'rb'), body)
+#
+# # finish off
+# writer.lastpart()
+
+ msg = MIMEMultipart()
+ msg.set_charset('iso-2022-cn')
+ msg['To'] = szToAddr
+ msg['From'] = szFromAddr
+ h = Header(szSubject, 'iso-2022-cn')
+ msg['Subject'] = h
+ msg.epilogue = ''
+
+ part = MIMEText('CIV4 PBEM save attached', _charset='iso-2022-cn')
+ msg.attach(part)
+
+ part = MIMEBase('application', 'CivBeyondSwordSave')
+ part.set_payload(open(szPath+szFilename, 'rb').read())
+ Encoders.encode_base64(part)
+ f = Header(szFilename, 'iso-2022-cn')
+ part.add_header('Content-Disposition', 'attachment', filename="%s" % f)
+ msg.attach(part)
+# <<< CYBERFRONT
+
+ # send the mail
+ try:
+ smtp = smtplib.SMTP(szHost)
+ # trying to get TLS to work...
+ #smtp.set_debuglevel(1)
+ #smtp.ehlo()
+ #smtp.starttls()
+ #smtp.ehlo()
+ if len(szUser) > 0:
+ smtp.login(szUser, szPassword)
+# >>> CYBERFRONT // pbem:
+# smtp.sendmail(szFromAddr, szToAddr, message.getvalue())
+ smtp.sendmail(szFromAddr, szToAddr, msg.as_string())
+# <<< CYBERFRONT
+ smtp.quit()
+ except smtplib.SMTPAuthenticationError, e:
+ CyInterface().addImmediateMessage("Authentication Error: The server
didn't accept the username/password combination provided.", "")
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPHeloError, e:
+ CyInterface().addImmediateMessage("The server refused our HELO
reply.", "")
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPConnectError, e:
+ CyInterface().addImmediateMessage("Error establishing connection.", "")
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPDataError, e:
+ CyInterface().addImmediateMessage("The SMTP server didn't accept the
data.", "")
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPRecipientsRefused, e:
+ CyInterface().addImmediateMessage("All recipient addresses refused.", "")
+ return 1
+ except smtplib.SMTPSenderRefused, e:
+ CyInterface().addImmediateMessage("Sender address refused.", "")
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPResponseException, e:
+ CyInterface().addImmediateMessage("Error %d: %s" % (e.smtp_code,
e.smtp_error), "")
+ return 1
+ except smtplib.SMTPServerDisconnected:
+ CyInterface().addImmediateMessage("Not connected to any SMTP server", "")
+ return 1
+ except:
+ return 1
+ return 0
+
+#####################################33
+## INTERNAL USE ONLY
+#####################################33
+def normalizePath(argsList):
+ CvUtil.pyPrint("PathName in = %s" %(argsList[0],))
+ pathOut=os.path.normpath(argsList[0])
+ CvUtil.pyPrint("PathName out = %s" %(pathOut,))
+ return pathOut
+
+def getConsoleMacro(argsList):
+ 'return a string macro that is used by the in-game python console, fxnKey
goes from 1 to 10'
+ fxnKey = argsList[0]
+ if (fxnKey==1): return "player = gc.getPlayer(0)"
+ if (fxnKey==2): return "import CvCameraControls"
+ if (fxnKey==3):
return "CvCameraControls.g_CameraControls.resetCameraControls()"
+ if (fxnKey==4):
return "CvCameraControls.g_CameraControls.doRotateCamera(360, 45.0)"
+ if (fxnKey==5):
return "CvCameraControls.g_CameraControls.doZoomCamera(0.2, 0.5)"
+ if (fxnKey==6):
return "CvCameraControls.g_CameraControls.doZoomCamera(0.5, 0.15)"
+ if (fxnKey==7):
return "CvCameraControls.g_CameraControls.doPitchCamera(0.5, 0.5)"
+ return ""
+
+# BUG - DLL - start
+def isBug():
+ return True
+
+g_options = None
+def getOption(id):
+ global g_options
+ if g_options is None:
+ import BugOptions
+ g_options = BugOptions.g_options
+ if g_options is None:
+ import BugUtil
+ BugUtil.warn("Cannot access BUG options")
+ return None
+ return g_options.getOption(id)
+
+def getOptionBOOL(argsList):
+ #import BugUtil
+ id, default = argsList
+ #BugUtil.alert("checking option %s with default %s", id, bool(default))
+ try:
+ option = getOption(id)
+ return bool(option.getValue())
+ #val = bool(option.getValue())
+ #BugUtil.alert("value = %s", val)
+ #return val
+ except:
+ #BugUtil.alert("returning default %s", bool(default))
+ return default
+
+def getOptionINT(argsList):
+ #import BugUtil
+ id, default = argsList
+ #BugUtil.alert("checking option %s with default %d", id, int(default))
+ try:
+ option = getOption(id)
+ return int(option.getValue())
+ #val = int(option.getValue())
+ #BugUtil.alert("value = %s", val)
+ #return val
+ except:
+ #BugUtil.alert("returning default %d", int(default))
+ return default
+
+def getOptionFLOAT(argsList):
+ #import BugUtil
+ id, default = argsList
+ #BugUtil.alert("checking option %s with default %f", id, float(default))
+ try:
+ option = getOption(id)
+ return float(option.getValue())
+ #val = int(option.getValue())
+ #BugUtil.alert("value = %s", val)
+ #return val
+ except:
+ #BugUtil.alert("returning default %f", float(default))
+ return default
+
+def getOptionSTRING(argsList):
+ #import BugUtil
+ id, default = argsList
+ #BugUtil.alert("checking option %s with default %s", id, str(default))
+ try:
+ option = getOption(id)
+ return str(option.getValue())
+ #val = int(option.getValue())
+ #BugUtil.alert("value = %s", val)
+ #return val
+ except:
+ #BugUtil.alert("returning default %s", str(default))
+ return default
+
+g_nameAndVersion = None
+def getModNameAndVersion():
+ global g_nameAndVersion
+ if g_nameAndVersion is None:
+ import CvModName
+ g_nameAndVersion = CvModName.getNameAndVersion()
+ return g_nameAndVersion
+# BUG - DLL - end
+
+# BUG - AutoSave - start
+def gameStartSave():
+ # called when the map is generated
+ import AutoSave
+ AutoSave.saveGameStart()
+
+def gameEndSave():
+ # called when the game ends
+ import AutoSave
+ AutoSave.saveGameEnd()
+
+def gameExitSave():
+ # called when the game ends
+ import AutoSave
+ AutoSave.saveGameExit()
+# BUG - AutoSave - end
=======================================
--- /dev/null
+++
/trunk/317Difference/Assets/Python/EntryPoints/CvOptionsScreenCallbackInterface.py
Sun Sep 20 08:55:19 2009
@@ -0,0 +1,599 @@
+from CvPythonExtensions import *
+import CvScreensInterface
+import Popup as PyPopup
+import CvUtil
+import string
+
+localText = CyTranslator()
+UserProfile = CyUserProfile()
+
+# BUG - Options - start
+import BugOptions
+import BugOptionsScreen
+import BugHelp
+# BUG - Options - end
+
+# BUG - BugEventManager - start
+import CvEventInterface
+# BUG - BugEventManager - end
+
+#"""
+#OPTIONS SCREEN CALLBACK INTERFACE - Any time something is changed in the
Options Screen the result is determined here
+#"""
+
+def saveProfile():
+ if (UserProfile.getProfileName() != ""):
+ UserProfile.writeToFile(UserProfile.getProfileName())
+
+def getOptionsScreen():
+ return CvScreensInterface.optionsScreen
+
+def getTabControl():
+ return getOptionsScreen().getTabControl()
+
+def refresh():
+ getOptionsScreen().refreshScreen()
+
+def restartPopup(bForceShowing = false):
+
+ if (CyInterface().isInMainMenu() == false or bForceShowing == true):
+
+ # create popup
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+ popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_NEED_TO_RESTART",
()))
+ popup.launch()
+
+def isNumber(s):
+
+ for l in s:
+ if l not in string.digits:
+ return False
+
+ return True
+
+def DummyCallback( argsList ):
+ "This is the callback function for controls which shouldn't do anything
when modified (editboxes, mainly)"
+ return
+
+######################################## GAME OPTIONS
########################################
+
+def handleGameOptionsClicked ( argsList ):
+ "Handles checkbox clicked input"
+ bValue, szName = argsList
+
+ iGameOption = int(szName[szName.find("_")+1:])
+ CyMessageControl().sendPlayerOption(iGameOption, bValue)
+ return 1
+
+def handleLanguagesDropdownBoxInput ( argsList ):
+ "Handles Languages Dropdown Box input"
+ iValue, szName = argsList
+# >>> freesand
+ if (iValue == 0):
+ CyGame().setCurrentLanguage(0)
+ else:
+ CyGame().setCurrentLanguage(5)
+# <<< freesand
+
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+# >>> CYBERFRONT // language
+# popup.setBodyString(localText.getText("TXT_KEY_FEAT_ACCOMPLISHED_OK",
()))
+ popup.setBodyString(localText.getText("TXT_KEY_FEAT_CHANGE_LANGUAGE", ()))
+# <<< CYBERFRONT
+ popup.launch()
+
+# BUG - BugEventManager - start
+ CvEventInterface.getEventManager().fireEvent("LanguageChanged", iValue)
+# BUG - BugEventManager - end
+
+ return 1
+
+def handleGameReset ( argsList ):
+ "Resets these options"
+ szName = argsList
+
+ UserProfile.resetOptions(TabGroupTypes.TABGROUP_GAME)
+ refresh()
+ saveProfile()
+
+ return 1
+
+######################################## GRAPHIC OPTIONS
########################################
+
+def handleGraphicOptionsClicked ( argsList ):
+ "Handles checkbox clicked input"
+ bValue, szName = argsList
+ iGraphicOption = int(szName[szName.find("_")+1:])
+
+ UserProfile.setGraphicOption(iGraphicOption, bValue)
+
+ if (iGraphicOption ==
GraphicOptionTypes.GRAPHICOPTION_SINGLE_UNIT_GRAPHICS or
+ iGraphicOption == GraphicOptionTypes.GRAPHICOPTION_FULLSCREEN):
+ restartPopup(true)
+
+ if (iGraphicOption == GraphicOptionTypes.GRAPHICOPTION_HIRES_TERRAIN):
+ restartPopup(false)
+
+ return 1
+
+def handleGraphicsLevelDropdownBoxInput ( argsList ):
+ "Handles Graphics Level Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setGraphicsLevel(iValue)
+ refresh()
+
+ restartPopup(true)
+ return 1
+
+def handleRenderQualityDropdownBoxInput ( argsList ):
+ "Handles Render Quality Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setRenderQualityLevel(iValue)
+
+ return 1
+
+def handleGlobeViewDropdownBoxInput ( argsList ):
+ "Handles Globe View Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setGlobeViewRenderLevel(iValue)
+
+ return 1
+
+def handleMovieDropdownBoxInput ( argsList ):
+ "Handles Movie Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setMovieQualityLevel(iValue)
+
+ return 1
+
+def handleMainMenuDropdownBoxInput ( argsList ):
+ "Handles Main Menu Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setMainMenu(iValue)
+ refresh()
+ saveProfile()
+
+ return 1
+
+def handleResolutionDropdownInput ( argsList ):
+ "Handles Resolution Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setResolution(iValue)
+
+# BUG - BugEventManager - start
+ CvEventInterface.getEventManager().fireEvent("ResolutionChanged", iValue)
+# BUG - BugEventManager - end
+
+ return 1
+
+def handleAntiAliasingDropdownInput ( argsList ):
+ "Handles Anti-Aliasing Dropdown Box input"
+ iValue, szName = argsList
+
+ UserProfile.setAntiAliasing(iValue)
+ return 1
+
+def handleGraphicsReset ( argsList ):
+ "Resets these options"
+ szName = argsList
+
+ UserProfile.resetOptions(TabGroupTypes.TABGROUP_GRAPHICS)
+ refresh()
+ restartPopup()
+ saveProfile()
+
+ return 1
+
+######################################## AUDIO OPTIONS
########################################
+
+def handleVolumeSlidersInput ( argsList ):
+ "Handles Volume slider input"
+ iValue, szName = argsList
+ iVolumeType = int(szName[szName.find("_")+1:])
+
+ iMax = UserProfile.getVolumeStops()
+
+ if (iVolumeType == 0): # Master Volume
+ UserProfile.setMasterVolume(iMax - iValue)
+ elif (iVolumeType == 1): # Music Volume
+ UserProfile.setMusicVolume(iMax - iValue)
+ elif (iVolumeType == 2): # Sound Effects Volume
+ UserProfile.setSoundEffectsVolume(iMax - iValue)
+ elif (iVolumeType == 3): # Speech Volume
+ UserProfile.setSpeechVolume(iMax - iValue)
+ elif (iVolumeType == 4): # Ambience Volume
+ UserProfile.setAmbienceVolume(iMax - iValue)
+ elif (iVolumeType == 5): # Interface Volume
+ UserProfile.setInterfaceVolume(iMax - iValue)
+
+ return 1
+
+def handleVolumeCheckboxesInput ( argsList ):
+ "Handles checkbox clicked input"
+ bValue, szName = argsList
+ iVolumeType = int(szName[szName.find("_")+1:])
+
+ if (iVolumeType == 0): # Master Volume
+ UserProfile.setMasterNoSound(bValue)
+ elif (iVolumeType == 1): # Music Volume
+ UserProfile.setMusicNoSound(bValue)
+ elif (iVolumeType == 2): # Sound Effects Volume
+ UserProfile.setSoundEffectsNoSound(bValue)
+ elif (iVolumeType == 3): # Speech Volume
+ UserProfile.setSpeechNoSound(bValue)
+ elif (iVolumeType == 4): # Ambience Volume
+ UserProfile.setAmbienceNoSound(bValue)
+ elif (iVolumeType == 5): # Interface Volume
+ UserProfile.setInterfaceNoSound(bValue)
+
+ return 1
+
+def handleCustomMusicPathCheckboxInput ( argsList ):
+ "Handles Custom Music Path text changed input"
+ bValue, szName = argsList
+
+# >>> CYBERFRONT // sound: music path
+# if (bValue):
+#
UserProfile.setMusicPath(CvUtil.convertToStr(getOptionsScreen().getMusicPath()))
+# else:
+# UserProfile.setMusicPath("")
+ if (bValue):
+
UserProfile.setMusicPath(CvUtil.convertToUnicode(getOptionsScreen().getMusicPath()))
+ else:
+ UserProfile.setMusicPath(u"")
+# <<< CYBERFRONT
+
+ return 1
+
+def handleCustomMusicPathButtonInput ( argsList ):
+ "Handles Custom Music Path Browse Button clicked input"
+ szName = argsList
+
+ UserProfile.musicPathDialogBox()
+ return 1
+
+def handleSpeakerConfigDropdownInput ( argsList ):
+ "Handles Speaker Config Dropdown Box input"
+ iValue, szName = argsList
+ szSpeakerConfigName = UserProfile.getSpeakerConfigFromList(iValue)
+
+ UserProfile.setSpeakerConfig(szSpeakerConfigName)
+ restartPopup(true)
+
+ return 1
+
+def handleVoiceCheckboxInput ( argsList ):
+ "Handles voice checkbox clicked input"
+ bValue, szName = argsList
+ UserProfile.setUseVoice(bValue)
+ return 1
+
+def handleCaptureDeviceDropdownInput ( argsList ):
+ "Handles Capture Device Config Dropdown Box input"
+ iValue, szName = argsList
+ UserProfile.setCaptureDevice(iValue)
+ return 1
+
+def handleCaptureVolumeSliderInput ( argsList ):
+ "Handles Capture Volume slider input"
+ iValue, szName = argsList
+ iMax = UserProfile.getMaxPlaybackVolume()
+
+ UserProfile.setCaptureVolume(iValue)
+ return 1
+
+def handlePlaybackDeviceDropdownInput ( argsList ):
+ "Handles Playback Device Dropdown Box input"
+ iValue, szName = argsList
+ UserProfile.setPlaybackDevice(iValue)
+ return 1
+
+def handlePlaybackVolumeSliderInput ( argsList ):
+ "Handles Playback Volume slider input"
+ iValue, szName = argsList
+ iMax = UserProfile.getMaxPlaybackVolume()
+
+# UserProfile.setPlaybackVolume(iMax - iValue)
+ UserProfile.setPlaybackVolume(iValue)
+ return 1
+
+def handleAudioReset ( argsList ):
+ "Resets these options"
+ szName = argsList
+
+ UserProfile.resetOptions(TabGroupTypes.TABGROUP_AUDIO)
+ refresh()
+ restartPopup(true)
+ saveProfile()
+
+ return 1
+
+######################################## NETWORK OPTIONS
########################################
+
+def handleBroadbandSelected ( argsList ):
+ "Handles bandwidth selection"
+ bSelected, szName = argsList
+ if (bSelected):
+ CyGame().setModem(false)
+ return 1
+
+def handleModemSelected ( argsList ):
+ "Handles bandwidth selection"
+ bSelected, szName = argsList
+ if (bSelected):
+ CyGame().setModem(true)
+ return 1
+
+######################################## CLOCK OPTIONS
########################################
+
+def handleClockOnCheckboxInput ( argsList ):
+ "Handles Clock On/Off checkbox clicked input"
+ bValue, szName = argsList
+
+ UserProfile.setClockOn(bValue)
+ return 1
+
+def handle24HourClockCheckboxInput ( argsList ):
+ "Handles 24 Hour Clock On/Off checkbox clicked input"
+ bValue, szName = argsList
+
+ UserProfile.set24Hours(bValue)
+ return 1
+
+def handleAlarmOnCheckboxInput ( argsList ):
+ "Handles Alarm On/Off checkbox clicked input"
+ bValue, szName = argsList
+
+ iHour = getOptionsScreen().getAlarmHour()
+ iMin = getOptionsScreen().getAlarmMin()
+
+ if (isNumber(iHour) and iHour != "" and isNumber(iMin) and iMin != "" ):
+
+ iHour = int(iHour)
+ iMin = int(iMin)
+
+ if (iHour > 0 or iMin > 0):
+ toggleAlarm(bValue, iHour, iMin)
+
+ return 1
+
+def handleOtherReset ( argsList ):
+ "Resets these options"
+ szName = argsList
+
+ UserProfile.resetOptions(TabGroupTypes.TABGROUP_CLOCK)
+ refresh()
+ saveProfile()
+
+ return 1
+
+######################################## PROFILES
########################################
+
+def handleProfilesDropdownInput ( argsList ):
+ "Handles Profiles tab dropdown box input"
+
+ iValue, szName = argsList
+ saveProfile()
+
+ # Load other file
+ szFilename = UserProfile.getProfileFileName(iValue)
+ szProfile = szFilename[szFilename.find("PROFILES\\")+9:-4]
+
+ bSuccess = loadProfile(szProfile)
+ return bSuccess
+
+def handleNewProfileButtonInput ( argsList ):
+ "Handles New Profile Button clicked input"
+ szName = argsList
+
+ szNewProfileName = getOptionsScreen().getProfileEditCtrlText()
+# >>> CYBERFRONT // character code: codepage
+# szNarrow = szNewProfileName.encode("latin_1")
+ szNarrow = szNewProfileName.encode("utf-8")
+# <<< CYBERFRONT
+ UserProfile.setProfileName(szNarrow)
+ UserProfile.writeToFile(szNarrow)
+
+ # Recalculate file info when new file is saved out
+ UserProfile.loadProfileFileNames()
+
+ saveProfile()
+
+ refresh()
+
+ # create popup
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+ popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_SAVED_PROFILE",
(szNewProfileName, )))
+ popup.launch()
+
+ return 1
+
+def handleDeleteProfileButtonInput ( argsList ):
+ "Handles Delete Profile Button clicked input"
+ szName = argsList
+
+ szProfileName
=CvUtil.convertToStr(getOptionsScreen().getProfileEditCtrlText())
+
+ if (UserProfile.deleteProfileFile(szProfileName)): # Note that this
function automatically checks to see if the string passed is a valid file
to be deleted (it must have the proper file extension though)
+
+ # Recalculate list of stuff
+ UserProfile.loadProfileFileNames()
+
+ # create popup
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+# >>> CYBERFRONT // profile:
+#
popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_DELETED_PROFILE",
(szProfileName, )))
+ popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_DELETED_PROFILE",
(CvUtil.convertToUnicode(szProfileName), )))
+# <<< CYBERFRONT
+ popup.launch()
+
+ bSuccess = true
+
+ if (szProfileName == UserProfile.getProfileName()):
+
+ UserProfile.setProfileName("")
+
+ # Load other file
+ szFilename = UserProfile.getProfileFileName(0)
+ szProfile = szFilename[szFilename.find("PROFILES\\")+9:-4]
+
+ bSuccess = loadProfile(szProfile)
+
+ refresh()
+
+ return bSuccess
+
+ return 0
+
+def loadProfile(szProfile):
+
+# >>> CYBERFRONT // profile:
+# bReadSuccessful = UserProfile.readFromFile(szProfile)
+ bReadSuccessful = UserProfile.readFromFile(CvUtil.convertToStr(szProfile))
+# <<< CYBERFRONT
+
+ if (bReadSuccessful):
+ UserProfile.recalculateAudioSettings()
+
+ getOptionsScreen().setProfileEditCtrlText(szProfile)
+
+ ########### Now we have to update everything we loaded since nothing is
done except the serialization on load ###########
+
+ # Game Options
+ for iOptionLoop in range(PlayerOptionTypes.NUM_PLAYEROPTION_TYPES):
+ bValue = UserProfile.getPlayerOption(iOptionLoop)
+ CyMessageControl().sendPlayerOption(iOptionLoop, bValue)
+
+ # Graphics Options
+ for iOptionLoop in range(GraphicOptionTypes.NUM_GRAPHICOPTION_TYPES):
+ bValue = UserProfile.getGraphicOption(iOptionLoop)
+ UserProfile.setGraphicOption(iOptionLoop, bValue)
+
+ # Beware! These guys aren't safe to change:
+ UserProfile.setAntiAliasing(UserProfile.getAntiAliasing())
+ UserProfile.setResolution(UserProfile.getResolution())
+
+ # Audio Options
+ UserProfile.setSpeakerConfig(UserProfile.getSpeakerConfig())
+ UserProfile.setMusicPath(UserProfile.getMusicPath())
+ UserProfile.setUseVoice(UserProfile.useVoice())
+ UserProfile.setCaptureDevice(UserProfile.getCaptureDeviceIndex())
+ UserProfile.setPlaybackDevice(UserProfile.getPlaybackDeviceIndex())
+ UserProfile.setCaptureVolume(UserProfile.getCaptureVolume())
+ UserProfile.setPlaybackVolume(UserProfile.getPlaybackVolume())
+
+ # Clock Options
+ UserProfile.setClockOn(UserProfile.isClockOn())
+
+ #################
+
+ # create popup
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+ popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_LOADED_PROFILE",
(szProfile, )))
+ popup.launch()
+
+ # Refresh options screen with updated values
+ refresh()
+
+ return 1
+
+ # Load failed
+ else:
+
+ # create popup
+ popup = PyPopup.PyPopup()
+ popup.setHeaderString("")
+
popup.setBodyString(localText.getText("TXT_KEY_OPTIONS_LOAD_PROFILE_FAIL",
()))
+ popup.launch()
+
+ return 0
+
+def handleExitButtonInput ( argsList ):
+ "Exits the screen"
+ szName = argsList
+
+ saveProfile()
+ getTabControl().destroy()
+
+ return 1
+
+# BUG - Options - start
+
+g_options = BugOptions.getOptions()
+
+def getBugOptionsScreen():
+ return BugOptionsScreen.getOptionsScreen()
+
+def handleBugExitButtonInput ( argsList ):
+ "Exits the screen after saving the options to disk"
+ szName = argsList[0]
+ getBugOptionsScreen().close()
+ return 1
+
+def handleBugHelpButtonInput ( argsList ):
+ "Opens the BUG help file"
+ szName = argsList[0]
+ BugHelp.launch()
+ return 1
+
+def handleBugCheckboxClicked ( argsList ):
+ bValue, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setValue(bValue)
+ return 1
+
+def handleBugTextEditChange ( argsList ):
+ szValue, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setValue(szValue)
+ return 1
+
+def handleBugDropdownChange ( argsList ):
+ iIndex, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setIndex(iIndex)
+ return 1
+
+def handleBugIntDropdownChange ( argsList ):
+ iIndex, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setIndex(iIndex)
+ return 1
+
+def handleBugFloatDropdownChange ( argsList ):
+ iIndex, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setIndex(iIndex)
+ return 1
+
+def handleBugColorDropdownChange ( argsList ):
+ iIndex, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setIndex(iIndex)
+ return 1
+
+def handleBugSliderChanged ( argsList ):
+ iValue, szName = argsList
+ option = g_options.getOption(szName)
+ if (option is not None):
+ option.setValue(iValue)
+ return 1
+
+# BUG - Options - end
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Python/pyWB/CvWBDesc.py Sun Sep 20 08:55:19
2009
@@ -0,0 +1,2261 @@
+## Sid Meier's Civilization 4
+## Copyright Firaxis Games 2005
+#
+# Code for saving and loading a high-level description of the world.
+# Used by WorldBuilder
+#
+# Author - Mustafa Thamer
+#
+
+from CvPythonExtensions import *
+import os
+import sys
+import CvUtil
+from array import *
+
+# globals
+gc = CyGlobalContext()
+version = 11
+fileencoding = "utf-8" # aka "iso-8859-1"
+
+#############
+def getPlayer(idx):
+ "helper function which wraps get player in case of bad index"
+ if (gc.getPlayer(idx).isAlive()):
+ return gc.getPlayer(idx)
+ return None
+
+#############
+class CvWBParser:
+ "parser functions for WB desc"
+ def getTokens(self, line):
+ "return a list of (comma separated) tokens from the line. Strip
whitespace on each token"
+ if line==None:
+ return list()
+ toks=line.split(",")
+ toksOut=list()
+ for tok in toks:
+ toksOut.append(tok.strip())
+ return toksOut
+
+ def findToken(self, toks, item):
+ "return true if item exists in list of tokens"
+ for tok in toks:
+ if (tok==item):
+ return true
+ return false
+
+ def findTokenValue(self, toks, item):
+ "Search for a token of the form item=value in the list of toks, and
return value, or -1 if not found"
+ for tok in toks:
+ l=tok.split("=")
+ if (item==l[0]):
+ if (len(l)==1):
+ return item
+ return l[1]
+ return -1 # failed
+
+ def getNextLine(self, f):
+ "return the next line from the list of lines"
+ return f.readline()
+
+ def findNextToken(self, f, item):
+ "Find the next line that contains the token item, return false if not
found"
+ while True:
+ line = self.getNextLine(f)
+ if (not line):
+ return false # EOF
+ toks=self.getTokens(line)
+ if (self.findToken(toks, item)):
+ return true
+ return false
+
+ def findNextTokenValue(self, f, item):
+ "Find the next line that contains item=value, return value or -1 if not
found"
+ while True:
+ line = self.getNextLine(f)
+ if (not line):
+ return -1 # EOF
+ toks=self.getTokens(line)
+ val=self.findTokenValue(toks, item)
+ if (val != -1):
+ return val
+ return -1
+
+#############
+class CvGameDesc:
+ "class for serializing game data"
+ def __init__(self):
+ self.eraType = "NONE"
+ self.speedType = "NONE"
+ self.calendarType = "CALENDAR_DEFAULT"
+ self.options = ()
+ self.mpOptions = ()
+ self.forceControls = ()
+ self.victories = ()
+ self.gameTurn = 0
+ self.maxTurns = 0
+ self.maxCityElimination = 0
+ self.numAdvancedStartPoints = 0
+ self.targetScore = 0
+ self.iStartYear = -4000
+ self.szDescription = ""
+ self.szModPath = ""
+ self.iRandom = 0
+
+ def apply(self):
+ "after reading, apply the game data"
+ gc.getGame().setStartYear(self.iStartYear)
+
+ def write(self, f):
+ "write out game data"
+ f.write("BeginGame\n")
+
f.write("\tEra=%s\n" %(gc.getEraInfo(gc.getGame().getStartEra()).getType(),))
+
f.write("\tSpeed=%s\n" %(gc.getGameSpeedInfo(gc.getGame().getGameSpeedType()).getType(),))
+
f.write("\tCalendar=%s\n" %(gc.getCalendarInfo(gc.getGame().getCalendar()).getType(),))
+
+ # write options
+ for i in range(gc.getNumGameOptionInfos()):
+ if (gc.getGame().isOption(i)):
+ f.write("\tOption=%s\n" %(gc.getGameOptionInfo(i).getType()))
+
+ # write mp options
+ for i in range(gc.getNumMPOptionInfos()):
+ if (gc.getGame().isMPOption(i)):
+ f.write("\tMPOption=%s\n" %(gc.getMPOptionInfo(i).getType()))
+
+ # write force controls
+ for i in range(gc.getNumForceControlInfos()):
+ if (gc.getGame().isForcedControl(i)):
+ f.write("\tForceControl=%s\n" %(gc.getForceControlInfo(i).getType()))
+
+ # write victories
+ for i in range(gc.getNumVictoryInfos()):
+ if (gc.getGame().isVictoryValid(i)):
+ if (not gc.getVictoryInfo(i).isPermanent()):
+ f.write("\tVictory=%s\n" %(gc.getVictoryInfo(i).getType()))
+
+ f.write("\tGameTurn=%d\n" %(gc.getGame().getGameTurn(),))
+ f.write("\tMaxTurns=%d\n" %(gc.getGame().getMaxTurns(),))
+
f.write("\tMaxCityElimination=%d\n" %(gc.getGame().getMaxCityElimination(),))
+
f.write("\tNumAdvancedStartPoints=%d\n" %(gc.getGame().getNumAdvancedStartPoints(),))
+ f.write("\tTargetScore=%d\n" %(gc.getGame().getTargetScore(),))
+
+ f.write("\tStartYear=%d\n" %(gc.getGame().getStartYear(),))
+ f.write("\tDescription=%s\n" % (self.szDescription,))
+ f.write("\tModPath=%s\n" % (self.szModPath,))
+ f.write("EndGame\n")
+
+ def read(self, f):
+ "read in game data"
+ self.__init__()
+
+ parser = CvWBParser()
+ if (parser.findNextTokenValue(f, "BeginGame")!=-1):
+ while (true):
+ nextLine = parser.getNextLine(f)
+ toks = parser.getTokens(nextLine)
+ if (len(toks)==0):
+ break
+
+ v = parser.findTokenValue(toks, "Era")
+ if v!=-1:
+ self.eraType = v
+ continue
+
+ v = parser.findTokenValue(toks, "Speed")
+ if v!=-1:
+ self.speedType = v
+ continue
+
+ v = parser.findTokenValue(toks, "Calendar")
+ if v!=-1:
+ self.calendarType = v
+ continue
+
+ v = parser.findTokenValue(toks, "Option")
+ if v!=-1:
+ self.options = self.options + (v,)
+ continue
+
+ v = parser.findTokenValue(toks, "MPOption")
+ if v!=-1:
+ self.mpOptions = self.mpOptions + (v,)
+ continue
+
+ v = parser.findTokenValue(toks, "ForceControl")
+ if v!=-1:
+ self.forceControls = self.forceControls + (v,)
+ continue
+
+ v = parser.findTokenValue(toks, "Victory")
+ if v!=-1:
+ self.victories = self.victories + (v,)
+ continue
+
+ v = parser.findTokenValue(toks, "GameTurn")
+ if v!=-1:
+ self.gameTurn = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "MaxTurns")
+ if v!=-1:
+ self.maxTurns = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "MaxCityElimination")
+ if v!=-1:
+ self.maxCityElimination = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "NumAdvancedStartPoints")
+ if v!=-1:
+ self.numAdvancedStartPoints = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "TargetScore")
+ if v!=-1:
+ self.targetScore = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "StartYear")
+ if v!=-1:
+ self.iStartYear = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "Description")
+ if v!=-1:
+ self.szDescription = v
+ continue
+
+ v = parser.findTokenValue(toks, "ModPath")
+ if v!=-1:
+ self.szModPath = v
+ continue
+
+ v = parser.findTokenValue(toks, "Random")
+ if v!=-1:
+ self.iRandom = int(v)
+ continue
+
+ if parser.findTokenValue(toks, "EndGame") != -1:
+ break
+
+#############
+class CvTeamDesc:
+ def __init__(self):
+ self.techTypes = ()
+ self.aaiEspionageAgainstTeams = []
+ self.bContactWithTeamList = ()
+ self.bWarWithTeamList = ()
+ self.bPermanentWarPeaceList = ()
+ self.bOpenBordersWithTeamList = ()
+ self.bDefensivePactWithTeamList = ()
+ self.bVassalOfTeamList = ()
+ self.projectType = []
+ self.bRevealMap = 0
+ self.iMasterPower = 0
+ self.iVassalPower = 0
+ self.iEspionageEver = 0
+
+ def write(self, f, idx):
+ "write out team data"
+ f.write("BeginTeam\n")
+
+ # Team ID (to make things easier to mess with in the text)
+ f.write("\tTeamID=%d\n" %(idx))
+
+ # write techs
+ for i in range(gc.getNumTechInfos()):
+ if (gc.getTeam(idx).isHasTech(i)):
+ f.write("\tTech=%s\n" %(gc.getTechInfo(i).getType()))
+ if gc.getTechInfo(i).isRepeat():
+ for j in range(gc.getTeam(idx).getTechCount(i)):
+ f.write("\tTech=%s\n" %(gc.getTechInfo(i).getType()))
+
+ # write Espionage against other teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).getEspionagePointsAgainstTeam(i) > 0):
+ f.write("\tEspionageTeam=%d, EspionageAmount=%d\n" %(i,
gc.getTeam(idx).getEspionagePointsAgainstTeam(i)))
+
+ # write Espionage Ever against other teams
+ if (gc.getTeam(idx).getEspionagePointsEver() > 0):
+
f.write("\tEspionageEverAmount=%d\n" %(gc.getTeam(idx).getEspionagePointsEver()))
+
+ # write met other teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isHasMet(i)):
+ f.write("\tContactWithTeam=%d\n" %(i))
+
+ # write warring teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isAtWar(i)):
+ f.write("\tAtWar=%d\n" %(i))
+
+ # write permanent war/peace teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isPermanentWarPeace(i)):
+ f.write("\tPermanentWarPeace=%d\n" %(i))
+
+ # write open borders other teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isOpenBorders(i)):
+ f.write("\tOpenBordersWithTeam=%d\n" %(i))
+
+ # write defensive pact other teams
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isDefensivePact(i)):
+ f.write("\tDefensivePactWithTeam=%d\n" %(i))
+
+ # write vassal state
+ for i in range(gc.getMAX_CIV_TEAMS()):
+ if (gc.getTeam(idx).isVassal(i)):
+ f.write("\tVassalOfTeam=%d\n" %(i))
+
+ for i in range(gc.getNumProjectInfos()):
+ for j in range(gc.getTeam(idx).getProjectCount(i)):
+ f.write("\tProjectType=%s\n" %(gc.getProjectInfo(i).getType()))
+
+ f.write("\tRevealMap=%d\n" %(0))
+
+ if gc.getTeam(idx).getVassalPower() != 0:
+ f.write("\tVassalPower=%d\n" %(gc.getTeam(idx).getVassalPower()))
+ if gc.getTeam(idx).getMasterPower() != 0:
+ f.write("\tMasterPower=%d\n" %(gc.getTeam(idx).getMasterPower()))
+
+ f.write("EndTeam\n")
+
+ def read(self, f):
+ "read in team data"
+ self.__init__()
+
+ parser = CvWBParser()
+ if (parser.findNextTokenValue(f, "BeginTeam")!=-1):
+ while (true):
+ nextLine = parser.getNextLine(f)
+ toks = parser.getTokens(nextLine)
+ if (len(toks)==0):
+ break
+
+ v = parser.findTokenValue(toks, "Tech")
+ if v!=-1:
+ self.techTypes = self.techTypes + (v,)
+ continue
+
+ v = parser.findTokenValue(toks, "EspionageTeam")
+ if v!=-1:
+ iTeam = int(v)
+
+ iExtra = int(parser.findTokenValue(toks, "EspionageAmount"))
+ self.aaiEspionageAgainstTeams.append([iTeam,iExtra])
+ continue
+
+ v = parser.findTokenValue(toks, "EspionageEverAmount")
+ if v!=-1:
+ self.iEspionageEver = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "ContactWithTeam")
+ if v!=-1:
+ self.bContactWithTeamList = self.bContactWithTeamList + (int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "AtWar")
+ if v!=-1:
+ self.bWarWithTeamList = self.bWarWithTeamList + (int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "PermanentWarPeace")
+ if v!=-1:
+ self.bPermanentWarPeaceList = self.bPermanentWarPeaceList + (int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "OpenBordersWithTeam")
+ if v!=-1:
+ self.bOpenBordersWithTeamList = self.bOpenBordersWithTeamList +
(int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "DefensivePactWithTeam")
+ if v!=-1:
+ self.bDefensivePactWithTeamList = self.bDefensivePactWithTeamList +
(int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "VassalOfTeam")
+ if v!=-1:
+ self.bVassalOfTeamList = self.bVassalOfTeamList + (int(v),)
+ continue
+
+ v = parser.findTokenValue(toks, "ProjectType")
+ if v!=-1:
+ self.projectType.append(v)
+ continue
+
+ v = parser.findTokenValue(toks, "RevealMap")
+ if v!=-1:
+ self.bRevealMap = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "VassalPower")
+ if v!=-1:
+ self.iVassalPower = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "MasterPower")
+ if v!=-1:
+ self.iMasterPower = int(v)
+ continue
+
+ if parser.findTokenValue(toks, "EndTeam") != -1:
+ return true # completed successfully
+
+ return false # failed
+
+#############
+class CvPlayerDesc:
+ def __init__(self):
+ self.szCivDesc = ""
+ self.szCivShortDesc = ""
+ self.szLeaderName = ""
+ self.szCivAdjective = ""
+ self.szFlagDecal = ""
+ self.isWhiteFlag = 0
+
+ self.leaderType = "NONE"
+ self.civType = "NONE"
+ self.handicap =
gc.getHandicapInfo(gc.getDefineINT("STANDARD_HANDICAP")).getType()
+ self.team = -1 # team index
+ self.color = "NONE"
+ self.artStyle = "NONE"
+ self.isPlayableCiv = 1
+ self.isMinorNationCiv = 0
+ self.iStartingGold = 0
+ self.iStartingX = -1
+ self.iStartingY = -1
+ self.stateReligion = ""
+ self.szStartingEra = ""
+ self.bRandomStartLocation = "false"
+
+ self.aaiCivics = []
+ self.aaiAttitudeExtras = []
+ self.aszCityList = []
+
+ #### Sanguo Mod WB, initial unit, start, added by nk 08.08.09
+ self.bSpecialInitUnit = False
+ self.aiSpecialInitUnitTargetAI = []
+ #### Sanguo Mod WB, initial unit, end
+
+
+ def write(self, f, idx):
+ "write out player data"
+ f.write("BeginPlayer\n")
+
+ # write team
+ f.write("\tTeam=%d\n" %(int(gc.getPlayer(idx).getTeam())))
+
+ # write leader and Civ Description info
+ if (gc.getPlayer(idx).getLeaderType() == LeaderHeadTypes.NO_LEADER):
+ f.write("\tLeaderType=NONE\n")
+
+ else:
+
f.write("\tLeaderType=%s\n" %(gc.getLeaderHeadInfo(gc.getPlayer(idx).getLeaderType()).getType()))
+
+ # write civ, color, artStyle, isPlayableCiv, isMinorNation, StartingGold
and StateReligion
+ if (gc.getPlayer(idx).getCivilizationType() ==
CivilizationTypes.NO_CIVILIZATION):
+ f.write("\tCivType=NONE\n")
+ f.write("\tColor=NONE\n")
+ f.write("\tArtStyle=NONE\n")
+ else:
+
f.write("\tLeaderName=%s\n" %(gc.getPlayer(idx).getNameKey().encode(fileencoding)))
+
f.write("\tCivDesc=%s\n" %(gc.getPlayer(idx).getCivilizationDescriptionKey().encode(fileencoding)))
+
f.write("\tCivShortDesc=%s\n" %(gc.getPlayer(idx).getCivilizationShortDescriptionKey().encode(fileencoding)))
+
f.write("\tCivAdjective=%s\n" %(gc.getPlayer(idx).getCivilizationAdjectiveKey().encode(fileencoding)))
+
f.write("\tFlagDecal=%s\n" %(gc.getPlayer(idx).getFlagDecal().encode(fileencoding)))
+ f.write("\tWhiteFlag=%d\n" %(gc.getPlayer(idx).isWhiteFlag(),))
+
f.write("\tCivType=%s\n" %(gc.getCivilizationInfo(gc.getPlayer(idx).getCivilizationType()).getType()))
+
f.write("\tColor=%s\n" %(gc.getPlayerColorInfo(gc.getPlayer(idx).getPlayerColor()).getType()))
+
f.write("\tArtStyle=%s\n" %(gc.getArtStyleTypes(gc.getPlayer(idx).getArtStyleType())))
+ f.write("\tPlayableCiv=%d\n" %(int(gc.getPlayer(idx).isPlayable())))
+ f.write("\tMinorNationStatus=%d\n" %(gc.getPlayer(idx).isMinorCiv()))
+ f.write("\tStartingGold=%d\n" %(gc.getPlayer(idx).getGold()))
+
+ if gc.getPlayer(idx).isAlive():
+ pPlot = gc.getPlayer(idx).getStartingPlot()
+ if (not pPlot.isNone()):
+ f.write("\tStartingX=%d, StartingY=%d\n" %(pPlot.getX(),
pPlot.getY()))
+
+ pPlayerReligionInfo =
gc.getReligionInfo(gc.getPlayer(idx).getStateReligion())
+ if pPlayerReligionInfo:
+ f.write("\tStateReligion=%s\n" %(pPlayerReligionInfo.getType()))
+ else:
+ f.write("\tStateReligion=\n")
+
+
f.write("\tStartingEra=%s\n" %(gc.getEraInfo(gc.getPlayer(idx).getCurrentEra()).getType()))
+
+ f.write("\tRandomStartLocation=false\n")
+
+ # write Civics
+ for iCivicOptionLoop in range(gc.getNumCivicOptionInfos()):
+ for iCivicLoop in range(gc.getNumCivicInfos()):
+ iCivic = gc.getPlayer(idx).getCivics(iCivicOptionLoop)
+ if (iCivicLoop == iCivic):
+ f.write("\tCivicOption=%s,
Civic=%s\n" %(gc.getCivicOptionInfo(iCivicOptionLoop).getType(),
gc.getCivicInfo(iCivicLoop).getType()))
+
+ # write Attitude Extra
+ for i in range(gc.getMAX_CIV_PLAYERS()):
+ if (gc.getPlayer(idx).AI_getAttitudeExtra(i) != 0):
+ f.write("\tAttitudePlayer=%d, AttitudeExtra=%d\n" %(i,
gc.getPlayer(idx).AI_getAttitudeExtra(i)))
+
+ # write City List
+ for i in range(gc.getPlayer(idx).getNumCityNames()):
+ f.write("\tCityList=%s\n" %(gc.getPlayer(idx).getCityName(i)))
+
+ if (gc.getPlayer(idx).getHandicapType() == HandicapTypes.NO_HANDICAP):
+
f.write("\tHandicap=%s\n" %(gc.getHandicapInfo(gc.getDefineINT("STANDARD_HANDICAP")).getType()))
+ else:
+
f.write("\tHandicap=%s\n" %(gc.getHandicapInfo(gc.getPlayer(idx).getHandicapType()).getType()))
+
+ f.write("EndPlayer\n")
+
+ def read(self, f):
+ "read in player data"
+ self.__init__()
+ parser = CvWBParser()
+ if (parser.findNextTokenValue(f, "BeginPlayer")!=-1):
+ while (true):
+ nextLine = parser.getNextLine(f)
+ toks = parser.getTokens(nextLine)
+ if (len(toks)==0):
+ break
+
+ v = parser.findTokenValue(toks, "CivDesc")
+ if v!=-1:
+ self.szCivDesc = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "CivShortDesc")
+ if v!=-1:
+ self.szCivShortDesc = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "LeaderName")
+ if v!=-1:
+ self.szLeaderName = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "CivAdjective")
+ if v!=-1:
+ self.szCivAdjective = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "FlagDecal")
+ if v!=-1:
+ self.szFlagDecal = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "WhiteFlag")
+ if v!=-1:
+ self.isWhiteFlag = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "LeaderType")
+ if v!=-1:
+ self.leaderType = v
+ continue
+
+ v = parser.findTokenValue(toks, "CivType")
+ if v!=-1:
+ self.civType = v
+ continue
+
+ v = parser.findTokenValue(toks, "Team")
+ if v!=-1:
+ self.team = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "Handicap")
+ if v!=-1:
+ self.handicap = v
+ continue
+
+ v = parser.findTokenValue(toks, "Color")
+ if v!=-1:
+ self.color = v
+ continue
+
+ v = parser.findTokenValue(toks, "ArtStyle")
+ if v!=-1:
+ self.artStyle = v
+ continue
+
+ v = parser.findTokenValue(toks, "PlayableCiv")
+ if v!=-1:
+ self.isPlayableCiv = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "MinorNationStatus")
+ if v!=-1:
+ self.isMinorNationCiv = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "StartingGold")
+ if v!=-1:
+ self.iStartingGold = int(v)
+ continue
+
+ vX = parser.findTokenValue(toks, "StartingX")
+ vY = parser.findTokenValue(toks, "StartingY")
+ if vX!=-1 and vY!=-1:
+ self.iStartingX = int(vX)
+ self.iStartingY = int(vY)
+ continue
+
+ v = parser.findTokenValue(toks, "StateReligion")
+ if v!=-1:
+ self.stateReligion = v
+ continue
+
+ v = parser.findTokenValue(toks, "StartingEra")
+ if v!=-1:
+ self.szStartingEra = v
+ continue
+
+ v = parser.findTokenValue(toks, "RandomStartLocation")
+ if v!=-1:
+ self.bRandomStartLocation = v
+ continue
+
+ v = parser.findTokenValue(toks, "CivicOption")
+ if v!=-1:
+ iCivicOptionType = gc.getInfoTypeForString(v)
+
+ v = parser.findTokenValue(toks, "Civic")
+ if v!=-1:
+ iCivicType = gc.getInfoTypeForString(v)
+ self.aaiCivics.append([iCivicOptionType,iCivicType])
+ continue
+
+ v = parser.findTokenValue(toks, "AttitudePlayer")
+ if v!=-1:
+ iPlayer = int(v)
+
+ iExtra = int(parser.findTokenValue(toks, "AttitudeExtra"))
+ self.aaiAttitudeExtras.append([iPlayer,iExtra])
+ continue
+
+ v = parser.findTokenValue(toks, "CityList")
+ if v!=-1:
+ self.aszCityList.append(v)
+ continue
+
+ #### Sanguo Mod WB, initial unit, start, added by nk 08.08.09
+ v = parser.findTokenValue(toks, "SpecialInitUnit")
+ if v!=-1:
+ self.bSpecialInitUnit = int(v)
+ continue
+
+ v = parser.findTokenValue(toks, "SpecialInitUnitTargetAI")
+ if v!=-1:
+ self.aiSpecialInitUnitTargetAI.append(int(v))
+ continue
+ #### Sanguo Mod WB, initial unit, end
+
+ if parser.findTokenValue(toks, "EndPlayer") != -1:
+ #print("Civics:")
+ #print self.aaiCivics
+ #print("Attitudes:")
+ #print self.aaiAttitudeExtras
+ break
+
+#############
+class CvUnitDesc:
+ "unit WB serialization"
+ def __init__(self):
+ self.plotX = -1
+ self.plotY = -1
+ self.unitType = None
+ self.szName = None
+ self.leaderUnitType = None
+ self.owner =-1
+ self.damage = 0
+ self.level = -1
+ self.experience = -1
+ self.promotionType = []
+ self.facingDirection = DirectionTypes.NO_DIRECTION;
+ self.isSleep = False
+ self.isIntercept = False
+ self.isPatrol = False
+ self.isPlunder = False
+ self.szUnitAIType = "NO_UNITAI"
+ self.szScriptData = "NONE"
+#### Sanguo Mod WB, start, added by poyuzhe 07.16.09
+ self.iHeroType = -1
+ self.iLegionHero = -1
+## self.LegionMemberList = []
+#### Sanguo Mod WB, end
+
+ def apply(self):
+ "after reading, this will actually apply the data"
+ player = getPlayer(self.owner)
+ if (player):
+ # print ("unit apply %d %d" %(self.plotX, self.plotY))
+ CvUtil.pyAssert(self.plotX>=0 and self.plotY>=0, "invalid plot coords")
+ unitTypeNum = CvUtil.findInfoTypeNum(gc.getUnitInfo,
gc.getNumUnitInfos(), self.unitType)
+ if (unitTypeNum < 0):
+ unit = None
+ else:
+ if (self.szUnitAIType != "NO_UNITAI"):
+ eUnitAI = CvUtil.findInfoTypeNum(gc.getUnitAIInfo,
UnitAITypes.NUM_UNITAI_TYPES, self.szUnitAIType) #pUnitAI.getType()
+ else:
+ eUnitAI = UnitAITypes.NO_UNITAI
+
+ unit = player.initUnit(unitTypeNum, self.plotX, self.plotY,
UnitAITypes(eUnitAI), self.facingDirection)
+ if (unit):
+ if (self.szName != None):
+ unit.setName(self.szName)
+ #leader unit type
+ if(self.leaderUnitType != None):
+ leaderUnitTypeNum = CvUtil.findInfoTypeNum(gc.getUnitInfo,
gc.getNumUnitInfos(), self.leaderUnitType)
+ if leaderUnitTypeNum >= 0:
+ unit.setLeaderUnitType(leaderUnitTypeNum);
+
+ #other properties
+ if self.damage != 0:
+ unit.setDamage(self.damage, PlayerTypes.NO_PLAYER)
+ if self.level != -1:
+ unit.setLevel(self.level)
+ if self.experience != -1:
+ unit.setExperience(self.experience, -1)
+ for promo in self.promotionType:
+ promotionTypeNum = CvUtil.findInfoTypeNum(gc.getPromotionInfo,
gc.getNumPromotionInfos(), promo)
+ unit.setHasPromotion(promotionTypeNum, True)
+ if self.isSleep:
+ unit.getGroup().setActivityType(ActivityTypes.ACTIVITY_SLEEP)
+ elif self.isIntercept:
+ unit.getGroup().setActivityType(ActivityTypes.ACTIVITY_INTERCEPT)
+ elif self.isPatrol:
+ unit.getGroup().setActivityType(ActivityTypes.ACTIVITY_PATROL)
+ elif self.isPlunder:
+ unit.getGroup().setActivityType(ActivityTypes.ACTIVITY_PLUNDER)
+ if self.szScriptData != "NONE":
+ unit.setScriptData(self.szScriptData)
+
+ #### Sanguo Mod WB, start, added by poyuzhe 07.16.09
+ if self.iHeroType != -1:
+ iUnitType = gc.getHeroInfo(self.iHeroType).getUnitType()
+
+ if self.iLegionHero != -1:
+ unit.setLeaderUnitType(-1)
+ hero = player.initUnit(iUnitType, self.plotX, self.plotY,
UnitAITypes.UNITAI_HERO, self.facingDirection)
+ else:
+ hero = unit
+
+ listHeroType = []
+ for i in range(gc.getNumHeroInfos()):
+ if gc.getHeroInfo(i).getUnitType() == iUnitType:
+ listHeroType.append(i)
+
+ if len(listHeroType) > 1:
+ hero.setHeroType(self.iHeroType)
+ if gc.getGame().getHeroDebutStatus(self.iHeroType) != self.owner:
+ gc.getGame().setHeroDebutStatus(self.iHeroType, self.owner)
+ player.changeHeroMaintenance(self.iHeroType, True, False, 0)
+ gc.getGame().setHeroUnitID(self.iHeroType, hero.getID())
+
+ # CyUnit() has no attribute 'setHeroType'
+ # if self.iHeroType != -1:
+ # unit.setHeroType(self.iHeroType)
+ # if self.iLegionHero != -1:
+ # unit.setLegionHero(self.iLegionHero)
+ #for iUnitID in self.LegionMemberList:
+ #unit.addLegionMember(iUnitID)
+ #### Sanguo Mod WB, end
+
+ def read(self, f, pX, pY):
+ "read in unit data - at this point the first line 'BeginUnit' has
already been read"
+ self.__init__()
+ self.plotX = pX
+ self.plotY = pY
+ CvUtil.pyAssert(self.plotX>=0 and self.plotY>=0, "invalid plot coords")
+
+ parser = CvWBParser()
+ while (true):
+ nextLine = parser.getNextLine(f)
+ toks = parser.getTokens(nextLine)
+ if (len(toks)==0):
+ break
+
+ v = parser.findTokenValue(toks, "UnitType")
+ vOwner = parser.findTokenValue(toks, "UnitOwner")
+ if (v!=-1 and vOwner != -1):
+ self.unitType = v
+ self.owner = int(vOwner)
+ continue
+
+ v = parser.findTokenValue(toks, "UnitName")
+ if (v != -1):
+ self.szName = v.decode(fileencoding)
+ continue
+
+ v = parser.findTokenValue(toks, "LeaderUnitType")
+ if (v != -1):
+ self.leaderUnitType = v
+ continue
+
+ v = parser.findTokenValue(toks, "Damage")
+ if (v != -1):
+ self.damage = (int(v))
+ continue
+
+ v = parser.findTokenValue(toks, "Level")
+ if (v != -1):
+ self.level = (int(v))
+ self.experience = int(parser.findTokenValue(toks, "Experience"))
+ continue
+
+ # Units - Promotions
+ v = parser.findTokenValue(toks, "PromotionType")
+ if v!=-1:
+ self.promotionType.append(v)
+ continue
+
+ v = parser.findTokenValue(toks, "FacingDirection")
+ if (v != -1):
+ self.facingDirection = (DirectionTypes(v))
+ continue
+
+ if (parser.findTokenValue(toks, "Sleep"))!=-1:
+ self.isSleep = True
+ continue
+
+ if (parser.findTokenValue(toks, "Intercept"))!=-1:
+ self.isIntercept = True
+ continue
+
+ if (parser.findTokenValue(toks, "Patrol"))!=-1:
+ self.isPatrol = True
+ continue
+
+ if (parser.findTokenValue(toks, "Plunder"))!=-1:
+ self.isPlunder = True
+ continue
+
+ v = parser.findTokenValue(toks, "UnitAIType")
+ if (v != -1):
+ self.szUnitAIType = v
+ continue
+
+ v = parser.findTokenValue(toks, "ScriptData")
+ if v!=-1:
+ print("found script data: %s" %(v))
+ self.szScriptData = v
+ continue
+
+ #### Sanguo Mod WB, start, added by poyuzhe 07.16.09
+ v = parser.findTokenValue(toks, "HeroType")
+ if v != -1:
+ self.iHeroType = (gc.getInfoTypeForString(v))
+ continue
+
+ v = parser.findTokenValue(toks, "LegionHero")
+ if v != -1:
+ self.iLegionHero = (gc.getInfoTypeForString(v))
+ continue
+
+## v = parser.findTokenValue(toks, "LegionMemberID")
+## if v != -1:
+## self.LegionMemberList.append(int(v))
+## continue
+ #### Sanguo Mod WB, end
+
+ if parser.findTokenValue(toks, "EndUnit") != -1:
+ break
+
+ def write(self, f, unit, plot):
+ "save unit desc to a file"
+ unitType = gc.getUnitInfo(unit.getUnitType()).getType()
+ unitOwner= unit.getOwner()
+ f.write("\tBeginUnit\n")
+ f.write("\t\tUnitType=%s, UnitOwner=%d\n" %(unitType,unitOwner))
+ if (len(unit.getNameNoDesc()) > 0):
+
f.write("\t\tUnitName=%s\n" %(unit.getNameNoDesc().encode(fileencoding),))
+ if unit.getLeaderUnitType() != -1:
+
f.write("\t\tLeaderUnitType=%s\n" %(gc.getUnitInfo(unit.getLeaderUnitType()).getType()))
+ f.write("\t\tDamage=%d\n" %(unit.getDamage(),))
+ f.write("\t\tLevel=%d, Experience=%d\n" %(unit.getLevel(),
unit.getExperience()))
+ for i in range(gc.getNumPromotionInfos()):
+
+ ## Sanguo Mod WB, start, added by nk 07.16.09
+ pInfo = gc.getPromotionInfo(i)
+
+ if pInfo.isHero():
+ continue
+
+ iUnitCombatType = pInfo.getPromotionUnitCombatType()
+ if iUnitCombatType != -1:
+ continue
+ ## Sanguo Mod WB, end
+
+ if unit.isHasPromotion(i):
+ f.write("\t\tPromotionType=%s\n" %(gc.getPromotionInfo(i).getType()))
+
+ f.write("\t\tFacingDirection=%d\n" %(unit.getFacingDirection(),))
+ if (unit.getGroup().getActivityType() == ActivityTypes.ACTIVITY_SLEEP):
+ f.write("\t\tSleep\n")
+ elif (unit.getGroup().getActivityType() ==
ActivityTypes.ACTIVITY_INTERCEPT):
+ f.write("\t\tIntercept\n")
+ elif (unit.getGroup().getActivityType() ==
ActivityTypes.ACTIVITY_PATROL):
+ f.write("\t\tPatrol\n")
+ elif (unit.getGroup().getActivityType() ==
ActivityTypes.ACTIVITY_PLUNDER):
+ f.write("\t\tPlunder\n")
+
f.write("\t\tUnitAIType=%s\n" %(gc.getUnitAIInfo(unit.getUnitAIType()).getType()))
+ if unit.getScriptData():
+ f.write("\t\tScriptData=%s\n" %unit.getScriptData() )
+
+ #### Sanguo Mod WB, start, added by poyuzhe 07.16.09
+ if unit.getHeroType() != -1:
+ f.write("\t\tHeroType=%s\n" %
(gc.getHeroInfo(unit.getHeroType()).getType()))
+ if unit.getLegionHero() != -1:
+ f.write("\t\tLegionHero=%s\n" %
(gc.getHeroInfo(unit.getLegionHero()).getType()))
+## for i in range(unit.getLegionSize()):
+## if unit.getLegionMemberAt(i) != -1:
+## f.write("\t\tLegionMemberID=%d\n" % (unit.getLegionMemberAt(i)))
+ #### Sanguo Mod WB, end
+
+ f.write("\tEndUnit\n")
+
+############
+class CvCityDesc:
+ "serializes city data"
+ def __init__(self):
+ self.city = None
+ self.owner = None
+ self.name = None
+ self.population = 0
+ self.productionUnit = "NONE"
+ self.productionBuilding = "NONE"
+ self.productionProject = "NONE"
+ self.productionProcess = "NONE"
+ self.culture = 0
+ self.bldgType = []
+ self.religions = []
+ self.holyCityReligions = []
+ self.corporations = []
+ self.headquarterCorporations = []
+ self.freeSpecialists = []
+ self.plotX=-1
+ self.plotY=-1
+ self.szScriptData = "NONE"
+ self.aiPlayerCulture = []
+ for iPlayerLoop in range(gc.getMAX_CIV_PLAYERS()):
+ self.aiPlayerCulture.append(0)
+ #### Sanguo Mod WB, start, added by poyuzhe 07.17.09
+ self.cityPerks = []
+ #### Sanguo Mod WB, end
+
+ def apply(self):
+ "after reading, this will actually apply the data"
+ player = getPlayer(self.owner)
+ if (player):
+ self.city = player.initCity(self.plotX, self.plotY)
+
+ if (self.name != None):
+ self.city.setName(self.name, False)
+
+ if (self.population):
+ self.city.setPopulation(self.population)
+
+ if (self.culture):
+ self.city.setCulture(self.city.getOwner(), self.culture, True)
+
+ for bldg in (self.bldgType):
+ bldgTypeNum = CvUtil.findInfoTypeNum(gc.getBuildingInfo,
gc.getNumBuildingInfos(), bldg)
+ self.city.setNumRealBuilding(bldgTypeNum, 1)
+
+ for religion in (self.religions):
+ religionTypeNum = CvUtil.findInfoTypeNum(gc.getReligionInfo,
gc.getNumReligionInfos(), religion)
+ self.city.setHasReligion(religionTypeNum, true, false, true)
+
+ for holyCityRel in (self.holyCityReligions):
+ religionTypeNum = CvUtil.findInfoTypeNum(gc.getReligionInfo,
gc.getNumReligionInfos(), holyCityRel)
+ gc.getGame().setHolyCity(religionTypeNum, self.city, false)
+
+ for corporation in (self.corporations):
+ corporationTypeNum = CvUtil.findInfoTypeNum(gc.getCorporationInfo,
gc.getNumCorporationInfos(), corporation)
+ self.city.setHasCorporation(corporationTypeNum, true, false, true)
+
+ for headquarters in (self.headquarterCorporations):
+ corporationTypeNum = CvUtil.findInfoTypeNum(gc.getCorporationInfo,
gc.getNumCorporationInfos(), headquarters)
+ gc.getGame().setHeadquarters(corporationTypeNum, self.city, false)
+
+ for iSpecialist in self.freeSpecialists:
+ specialistTypeNum = CvUtil.findInfoTypeNum(gc.getSpecialistInfo,
gc.getNumSpecialistInfos(), iSpecialist)
+ self.city.changeFreeSpecialistCount(specialistTypeNum, 1)
+
+ for iPlayerLoop in range(gc.getMAX_CIV_PLAYERS()):
+ iPlayerCulture = self.aiPlayerCulture[iPlayerLoop]
+ if (iPlayerCulture > 0):
+ self.city.setCulture(iPlayerLoop, iPlayerCulture, true)
+
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Res/Fonts/GameFont.tga Sun Sep 20 08:55:19
2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/Res/Fonts/GameFont_75.tga Sun Sep 20
08:55:19 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/317Difference/Assets/XML/Art/CIV4ArtDefines_Misc.xml Sun Sep 20
08:55:19 2009
@@ -0,0 +1,351 @@
+<?xml version="1.0"?>
+<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Jesse
Smith (Firaxis Games) -->
+<!-- Sid Meier's Civilization 4 -->
+<!-- Copyright Firaxis Games 2005 -->
+<!-- -->
+<!-- Misc art path information -->
+<Civ4ArtDefines xmlns="x-schema:CIV4ArtDefinesSchema.xml">
+ <MiscArtInfos>
+ <MiscArtInfo>
+ <Type>ART_GREAT_WALL_POST</Type>
+ <Path>Art/Structures/Buildings/Great_Wall/Great_Wall_Tower.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GREAT_WALL_SEGMENT</Type>
+ <Path>Art/Structures/Buildings/Great_Wall/Great_Wall_1Unit.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GREAT_WALL_SHADOW_TEXTURE</Type>
+ <Path>Art/Structures/Buildings/Great_Wall/poopshadow.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_AQUEDUCT_ENDPIECE</Type>
+ <Path>Art/Structures/Buildings/Aqueduct/Aqueduct.nif::1x1_end</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_AQUEDUCT_SEGMENT</Type>
+ <Path>Art/Structures/Buildings/Aqueduct/Aqueduct.nif::1x1_std</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_AQUEDUCT_WELL</Type>
+ <Path>Art/Structures/Buildings/Aqueduct/Aqueduct.nif::1x1_well</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_DEFAULT_MAP_THUMBNAIL</Type>
+ <Path>Art/Interface/Main Menu/MM_MissingMapThumbnail.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_CLOUD_SHADOWS</Type>
+ <Path>Art/Terrain/Sky/Clouds01decal.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_CLOUDS</Type>
+ <Path>Art/Terrain/Sky/Clouds01.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_ICECAP_EAST</Type>
+ <Path>Art/Terrain/Features/WorldCap/WorldCapIce.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_ICECAP_NORTH</Type>
+ <Path>Art/Terrain/Features/WorldCap/WorldCapIce.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_ICECAP_SOUTH</Type>
+ <Path>Art/Terrain/Features/WorldCap/WorldCapIce.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_ICECAP_WEST</Type>
+ <Path>Art/Terrain/Features/WorldCap/WorldCapIce.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_NIGHTSKY</Type>
+ <Path>Art/Terrain/Features/WorldCap/NightSky.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_GLOBEVIEW_WORLD_CAP</Type>
+ <Path>Art/Terrain/Features/WorldCap/WorldCap.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_HILL_DECAL</Type>
+ <Path>Art/Terrain/Features/Hills/hill_all_01.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_MOTION_BLUR_ALPHA_TEXTURE</Type>
+ <Path>Art/Shared/MotionBlur_Alpha.bmp</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_PEAK_DECAL</Type>
+ <Path>Art/Terrain/Features/Peak/peak_all_01.dds</Path>
+ <fScale>2.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_POST_MASK</Type>
+ <Path>Art/Structures/Buildings/Walls/post01_%1.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_ABOVESELECTION</Type>
+ <Path>None</Path>
+ <fScale>1.3</fScale>
+ <NIF>Art/Units/Selection Effect/Selection_Above.nif</NIF>
+ <KFM>Art/Units/Selection Effect/Selection_Above.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_COIN</Type>
+ <Path>None</Path>
+ <fScale>1.0</fScale>
+ <NIF>Art/Units/Flag/Mediallion.nif</NIF>
+ <KFM>Art/Units/Flag/Medallions.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_FLAG_ANCIENT</Type>
+ <Path>None</Path>
+ <fScale>0.8</fScale>
+ <NIF>Art/Units/Flags/Ancient_Flag.nif</NIF>
+ <KFM>Art/Units/Flags/Ancient_Flag.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_FLAG_MEDIEVAL</Type>
+ <Path>None</Path>
+ <fScale>0.8</fScale>
+ <NIF>Art/Units/Flags/Medieval_Flag.nif</NIF>
+ <KFM>Art/Units/Flags/Medieval_Flag.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_FLAG_MODERN</Type>
+ <Path>None</Path>
+ <fScale>0.8</fScale>
+ <NIF>Art/Units/Flags/Modern_Flag.nif</NIF>
+ <KFM>Art/Units/Flags/Modern_Flag.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_FLAG_GLOW</Type>
+ <Path>None</Path>
+ <fScale>0.8</fScale>
+ <NIF>Art/Units/Flag/BehindFlagGlow.nif</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_GROUNDSELECTION</Type>
+ <Path>None</Path>
+ <fScale>1.3</fScale>
+ <NIF>Art/Units/Selection Effect/Selection_Ground.nif</NIF>
+ <KFM>Art/Units/Selection Effect/Selection_Ground.kfm</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_UNITGROUP_WAYPOINTSELECTION</Type>
+ <Path>None</Path>
+ <fScale>1.3</fScale>
+ <NIF>Art/Units/Selection Effect/Selection_Waypoint.nif</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_WALL_MASK</Type>
+ <Path>Art/Structures/Buildings/Walls/wall%1_%2.nif</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ART_WATER</Type>
+ <Path>Art/Terrain/Water/Water01.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>Art/Terrain/Water/Water.nif</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>GENERIC_BUILDING_DIR</Type>
+ <Path>Art/Structures/Cities/</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>PLOT_TEXTURE</Type>
+ <Path>Art/Terrain/PlotTextures/PlotTexture.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>AREA_BORDER_TEXTURE</Type>
+ <Path>Art/Terrain/PlotTextures/AreaBorder.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RAILROAD_NORMAL_MAP_TEXTURE</Type>
+ <Path>Art/Terrain/Routes/Railroads/Railroad_Normal.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RIVER_BASE_TEXTURE</Type>
+ <Path>Art/Terrain/Routes/Rivers/AllRiversSmaller.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RIVER_FLOOD_PLAIN_MASK_TEXTURE</Type>
+ <Path>Art/Terrain/Features/Floodplain/floodplainMASK.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RIVER_FLOOD_PLAIN_TEXTURE</Type>
+ <Path>Art/Terrain/Features/Floodplain/FloodPlain_baseALL.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RIVER_NORMAL_MAP_TEXTURE</Type>
+ <Path>Art/Terrain/Routes/Rivers/AllRiversNormal.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RIVER_NORMAL_MAP_MED_TEXTURE</Type>
+ <Path>Art/Terrain/Routes/Rivers/AllRiversNormalMed.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ROUTE_BRIDGE</Type>
+ <Path>Art/Terrain/Routes/Bridge/Bridge.nif</Path>
+ <fScale>0.8</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>RAILROAD_BRIDGE</Type>
+ <Path>Art/Terrain/Routes/Bridge/Bridge_RR.nif</Path>
+ <fScale>0.8</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>ROUTE_DOCK</Type>
+ <Path>Art/Terrain/Routes/Dock/Dock.nif</Path>
+ <fScale>0.6</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>WAYPOINT_BEAM_TEXTURE</Type>
+ <Path>Art/Shared/DashedLine_Vertical_NoCaps.dds</Path>
+ <fScale>1.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>CITY_BILLBOARDS</Type>
+ <Path>None</Path>
+ <!-- positive scale: city billboards use fonts from GameFont.tga -->
+ <!-- negative scale: GFC billboards (uses the interface font) -->
+<!-- >>> CYBERFRONT text: billboard -->
+<!-- <fScale>1.0</fScale> -->
+ <fScale>-1.0</fScale>
+<!-- <<< CYBERFRONT -->
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>SPACE_SHIP_BUTTON</Type>
+
<Path>,Art/Interface/Buttons/Buildings/ApolloProgram.dds,Art/Interface/Buttons/Buildings_Atlas.dds,3,1</Path>
+ <fScale>1.0</fScale>
+ <NIF/>
+ <KFM/>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>REPLACE_LEADER_BACKGROUND</Type>
+ <Path/>
+ <fScale>1</fScale>
+ <NIF></NIF>
+ <KFM></KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>REPLACE_LEADER_FORGROUND</Type>
+ <Path/>
+ <fScale>1</fScale>
+ <NIF></NIF>
+ <KFM></KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>DEFAULT_THEME_NAME</Type>
+ <Path>Mods/The History of Three Kingdoms/Resource/Civ4.thm</Path>
+ <fScale>0.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ <MiscArtInfo>
+ <Type>SOUND_BLASTER_LOGO</Type>
+ <Path>Art/Interface/Screens/Options/X-Fi_Logo_Sound Best_trans
On.dds</Path>
+ <fScale>0.0</fScale>
+ <NIF>None</NIF>
+ <KFM>None</KFM>
+ </MiscArtInfo>
+ </MiscArtInfos>
+</Civ4ArtDefines>
=======================================
--- /dev/null
+++ /trunk/317Difference/Resource/Themes/Civ4Theme_Button.thm Sun Sep 20
08:55:19 2009
@@ -0,0 +1,1326 @@
+/**********************************************************************
+
+Filename : Civ4Theme_Button.thm
+Content : Civ4 - GButton control theme
+Created : May 1, 2005
+Authors : Sven Dixon
+
+Copyright : (c) 2005 Scaleform Corp. All Rights Reserved.
+
+Licensees may use this file in accordance with the valid Scaleform
+GFC Commercial License Agreement provided with the software.
+
+This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
+THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
+
+For information regarding GFC Commercial License Agreements go to:
+ online - http://www.scaleform.com/licensing.html or
+ email - sa...@scaleform.com
+
+**********************************************************************/
+
+// *** Main Button control namespace
+
+with GFC_Control_Button
+{
+
+ // Default style
+
+ GFC_Control_DefaultButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ with .Renderer
+ {
+ // Renderer object used to draw text
+ .Text = GFC_CtrlTheme_Bitmap_Control_Button_Renderer_Text;
+ .Image = GFC_CtrlTheme_Bitmap_Control_Button_Renderer_Image;
+ }
+
+ with GFC_Control_Flag
+ {
+ // Base control flags
+ .Transparent = GFlags(GCtrl, GFC_CF_TRANSPARENT);
+ .HitTest = 0; //GFlags(GCtrl, GFC_CF_HITTEST);
+ .SolidInner = 0; //GFlags(GCtrl, GFC_CF_SOLIDINNER);
+ .SolidBackground = 0; //GFlags(GCtrl, GFC_CF_SOLIDBACKGROUND);
+ .RegionClip = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP);
+ .RegionClipParent = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP_PARENT);
+ .NoExternalWindow = 0; //GFlags(GCtrl, GFC_CF_NOEXTERNALWINDOW);
+ .TopLayer = 0; //GFlags(GCtrl, GFC_CF_TOPLAYER);
+ .TopLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_TOPLAYERBITMAP);
+ .BottomLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_BOTTOMLAYERBITMAP);
+
+ // Control flag change masks
+ .Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_ACTIVE,
GFC_CF_DISABLED, GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER,
GFC_CF_FORCE_ROLLOVER);
+ }
+
+ with .Flag
+ {
+ // Button flags
+ .DownOffset = GFlags(GButtonCtrl,
GFC_CF_BUTTON_DOWNOFFSET_CONTENT);
+ .VAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_VCENTER);
+ .HAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_HCENTER);
+ .Focus = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_FOCUS_CONTROL);
+ .HoldTimer = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_HOLDTIMER);
+ .Text_VAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_VCENTER);
+ .Text_HAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_RIGHT);
+ .Multiline = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_MULTILINE);
+ .Just = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_JUST_LEFT);
+ .Wrap = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_WRAP_WORD);
+ .Crop = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_CROP_CHAR);
+ .CropDotted = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_CROP_DOTTED);
+
+ // Button flag change masks
+ //.ButtonMask_InvalidateControl = GFlags(GButtonCtrl);
+ }
+
+ with .Delay
+ {
+ // First hit takes place 1/4 of a second (250ms)
+ // The other ones will be 9/100 (90ms)
+ .HoldTimer_First = 250;
+ .HoldTimer_Repeat = 90;
+ }
+
+ with .Size
+ {
+ // Border style side widths
+ .BorderMargin = GRectMargin(0,0,0,0);
+ .ExtraMargin = GRectMargin(0,0,0,0);
+ .FocusMargin_Text = GRectMargin(4,4,4,4);
+ .FocusMargin_Image = GRectMargin(2,2,2,2);
+ .FocusMargin_Content = GRectMargin(4,4,4,4);
+ .FocusMargin_Control = GRectMargin(4,4,4,4);
+ .ContentOffset = GPoint(0,0);
+// >>> CYBERFRONT // text: adjust
+// .TextOffset = GPoint(0,-1);
+ .TextOffset = GPoint(0,0);
+// <<< CYBERFRONT
+ .DownOffset_Content = GPoint(0,1);
+ .DownOffset_Text = GPoint(0,1);
+ .DownOffset_Image = GPoint(0,1);
+ .ItemSpace = GFC_Control_Size_ItemSpace;
+ .Image = GSize(0,0);
+
+ .Default = GSize(64,31);
+ }
+
+ with .Color
+ {
+ .Inner = GFC_Control_Color_Surface;
+ .Highlight = GColor(255,255,255,128);
+
+ with .Text
+ {
+ .Default = SF_CtrlTheme_Civ4_Control_Color_AltText;
+ .Press = .Default;
+ .Disable = SF_CtrlTheme_Civ4_Control_Color_AltTextDisable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+
+ .Inactive = .Default;
+ .InactivePress = .Press;
+ .InactiveDisable = .Disable;
+ .InactiveRollover = .Rollover;
+ .InactiveToggle = .Toggle;
+ .InactiveTogglePress = .TogglePress;
+ .InactiveToggleDisable = .ToggleDisable;
+ .InactiveToggleRollover = .ToggleRollover;
+
+ .Winoff = .Inactive;
+ .WinoffPress = .InactivePress;
+ .WinoffDisable = .InactiveDisable;
+ .WinoffRollover = .InactiveRollover;
+ .WinoffToggle = .InactiveToggle;
+ .WinoffTogglePress = .InactiveTogglePress;
+ .WinoffToggleDisable = .InactiveToggleDisable;
+ .WinoffToggleRollover = .InactiveToggleRollover;
+ }
+
+ with .TextShadow
+ {
+ .Default = SF_CtrlTheme_Civ4_Control_Color_AltTextShadow;
+ .Press = .Default;
+ .Disable = SF_CtrlTheme_Civ4_Control_Color_AltTextShadowDisable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+
+ .Inactive = .Default;
+ .InactivePress = .Press;
+ .InactiveDisable = .Disable;
+ .InactiveRollover = .Rollover;
+ .InactiveToggle = .Toggle;
+ .InactiveTogglePress = .TogglePress;
+ .InactiveToggleDisable = .ToggleDisable;
+ .InactiveToggleRollover = .ToggleRollover;
+
+ .Winoff = .Inactive;
+ .WinoffPress = .InactivePress;
+ .WinoffDisable = .InactiveDisable;
+ .WinoffRollover = .InactiveRollover;
+ .WinoffToggle = .InactiveToggle;
+ .WinoffTogglePress = .InactiveTogglePress;
+ .WinoffToggleDisable = .InactiveToggleDisable;
+ .WinoffToggleRollover = .InactiveToggleRollover;
+ }
+
+ .Image_Default = GFC_Control_Color_Image_Default;
+ .Image_Disable = GFC_Control_Color_Image_Disable;
+ }
+
+ with .Combine
+ {
+ .Inner_Dest = GFC_Control_Combine_Surface;
+ .Inner_Factor = GColorCombine(Factor, Source);
+
+ .Highlight_Dest = GColorCombine(BlendSource, Disable);
+ .Highlight_Factor = GColorCombine(Factor, Source);
+
+ .Image_Default_Dest = GFC_Control_Combine_Image_Default_Dest;
+ .Image_Default_Factor = GFC_Control_Combine_Image_Default_Factor;
+ .Image_Disable_Dest = GFC_Control_Combine_Image_Disable_Dest;
+ .Image_Disable_Factor = GFC_Control_Combine_Image_Disable_Factor;
+
+ .Text_Default_Dest = GFC_Control_Combine_Text_Default_Dest;
+ .Text_Default_Factor = GFC_Control_Combine_Text_Default_Factor;
+ .Text_Disable_Dest = GFC_Control_Combine_Text_Disable_Dest;
+ .Text_Disable_Factor = GFC_Control_Combine_Text_Disable_Factor;
+
+ .TextShadow_Default_Dest =
GFC_Control_Combine_TextShadow_Default_Dest;
+ .TextShadow_Default_Factor =
GFC_Control_Combine_TextShadow_Default_Factor;
+ .TextShadow_Disable_Dest =
GFC_Control_Combine_TextShadow_Disable_Dest;
+ .TextShadow_Disable_Factor =
GFC_Control_Combine_TextShadow_Disable_Factor;
+ }
+
+ with .Cursor
+ {
+ .Press = GFC_Control_Cursor_Default;
+ .Tracking = GFC_Control_Cursor_Default;
+ .Toggle = GFC_Control_Cursor_Default;
+ .TogglePress = .Toggle;
+ .ToggleTracking = .Toggle;
+ .Disable = GFC_Control_Cursor_Arrow;
+ }
+
+ with .Binding
+ {
+ .ButtonPress =
GInputBinding(GPropertyId(GFC_Input_Mouse_Message_OnDown), LeftButton,
+ GPropertyId(GFC_Input_Mouse_Message_OnDblClick),
LeftButton,
+ GPropertyId(GFC_Input_Keyboard_Message_OnKeyDown), Space);
+
+ .ButtonCancel =
GInputBinding(GPropertyId(GFC_Input_Keyboard_Message_OnKeyDown), Escape);
+
+ .ButtonExecute =
GInputBinding(GPropertyId(GFC_Input_Keyboard_Message_OnKeyDown), Return);
+
+ .ButtonRelease =
GInputBinding(GPropertyId(GFC_Input_Mouse_Message_OnUp), LeftButton,
+ GPropertyId(GFC_Input_Keyboard_Message_OnKeyUp), Space);
+ }
+
+ .Font_Text = SF_CtrlTheme_Civ4_Control_Font_Size3_Normal;
+
+
+ // ******* Initialize all the Bitmap theme Button properties to avoid
inheritance problems
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ // Button stretchy skins
+ .Default = 0;
+ .Press = 0;
+ .Disable = 0;
+ .Rollover = 0;
+ .Focus = 0;
+ .FocusPress = 0;
+ .FocusDisable = 0;
+ .FocusRollover = 0;
+ .Toggle = 0;
+ .TogglePress = 0;
+ .ToggleDisable = 0;
+ .ToggleRollover = 0;
+ .ToggleFocus = 0;
+ .ToggleFocusPress = 0;
+ .ToggleFocusDisable = 0;
+ .ToggleFocusRollover = 0;
+ .Inactive = 0;
+ .InactivePress = 0;
+ .InactiveDisable = 0;
+ .InactiveRollover = 0;
+ .InactiveToggle = 0;
+ .InactiveTogglePress = 0;
+ .InactiveToggleDisable = 0;
+ .InactiveToggleRollover = 0;
+ .Winoff = 0;
+ .WinoffPress = 0;
+ .WinoffDisable = 0;
+ .WinoffRollover = 0;
+ .WinoffToggle = 0;
+ .WinoffTogglePress = 0;
+ .WinoffToggleDisable = 0;
+ .WinoffToggleRollover = 0;
+
+ // Button icon (check or radio) skins
+ .Image_Default = 0;
+ .Image_Press = 0;
+ .Image_Disable = 0;
+ .Image_Rollover = 0;
+ .Image_Focus = 0;
+ .Image_FocusPress = 0;
+ .Image_FocusDisable = 0;
+ .Image_FocusRollover = 0;
+ .Image_Toggle = 0;
+ .Image_TogglePress = 0;
+ .Image_ToggleDisable = 0;
+ .Image_ToggleRollover = 0;
+ .Image_ToggleFocus = 0;
+ .Image_ToggleFocusPress = 0;
+ .Image_ToggleFocusDisable = 0;
+ .Image_ToggleFocusRollover = 0;
+ .Image_Inactive = 0;
+ .Image_InactivePress = 0;
+ .Image_InactiveDisable = 0;
+ .Image_InactiveRollover = 0;
+ .Image_InactiveToggle = 0;
+ .Image_InactiveTogglePress = 0;
+ .Image_InactiveToggleDisable = 0;
+ .Image_InactiveToggleRollover = 0;
+ .Image_Winoff = 0;
+ .Image_WinoffPress = 0;
+ .Image_WinoffDisable = 0;
+ .Image_WinoffRollover = 0;
+ .Image_WinoffToggle = 0;
+ .Image_WinoffTogglePress = 0;
+ .Image_WinoffToggleDisable = 0;
+ .Image_WinoffToggleRollover = 0;
+
+ // Button focus skins
+ .Focuser_Press = 0;
+ .Focuser_Rollover = 0;
+ .Focuser_Toggle = 0;
+ .Focuser_TogglePress = 0;
+ .Focuser_ToggleRollover = 0;
+ .Focuser_Inactive = 0;
+ .Focuser_InactivePress = 0;
+ .Focuser_InactiveRollover = 0;
+ .Focuser_InactiveToggle = 0;
+ .Focuser_InactiveTogglePress = 0;
+ .Focuser_InactiveToggleRollover = 0;
+ .Focuser_Winoff = 0;
+ .Focuser_WinoffPress = 0;
+ .Focuser_WinoffRollover = 0;
+ .Focuser_WinoffToggle = 0;
+ .Focuser_WinoffTogglePress = 0;
+ .Focuser_WinoffToggleRollover = 0;
+ .Focuser_Default = 0;
+ }
+
+ map GFC_Control = GFC_Control_DefaultControl_Style;
+ } // end GFC_Control_DefaultButton_Style
+
+
+
+ // *** Normal button style
+ // This style is used for the default stone style of buttons.
+ // This uses the default text, which is mapped to a custom alt text style
defined in common.
+
+ GFC_Control_StandardButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+ GFC_Control_Flag_Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_ACTIVE,
GFC_CF_DISABLED, GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER);
+
+ .Size_BorderMargin = GRectMargin(10,6,10,3);
+
+ // Image skins
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE,
GFC_BITMAPSKIN_SIDES_NOTVISIBLE);
+ Image = GBitmap("Civ4/bg.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,3,6,3);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 0);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 1);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ }
+ .Rollover
+ {
+ layer { Inherit = .Default; }
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(Add,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 2);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ }
+ .Press //NOTE: THIS IS NOT VISIBLE DURRING TESTING IF BUTTON HAS A
FOCUS AND IT IS NOT MAPPED TO PRESS STATE.
+ {
+ layer { Inherit = .Default; }
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 3);
+ Margin = GRectMargin(7,8,7,8);
+ }
+
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 4);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ }
+ .Focus
+ {
+ layer { Inherit = .Default; }
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(0,1,0,1);
+ }
+ }
+ .FocusPress
+ {
+ layer { Inherit = .Press; }
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(0,1,0,1);
+ }
+ }
+ .FocusRollover
+ {
+ layer { Inherit = .Rollover; }
+ layer {}
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(0,1,0,1);
+ }
+ }
+ .FocusDisable
+ {
+ layer { Inherit = .Disable; }
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(0,1,0,1);
+ }
+ }
+ .Toggle = .Rollover;
+ .ToggleRollover = .Press;
+ .TogglePress = .Rollover;
+ .ToggleDisable = .Disable;
+ .ToggleFocus = .FocusRollover;
+ .ToggleFocusRollover = .FocusPress;
+ .ToggleFocusPress = .FocusRollover;
+ .ToggleFocusDisable = .FocusDisable;
+
+ .Inactive = .Default;
+ .InactiveRollover = .Rollover;
+ .InactivePress = .Press;
+ .InactiveDisable = .Disable;
+ .InactiveToggle = .Toggle;
+ .InactiveToggleRollover = .ToggleRollover;
+ .InactiveTogglePress = .TogglePress;
+ .InactiveToggleDisable = .ToggleDisable;
+
+ .Winoff = .Default;
+ .WinoffRollover = .Rollover;
+ .WinoffPress = .Press;
+ .WinoffDisable = .Disable;
+ .WinoffToggle = .Toggle;
+ .WinoffToggleRollover = .ToggleRollover;
+ .WinoffTogglePress = .TogglePress;
+ .WinoffToggleDisable = .ToggleDisable;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+ }
+
+
+ GFC_Control_SquareButton_Style
+ {
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_StandardButton_Style;
+ map GFC_Control = GFC_Control_StandardButton_Style;
+ }
+
+
+ GFC_Control_EtchedButton_Style
+ {
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_SquareButton_Style;
+ map GFC_Control = GFC_Control_SquareButton_Style;
+ }
+
+
+ GFC_Control_FlatButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ with .Color_Text
+ {
+ .Default = GFC_Control_Color_Text_Default;
+ .Press = .Default;
+ .Disable = GFC_Control_Color_Text_Disable;
+ .Rollover = .Default;
+ .Focus = .Press;
+ .FocusRollover = .Press;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ with .Color_TextShadow
+ {
+ .Default = GFC_Control_Color_TextShadow_Default;
+ .Press = .Default;
+ .Disable = GFC_Control_Color_TextShadow_Disable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ // Image skins
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default = SF_CtrlTheme_Civ4_Control_Skin_Blank;
+ .Press = .Default;
+ .Rollover = .Default;
+ .Disable = .Default;
+ .Focus
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(0,1,0,1);
+ }
+ }
+ .FocusPress = .Focus;
+ .FocusRollover = .Focus;
+ .FocusDisable = .Focus;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_StandardButton_Style;
+ map GFC_Control = GFC_Control_StandardButton_Style;
+ }
+
+
+ GFC_Control_LabelButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlLabel;
+
+ .Size_BorderMargin = GRectMargin(2,2,2,2);
+
+ with .Flag
+ {
+ .DownOffset = GFlags(GButtonCtrl,
GFC_CF_BUTTON_DOWNOFFSET_CONTENT);
+ .Text_HAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_RIGHT);
+ .Text_VAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_VCENTER);
+ }
+
+ with .Color_Text
+ {
+ .Default = GFC_Control_Color_Text_Default;
+ .Press = SF_CtrlTheme_Civ4_Control_Color_RollText;
+ .Disable = GFC_Control_Color_Text_Disable;
+ .Rollover = SF_CtrlTheme_Civ4_Control_Color_SelectText;
+ .Focus = .Rollover;
+ .FocusRollover = .Rollover;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ with .Color_TextShadow
+ {
+ .Default = GFC_Control_Color_TextShadow_Default;
+ .Press = .Default;
+ .Disable = GFC_Control_Color_TextShadow_Disable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_FlatButton_Style;
+ map GFC_Control = GFC_Control_FlatButton_Style;
+ }
+
+
+ GFC_Control_ImageButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlImage;
+
+ .Size_BorderMargin = GRectMargin(2,2,2,2);
+
+
+ with .Flag
+ {
+ .DownOffset = GFlags(GButtonCtrl,
GFC_CF_BUTTON_DOWNOFFSET_CONTENT);
+ .Text_HAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_RIGHT);
+ .Text_VAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_TEXT_VCENTER);
+ }
+
+ with .Color_Text
+ {
+ .Default = GFC_Control_Color_Text_Default;
+ .Press = SF_CtrlTheme_Civ4_Control_Color_RollText;
+ .Disable = GFC_Control_Color_Text_Disable;
+ .Rollover = SF_CtrlTheme_Civ4_Control_Color_SelectText;
+ .Focus = .Rollover;
+ .FocusRollover = .Rollover;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ with .Color_TextShadow
+ {
+ .Default = GFC_Control_Color_TextShadow_Default;
+ .Press = .Default;
+ .Disable = GFC_Control_Color_TextShadow_Disable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_StandardButton_Style;
+ map GFC_Control = GFC_Control_StandardButton_Style;
+ }
+
+ GFC_Control_LinkButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlLink;
+
+ .Renderer_Text =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_TextLink;
+ .Flag_DownOffset = 0; //GFlags(GButtonCtrl,
GFC_CF_BUTTON_DOWNOFFSET_CONTENT);
+
+ .Size_BorderMargin = GRectMargin(2,2,2,2);
+
+ GFC_Control_Cursor_Default = GFC_Control_Cursor_Link;
+
+ with .Cursor
+ {
+ .Press = GFC_Control_Cursor_Link;
+ .Tracking = GFC_Control_Cursor_Arrow;
+ }
+
+ with .Color_Text
+ {
+ .Default = SF_CtrlTheme_Civ4_Control_Color_RollText;
+ .Press = SF_CtrlTheme_Civ4_Control_Color_SelectText;
+ .Disable = SF_CtrlTheme_Civ4_Control_Color_DisableText;
+ .Rollover = SF_CtrlTheme_Civ4_Control_Color_SelectText;
+ .Focus = .Rollover;
+ .FocusRollover = .Rollover;
+ .Toggle = .Press;
+ .TogglePress = .Rollover;
+ .ToggleDisable = .Toggle;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Toggle;
+ .ToggleFocusRollover = .ToggleRollover;
+
+ .Inactive = .Default;
+ .InactivePress = .Press;
+ .InactiveDisable = .Disable;
+ .InactiveRollover = .Rollover;
+ .InactiveToggle = .Toggle;
+ .InactiveTogglePress = .TogglePress;
+ .InactiveToggleDisable = .ToggleDisable;
+ .InactiveToggleRollover = .ToggleRollover;
+
+ .Winoff = .Inactive;
+ .WinoffPress = .InactivePress;
+ .WinoffDisable = .InactiveDisable;
+ .WinoffRollover = .InactiveRollover;
+ .WinoffToggle = .InactiveToggle;
+ .WinoffTogglePress = .InactiveTogglePress;
+ .WinoffToggleDisable = .InactiveToggleDisable;
+ .WinoffToggleRollover = .InactiveToggleRollover;
+ }
+
+ with .Color_TextShadow
+ {
+ .Default = GFC_Control_Color_TextShadow_Default;
+ .Press = .Default;
+ .Disable = GFC_Control_Color_TextShadow_Disable;
+ .Rollover = .Default;
+ .Focus = .Default;
+ .FocusRollover = .Default;
+ .Toggle = .Default;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Rollover;
+ .ToggleFocus = .Focus;
+ .ToggleFocusRollover = .FocusRollover;
+ }
+
+ // Image skins
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/Blank.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ }
+ .Press = .Default;
+ .Rollover = .Default;
+ .Disable = .Default;
+ .Focus = .Default;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_StandardButton_Style;
+ map GFC_Control = GFC_Control_StandardButton_Style;
+ }
+
+
+ GFC_Control_ToolButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ with .Color_Text
+ {
+ .Default = GFC_Control_Color_Text_Default;
+ .Press = SF_CtrlTheme_Civ4_Control_Color_AltText;
+ .Disable = SF_CtrlTheme_Civ4_Control_Color_AltTextDisable;
+ .Rollover = .Press;
+ .Focus = .Press;
+ .FocusRollover = .Focus;
+ .Toggle = SF_CtrlTheme_Civ4_Control_Color_AltText;
+ .TogglePress = .Toggle;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Toggle;
+ .ToggleFocus = .Toggle;
+ .ToggleFocusRollover = .ToggleFocus;
+ }
+
+ with .Color_TextShadow
+ {
+ .Default = GFC_Control_Color_TextShadow_Default;
+ .Press = SF_CtrlTheme_Civ4_Control_Color_AltTextShadow;
+ .Disable = SF_CtrlTheme_Civ4_Control_Color_AltTextShadowDisable;
+ .Rollover = .Press;
+ .Focus = .Press;
+ .FocusRollover = .Focus;
+ .Toggle = .Press;
+ .TogglePress = .Toggle;
+ .ToggleDisable = .Disable;
+ .ToggleRollover = .Toggle;
+ .ToggleFocus = .Toggle;
+ .ToggleFocusRollover = .ToggleFocus;
+ }
+
+ // Image skins
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {}
+ }
+ .Rollover
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE,
GFC_BITMAPSKIN_SIDES_NOTVISIBLE);
+ Image = GBitmap("Civ4/bg.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,3,6,3);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 0);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 1);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ }
+ .Press
+ {
+ layer { Inherit = .Rollover; }
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/button.tga", HVGrid, 1, 5, 0, 3);
+ Margin = GRectMargin(7,8,7,8);
+ }
+ }
+ .Disable
+ {
+ layer {}
+ }
+ .Toggle = .Press;
+ .ToggleRollover = .Rollover;
+ .TogglePress = .Press;
+ .ToggleDisable = .Disable;
+ .Focus = .Press;
+ .FocusRollover = .Rollover;
+ .FocusPress = .Press;
+ .FocusDisable = .Disable;
+ .ToggleFocus = .Toggle;
+ .ToggleFocusRollover = .ToggleRollover;
+ .ToggleFocusPress = .TogglePress;
+ .ToggleFocusDisable = .ToggleDisable;
+
+ .Inactive = .Default;
+ .InactiveRollover = .Rollover;
+ .InactivePress = .Press;
+ .InactiveDisable = .Disable;
+ .InactiveToggle = .Toggle;
+ .InactiveToggleRollover = .ToggleRollover;
+ .InactiveTogglePress = .TogglePress;
+ .InactiveToggleDisable = .ToggleDisable;
+
+ .Winoff = .Default;
+ .WinoffRollover = .Rollover;
+ .WinoffPress = .Press;
+ .WinoffDisable = .Disable;
+ .WinoffToggle = .Toggle;
+ .WinoffToggleRollover = .ToggleRollover;
+ .WinoffTogglePress = .TogglePress;
+ .WinoffToggleDisable = .ToggleDisable;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_StandardButton_Style;
+ map GFC_Control = GFC_Control_StandardButton_Style;
+ }
+
+
+
+ // ** Normal Checkbox style
+
+ GFC_Control_StandardCheckBox_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlToggle;
+
+ // Flags
+ with .Flag
+ {
+ .HAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_LEFT);
+ .VAlign = GFlags(GButtonCtrl, GFC_CF_BUTTON_VCENTER);
+ .Focus = 0; //GFlags(GButtonCtrl, GFC_CF_BUTTON_FOCUS_TEXT);
+ .DownOffset = GFlags(GButtonCtrl,
GFC_CF_BUTTON_DOWNOFFSET_CONTENT);
+ }
+
+ with .Size
+ {
+ // Border style side widths
+ .BorderMargin = GRectMargin(4,0,4,0);
+ .ExtraMargin = GRectMargin(0,0,0,0);
+ .FocusMargin_Text = GRectMargin(4,4,4,4);
+ .FocusMargin_Image = GRectMargin(2,2,2,2);
+ .FocusMargin_Content = GRectMargin(0,0,4,2);
+ .FocusMargin_Control = GRectMargin(4,4,4,4);
+ .TextOffset = GPoint(0,-1);
+ .DownOffset_Content = GPoint(0,0);
+ .DownOffset_Text = GPoint(0,0);
+ .DownOffset_Image = GPoint(0,0);
+ .ItemSpace = GFC_Control_Size_ItemSpace;
+ .Default = GSize(64,31);
+ .Image = GSize(24,24);
+ }
+
+ with .Color
+ {
+ .Text_Default = GFC_Control_Color_Text_Default;
+ .TextShadow_Default = GFC_Control_Color_TextShadow_Default;
+ .Text_Disable = GFC_Control_Color_Text_Disable;
+ .TextShadow_Disable = GFC_Control_Color_TextShadow_Disable;
+ }
+
+ // Toggle State images
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin_Image
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 0);
+ }
+ }
+ .Press
+ {
+ layer { Inherit = .Default; }
+ layer {
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 1);
+ }
+ }
+ .Rollover
+ {
+ layer { Inherit = .Default; }
+ layer {
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 2);
+ }
+ }
+ .Disable
+ {
+ layer { Inherit = .Default; }
+ layer {
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 3);
+ }
+ }
+ .Focus
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 6);
+ }
+ }
+ .FocusPress
+ {
+ layer { Inherit = .Focus; }
+ layer {
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 1);
+ }
+ layer {}
+ }
+ .FocusRollover
+ {
+ layer { Inherit = .Focus; }
+ layer {
+ Center = GBitmap("Civ4/Check.tga", HVGrid, 1, 7, 0, 2);
+ }
+ layer {}
+ }
+ .FocusDisable
+ {
+ layer { Inherit = .Disable; }
+ layer {}
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/317Difference/Resource/Themes/Civ4Theme_Common.thm Sun Sep 20
08:55:19 2009
@@ -0,0 +1,536 @@
+/**********************************************************************
+
+Filename : Civ4Theme_Common.thm
+Content : Civ4 - GCtrl common control theme
+Created : May 1, 2005
+Authors : Sven Dixon
+
+Copyright : (c) 2005 Scaleform Corp. All Rights Reserved.
+
+Licensees may use this file in accordance with the valid Scaleform
+GFC Commercial License Agreement provided with the software.
+
+This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
+THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
+
+For information regarding GFC Commercial License Agreements go to:
+ online - http://www.scaleform.com/licensing.html or
+ email - sa...@scaleform.com
+
+**********************************************************************/
+
+// *** Control Base properties
+
+with GFC_Control
+{
+
+ // Blank control skin
+ skin SF_CtrlTheme_Civ4_Control_Skin_Blank
+ {
+ layer
+ {
+ }
+ }
+
+
+ GFC_Control_DefaultControl_Style
+ {
+ .Renderer_Control = 0;
+ .Update_ChildLayout = 0;
+
+ with .Flag
+ {
+ // Base control flags
+ .Transparent = 0; //GFlags(GCtrl, GFC_CF_TRANSPARENT);
+ .SolidInner = 0; //GFlags(GCtrl, GFC_CF_SOLIDINNER);
+ .SolidBackground = 0; //GFlags(GCtrl, GFC_CF_SOLIDBACKGROUND);
+ .RegionClip = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP);
+ .RegionClipParent = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP_PARENT);
+ .NoExternalWindow = 0; //GFlags(GCtrl, GFC_CF_NOEXTERNALWINDOW);
+ .HitTest = 0; //GFlags(GCtrl, GFC_CF_HITTEST);
+ .TopLayer = 0; //GFlags(GCtrl, GFC_CF_TOPLAYER);
+ .TopLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_TOPLAYERBITMAP);
+ .BottomLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_BOTTOMLAYERBITMAP);
+
+ // Control flag change masks
+ .Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_ACTIVE,
GFC_CF_DISABLED, GFC_CF_TRANSPARENT,
+ GFC_CF_TOPLAYER, GFC_CF_FORCE_ROLLOVER);
+
+ /*
+ .BlitFx_TopLayer = 0;
+ .BlitFx_BottomLayer = 0;
+ .BlitFx_HitTestLayer = 0;
+ */
+ }
+
+ // Size
+ with .Size
+ {
+ .ItemSpace = 2;
+ .ListItem = 24;
+
+ // Icons
+ .IconLarge = 48;
+ .IconMedium = 32;
+ .IconSmall = 16;
+
+ // Step increments
+ .Step = 10;
+ }
+
+ with .Layout
+ {
+ .Size_VSpacing = 8;
+ .Size_HSpacing = 8;
+ .Size_OuterMargin = GRectMargin(8,8,8,8);
+
+ with SF_CtrlTheme_Civ4_Control
+ {
+ GRectMargin .Layout_Thick_OuterMargin = GRectMargin(12,12,12,12);
+ GRectMargin .Layout_MainMenu_OuterMargin = GRectMargin(20,8,20,20);
+ }
+ }
+
+ with .BoxLayout
+ {
+ .Size_VSpacing = GFC_Control_Layout_Size_VSpacing;
+ .Size_HSpacing = GFC_Control_Layout_Size_HSpacing;
+ .Size_OuterMargin = GFC_Control_Layout_Size_OuterMargin;
+ }
+
+ with .Delay
+ {
+ // ToolTip delays, in milliseconds
+ .ToolTipShow = 500;
+ .ToolTipHide = 30000;
+ }
+
+ with .Color //All default color types are set for dynamic color change.
+ {
+ with GFC_Control_Color_3DLook
+ {
+ .Lightest = GColor(255,255,255);
+ .VeryLight = GColor(250,246,240);
+ .Light = GColor(243,240,233);
+ .Normal = GColor(236,233,216);
+ .Dark = GColor(166,163,156);
+ .VeryDark = GColor( 86, 83, 76);
+ .Darkest = GColor( 0, 0, 0);
+ }
+
+ .Surface = GColor(115, 96, 78,255);
+ .Background = .Surface;
+ .DialogInner = GColor(154,129,106);
+ .Info = GColor(242,224,162);
+ .ToolTipInner = GColor( 15, 5, 0);
+ .ToolTipBorder = GColor( 0, 0, 0);
+
+ .Border_Default = GColor( 0, 0, 0);
+ .Border_Select = GColor( 166,166,166);
+ .Border_Inactive = GColor(190,173,150);
+ .Border_InactiveSelect = GColor(190,173,150);
+ .Border_Disable = GColor( 142,142,142);
+ .Border_DisableSelect = GColor( 142,142,142);
+
+ .Inner_Default = GColor(226,213,191);
+ .Inner_Select = GColor(187,187,187,96);
+ .Inner_Inactive = GColor(190,173,150,96);
+ .Inner_InactiveSelect = GColor(190,173,150,96);
+ .Inner_Disable = GColor(218,210,198,96);
+ .Inner_DisableSelect = GColor(142,142,142,96);
+
+ .Image_Default = GColor(White);
+ .Image_Select = GColor(White);
+ .Image_Inactive = GColor(White);
+ .Image_InactiveSelect = GColor(White);
+ .Image_Disable = GColor( 0, 0, 0, 96);
+ .Image_DisableSelect = GColor( 0, 0, 0, 96);
+
+ .Text_Default = GColor(249,233,199,100);
+ .Text_Select = GColor(249,233,199,100);
+ .Text_Inactive = GColor(249,233,199,100);
+ .Text_InactiveSelect = GColor(249,233,199,100);
+ .Text_Disable = GColor(249,233,199,100);
+ .Text_DisableSelect = GColor(249,233,199,100);
+
+ .TextShadow_Default = GColor( 0, 0, 0,255);
+ .TextShadow_Select = GColor( 0, 0, 0,255);
+ .TextShadow_Inactive = GColor( 0, 0, 0,255);
+ .TextShadow_InactiveSelect = GColor( 0, 0, 0,255);
+ .TextShadow_Disable = GColor( 0, 0, 0,128);
+ .TextShadow_DisableSelect = GColor( 0, 0, 0,128);
+
+ .Link_Default = GColor(177,185,194);
+ .Link_Select = GColor(177,185,194);
+ .Link_Rollover = GColor(255,211,126);
+ .Link_Inactive = GColor(177,185,194);
+ .Link_InactiveSelect = GColor(177,185,194);
+ .Link_InactiveRollover = GColor(255,211,126);
+ .Link_Disable = GColor(255,255,255,128);
+ .Link_DisableSelect = GColor(255,255,255,128);
+ .Link_DisableRollover = GColor(255,255,255,128);
+
+ .BottomLayer_Factor = GColor(Black);
+ .BottomLayer_ColorKey = GColor(Black);
+ .BottomLayer_ColorKeyMask = GColor(White);
+ .TopLayer_Factor = GColor(Black);
+ .TopLayer_ColorKey = GColor(Black);
+ .TopLayer_ColorKeyMask = GColor(White);
+ .HitTestLayer_Factor = GColor(Black);
+ .HitTestLayer_ColorKey = GColor(Black);
+ .HitTestLayer_ColorKeyMask = GColor(White);
+
+ // Theme - specific colors
+ // By default, custom color types are not set to dynamic color
+ // change unless 'GFC_Control_Color' is placed after it (see .BG
nad .MenuBG).
+ with SF_CtrlTheme_Civ4_Control_Color
+ {
+ // Text used for stone components.
+ GColor .AltText = GColor( 64, 40, 38,255);
+ GColor .AltTextShadow = GColor(255,227,200,128);
+ GColor .AltTextDisable = GColor( 43, 40, 17,255);
+ GColor .AltTextShadowDisable = GColor(182,171,151,128);
+ // Another text used for stone components (lighter brown).
+ GColor .StoneText = GColor( 79, 52, 41,255);
+ GColor .StoneTextShadow = GColor(255,235,216,255);
+ GColor .StoneTextDisable = GColor( 79, 52, 41,128);
+ GColor .StoneTextShadowDisable = GColor(255,235,216,128);
+ // Text used for table selection
+ GColor .SelectText = GColor(218,195,138,255);
+ GColor .SelectTextShadow = GColor( 0, 0, 0,255);
+ GColor .SelectTextDisable = GColor(218,195,138,128);
+ GColor .SelectTextShadowDisable = GColor( 0, 0, 0,128);
+ // Used for backgrounds of Window and Menu/ComboBox popup.
+ GColor .BG = GColor( 93, 93, 93,250) : GFC_Control_Color; //Set
for dynamic color change
+ GColor .MenuBG = GColor( 86, 86, 86,255) : GFC_Control_Color;
//Set for dynamic color change
+ GColor .MergeBG = GColor( 86, 86,86,255) : GFC_Control_Color;
//Set for dynamic color change
+ GColor .Winoff = GColor( 43, 43, 43, 48) : GFC_Control_Color;
//Set for dynamic color change
+ // Table grid color
+ GColor .Grid = GColor(105, 97, 86,128);
+ // Table selection color
+ GColor .Select = GColor(178,144,110, 89);
+ GColor .Offselect = GColor(199,178,153, 89);
+ GColor .Multiselect = GColor(178,144,110, 64);
+ GColor .DisableSelect = GColor(199,178,153, 89);
+ GColor .DisableOffselect = GColor(199,178,153, 89);
+ GColor .DisableMultiselect = GColor(199,178,153, 64);
+ GColor .Rollover = GColor(178,144,110, 64);
+ // Table alt row / column
+ GColor .AltCell = GColor(199,178,153, 32);
+ // Progress Fill
+ GColor .Fill = GColor(199,178,153,255);
+ // Leader border/button color
+ GColor .Leader = GColor(199,178,153,255);
+ GColor .LeaderRoll = GColor(255,255,255,255);
+ GColor .LeaderDisable = GColor(128,128,128,255);
+ // Text Rollover Disable
+ GColor .RollText = GColor(249,227,190,255);
+ GColor .DisableText = GColor(128,128,128,255);
+ // Focus & Check Radio
+ GColor .Focus = GColor(184,184,184,255);
+ GColor .CheckRadio = GColor(201,201,201,255);
+ // Main Menu Header Text
+ GColor .HeaderText = GColor(214,238,255,255);
+ // Slider Fill
+ GColor .SliderFill = GColor(128,220,255,255);
+ GColor .DisableSliderFill = GColor(172,172,172,255);
+ //Modal
+ GColor .Modal = GColor( 0, 0, 0, 89);
+ // Tab Text
+ GColor .TabText = GColor(240,225,216,255);
+ // Icon HudHelp panel
+ GColor .IconBG = GColor(106,106,106,106) : GFC_Control_Color;
//Set for dynamic color change
+ GColor .HelpBG = GColor(106,106,106,106) : GFC_Control_Color;
//Set for dynamic color change
+ // HUD icon border color
+ GColor .HUDBorder = GColor( 72, 72,72,255) : GFC_Control_Color;
//Set for dynamic color change
+
+ GColor .EndTurnDot_Green = GColor(73,87,57,255);
+ GColor .EndTurnDot_Red = GColor(181, 60, 60,255);
+ GColor .EndTurnDot_DarkRed = GColor(100, 30, 30,255);
+ GColor .EndTurnDot_Disable = GColor(128,128,128,255);
+
+ }
+ }
+
+
+ /*
+ Color combine types
+
+ Disable =0,
+ Source =1, // S
+ Dest =2, // D
+ Factor =2,
+ // Binary operations
+ XOr =3, // D ^ S
+ Or =4, // D | S
+ And =5, // D & S
+ NotAnd =6, // ~D & S
+ AndNot =7, // D & ~S
+ // Color blending operations
+ Modulate =8, // D * S
+ Modulate2X =9, // D * S * 2
+ Modulate4X =10, // D * S * 4
+ Add =11, // D + S
+ AddSmooth =12, // D + S * (1-D)
+ AddSigned =13, // D + S - 0.5
+ AddSigned2X =14, // (D + S - 0.5) * 2
+ AddSigned4X =15, // (D + S - 0.5) * 4
+ Subtract =16, // S - D
+ Subtract2X =17, // (S - D) * 2
+ Subtract4X =18, // (S - D) * 4
+ RevSubtract =19, // D - S
+ RevSubtract2X =20, // (D - S) * 2
+ RevSubtract4X =21, // (D - S) * 4
+ BlendSource =22, // D * (1-Sa) + S * Sa
+ BlendDest =23, // D * (1-Da) + S * Da
+ */
+
+ // Color combines
+ with .Combine
+ {
+ .Surface = GColorCombine(Source, Disable);
+ .DialogInner = .Surface;
+ .Info = .Surface;
+ .ToolTip = .Surface;
+
+ .Border_Default = .Surface;
+ .Border_Select = GColorCombine(BlendSource, Disable);
+ .Border_Inactive = .Border_Select;
+ .Border_InactiveSelect = .Border_Select;
+ .Border_Disable = .Border_Select;
+ .Border_DisableSelect = .Border_Select;
+
+ .Inner_Default = .Surface;
+ .Inner_Select = GColorCombine(BlendSource, Disable);
+ .Inner_Inactive = .Inner_Select;
+ .Inner_InactiveSelect = .Inner_Select;
+ .Inner_Disable = GColorCombine(Source, Disable);
+ .Inner_DisableSelect = .Inner_Select;
+
+ .Image_Default_Dest = GColorCombine(BlendSource, Disable);
+ .Image_Default_Factor = GColorCombine(Source, Source);
+ .Image_Select_Dest = .Image_Default_Dest;
+ .Image_Select_Factor = .Image_Default_Factor;
+ .Image_Inactive_Dest = .Image_Default_Dest;
+ .Image_Inactive_Factor = .Image_Default_Factor;
+ .Image_InactiveSelect_Dest = .Image_Default_Dest;
+ .Image_InactiveSelect_Factor = .Image_Default_Factor;
+ .Image_Disable_Dest = GColorCombine(BlendSource, Disable);
+ .Image_Disable_Factor = GColorCombine(Source, Modulate);
+ .Image_DisableSelect_Dest = GColorCombine(BlendSource, Disable);
+ .Image_DisableSelect_Factor = GColorCombine(Source, Modulate);
+
+ .Text_Default_Dest = GColorCombine(BlendSource, Disable);
+ .Text_Default_Factor = GColorCombine(Factor, Source);
+ .Text_Select_Dest = GColorCombine(BlendSource, Disable);
+ .Text_Select_Factor = GColorCombine(Factor, Source);
+ .Text_Inactive_Dest = GColorCombine(BlendSource, Disable);
+ .Text_Inactive_Factor = GColorCombine(Factor, Source);
+ .Text_InactiveSelect_Dest = GColorCombine(BlendSource, Disable);
+ .Text_InactiveSelect_Factor = GColorCombine(Factor, Source);
+ .Text_Disable_Dest = GColorCombine(BlendSource, Disable);
+ .Text_Disable_Factor = GColorCombine(Factor, Modulate);
+ .Text_DisableSelect_Dest = GColorCombine(BlendSource, Disable);
+ .Text_DisableSelect_Factor = GColorCombine(Factor, Modulate);
+
+ .TextShadow_Default_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_Default_Factor = GColorCombine(Factor, Modulate);
+ .TextShadow_Select_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_Select_Factor = GColorCombine(Factor, Modulate);
+ .TextShadow_Inactive_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_Inactive_Factor = GColorCombine(Factor, Modulate);
+ .TextShadow_InactiveSelect_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_InactiveSelect_Factor = GColorCombine(Factor, Modulate);
+ .TextShadow_Disable_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_Disable_Factor = GColorCombine(Factor, Modulate);
+ .TextShadow_DisableSelect_Dest = GColorCombine(BlendSource, Disable);
+ .TextShadow_DisableSelect_Factor = GColorCombine(Factor, Modulate);
+
+ .TopLayer_Dest = GColorCombine(BlendSource, Disable);
+ .TopLayer_Factor = GColorCombine(Source, Source);
+ .BottomLayer_Dest = GColorCombine(BlendSource, Disable);
+ .BottomLayer_Factor = GColorCombine(Source, Source);
+ .HitTestLayer_Dest = GColorCombine(Source, Disable);
+ .HitTestLayer_Factor = GColorCombine(Source, Source);
+ }
+
+ with .Font
+ {
+ // Anti-aliased font requires the Text combine
+ // to be BlendSource instead of Source, which means
+ // there must be an ALPHA channel in all fonts
+
+ // To save memory (both system and video) unused fonts are currently
commented out.
+ // Civ really only uses the following font sizes and styles:
+ // 1 - normal
+ // 2 - normal, 2 - bold, 2 - italic
+ // 3 - normal, 3 - bold
+ // 4 - normal, 4 - bold
+ // -Moose
+
+ with SF_CtrlTheme_Civ4_Control_Font
+ {
+// >>> CYBERFRONT // text: font
+ GFont .Size1_Normal = GFont("SimSun", "Regular", 13,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+
+ GFont .Size2_Normal = GFont("SimSun", "Regular", 14,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size2_Bold = GFont("SimSun", "Bold", 14,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+ GFont .Size2_Italic = GFont("SimSun", "Italic", 14,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+
+ GFont .Size3_Normal = GFont("SimSun", "Regular", 15,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size3_Bold = GFont("SimSun", "Bold", 15,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+
+ GFont .Size4_Normal = GFont("SimSun", "Regular", 22,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size4_Bold = GFont("SimSun", "Bold", 20,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+/*
+// GFont .Size0_Normal = GFont("Sylfaen", "Regular", 10,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+// GFont .Size0_Bold = GFont("Sylfaen", "Bold", 10,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+// GFont .Size0_Italic = GFont("Sylfaen", "Italic", 10,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+// GFont .Size0_BoldItalic = GFont("Sylfaen", "Bold Italic", 10,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0,
GRectMargin(1));
+
+ GFont .Size1_Normal = GFont("Sylfaen", "Regular", 12,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+// GFont .Size1_Bold = GFont("Sylfaen", "Bold", 12,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+// GFont .Size1_Italic = GFont("Sylfaen", "Italic", 12,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+// GFont .Size1_BoldItalic = GFont("Sylfaen", "Bold Italic", 12,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0,
GRectMargin(1));
+
+ GFont .Size2_Normal = GFont("Sylfaen", "Regular", 14,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size2_Bold = GFont("Sylfaen", "Bold", 14,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+ GFont .Size2_Italic = GFont("Sylfaen", "Italic", 14,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+// GFont .Size2_BoldItalic = GFont("Sylfaen", "Bold Italic", 14,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0,
GRectMargin(1));
+
+ GFont .Size3_Normal = GFont("Sylfaen", "Regular", 16,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size3_Bold = GFont("Sylfaen", "Bold", 16,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+// GFont .Size3_Italic = GFont("Sylfaen", "Italic", 16,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+// GFont .Size3_BoldItalic = GFont("Sylfaen", "Bold Italic", 16,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0,
GRectMargin(1));
+
+ GFont .Size4_Normal = GFont("Sylfaen", "Regular", 22,
GFlags(GFontFeature, GFC_FONT_ALPHA));
+ GFont .Size4_Bold = GFont("Sylfaen", "Bold", 22,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+// GFont .Size4_Italic = GFont("Sylfaen", "Italic", 22,
GFlags(GFontFeature, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0, GRectMargin(1));
+// GFont .Size4_BoldItalic = GFont("Sylfaen", "Bold Italic", 22,
GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ITALIC, GFC_FONT_ALPHA), 0,
GRectMargin(1));
+*/
+// <<< CYBERFRONT
+ }
+
+ .Normal = SF_CtrlTheme_Civ4_Control_Font_Size3_Normal;
+ .Bold = SF_CtrlTheme_Civ4_Control_Font_Size3_Bold;
+ .Italic = SF_CtrlTheme_Civ4_Control_Font_Size3_Italic;
+ .BoldItalic = SF_CtrlTheme_Civ4_Control_Font_Size3_BoldItalic;
+
+ .Header = SF_CtrlTheme_Civ4_Control_Font_Size4_Normal;
+ .HeaderBold = SF_CtrlTheme_Civ4_Control_Font_Size4_Bold;
+
+ .Footer = SF_CtrlTheme_Civ4_Control_Font_Size1_Normal;
+ .FooterBold = SF_CtrlTheme_Civ4_Control_Font_Size1_Bold;
+
+// .Fixed = GFont("Fonts/cour.ttf", "Courier New", "Regular",
14, GFlags(GFontFeature, GFC_FONT_ALPHA));
+// .FixedBold = GFont("Fonts/courbd.ttf", "Courier New", "Bold",
14, GFlags(GFontFeature, GFC_FONT_BOLD, GFC_FONT_ALPHA));
+
+ }
+
+ with .Cursor
+ {
+ .Default = .Arrow;
+
+ .Custom = GFC_Draw_Cursor_Custom;
+ .None = GFC_Draw_Cursor_None;
+ .Arrow = GFC_Draw_Cursor_Arrow;
+ .ReverseArrow = GFC_Draw_Cursor_ReverseArrow;
+ .Cross = GFC_Draw_Cursor_Cross;
+ .No = GFC_Draw_Cursor_No;
+ .Text = GFC_Draw_Cursor_Text;
+ .Wait = GFC_Draw_Cursor_Wait;
+ .Help = GFC_Draw_Cursor_Help;
+ .Link = GFC_Draw_Cursor_Link;
+
+ .DragNone = GFC_Draw_Cursor_DragNone;
+ .DragCopy = GFC_Draw_Cursor_DragCopy;
+ .DragMove = GFC_Draw_Cursor_DragMove;
+ .DragLink = GFC_Draw_Cursor_DragLink;
+
+ .Up = GFC_Draw_Cursor_Up;
+ .Down = GFC_Draw_Cursor_Down;
+ .Right = GFC_Draw_Cursor_Right;
+ .Left = GFC_Draw_Cursor_Left;
+
+ .VSplit = GFC_Draw_Cursor_VSplit;
+ .HSplit = GFC_Draw_Cursor_HSplit;
+
+ .Size_All = GFC_Draw_Cursor_Size_All;
+ .Size_Up = GFC_Draw_Cursor_Size_Up;
+ .Size_Down = GFC_Draw_Cursor_Size_Down;
+ .Size_Right = GFC_Draw_Cursor_Size_Right;
+ .Size_Left = GFC_Draw_Cursor_Size_Left;
+ .Size_UpDown = GFC_Draw_Cursor_Size_UpDown;
+ .Size_LeftRight = GFC_Draw_Cursor_Size_LeftRight;
+ .Size_UpLeft = GFC_Draw_Cursor_Size_UpLeft;
+ .Size_UpRight = GFC_Draw_Cursor_Size_UpRight;
+ .Size_DownLeft = GFC_Draw_Cursor_Size_DownLeft;
+ .Size_DownRight = GFC_Draw_Cursor_Size_DownRight;
+
+ .Move_Normal = GFC_Draw_Cursor_Arrow;
+ .Move_Vertical = GFC_Draw_Cursor_Arrow;
+ .Move_Horizontal = GFC_Draw_Cursor_Arrow;
+ }
+
+ with .Icon
+ {
+ .File_Unknown_Small = GBitmap("Icons/Civ4/file_16x16.tga");
+ .File_Unknown_Medium = GBitmap("Icons/Civ4/file_32x32.tga");
+ .File_Text_Small = GBitmap("Icons/System/file text_16x16.tga");
+ .File_Text_Medium = GBitmap("Icons/System/file text_32x32.tga");
+ .File_Image_Small = GBitmap("Icons/System/file paint_16x16.tga");
+ .File_Image_Medium = GBitmap("Icons/System/file paint_32x32.tga");
+
+ .Folder_Open_Small = GBitmap("Icons/System/folder open_16x16.tga");
+ .Folder_Open_Medium = GBitmap("Icons/System/folder open_32x32.tga");
+ .Folder_Close_Small = GBitmap("Icons/System/folder
close_16x16.tga");
+ .Folder_Close_Medium = GBitmap("Icons/System/folder
close_32x32.tga");
+ .Folder_FilledOpen_Small = GBitmap("Icons/System/folder
file_16x16.tga");
+ .Folder_FilledOpen_Medium = GBitmap("Icons/System/folder
file_32x32.tga");
+ .Folder_FilledClose_Small = .Folder_Close_Small;
+ .Folder_FilledClose_Medium = .Folder_Close_Medium;
+
+ .Drive_Fixed_Small = GBitmap("Icons/System/drive disk_16x16.tga");
+ .Drive_Fixed_Medium = GBitmap("Icons/System/drive disk_32x32.tga");
+ .Drive_Removable_Small = GBitmap("Icons/System/drive
remove_16x16.tga");
+ .Drive_Removable_Medium = GBitmap("Icons/System/drive
remove_32x32.tga");
+ .Drive_Optical_Small = GBitmap("Icons/System/drive cd_16x16.tga");
+ .Drive_Optical_Medium = GBitmap("Icons/System/drive cd_32x32.tga");
+ .Drive_Network_Small = GBitmap("Icons/System/networks_16x16.tga");
+ .Drive_Network_Medium = GBitmap("Icons/System/networks_32x32.tga");
+
+ .Computer_Small = GBitmap("Icons/System/display_16x16.tga");
+ .Computer_Medium = GBitmap("Icons/System/display_32x32.tga");
+
+ .New_Small = GBitmap("Icons/Application/new_16x16.tga");
+ .New_Medium = GBitmap("Icons/Application/new_32x32.tga");
+ .Open_Small = GBitmap("Icons/Application/open_16x16.tga");
+ .Open_Medium = GBitmap("Icons/Application/open_32x32.tga");
+ .Save_Small = GBitmap("Icons/Application/save_16x16.tga");
+ .Save_Medium = GBitmap("Icons/Application/save_32x32.tga");
+ .SaveAll_Small = GBitmap("Icons/Application/save all_16x16.tga");
+ .SaveAll_Medium = GBitmap("Icons/Application/save all_32x32.tga");
+
+ .Undo_Small = GBitmap("Icons/Application/undo_16x16.tga");
+ .Undo_Medium = GBitmap("Icons/Application/undo_32x32.tga");
+ .Redo_Small = GBitmap("Icons/Application/redo_16x16.tga");
+ .Redo_Medium = GBitmap("Icons/Application/redo_32x32.tga");
+
+ .Cut_Small = GBitmap("Icons/Application/cut_16x16.tga");
+ .Cut_Medium = GBitmap("Icons/Application/cut_32x32.tga");
+ .Copy_Small = GBitmap("Icons/Application/copy_16x16.tga");
+ .Copy_Medium = GBitmap("Icons/Application/copy_32x32.tga");
+ .Paste_Small = GBitmap("Icons/Application/paste_16x16.tga");
+ .Paste_Medium = GBitmap("Icons/Application/paste_32x32.tga");
+ .Delete_Small = GBitmap("Icons/Application/delete_16x16.tga");
+ .Delete_Medium = GBitmap("Icons/Application/delete_32x32.tga");
+
+ .Dialog_Information = GBitmap("Icons/Dialog/info.tga");
+ .Dialog_Question = GBitmap("Icons/Dialog/question.tga");
+ .Dialog_Warning = GBitmap("Icons/Dialog/warning.tga");
+ .Dialog_Error = GBitmap("Icons/Dialog/error.tga");
+ }
+
+ } // end GFC_Control_DefaultControl_Style
+
+}
=======================================
--- /dev/null
+++ /trunk/317Difference/Resource/Themes/Civ4Theme_Edit.thm Sun Sep 20
08:55:19 2009
@@ -0,0 +1,1229 @@
+/**********************************************************************
+
+Filename : Civ4Theme_Edit.thm
+Content : Civ4 - GEdit control theme
+Created : May 1, 2005
+Authors : Sven Dixon
+
+Copyright : (c) 2005 Scaleform Corp. All Rights Reserved.
+
+Licensees may use this file in accordance with the valid Scaleform
+GFC Commercial License Agreement provided with the software.
+
+This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
+THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
+
+For information regarding GFC Commercial License Agreements go to:
+ online - http://www.scaleform.com/licensing.html or
+ email - sa...@scaleform.com
+
+**********************************************************************/
+
+
+// *** Main Edit control namespace
+
+with GFC_Control_Edit
+{
+
+ GFC_Control_DefaultEdit_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Edit_Renderer_Control;
+
+ with .Renderer
+ {
+ .Text = GFC_CtrlTheme_Bitmap_Control_Edit_Renderer_Text;
+ .Select = GFC_CtrlTheme_Bitmap_Control_Edit_Renderer_Select;
+ .Caret = GFC_CtrlTheme_Bitmap_Control_Edit_Renderer_Caret;
+ .DragCaret = GFC_CtrlTheme_Bitmap_Control_Edit_Renderer_DragCaret;
+ }
+
+ with .Child
+ {
+ .Border = GFC_CtrlTheme_Bitmap_Control_Edit_Child_Border;
+ .ScrollFrame = GFC_CtrlTheme_Bitmap_Control_Edit_Child_ScrollFrame;
+ .PopupMenu = GFC_CtrlTheme_Bitmap_Control_Edit_Child_PopupMenu;
+ .DropMenu = GFC_CtrlTheme_Bitmap_Control_Edit_Child_DropMenu;
+
+ // History object
+ .History = GFC_CtrlTheme_Bitmap_Control_Edit_Child_DefaultHistory;
+ }
+
+ with .StyleId
+ {
+ .Border = GPropertyId(GFC_Control_InBorder_Style);
+ .ScrollFrame = GPropertyId(GFC_Control_StandardScrollFrame_Style);
+ .PopupMenu = GPropertyId(GFC_Control_StandardMenu_Style);
+ .DropMenu = GPropertyId(GFC_Control_StandardMenu_Style);
+ }
+
+ with GFC_Control_Flag
+ {
+ // Base control flags
+ .Transparent = GFlags(GCtrl, GFC_CF_TRANSPARENT);
+ .SolidInner = 0; //GFlags(GCtrl, GFC_CF_SOLIDINNER);
+ .SolidBackground = 0; //GFlags(GCtrl, GFC_CF_SOLIDBACKGROUND);
+ .RegionClip = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP);
+ .RegionClipParent = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP_PARENT);
+ .NoExternalWindow = 0; //GFlags(GCtrl, GFC_CF_NOEXTERNALWINDOW);
+ .HitTest = 0; //GFlags(GCtrl, GFC_CF_HITTEST);
+ .TopLayer = 0; //GFlags(GCtrl, GFC_CF_TOPLAYER);
+ .TopLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_TOPLAYERBITMAP);
+ .BottomLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_BOTTOMLAYERBITMAP);
+
+ // Control flag change masks
+ .Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_ACTIVE,
GFC_CF_DISABLED, GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER);
+ }
+
+ with .Flag
+ {
+ // Edit flags
+ .NoInnerFill = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_NOINNERFILL);
+ .NoBorder = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_NOBORDER);
+ .History = GFlags(GEditCtrl, GFC_CF_EDIT_HISTORY);
+ .Select = GFlags(GEditCtrl, GFC_CF_EDIT_SELECT_FOCUS );
+ .TabSize = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_TAB_SIZE);
+ .TabKey = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_TAB_KEY);
+ .VAlign = GFlags(GEditCtrl, GFC_CF_EDIT_VCENTER);
+ .HAlign = GFlags(GEditCtrl, GFC_CF_EDIT_LEFT);
+ .Wrap = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_WRAP_WORD);
+ .CropLeft = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_CROP_LEFT);
+ .CropRight = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_CROP_RIGHT);
+ .CropTop = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_CROP_TOP);
+ .CropBottom = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_CROP_BOTTOM);
+ .Multiline = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_MULTILINE);
+ .Clamp = 0; //GFlags(GEditCtrl, GFC_CF_EDIT_CLAMP_TOTOP);
+ .ScrollFrame = GFlags(GEditCtrl, GFC_CF_EDIT_SCROLLFRAME);
+
+ // Edit flag change
+ // - No assignment uses defaults
+ //.EditMask_InvalidateControl = GFlags(GEditCtrl);
+ //.EditMask_UpdateDrawText = GFlags(GEditCtrl);
+ }
+
+ with .Size
+ {
+ .ViewMargin = GRectMargin(4,1,4,1);
+ .PageMargin = GRectMargin(0,0,0,0);
+ .PageWidth = 0;
+ .TextOffset = GPoint(0,0);
+
+ .MaxCharCount = 0;
+ .MaxLineCount = 0;
+ .MaxDataSize = 2000;
+
+ .TabSize = 8;
+ // .TabStops = 0;
+
+ .ScrollShiftUp = 0;
+ .ScrollShiftDown = 0;
+ .ScrollShiftLeft = 10;
+ .ScrollShiftRight = 10;
+
+ // Zero for either size component causes
+ // the caret to be the size of the character
+ .Caret_Insert = GSize(3,-1);
+ .Caret_Overwrite = GSize(3,-1);
+ .Caret_DragCopy = GSize(3,0);
+ .Caret_DragMove = GSize(3,0);
+ .Caret_DragLink = GSize(3,0);
+ .CaretOffset_Insert = GPoint(-2,0);
+ .CaretOffset_Overwrite = GPoint(-2,0);
+ .CaretOffset_DragCopy = GPoint(-2,0);
+ .CaretOffset_DragMove = GPoint(-2,0);
+ .CaretOffset_DragLink = GPoint(-2,0);
+ .CaretExtent_Insert = GRectMargin(0,0,0,0);
+ .CaretExtent_Overwrite = GRectMargin(0,0,0,0);
+ .CaretExtent_DragCopy = GRectMargin(0,0,0,0);
+ .CaretExtent_DragMove = GRectMargin(0,0,0,0);
+ .CaretExtent_DragLink = GRectMargin(0,0,0,0);
+
+ .Default = GSize(64,26);
+ }
+
+
+ with .Color
+ {
+ .Text_Default = GFC_Control_Color_Text_Default;
+ .Text_Select = GFC_Control_Color_Text_Select;
+ .Text_Inactive = .Text_Default;
+ .Text_InactiveSelect = GFC_Control_Color_Text_InactiveSelect;
+ .Text_Disable = GFC_Control_Color_Text_Disable;
+ .Text_DisableSelect = GFC_Control_Color_Text_DisableSelect;
+
+ .Inner_Default = GFC_Control_Color_Inner_Default;
+ .Inner_Inactive = GFC_Control_Color_Inner_Inactive;
+ .Inner_Disable = GFC_Control_Color_Inner_Disable;
+
+ .Select_Default = SF_CtrlTheme_Civ4_Control_Color_Select;
+ .Select_Inactive = SF_CtrlTheme_Civ4_Control_Color_DisableSelect;
+ .Select_Disable = SF_CtrlTheme_Civ4_Control_Color_DisableSelect;
+
+ .Caret_Insert_Default = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Insert_Select = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Insert_Inactive = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Insert_InactiveSelect = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Insert_Disable = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Insert_DisableSelect = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_Default = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_Select = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_Inactive = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_InactiveSelect = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_Disable = GFC_Control_Color_3DLook_Darkest;
+ .Caret_Overwrite_DisableSelect = GFC_Control_Color_3DLook_Darkest;
+ .Caret_DragCopy = GFC_Control_Color_3DLook_Dark;
+ .Caret_DragMove = GFC_Control_Color_3DLook_Dark;
+ .Caret_DragLink = GFC_Control_Color_3DLook_Dark;
+ }
+
+ with .Combine
+ {
+ .Text_Default_Dest = GFC_Control_Combine_Text_Default_Dest;
+ .Text_Default_Factor = GFC_Control_Combine_Text_Default_Factor;
+ .Text_Select_Dest = GFC_Control_Combine_Text_Select_Dest;
+ .Text_Select_Factor = GFC_Control_Combine_Text_Select_Factor;
+ .Text_Inactive_Dest = .Text_Default_Dest;
+ .Text_Inactive_Factor = .Text_Default_Factor;
+ .Text_InactiveSelect_Dest =
GFC_Control_Combine_Text_InactiveSelect_Dest;
+ .Text_InactiveSelect_Factor =
GFC_Control_Combine_Text_InactiveSelect_Factor;
+ .Text_Disable_Dest = GFC_Control_Combine_Text_Disable_Dest;
+ .Text_Disable_Factor = GFC_Control_Combine_Text_Disable_Factor;
+ .Text_DisableSelect_Dest =
GFC_Control_Combine_Text_DisableSelect_Dest;
+ .Text_DisableSelect_Factor =
GFC_Control_Combine_Text_DisableSelect_Factor;
+
+ .Inner_Default = GFC_Control_Combine_Inner_Default;
+ .Inner_Inactive = GFC_Control_Combine_Inner_Default;
+ .Inner_Disable = GFC_Control_Combine_Inner_Disable;
+
+ .Select_Default = GFC_Control_Combine_Inner_Select;
+ .Select_Inactive = GFC_Control_Combine_Inner_InactiveSelect;
+ .Select_Disable = GFC_Control_Combine_Inner_DisableSelect;
+
+ .Caret_Insert_Default = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Insert_Select = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Insert_Inactive = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Insert_InactiveSelect = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Insert_Disable = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Insert_DisableSelect = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_Default = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_Select = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_Inactive = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_InactiveSelect = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_Disable = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_Overwrite_DisableSelect = GColorCombine(Source, Disable);
//GColorCombine(XOr, Source);
+ .Caret_DragCopy = GColorCombine(Source, Disable);
//GColorCombine(BlendSource, Disable);
+ .Caret_DragMove = GColorCombine(Source, Disable);
//GColorCombine(BlendSource, Disable);
+ .Caret_DragLink = GColorCombine(Source, Disable);
//GColorCombine(BlendSource, Disable);
+ }
+
+ with .Cursor
+ {
+ .Text = GFC_Control_Cursor_Text;
+ .Selection = GFC_Control_Cursor_Arrow;
+ .SelectingText = GFC_Control_Cursor_Text;
+ .SelectingTextLeft = GFC_Control_Cursor_Text;
+ .SelectingTextRight = GFC_Control_Cursor_Text;
+ .DragMove = GFC_Control_Cursor_DragMove;
+ .DragCopy = GFC_Control_Cursor_DragCopy;
+ .DragLink = GFC_Control_Cursor_DragLink;
+ }
+
+ .Font_Text = SF_CtrlTheme_Civ4_Control_Font_Size3_Normal;
+
+ .Delay_BlinkRate = 500;
+
+ with .Text
+ {
+
+ with .PopupMenu
+ {
+// >>> CYBERFRONT // popup menu
+// .Undo = "Undo";
+// .Redo = "Redo";
+// .Cut = "Cut";
+// .Copy = "Copy";
+// .Paste = "Paste";
+// .Delete = "Delete";
+// .SelectAll = "Select All";
+// <<< CYBERFRONT
+ }
+ with .DragDropMenu
+ {
+// >>> CYBERFRONT // popup menu
+// .Copy = "Copy Here";
+// .Move = "Move Here";
+// .Link = "Link Here";
+// .Cancel = "Cancel";
+// <<< CYBERFRONT
+ }
+ }
+
+
+ // ******* Initialize all the Bitmap theme Edit properties to avoid
inheritance problems
+
+ with GFC_CtrlTheme_Bitmap_Control_Edit
+ {
+ // Forces the selection to be done with a solid color fill
+ // - avoids using skins and is generally much faster
+ .Flag_Select_SolidFill = 1;
+
+
+ // *** Skins
+ with .Skin
+ {
+ // Caret skins
+ // Normal insert and overwrite style carets
+ .Caret_Insert_Default = 0;
+ .Caret_Insert_Inactive = 0;
+ .Caret_Insert_Disable = 0;
+ .Caret_Overwrite_Default = 0;
+ .Caret_Overwrite_Inactive = 0;
+ .Caret_Overwrite_Disable = 0;
+ // Drag
+ .Caret_DragCopy = 0;
+ .Caret_DragMove = 0;
+ .Caret_DragLink = 0;
+ // Inner skin
+ .Inner_Default = 0;
+ .Inner_Inactive = 0;
+ .Inner_Disable = 0;
+
+ // *** Selected skins
+
+ // ** Single line selection
+ // - special case skin only used if Edit control is in single line mode
+ // - if not available then the control falls back onto the multiline
skins
+ .Select_SingleLine_Default = 0;
+ .Select_SingleLine_Disable = 0;
+ .Select_SingleLine_Inactive = 0;
+
+ // ** Multiline selection (coming soon!)
+ // Select Edge: Left in |-> Right in <-| and so on Top down / Bottom
up
+ // Select CornerIn: Corners with the selection inside the border area
+ // Select CornerOut: Corners with the selection outside the border area
+ }
+ }
+
+ map GFC_Control = GFC_Control_DefaultControl_Style;
+ } // end GFC_Control_DefaultEdit_Style
+
+
+ // Normal Edit border
+ style SF_CtrlTheme_Civ4_Control_Edit_Standard_Border_Style
+ {
+ GFC_Control_Border_Size_Margin = GRectMargin(6,2,6,3);
+ GFC_Control_Flag_Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_ACTIVE,
GFC_CF_DISABLED, GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER);
+
+ with GFC_CtrlTheme_Bitmap_Control_Border_Skin
+ {
+ .Full_Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 0);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 1);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(1,1,1,1);
+ }
+ }
+ .Full_Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 2);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ FactorCombine = GColorCombine(Modulate,Modulate);
+ FactorColor = SF_CtrlTheme_Civ4_Control_Color_Focus;
+ Image = GBitmap("Civ4/focus.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ Indent = GRectMargin(1,1,1,1);
+ }
+ }
+ .Full_Inactive
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 0);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 1);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ }
+ .Full_InactiveDisable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 2);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ }
+ .Full_Winoff = .Full_Inactive;
+ .Full_WinoffDisable = .Full_InactiveDisable;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Border =
GFC_Control_DefaultBorder_Style;
+ map GFC_Control = GFC_Control_DefaultBorder_Style;
+ }
+
+
+ // Flat Edit border
+ style SF_CtrlTheme_Civ4_Control_Edit_Flat_Border_Style
+ {
+ GFC_Control_Border_Size_Margin = GRectMargin(0,0,2,2);
+
+ with GFC_CtrlTheme_Bitmap_Control_Border_Skin
+ {
+ .Full_Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 1);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ }
+ .Full_Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/edit.tga", HVGrid, 1, 3, 0, 2);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(3,3,3,3);
+ }
+ }
+ .Full_Inactive = .Full_Default;
+ .Full_InactiveDisable = .Full_Disable;
+ .Full_Winoff = .Full_Default;
+ .Full_WinoffDisable = .Full_Disable;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Border =
GFC_Control_DefaultBorder_Style;
+ map GFC_Control = GFC_Control_DefaultBorder_Style;
+ }
+
+
+ // ** Normal edit box style
+
+ GFC_Control_StandardEdit_Style
+ {
+ .StyleId_Border =
GPropertyId(SF_CtrlTheme_Civ4_Control_Edit_Standard_Border_Style);
+
+ with GFC_CtrlTheme_Bitmap_Control_Edit_Skin_Inner
+ {
+ .Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(1,5,1,4);
+ }
+ }
+ .Inactive = .Default;
+ .Disable
+ {
+ layer { }
+ }
+ }
+
+ with GFC_CtrlTheme_Bitmap_Control_Edit_Skin_Caret
+ {
+ .Insert_Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/Caret_Insert.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,2,0,2);
+ }
+ }
+ .Insert_Inactive = .Insert_Default;
+ .Insert_Disable = .Insert_Default;
+
+ .Overwrite_Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/Caret_Overwrite.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ }
+ .Overwrite_Inactive = .Overwrite_Default;
+ .Overwrite_Disable = .Overwrite_Default;
+
+ .DragCopy
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/Caret_Drag.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ }
+ .DragMove = .DragCopy;
+ .DragLink = .DragCopy;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Edit = GFC_Control_DefaultEdit_Style;
+ map GFC_Control = GFC_Control_DefaultEdit_Style;
+ }
+
+ GFC_Control_FlatEdit_Style
+ {
+ .StyleId_Border =
GPropertyId(SF_CtrlTheme_Civ4_Control_Edit_Flat_Border_Style);
+
+ map GFC_CtrlTheme_Bitmap_Control_Edit = GFC_Control_StandardEdit_Style;
+ map GFC_Control = GFC_Control_StandardEdit_Style;
+ }
+
+ GFC_Control_SolidEdit_Style
+ {
+ .Flag_NoBorder = GFlags(GEditCtrl, GFC_CF_EDIT_NOBORDER);
+
+ .StyleId_Border = GPropertyId(GFC_Control_EmptyBorder_Style);
+
+ .Size_ViewMargin = GRectMargin(0,0,0,0);
+
+ map GFC_CtrlTheme_Bitmap_Control_Edit = GFC_Control_StandardEdit_Style;
+ map GFC_Control = GFC_Control_StandardEdit_Style;
+ }
+
+ GFC_Control_ClearEdit_Style
+ {
+ GFC_Control_Flag_Transparent = GFlags(GCtrl, GFC_CF_TRANSPARENT);
+
+ .Flag_NoBorder = GFlags(GEditCtrl, GFC_CF_EDIT_NOBORDER);
+ .Flag_NoInnerFill = GFlags(GEditCtrl, GFC_CF_EDIT_NOINNERFILL);
+ .StyleId_Border = GPropertyId(GFC_Control_EmptyBorder_Style);
+
+ .Size_ViewMargin = GRectMargin(0,0,0,0);
+
+ map GFC_CtrlTheme_Bitmap_Control_Edit = GFC_Control_StandardEdit_Style;
+ map GFC_Control = GFC_Control_StandardEdit_Style;
+ }
+
+
+
+
+ //*** Multiline Edit ***
------------------------------------------------------------------------------------------------------------------
+
+ // Up - button style
+ style SF_CtrlTheme_Civ4_Control_Edit_Scroll_UpButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(16,19);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ .Press
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,6);
+ }
+ }
+ .Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 0);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+ }
+
+ // Down - button style
+ style SF_CtrlTheme_Civ4_Control_Edit_Scroll_DownButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(16,19);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,8,0,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 1);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+ }
+
+ // Left - button style
+ style SF_CtrlTheme_Civ4_Control_Edit_Scroll_LeftButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(19,16);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,6,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 2);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+ }
+
+ // Right - button style
+ style SF_CtrlTheme_Civ4_Control_Edit_Scroll_RightButton_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(19,16);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(8,0,0,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE);
+ DestCombine = GColorCombine(BlendSource,Disable);
+ Image = GBitmap("Civ4/black_25.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 3);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+ }
+
+
+ // ** Normal Scroll bar style
+
+ style SF_CtrlTheme_Civ4_Control_Edit_MultiLine_Scroll_Style
+ {
+ with GFC_Control_Scroll_StyleId
+ {
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /trunk/317Difference/Resource/Themes/Civ4Theme_Label.thm Sun Sep 20
08:55:19 2009
@@ -0,0 +1,162 @@
+/**********************************************************************
+
+Filename : Civ4Theme_Label.thm
+Content : Civ4 - GLabel control theme
+Created : May 1, 2005
+Authors : Sven Dixon
+
+Copyright : (c) 2005 Scaleform Corp. All Rights Reserved.
+
+Licensees may use this file in accordance with the valid Scaleform
+GFC Commercial License Agreement provided with the software.
+
+This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
+THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
+
+For information regarding GFC Commercial License Agreements go to:
+ online - http://www.scaleform.com/licensing.html or
+ email - sa...@scaleform.com
+
+**********************************************************************/
+
+
+// *** Main Label control namespace
+
+with GFC_Control_Label
+{
+
+ GFC_Control_DefaultLabel_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Label_Renderer_Control;
+
+ with .Renderer
+ {
+ .Text = GFC_CtrlTheme_Bitmap_Control_Label_Renderer_Text;
+ .Image = GFC_CtrlTheme_Bitmap_Control_Label_Renderer_Bitmap;
+ }
+
+ with GFC_Control_Flag
+ {
+ // Base control flags
+ .Transparent = GFlags(GCtrl, GFC_CF_TRANSPARENT);
+ .SolidInner = 0; //GFlags(GCtrl, GFC_CF_SOLIDINNER);
+ .SolidBackground = 0; //GFlags(GCtrl, GFC_CF_SOLIDBACKGROUND);
+ .RegionClip = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP);
+ .RegionClipParent = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP_PARENT);
+ .NoExternalWindow = 0; //GFlags(GCtrl, GFC_CF_NOEXTERNALWINDOW);
+ .HitTest = GFlags(GCtrl, GFC_CF_HITTEST);
+ .TopLayer = 0; //GFlags(GCtrl, GFC_CF_TOPLAYER);
+ .TopLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_TOPLAYERBITMAP);
+ .BottomLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_BOTTOMLAYERBITMAP);
+
+ // Control flag change masks
+ .Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_DISABLED,
GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER);
+ }
+
+ with .Flag
+ {
+ // Label flags
+ .VAlign = GFlags(GLabelCtrl, GFC_CF_LABEL_VCENTER);
+ .HAlign = GFlags(GLabelCtrl, GFC_CF_LABEL_LEFT);
+
+ .Text_VAlign = GFlags(GLabelCtrl, GFC_CF_LABEL_TEXT_VCENTER);
+ .Text_HAlign = GFlags(GLabelCtrl, GFC_CF_LABEL_TEXT_RIGHT);
+ .Multiline = 0; //GFlags(GLabelCtrl, GFC_CF_LABEL_MULTILINE);
+ .Just = 0; //GFlags(GLabelCtrl, GFC_CF_LABEL_JUST_LEFT);
+ .Wrap = 0; //GFlags(GLabelCtrl, GFC_CF_LABEL_WRAP_WORD);
+ .Crop = 0; //GFlags(GLabelCtrl, GFC_CF_LABEL_CROP_CHAR);
+ .CropDotted = GFlags(GLabelCtrl, GFC_CF_LABEL_CROP_DOTTED);
+
+ // Label flag change masks
+ //.LabelMask_InvalidateControl = GFlags(GLabelCtrl);
+ }
+
+ with .Color
+ {
+ .Image_Default = GFC_Control_Color_Image_Default;
+ .Image_Disable = GFC_Control_Color_Image_Disable;
+
+ .Text_Default = GFC_Control_Color_Text_Default;
+ .Text_Disable = GFC_Control_Color_Text_Disable;
+ .Text_Winoff = .Text_Default;
+ .Text_WinoffDisable = .Text_Disable;
+
+ .TextShadow_Default = GFC_Control_Color_TextShadow_Default;
+ .TextShadow_Disable = GFC_Control_Color_TextShadow_Disable;
+ .TextShadow_Winoff = .TextShadow_Default;
+ .TextShadow_WinoffDisable = .TextShadow_Disable;
+ }
+
+ with .Combine
+ {
+ .Image_Default_Dest = GFC_Control_Combine_Image_Default_Dest;
+ .Image_Default_Factor = GFC_Control_Combine_Image_Default_Factor;
+ .Image_Disable_Dest = GFC_Control_Combine_Image_Disable_Dest;
+ .Image_Disable_Factor = GFC_Control_Combine_Image_Disable_Factor;
+
+ .Text_Default_Dest = GFC_Control_Combine_Text_Default_Dest;
+ .Text_Default_Factor = GFC_Control_Combine_Text_Default_Factor;
+ .Text_Disable_Dest = GFC_Control_Combine_Text_Disable_Dest;
+ .Text_Disable_Factor = GFC_Control_Combine_Text_Disable_Factor;
+ .Text_Winoff_Dest = .Text_Default_Dest;
+ .Text_Winoff_Factor = .Text_Default_Factor;
+ .Text_WinoffDisable_Dest = .Text_Disable_Dest;
+ .Text_WinoffDisable_Factor = .Text_Disable_Factor;
+
+ .TextShadow_Default_Dest =
GFC_Control_Combine_TextShadow_Default_Dest;
+ .TextShadow_Default_Factor =
GFC_Control_Combine_TextShadow_Default_Factor;
+ .TextShadow_Disable_Dest =
GFC_Control_Combine_TextShadow_Disable_Dest;
+ .TextShadow_Disable_Factor =
GFC_Control_Combine_TextShadow_Disable_Factor;
+ .TextShadow_Winoff_Dest = .TextShadow_Default_Dest;
+ .TextShadow_Winoff_Factor = .TextShadow_Default_Factor;
+ .TextShadow_WinoffDisable_Dest = .TextShadow_Disable_Dest;
+ .TextShadow_WinoffDisable_Factor = .TextShadow_Disable_Factor;
+ }
+
+ with .Size
+ {
+ .Margin = GRectMargin(0,0,0,0);
+ .ItemSpace = GFC_Control_Size_ItemSpace;
+// >>> CYBERFRONT // text: adjust
+// .TextOffset = GPoint(0,-1);
+ .TextOffset = GPoint(0,0);
+// <<< CYBERFRONT
+ .Default = GSize(0,31);
+ }
+
+ with .Font
+ {
+ .Text_Default = SF_CtrlTheme_Civ4_Control_Font_Size3_Normal;
+ .Text_Disable = .Text_Default;
+ .Text_Winoff = .Text_Default;
+ .Text_WinoffDisable = .Text_Disable;
+ }
+
+
+ // ******* Initialize all the Bitmap theme Label properties to avoid
inheritance problems
+
+ with GFC_CtrlTheme_Bitmap_Control_Label_Skin
+ {
+ // Label inner stretchy skins
+ .Default = 0;
+ .Disable = 0;
+ .Inactive = 0;
+ .InactiveDisable = 0;
+ .Winoff = 0;
+ .WinoffDisable = 0;
+ }
+
+ map GFC_Control = GFC_Control_DefaultControl_Style;
+ } // end GFC_Control_DefaultLabel_Style
+
+
+ // ** Normal label style
+
+ GFC_Control_StandardLabel_Style
+ {
+ map SF_CtrlTheme_Civ4_Control = GFC_Control_DefaultLabel_Style;
+ map GFC_CtrlTheme_Bitmap_Control_Label =
GFC_Control_DefaultLabel_Style;
+ map GFC_Control = GFC_Control_DefaultLabel_Style;
+ }
+}
+
=======================================
--- /dev/null
+++ /trunk/317Difference/Resource/Themes/Civ4Theme_Scroll.thm Sun Sep 20
08:55:19 2009
@@ -0,0 +1,822 @@
+/**********************************************************************
+
+Filename : Civ4Theme_Scroll.thm
+Content : Civ4 - GScroll control theme
+Created : May 1, 2005
+Authors : Sven Dixon
+
+Copyright : (c) 2005 Scaleform Corp. All Rights Reserved.
+
+Licensees may use this file in accordance with the valid Scaleform
+GFC Commercial License Agreement provided with the software.
+
+This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
+THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
+
+For information regarding GFC Commercial License Agreements go to:
+ online - http://www.scaleform.com/licensing.html or
+ email - sa...@scaleform.com
+
+**********************************************************************/
+
+// *** Main Scroll control namespace
+
+with GFC_Control_Scroll
+{
+
+ GFC_Control_DefaultScroll_Style
+ {
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Scroll_Renderer_Control;
+
+ GFC_Control_Update_ChildLayout =
GFC_CtrlTheme_Bitmap_Control_Scroll_Update_ChildLayout;
+
+ with .Child
+ {
+ .UpButton = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_UpButton;
+ .DownButton = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_DownButton;
+ .LeftButton = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_LeftButton;
+ .RightButton = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_RightButton;
+ .HGrip = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_HGripButton;
+ .VGrip = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_VGripButton;
+ .HPopupMenu = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_HPopupMenu;
+ .VPopupMenu = GFC_CtrlTheme_Bitmap_Control_Scroll_Child_VPopupMenu;
+ }
+
+ with .StyleId
+ {
+ .UpButton = GPropertyId(GFC_Control_StandardButton_Style);
+ .DownButton = GPropertyId(GFC_Control_StandardButton_Style);
+ .LeftButton = GPropertyId(GFC_Control_StandardButton_Style);
+ .RightButton = GPropertyId(GFC_Control_StandardButton_Style);
+ .HGrip = GPropertyId(GFC_Control_StandardButton_Style);
+ .VGrip = GPropertyId(GFC_Control_StandardButton_Style);
+ .HPopupMenu = GPropertyId(GFC_Control_StandardMenu_Style);
+ .VPopupMenu = GPropertyId(GFC_Control_StandardMenu_Style);
+ }
+
+ with GFC_Control_Flag
+ {
+ // Base control flags
+ .Transparent = GFlags(GCtrl, GFC_CF_TRANSPARENT);
+ .SolidInner = 0; //GFlags(GCtrl, GFC_CF_SOLIDINNER);
+ .SolidBackground = 0; //GFlags(GCtrl, GFC_CF_SOLIDBACKGROUND);
+ .RegionClip = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP);
+ .RegionClipParent = 0; //GFlags(GCtrl, GFC_CF_REGIONCLIP_PARENT);
+ .NoExternalWindow = 0; //GFlags(GCtrl, GFC_CF_NOEXTERNALWINDOW);
+ .HitTest = 0; //GFlags(GCtrl, GFC_CF_HITTEST);
+ .TopLayer = 0; //GFlags(GCtrl, GFC_CF_TOPLAYER);
+ .TopLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_TOPLAYERBITMAP);
+ .BottomLayerBitmap = 0; //GFlags(GCtrl, GFC_CF_BOTTOMLAYERBITMAP);
+
+ // Control flag change masks
+ .Mask_InvalidateControl = GFlags(GCtrl, GFC_CF_DISABLED,
GFC_CF_TRANSPARENT, GFC_CF_TOPLAYER);
+ }
+
+ with .Flag
+ {
+ // Scroll flags
+ .Discontinuous = 0; //GFlags(GScrollCtrl,
GFC_CF_SCROLL_DISCONTINUOUS);
+ .Proportional = 0; //GFlags(GScrollCtrl,
GFC_CF_SCROLL_PROPORTIONAL);
+ .NoUpDownButtons = 0; //GFlags(GScrollCtrl,
GFC_CF_SCROLL_NOUPDOWNBUTTONS);
+ .SnapTo_OnDrop = GFlags(GScrollCtrl, GFC_CF_SCROLL_SNAPTO_ONDROP);
+ .SnapTo_OnDrag = 0; //GFlags(GScrollCtrl,
GFC_CF_SCROLL_SNAPTO_ONDRAG);
+
+ // Scroll flag change masks
+ //.ScrollMask_InvalidateControl = GFlags(GScrollCtrl);
+ }
+
+ with .Size
+ {
+ .HGripLength = 16;
+ .VGripLength = 16;
+ .HGripMinLength = 16;
+ .VGripMinLength = 16;
+ .HGripInset = GRangeMargin(3,3);
+ .VGripInset = GRangeMargin(3,3);
+ .HDefault = 16;
+ .VDefault = 16;
+ }
+
+ with .Delay
+ {
+ .TrackStepping_First = 250;
+ .TrackStepping_Repeat = 90;
+ }
+
+ with .Color
+ {
+ .Track_Default = GFC_Control_Color_3DLook_Normal;
+ .Track_Disable = GFC_Control_Color_3DLook_Light;
+ .Track_Press = GFC_Control_Color_3DLook_Dark;
+ .Track_Rollover = GFC_Control_Color_3DLook_Normal;
+ }
+
+ with .Combine
+ {
+ .Track_Default = GFC_Control_Combine_Surface;
+ .Track_Disable = GFC_Control_Combine_Surface;
+ .Track_Press = GFC_Control_Combine_Surface;
+ .Track_Rollover = GFC_Control_Combine_Surface;
+ }
+
+ with .Text
+ {
+ with .PopupMenu
+ {
+// >>> CYBERFRONT // popup menu
+// .FullLeft = "Left";
+// .FullRight = "Right";
+// .PageLeft = "Page Left";
+// .PageRight = "Page Right";
+// .LineLeft = "Line Left";
+// .LineRight = "Line Right";
+// .Left = "Scroll Left";
+// .Right = "Scroll Right";
+// .HStepTo = "Scroll Here";
+//
+// .FullTop = "Top";
+// .FullBottom = "Bottom";
+// .PageUp = "Page Up";
+// .PageDown = "Page Down";
+// .LineUp = "Line Up";
+// .LineDown = "Line Down";
+// .Up = "Scroll Up";
+// .Down = "Scroll Down";
+// .VStepTo = "Scroll Here";
+// <<< CYBERFRONT
+ }
+
+ with .ToolTip
+ {
+ .HGripButton = "Scroll Grip";
+ .VGripButton = "Scroll Grip";
+ .UpButton = "Scroll Up";
+ .DownButton = "Scroll Down";
+ .LeftButton = "Scroll Left";
+ .RightButton = "Scroll Right";
+ .LeftTrack = "Step Left";
+ .RightTrack = "Step Right";
+ .UpTrack = "Step Up";
+ .DownTrack = "Step Down";
+ }
+ }
+
+ // ******* Initialize all the Bitmap theme Scroll properties to avoid
inheritance problems
+
+ with GFC_CtrlTheme_Bitmap_Control_Scroll_Skin
+ {
+ .HShaft_Default = 0;
+ .HShaft_Rollover = 0;
+ .HShaft_Press = 0;
+ .HShaft_Disable = 0;
+ .HShaft_Winoff = 0;
+ .HShaft_WinoffRollover = 0;
+ .HShaft_WinoffPress = 0;
+ .HShaft_WinoffDisable = 0;
+
+ .VShaft_Default = 0;
+ .VShaft_Rollover = 0;
+ .VShaft_Press = 0;
+ .VShaft_Disable = 0;
+ .VShaft_Winoff = 0;
+ .VShaft_WinoffRollover = 0;
+ .VShaft_WinoffPress = 0;
+ .VShaft_WinoffDisable = 0;
+ }
+
+ map GFC_Control = GFC_Control_DefaultControl_Style;
+ } // end GFC_Control_DefaultScroll_Stylee
+
+
+
+// Create a new button control styles
+
+// Up - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_UpButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(16,19);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,6);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 0, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 0, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,0,4);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 0);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 0);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+// Down - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_DownButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(16,19);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,8,0,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_v.tga", HVGrid, 4, 2, 1, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 1, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,6,0,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 1);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 1);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+// Left - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_LeftButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(19,16);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,6,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 0, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 2, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(0,0,4,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 2);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 2);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+// Right - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_RightButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Size_Default = GSize(19,16);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ .Rollover
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 0);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 1);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(8,0,0,0);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_btn_h.tga", HVGrid, 4, 2, 1, 1);
+ Margin = GRectMargin(6,6,6,6);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Source);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_FIXED);
+ Image = GBitmap("Civ4/scroll_arrows.tga", HVGrid, 4, 3, 3, 2);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(6,0,0,0);
+ }
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Rollover = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Press = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 0, 3);
+ .Disable = GBitmap("Civ4/Scrollarrows.tga", HVGrid, 2, 4, 1, 3);
+ }*/
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+// Vertical Grip - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_VGripButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Flag_TrackedPress = GFlags(GButtonCtrl,
GFC_CF_BUTTON_TRACKEDPRESS);
+
+ GFC_Control_Button_Size_Default = GSize(10,10);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ Image = GBitmap("Civ4/bg.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(2,4,2,4);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 0, 0);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(2,0,2,0);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 0, 1);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(2,0,2,0);
+ }
+ }
+ .Rollover
+ {
+ layer { Inherit = .Default; }
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(Add,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 0, 2);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(2,0,2,0);
+ }
+ }
+ .Press
+ {
+ layer { Inherit = .Default; }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ Image = GBitmap("Civ4/bg_header.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(2,4,2,4);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 0, 3);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(2,0,2,0);
+ }
+ layer {}
+ }
+ .Disable
+ {
+ layer {}
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*
+ with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("", Vertical, 4, 0);
+ .Rollover = GBitmap("", Vertical, 4, 1);
+ .Press = GBitmap("", Vertical, 4, 2);
+ .Disable = GBitmap("", Vertical, 4, 3);
+ }
+ */
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+// Horizontal Grip - button style
+style SF_CtrlTheme_Civ4_Control_Scroll_HGripButton_Style
+{
+ GFC_Control_Renderer_Control =
GFC_CtrlTheme_Bitmap_Control_Button_Renderer_ControlStandard;
+
+ GFC_Control_Button_Flag_TrackedPress = GFlags(GButtonCtrl,
GFC_CF_BUTTON_TRACKEDPRESS);
+
+ GFC_Control_Button_Size_Default = GSize(10,10);
+
+ with GFC_CtrlTheme_Bitmap_Control_Button_Skin
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ Image = GBitmap("Civ4/bg.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(4,2,4,2);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_EMPTY,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 1, 0);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(0,2,0,2);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 1, 1);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(0,2,0,2);
+ }
+ }
+ .Rollover
+ {
+ layer { Inherit = .Default; }
+ layer {}
+ layer {}
+ layer {}
+ layer {
+ DestCombine = GColorCombine(Add,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 1, 2);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(0,2,0,2);
+ }
+ }
+ .Press
+ {
+ layer { Inherit = .Default; }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_TILE);
+ Image = GBitmap("Civ4/bg_header.tga", HVGrid, 1, 1, 0, 0);
+ Margin = GRectMargin(0,0,0,0);
+ Indent = GRectMargin(4,2,4,2);
+ }
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_grip.tga", HVGrid, 2, 4, 1, 3);
+ Margin = GRectMargin(4,4,4,4);
+ Indent = GRectMargin(0,2,0,2);
+ }
+ layer {}
+ }
+ .Disable
+ {
+ layer {}
+ }
+ }
+
+ // Images to use for the scroll buttons
+ /*
+ with GFC_Control_Button_Image
+ {
+ .Default = GBitmap("", Vertical, 4, 0);
+ .Rollover = GBitmap("", Vertical, 4, 1);
+ .Press = GBitmap("", Vertical, 4, 2);
+ .Disable = GBitmap("", Vertical, 4, 3);
+ }
+ */
+
+ map GFC_CtrlTheme_Bitmap_Control_Button =
GFC_Control_DefaultButton_Style;
+ map GFC_Control = GFC_Control_DefaultButton_Style;
+}
+
+
+
+
+ // ** Normal Scroll bar style
+
+ GFC_Control_StandardScroll_Style
+ {
+
+
+ with .StyleId
+ {
+ .UpButton =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_UpButton_Style);
+ .DownButton =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_DownButton_Style);
+ .LeftButton =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_LeftButton_Style);
+ .RightButton =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_RightButton_Style);
+ .HGrip =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_HGripButton_Style);
+ .VGrip =
GPropertyId(SF_CtrlTheme_Civ4_Control_Scroll_VGripButton_Style);
+ }
+
+
+ // Scroll shaft skins
+
+ with GFC_CtrlTheme_Bitmap_Control_Scroll_Skin_HShaft
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 1, 0);
+ Margin = GRectMargin(1,6,1,6);
+ }
+ }
+ .Rollover = .Default;
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 1, 1);
+ Margin = GRectMargin(1,6,1,6);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 1, 2);
+ Margin = GRectMargin(1,6,1,6);
+ }
+ }
+ .Winoff = .Default;
+ .WinoffPress = .Press;
+ .WinoffRollover = .Rollover;
+ .WinoffDisable = .Disable;
+ }
+
+ with GFC_CtrlTheme_Bitmap_Control_Scroll_Skin_VShaft
+ {
+ .Default
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 0, 0);
+ Margin = GRectMargin(6,1,6,1);
+ }
+ }
+ .Rollover = .Default;
+ .Press
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_BILINEAR,
GFC_BITMAPSKIN_SIDES_BILINEAR);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 0, 1);
+ Margin = GRectMargin(6,1,6,1);
+ }
+ }
+ .Disable
+ {
+ layer {
+ DestCombine = GColorCombine(BlendSource,Disable);
+ LayerFlags = GFlags(GCtrlBitmapSkin, GFC_BITMAPSKIN_CENTER_SCALE,
GFC_BITMAPSKIN_SIDES_SCALE);
+ Image = GBitmap("Civ4/scroll_track.tga", HVGrid, 2, 3, 0, 2);
+ Margin = GRectMargin(6,1,6,1);
+ }
+ }
+ .Winoff = .Default;
+ .WinoffPress = .Press;
+ .WinoffRollover = .Rollover;
+ .WinoffDisable = .Disable;
+ }
+
+ map GFC_CtrlTheme_Bitmap_Control_Scroll =
GFC_Control_DefaultScroll_Style;
+ map GFC_Control = GFC_Control_DefaultScroll_Style;
+ }
+
+}
=======================================
***Additional files exist in this changeset.***
Reply all
Reply to author
Forward
0 new messages