khanat-opennel-code/code/nel/tools/build_gamedata/generators/generate_ecosystem_projects.py
2014-09-10 16:00:13 +02:00

278 lines
10 KiB
Python
Executable file

#!/usr/bin/python
#
# \file generate_ecosystem_projects.py
# \brief Run all setup processes
# \date 2010-09-02 10:36GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Generate ecosystem projects
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../configuration")
if os.path.isfile("generate_ecosystem_projects.log"):
os.remove("generate_ecosystem_projects.log")
log = open("generate_ecosystem_projects.log", "w")
from scripts import *
from buildsite import *
from tools import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Generate ecosystem projects")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template"
mkPath(log, templateDir)
os.chdir("..")
# Scroll down to add an ecosystem.
DefaultShapeExportOptExportLighting = "true"
DefaultShapeExportOptShadow = "true"
DefaultShapeExportOptLightingLimit = "1"
DefaultShapeExportOptLumelSize = "0.25"
DefaultShapeExportOptOversampling = "1"
DefaultShapeExportOpt8BitsLightmap = "true"
DefaultShapeExportOptLightmapLog = "true"
DefaultTextureMulSizeValue = "1.5"
DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ]
DefaultMapSubdirectories = [ ]
DefaultTileDirectories = [ ]
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = DefaultMapSubdirectories
TileDirectories = DefaultTileDirectories
PreGenDateTimeStamp = None
PreGenEcosystemName = None
PreGenDatabaseRootName = None
PreGenCoarseMeshTextureNames = None
PreGenMultipleTilesPostfix = None
PreGenMapSubdirectories = None
PreGenTileSourceDirectories = None
def transformLine(line):
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp)
newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName)
newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName)
newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames)
newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix)
newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories)
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting)
newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow)
newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit)
newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize)
newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling)
newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap)
newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog)
newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue)
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
return newline
def generateFile(sourceFile, destFile):
srcf = open(sourceFile, "r")
dstf = open(destFile, "w")
printLog(log, "WRITE " + destFile)
for line in srcf:
dstf.write(transformLine(line))
dstf.close()
srcf.close()
def generateEcosystem(ecosystemName, databaseRootName):
global PreGenEcosystemName
PreGenEcosystemName = ecosystemName
global PreGenDatabaseRootName
PreGenDatabaseRootName = databaseRootName
global PreGenDateTimeStamp
PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
global PreGenMultipleTilesPostfix
PreGenMultipleTilesPostfix = ""
global PreGenCoarseMeshTextureNames
PreGenCoarseMeshTextureNames = ""
global PreGenTileSourceDirectories
PreGenTileSourceDirectories = ""
for suffix in SeasonSuffixes:
PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n"
PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n"
for tiledir in TileDirectories:
PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n"
global PreGenMapSubdirectories
PreGenMapSubdirectories = ""
for subdir in MapSubdirectories:
PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n"
destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName
mkPath(log, destDir)
generateFile(templateDir + "/process.py", destDir + "/process.py")
generateFile(templateDir + "/directories.py", destDir + "/directories.py")
return
# Add new ecosystems below this line.
# DESERT
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ]
TileDirectories += [ "1.5-marecage_profond" ]
TileDirectories += [ "1-marecages" ]
TileDirectories += [ "2-citees" ]
TileDirectories += [ "3-fond_canyon" ]
TileDirectories += [ "4.2-boisbandeclair" ]
TileDirectories += [ "4.5-desert2boisbande" ]
TileDirectories += [ "4-falaise_bois_bande" ]
TileDirectories += [ "5-falaise_normales" ]
TileDirectories += [ "6.5-desertalternatif" ]
TileDirectories += [ "6-desert" ]
TileDirectories += [ "7-routes" ]
TileDirectories += [ "8-foretbrule" ]
generateEcosystem("desert", "fyros")
# JUNGLE
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ]
TileDirectories += [ "10-crevassejungle" ]
TileDirectories += [ "11-paroisjungle" ]
TileDirectories += [ "12-vasejungle" ]
TileDirectories += [ "1-junglemousse" ]
TileDirectories += [ "2-junglefeuilles" ]
TileDirectories += [ "3-jungleherbesseche" ]
TileDirectories += [ "4-jungleherbevieille" ]
TileDirectories += [ "5-jungleterreaux" ]
TileDirectories += [ "6-junglegoo" ]
TileDirectories += [ "7-sciurejungle" ]
TileDirectories += [ "8-terrejungle" ]
TileDirectories += [ "9-falaisejungle" ]
TileDirectories += [ "Transitions" ]
generateEcosystem("jungle", "jungle")
# PRIMES RACINES
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ]
MapSubdirectories += [ "batiments" ]
TileDirectories = [ ]
TileDirectories += [ "PR-creux" ]
TileDirectories += [ "PR-dome-moussu" ]
TileDirectories += [ "PR-kitiniere" ]
TileDirectories += [ "PR-mousse-licken" ]
TileDirectories += [ "PR-mousse-spongieus" ]
TileDirectories += [ "PR-parois" ]
TileDirectories += [ "PR-sol-mousse" ]
TileDirectories += [ "PR-souche" ]
TileDirectories += [ "PR-stalagmite" ]
TileDirectories += [ "PR-terre" ]
TileDirectories += [ "aditif" ]
generateEcosystem("primes_racines", "primes_racines")
# LACUSTRE
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
ShapeExportOptShadow = DefaultShapeExportOptShadow
ShapeExportOptLightingLimit = "0"
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
ShapeExportOptOversampling = "8"
ShapeExportOpt8BitsLightmap = "false"
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
TextureMulSizeValue = DefaultTextureMulSizeValue
SeasonSuffixes = DefaultSeasonSuffixes
MapSubdirectories = [ ]
MapSubdirectories += [ "vegetations" ]
TileDirectories = [ ]
TileDirectories += [ "1a-sable-marin" ]
TileDirectories += [ "1-plages" ]
TileDirectories += [ "2-iles" ]
TileDirectories += [ "2-ilesa" ]
TileDirectories += [ "2-iles-marines" ]
TileDirectories += [ "3-fondmarin2plage" ]
TileDirectories += [ "4-marecages" ]
TileDirectories += [ "5-marecages" ]
TileDirectories += [ "5-parois-marine" ]
TileDirectories += [ "6-fond_marin" ]
TileDirectories += [ "7-bassesiles" ]
TileDirectories += [ "7-mousseter" ]
TileDirectories += [ "7-racines" ]
TileDirectories += [ "8-mousse_marine" ]
TileDirectories += [ "constructible" ]
generateEcosystem("lacustre", "tryker")
printLog(log, "")
log.close()