forked from speed-dreams/speed-dreams-code
New tgfdata library, a high level API to access to the data in the XML files (work in progress)
git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@3173 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 00dcfde4e35244f23c5ee7b4470ceba902b2db04 Former-commit-id: cf199b77cfe66c017b6c2df2b9b61d7c3ccfe13f
This commit is contained in:
parent
ea1541a083
commit
af88ef1cca
9 changed files with 579 additions and 197 deletions
|
@ -395,52 +395,7 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
|
|||
FOREACH(SDLIB_LIB ${ARGN})
|
||||
SET(SDLIB_FOUND_LIB TRUE)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR "")
|
||||
IF(SDLIB_LIB STREQUAL "client")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/client)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CLIENT_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "confscreens")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/confscreens)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CONFSCREENS_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "learning")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_LEARNING_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "math")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/math)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_MATH_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "networking")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_NETWORKING_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "portability")
|
||||
IF(SDLIB_LIB STREQUAL "portability")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/portability)
|
||||
ELSE(IN_SOURCETREE)
|
||||
|
@ -449,33 +404,6 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
|
|||
FIND_PATH(SDLIB_PORTABILITY_INCLUDE_DIR portability.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_PORTABILITY_INCLUDE_DIR portability.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_PORTABILITY_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "raceengineclient")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/raceengineclient)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACEENGINECLIENT_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "racescreens")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/racescreens)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACESCREENS_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "robottools")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_ROBOTTOOLS_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgf")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
|
||||
|
@ -494,6 +422,24 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
|
|||
FIND_PATH(SDLIB_TGFCLIENT_INCLUDE_DIR tgfclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_TGFCLIENT_INCLUDE_DIR tgfclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TGFCLIENT_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgfdata")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/tgfdata)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_TGFDATA_INCLUDE_DIR tgfdata.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_TGFDATA_INCLUDE_DIR tgfdata.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TGFDATA_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "math")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/math)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_MATH_INCLUDE_DIR linalg_t.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" math tmath)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_MATH_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "txml")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
|
||||
|
@ -503,12 +449,75 @@ MACRO(ADD_SDLIB_INCLUDEDIR)
|
|||
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_TXML_INCLUDE_DIR xml.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_TXML_INCLUDE_DIR)
|
||||
ELSE(SDLIB_LIB STREQUAL "client")
|
||||
ELSEIF(SDLIB_LIB STREQUAL "robottools")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_ROBOTTOOLS_INCLUDE_DIR robottools.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_ROBOTTOOLS_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "learning")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_LEARNING_INCLUDE_DIR learn_debug.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include PATH_SUFFIXES "" learning)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_LEARNING_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "client")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/client)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_CLIENT_INCLUDE_DIR client.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CLIENT_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "confscreens")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/confscreens)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_CONFSCREENS_INCLUDE_DIR confscreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_CONFSCREENS_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "networking")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_NETWORKING_INCLUDE_DIR network.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_NETWORKING_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "raceengineclient")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/raceengineclient)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_RACEENGINECLIENT_INCLUDE_DIR raceengineclient.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACEENGINECLIENT_INCLUDE_DIR)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "racescreens")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SOURCE_DIR}/src/libs/racescreens)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(INCLUDE_CANDIDATE ${SD_INCLUDEDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include NO_DEFAULT_PATH)
|
||||
FIND_PATH(SDLIB_RACESCREENS_INCLUDE_DIR racescreens.h PATHS ${INCLUDE_CANDIDATE} /usr/include /usr/local/include)
|
||||
SET(SDLIB_EXTRA_INCLUDEDIR SDLIB_RACESCREENS_INCLUDE_DIR)
|
||||
ELSE(SDLIB_LIB STREQUAL "portability")
|
||||
SET(SDLIB_FOUND_LIB FALSE)
|
||||
IF(NOT SDLIB_LIB STREQUAL "OPTIONAL")
|
||||
MESSAGE(WARNING ": ${SDLIB_LIB} is not a Speed Dreams library")
|
||||
ENDIF(NOT SDLIB_LIB STREQUAL "OPTIONAL")
|
||||
ENDIF(SDLIB_LIB STREQUAL "client")
|
||||
ENDIF(SDLIB_LIB STREQUAL "portability")
|
||||
IF(SDLIB_FOUND_LIB)
|
||||
IF(${SDLIB_EXTRA_INCLUDEDIR})
|
||||
SET(SDLIB_INCLUDE_DIRS ${SDLIB_INCLUDE_DIRS} ${${SDLIB_EXTRA_INCLUDEDIR}})
|
||||
|
@ -551,13 +560,63 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
|
|||
IF(NOT SDLIB_IGNORE)
|
||||
SET(SDLIB_FOUND_LIB TRUE)
|
||||
SET(SDLIB_EXTRA_LIBRARY "")
|
||||
#Use IF(TARGET ${TOCSLIB_LIB}) from CMake 2.6
|
||||
#Use IF(TARGET ${SDLIB_LIB}) from CMake 2.6
|
||||
GET_TARGET_PROPERTY(SDLIB_TARGET_LOCATION ${SDLIB_LIB}${SDLIB_TARGET_SUFFIX} LOCATION)
|
||||
IF(NOT SDLIB_TARGET_LOCATION STREQUAL "NOTFOUND")
|
||||
SET(SDLIB_LIBRARIES ${SDLIB_LIBRARIES} ${SDLIB_LIB}${SDLIB_TARGET_SUFFIX})
|
||||
ELSE(NOT SDLIB_TARGET_LOCATION STREQUAL "NOTFOUND")
|
||||
MESSAGE(WARNING "Warning: didn't found target ${SDLIB_LIB}")
|
||||
IF(SDLIB_LIB STREQUAL "client")
|
||||
IF(SDLIB_LIB STREQUAL "tgf")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TGF_LIBRARY tgf${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
|
||||
PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGF_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgfclient")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfclient)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TGFCLIENT_LIBRARY tgfclient PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFCLIENT_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgfdata")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfdata)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TGFDATA_LIBRARY tgfdata PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFDATA_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "txml")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TXML_LIBRARY txml${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
|
||||
PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TXML_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "robottools")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_ROBOTTOOLS_LIBRARY robottools PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_ROBOTTOOLS_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "learning")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_LEARNING_LIBRARY learning PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_LEARNING_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "client")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/client)
|
||||
ELSE(IN_SOURCETREE)
|
||||
|
@ -573,14 +632,6 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
|
|||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_CONFSCREENS_LIBRARY confscreens PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_CONFSCREENS_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "learning")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/learning)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_LEARNING_LIBRARY learning PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_LEARNING_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "networking")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/modules/networking)
|
||||
|
@ -605,40 +656,6 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
|
|||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_RACESCREENS_LIBRARY racescreens ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_RACESCREENS_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "robottools")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/robottools)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_ROBOTTOOLS_LIBRARY robottools PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_ROBOTTOOLS_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgf")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgf)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TGF_LIBRARY tgf${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
|
||||
PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGF_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "tgfclient")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/tgfclient)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TGFCLIENT_LIBRARY tgfclient PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TGFCLIENT_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "txml")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/libs/txml)
|
||||
ELSE(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SD_LIBDIR_ABS})
|
||||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TXML_LIBRARY txml${SDLIB_TARGET_SUFFIX} PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib
|
||||
PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TXML_LIBRARY)
|
||||
ELSEIF(SDLIB_LIB STREQUAL "ssggraph")
|
||||
IF(IN_SOURCETREE)
|
||||
SET(LIBRARY_CANDIDATE ${SOURCE_DIR}/src/modules/graphic/ssggraph)
|
||||
|
@ -655,12 +672,12 @@ MACRO(ADD_SDLIB_LIBRARY TARGET)
|
|||
ENDIF(IN_SOURCETREE)
|
||||
FIND_LIBRARY(SDLIB_TRACK_LIBRARY track PATHS ${LIBRARY_CANDIDATE} /usr/lib /usr/local/lib PATH_SUFFIXES "" lib)
|
||||
SET(SDLIB_EXTRA_LIBRARY SDLIB_TRACK_LIBRARY)
|
||||
ELSE(SDLIB_LIB STREQUAL "client")
|
||||
ELSE(SDLIB_LIB STREQUAL "tgf")
|
||||
SET(SDLIB_FOUND_LIB FALSE)
|
||||
IF(NOT SDLIB_LIB STREQUAL "OPTIONAL" AND NOT SDLIB_LIB STREQUAL "STATIC")
|
||||
MESSAGE(WARNING ": ${SDLIB_LIB} is not a Speed Dreams library")
|
||||
ENDIF(NOT SDLIB_LIB STREQUAL "OPTIONAL" AND NOT SDLIB_LIB STREQUAL "STATIC")
|
||||
ENDIF(SDLIB_LIB STREQUAL "client")
|
||||
ENDIF(SDLIB_LIB STREQUAL "tgf")
|
||||
IF(SDLIB_FOUND_LIB)
|
||||
IF(${SDLIB_EXTRA_LIBRARY})
|
||||
SET(SDLIB_LIBRARIES ${SDLIB_LIBRARIES} ${${SDLIB_EXTRA_LIBRARY}})
|
||||
|
|
|
@ -3,6 +3,7 @@ INCLUDE("../../cmake/macros.cmake")
|
|||
ADD_SUBDIRECTORY(txml)
|
||||
ADD_SUBDIRECTORY(tgf)
|
||||
ADD_SUBDIRECTORY(tgfclient)
|
||||
ADD_SUBDIRECTORY(tgfdata)
|
||||
ADD_SUBDIRECTORY(robottools)
|
||||
ADD_SUBDIRECTORY(racescreens)
|
||||
ADD_SUBDIRECTORY(confscreens)
|
||||
|
|
|
@ -7,11 +7,11 @@ ADD_SDL_INCLUDEDIR()
|
|||
ADD_OSSPEC_INCLUDEDIR()
|
||||
ADD_SDLIB_INCLUDEDIR(txml portability)
|
||||
|
||||
SET(TGF_HEADERS os.h tgf.h modinfo.h carinfo.h)
|
||||
SET(TGF_HEADERS os.h tgf.h modinfo.h)
|
||||
SET(TGF_SOURCES directory.cpp file.cpp filesetup.cpp
|
||||
formula.cpp hash.cpp module.cpp modinfo.cpp os.cpp
|
||||
params.cpp profiler.cpp schedulespy.cpp tgf.cpp trace.cpp
|
||||
carinfo.cpp ${TGF_HEADERS})
|
||||
${TGF_HEADERS})
|
||||
|
||||
IF(WIN32)
|
||||
# DLL export stuff under Windows (to avoid .def file)
|
||||
|
@ -38,5 +38,7 @@ IF(WIN32)
|
|||
ELSE(WIN32)
|
||||
SD_INSTALL_FILES(LIB lib TARGETS tgf)
|
||||
ENDIF(WIN32)
|
||||
|
||||
SD_INSTALL_FILES(INCLUDE FILES ${TGF_HEADERS})
|
||||
|
||||
SD_INSTALL_FILES(DATA config FILES params.dtd)
|
||||
|
|
39
src/libs/tgfdata/CMakeLists.txt
Executable file
39
src/libs/tgfdata/CMakeLists.txt
Executable file
|
@ -0,0 +1,39 @@
|
|||
INCLUDE(../../../cmake/macros.cmake)
|
||||
|
||||
#PROJECT(tgfdata)
|
||||
|
||||
ADD_INTERFACE_INCLUDEDIR()
|
||||
ADD_OSSPEC_INCLUDEDIR()
|
||||
ADD_SDLIB_INCLUDEDIR(portability txml math tgf)
|
||||
|
||||
SET(TGFDATA_HEADERS tgfdata.h carinfo.h racemanagers.h)
|
||||
SET(TGFDATA_SOURCES carinfo.cpp racemanagers.cpp ${TGFDATA_HEADERS})
|
||||
|
||||
IF(WIN32)
|
||||
# DLL export stuff under Windows (to avoid .def file)
|
||||
ADD_DEFINITIONS(-DTGFDATA_DLL)
|
||||
ENDIF(WIN32)
|
||||
|
||||
# Disable developer warning
|
||||
IF (COMMAND CMAKE_POLICY)
|
||||
CMAKE_POLICY(SET CMP0003 NEW)
|
||||
ENDIF(COMMAND CMAKE_POLICY)
|
||||
|
||||
ADD_LIBRARY(tgfdata SHARED ${TGFDATA_SOURCES})
|
||||
|
||||
IF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
ADD_LIBRARY(tgfdata_static STATIC ${TGFDATA_SOURCES})
|
||||
ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH)
|
||||
|
||||
ADD_SDLIB_LIBRARY(tgfdata txml tgf)
|
||||
|
||||
ADD_SDL_LIBRARY(tgfdata)
|
||||
|
||||
IF(WIN32)
|
||||
SD_INSTALL_FILES(BIN TARGETS tgfdata)
|
||||
ELSE(WIN32)
|
||||
SD_INSTALL_FILES(LIB lib TARGETS tgfdata)
|
||||
ENDIF(WIN32)
|
||||
|
||||
SD_INSTALL_FILES(INCLUDE FILES ${TGFDATA_HEADERS})
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
created : July 2009
|
||||
copyright : (C) 2009 Brian Gavin
|
||||
web : speed-dreams.sourceforge.net
|
||||
version : $Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
|
@ -1,74 +1,77 @@
|
|||
/***************************************************************************
|
||||
|
||||
file : carinfo.h
|
||||
created : July 2009
|
||||
copyright : (C) 2009 Brian Gavin
|
||||
web : speed-dreams.sourceforge.net
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
#ifndef __CARINFO__H__
|
||||
#define __CARINFO__H__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "tgf.h"
|
||||
|
||||
/* Singleton holding information on available cars and categories */
|
||||
|
||||
|
||||
class TGF_API CarData
|
||||
{
|
||||
public:
|
||||
std::string strName; // XML file / folder name (ex: "sc-boxer-96")
|
||||
std::string strRealName; // User friendly name (ex: "SC Boxer 96").
|
||||
std::string strCategoryName; // Category name (ex: "LS-GT1").
|
||||
std::string strCategoryRealName; // Category name (ex: "Long Day Series GT1").
|
||||
std::string strXMLPath; // Path-name of the car XML file.
|
||||
};
|
||||
|
||||
class TGF_API CarInfo
|
||||
{
|
||||
public:
|
||||
|
||||
// Accessor to the unique instance of the singleton.
|
||||
static CarInfo* self();
|
||||
|
||||
const std::vector<std::string>& GetCategoryNames() const;
|
||||
const std::vector<std::string>& GetCategoryRealNames() const;
|
||||
|
||||
CarData* GetCarData(const std::string& strCarName) const;
|
||||
std::string GetCarRealName(const std::string& strCarName) const;
|
||||
CarData* GetCarDataFromRealName(const std::string& strCarRealName) const;
|
||||
|
||||
std::vector<CarData*> GetCarsInCategory(const std::string& strCatName = "All") const;
|
||||
std::vector<CarData*> GetCarsInCategoryRealName(const std::string& strCatRealName = "All") const;
|
||||
std::vector<std::string> GetCarNamesInCategory(const std::string& strCatName = "All") const;
|
||||
std::vector<std::string> GetCarRealNamesInCategory(const std::string& strCatName = "All") const;
|
||||
|
||||
void print() const;
|
||||
|
||||
protected:
|
||||
|
||||
// Protected constructor : clients can not use it.
|
||||
CarInfo();
|
||||
|
||||
protected:
|
||||
|
||||
// The singleton itself.
|
||||
static CarInfo* m_pSelf;
|
||||
|
||||
// Its private data.
|
||||
struct PrivateData* m_priv;
|
||||
};
|
||||
|
||||
#endif /* __CARINFO__H__ */
|
||||
/***************************************************************************
|
||||
|
||||
file : carinfo.h
|
||||
created : July 2009
|
||||
copyright : (C) 2009 Brian Gavin
|
||||
web : speed-dreams.sourceforge.net
|
||||
version : $Id$
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef __CARINFO__H__
|
||||
#define __CARINFO__H__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "tgf.h"
|
||||
|
||||
|
||||
/** @file
|
||||
Singleton holding information on available cars and categories
|
||||
*/
|
||||
|
||||
class TGF_API CarData
|
||||
{
|
||||
public:
|
||||
std::string strName; // XML file / folder name (ex: "sc-boxer-96")
|
||||
std::string strRealName; // User friendly name (ex: "SC Boxer 96").
|
||||
std::string strCategoryName; // Category name (ex: "LS-GT1").
|
||||
std::string strCategoryRealName; // Category name (ex: "Long Day Series GT1").
|
||||
std::string strXMLPath; // Path-name of the car XML file.
|
||||
};
|
||||
|
||||
class TGF_API CarInfo
|
||||
{
|
||||
public:
|
||||
|
||||
// Accessor to the unique instance of the singleton.
|
||||
static CarInfo* self();
|
||||
|
||||
const std::vector<std::string>& GetCategoryNames() const;
|
||||
const std::vector<std::string>& GetCategoryRealNames() const;
|
||||
|
||||
CarData* GetCarData(const std::string& strCarName) const;
|
||||
std::string GetCarRealName(const std::string& strCarName) const;
|
||||
CarData* GetCarDataFromRealName(const std::string& strCarRealName) const;
|
||||
|
||||
std::vector<CarData*> GetCarsInCategory(const std::string& strCatName = "All") const;
|
||||
std::vector<CarData*> GetCarsInCategoryRealName(const std::string& strCatRealName = "All") const;
|
||||
std::vector<std::string> GetCarNamesInCategory(const std::string& strCatName = "All") const;
|
||||
std::vector<std::string> GetCarRealNamesInCategory(const std::string& strCatName = "All") const;
|
||||
|
||||
void print() const;
|
||||
|
||||
protected:
|
||||
|
||||
// Protected constructor : clients can not use it.
|
||||
CarInfo();
|
||||
|
||||
protected:
|
||||
|
||||
// The singleton itself.
|
||||
static CarInfo* m_pSelf;
|
||||
|
||||
// Its private data.
|
||||
struct PrivateData* m_priv;
|
||||
};
|
||||
|
||||
#endif /* __CARINFO__H__ */
|
181
src/libs/tgfdata/racemanagers.cpp
Executable file
181
src/libs/tgfdata/racemanagers.cpp
Executable file
|
@ -0,0 +1,181 @@
|
|||
/***************************************************************************
|
||||
|
||||
file : racemanagers.cpp
|
||||
created : December 2010
|
||||
copyright : (C) 2010 Jean-Philippe Meuret
|
||||
web : speed-dreams.sourceforge.net
|
||||
version : $Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
|
||||
#include <raceman.h>
|
||||
|
||||
#include "racemanagers.h"
|
||||
|
||||
|
||||
struct Private
|
||||
{
|
||||
// One GfRaceManager structure for each car (no special order).
|
||||
std::vector<GfRaceManager> vecRaceMans;
|
||||
|
||||
// Map for quick access to GfRaceManager by id
|
||||
std::map<std::string, GfRaceManager*> mapRaceMansById;
|
||||
|
||||
// Vector of type names, ordered by decreasing priority.
|
||||
std::vector<std::string> vecTypes;
|
||||
};
|
||||
|
||||
|
||||
GfRaceManagers* GfRaceManagers::_pSelf = 0;
|
||||
|
||||
GfRaceManagers *GfRaceManagers::self()
|
||||
{
|
||||
if (!_pSelf)
|
||||
_pSelf = new GfRaceManagers;
|
||||
|
||||
return _pSelf;
|
||||
}
|
||||
|
||||
static bool hasHigherPriority(const GfRaceManager& left, const GfRaceManager& right)
|
||||
{
|
||||
return left.getPriority() > right.getPriority();
|
||||
}
|
||||
|
||||
GfRaceManagers::GfRaceManagers()
|
||||
{
|
||||
_pPrivate = new Private;
|
||||
|
||||
// Get the list of racemans from the xml files available in GetDataDir()/config/raceman folder
|
||||
tFList* lstFiles = GfDirGetListFiltered("config/raceman", "", PARAMEXT);
|
||||
if (!lstFiles)
|
||||
{
|
||||
GfLogFatal("No race manager available in %sconfig/raceman\n", GetDataDir());
|
||||
return;
|
||||
}
|
||||
|
||||
// For each found XML file :
|
||||
tFList* pFile = lstFiles;
|
||||
do
|
||||
{
|
||||
GfLogDebug("GfRaceManagers::GfRaceManagers() : Examining %s\n", pFile->name);
|
||||
|
||||
// Open the XML descriptor file (look first in user settings, then in the install folder).
|
||||
std::ostringstream ossRaceManFileName;
|
||||
ossRaceManFileName << GetLocalDir() << "config/raceman/" << pFile->name;
|
||||
void* hparmRaceMan = GfParmReadFile(ossRaceManFileName.str().c_str(), GFPARM_RMODE_STD);
|
||||
if (!hparmRaceMan)
|
||||
{
|
||||
ossRaceManFileName.str("");
|
||||
ossRaceManFileName << "config/raceman/" << pFile->name;
|
||||
hparmRaceMan = GfParmReadFile(ossRaceManFileName.str().c_str(), GFPARM_RMODE_STD);
|
||||
|
||||
// We got if from the data folder : write it to the user settings.
|
||||
if (hparmRaceMan)
|
||||
{
|
||||
ossRaceManFileName.str("");
|
||||
ossRaceManFileName << GetLocalDir() << "config/raceman/" << pFile->name;
|
||||
GfParmWriteFile(ossRaceManFileName.str().c_str(), hparmRaceMan, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
std::string strRaceManId(pFile->name, strlen(pFile->name) - strlen(PARAMEXT));
|
||||
if (!hparmRaceMan) {
|
||||
GfLogWarning("GfRaceManagers : Ignoring race manager %s (failed to read from config/raceman/%s in %s and %s)\n",
|
||||
strRaceManId.c_str(), pFile->name, GetLocalDir(), GetDataDir());
|
||||
continue;
|
||||
}
|
||||
|
||||
// Read race manager info and store it in the GfRaceManager structure.
|
||||
GfRaceManager raceMan;
|
||||
raceMan.setId(strRaceManId);
|
||||
raceMan.setName(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_NAME, "<unknown>"));
|
||||
raceMan.setType(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_TYPE, "<unknown>"));
|
||||
raceMan.setSubType(GfParmGetStr(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_SUBTYPE, ""));
|
||||
//raceMan.setDescriptorFileName(ossRaceManFileName.str());
|
||||
raceMan.setPriority((int)GfParmGetNum(hparmRaceMan, RM_SECT_HEADER, RM_ATTR_PRIO, NULL, 10000));
|
||||
raceMan.setDescriptorHandle(hparmRaceMan);
|
||||
|
||||
// Update the GfRaceManagers singleton.
|
||||
_pPrivate->vecRaceMans.push_back(raceMan);
|
||||
_pPrivate->mapRaceMansById[strRaceManId] = &_pPrivate->vecRaceMans.back();
|
||||
if (std::find(_pPrivate->vecTypes.begin(), _pPrivate->vecTypes.end(), raceMan.getType())
|
||||
== _pPrivate->vecTypes.end())
|
||||
_pPrivate->vecTypes.push_back(raceMan.getType());
|
||||
}
|
||||
while ((pFile = pFile->next) != lstFiles);
|
||||
|
||||
GfDirFreeList(lstFiles, NULL, true, true);
|
||||
|
||||
// Sort the race manager vector by priority.
|
||||
std::sort(_pPrivate->vecRaceMans.begin(), _pPrivate->vecRaceMans.end(), hasHigherPriority);
|
||||
|
||||
print();
|
||||
}
|
||||
|
||||
const std::vector<std::string>& GfRaceManagers::getTypes() const
|
||||
{
|
||||
return _pPrivate->vecTypes;
|
||||
}
|
||||
|
||||
GfRaceManager* GfRaceManagers::getRaceManager(const std::string& strId) const
|
||||
{
|
||||
std::map<std::string, GfRaceManager*>::const_iterator itRaceMan =
|
||||
_pPrivate->mapRaceMansById.find(strId);
|
||||
if (itRaceMan != _pPrivate->mapRaceMansById.end())
|
||||
return itRaceMan->second;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
GfRaceManager* GfRaceManagers::getRaceManagerWithName(const std::string& strName) const
|
||||
{
|
||||
std::vector<GfRaceManager>::iterator itRaceMan;
|
||||
for (itRaceMan = _pPrivate->vecRaceMans.begin(); itRaceMan != _pPrivate->vecRaceMans.end(); itRaceMan++)
|
||||
if (itRaceMan->getName() == strName)
|
||||
return &(*itRaceMan);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const std::vector<GfRaceManager*> GfRaceManagers::getRaceManagersWithType(const std::string& strType) const
|
||||
{
|
||||
std::vector<GfRaceManager*> vecRaceMans;
|
||||
|
||||
std::vector<GfRaceManager>::iterator itRaceMan;
|
||||
for (itRaceMan = _pPrivate->vecRaceMans.begin(); itRaceMan != _pPrivate->vecRaceMans.end(); itRaceMan++)
|
||||
if (strType.empty() || itRaceMan->getType() == strType)
|
||||
vecRaceMans.push_back(&(*itRaceMan));
|
||||
|
||||
return vecRaceMans;
|
||||
}
|
||||
|
||||
void GfRaceManagers::print() const
|
||||
{
|
||||
GfLogDebug("GfRaceManagers : %d race managers, %d types\n",
|
||||
_pPrivate->vecRaceMans.size(), _pPrivate->vecTypes.size());
|
||||
std::vector<std::string>::const_iterator itType;
|
||||
for (itType = _pPrivate->vecTypes.begin();
|
||||
itType != _pPrivate->vecTypes.end(); itType++)
|
||||
{
|
||||
GfLogDebug(" %s type :\n", itType->c_str());
|
||||
const std::vector<GfRaceManager*> vecRaceMans =
|
||||
getRaceManagersWithType(itType->c_str());
|
||||
std::vector<GfRaceManager*>::const_iterator itRaceMan;
|
||||
for (itRaceMan = vecRaceMans.begin(); itRaceMan != vecRaceMans.end(); itRaceMan++)
|
||||
GfLogDebug(" %s : subtype='%s', name='%s'\n", (*itRaceMan)->getId().c_str(),
|
||||
(*itRaceMan)->getSubType().c_str(), (*itRaceMan)->getName().c_str());
|
||||
}
|
||||
}
|
94
src/libs/tgfdata/racemanagers.h
Executable file
94
src/libs/tgfdata/racemanagers.h
Executable file
|
@ -0,0 +1,94 @@
|
|||
/***************************************************************************
|
||||
|
||||
file : racemanagers.h
|
||||
created : December 2010
|
||||
copyright : (C) 2010 Jean-Philippe Meuret
|
||||
web : speed-dreams.sourceforge.net
|
||||
version : $Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef __TGFRACEMANAGERS__H__
|
||||
#define __TGFRACEMANAGERS__H__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "tgfdata.h"
|
||||
|
||||
|
||||
/** @file
|
||||
Singleton holding information on the available race managers
|
||||
*/
|
||||
|
||||
class TGFDATA_API GfRaceManager
|
||||
{
|
||||
public:
|
||||
|
||||
const std::string& getId() const { return _strId; }; // TODO: => file name ?
|
||||
const std::string& getName() const { return _strName; };
|
||||
const std::string& getType() const { return _strType; };
|
||||
const std::string& getSubType() const { return _strSubType; };
|
||||
const int getPriority() const { return _nPriority; };
|
||||
//const std::string& getDescriptorFileName() const { return _strDescFile; }; //
|
||||
void* getDescriptorHandle() const { return _hparmHandle; }; //
|
||||
|
||||
void setId(const std::string& strId) { _strId = strId; };
|
||||
void setName(const std::string& strName) { _strName = strName; };
|
||||
void setType(const std::string& strType) { _strType = strType ; };
|
||||
void setSubType(const std::string& strSubType) { _strSubType = strSubType; };
|
||||
void setPriority(int nPriority) { _nPriority = nPriority; };
|
||||
//void setDescriptorFileName(const std::string& strDescFile) { _strDescFile = strDescFile; };
|
||||
void setDescriptorHandle(void* hparmHandle) { _hparmHandle = hparmHandle; };
|
||||
|
||||
protected:
|
||||
|
||||
std::string _strId; // XML file name (ex: quickrace, singleevent-endurance, championship-sc)
|
||||
std::string _strName; // User friendly full name (ex: Quick Race, Supercar Championship).
|
||||
std::string _strType; // User friendly type name (ex: Quick Race, Single Event, Championship).
|
||||
std::string _strSubType; // User friendly sub-type name (ex: "", Endurance, Challenge, Supercars").
|
||||
std::string _strDescFile; // Path-name of the XML descriptor file.
|
||||
int _nPriority; // Gives the order of the buttons in the race select menu
|
||||
void* _hparmHandle; // Params handle to the descriptor file.
|
||||
};
|
||||
|
||||
class TGFDATA_API GfRaceManagers
|
||||
{
|
||||
public:
|
||||
|
||||
// Accessor to the unique instance of the singleton.
|
||||
static GfRaceManagers* self();
|
||||
|
||||
const std::vector<std::string>& getTypes() const;
|
||||
|
||||
GfRaceManager* getRaceManager(const std::string& strId) const;
|
||||
GfRaceManager* getRaceManagerWithName(const std::string& strName) const;
|
||||
|
||||
const std::vector<GfRaceManager*> getRaceManagersWithType(const std::string& strType = "") const;
|
||||
|
||||
void print() const;
|
||||
|
||||
protected:
|
||||
|
||||
// Protected constructor : clients cannot use it (singleton pattern).
|
||||
GfRaceManagers();
|
||||
|
||||
protected:
|
||||
|
||||
// The singleton itself.
|
||||
static GfRaceManagers* _pSelf;
|
||||
|
||||
// Its private data.
|
||||
struct Private* _pPrivate;
|
||||
};
|
||||
|
||||
#endif /* __TGFRACEMANAGERS__H__ */
|
44
src/libs/tgfdata/tgfdata.h
Executable file
44
src/libs/tgfdata/tgfdata.h
Executable file
|
@ -0,0 +1,44 @@
|
|||
/***************************************************************************
|
||||
tgfdata.h -- The Gaming Framework Data Manager API
|
||||
-------------------
|
||||
created : Sat Dec 11 22:32:14 CEST 2010
|
||||
copyright : (C) 2010 Jean-Philippe Meuret
|
||||
web : http:://www.speed-dreams.org
|
||||
version : $Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
/** @file
|
||||
The Gaming Framework Data Manager API.
|
||||
@version $Id$
|
||||
*/
|
||||
|
||||
#ifndef __TGFDATA__H__
|
||||
#define __TGFDATA__H__
|
||||
|
||||
// DLL exported symbols declarator for Windows.
|
||||
#ifdef WIN32
|
||||
# ifdef TGFDATA_DLL
|
||||
# define TGFDATA_API __declspec(dllexport)
|
||||
# else
|
||||
# define TGFDATA_API __declspec(dllimport)
|
||||
# endif
|
||||
#else
|
||||
# define TGFDATA_API
|
||||
#endif
|
||||
|
||||
#include "carinfo.h"
|
||||
#include "racemanagers.h"
|
||||
|
||||
#endif /* __TGFDATA__H__ */
|
||||
|
||||
|
Loading…
Reference in a new issue