#! /usr/bin/python -O
# -*- python -*-

# Slune
# Copyright (C) 2002-2003 Jean-Baptiste LAMY
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

# launch this script to generate the level

import math, os, os.path
import copy

import soya
import soya.model  as model
import soya.soya3d as soya3d
import soya.editor.main
import soya.land

import slune.level

lev = slune.level.Level()
w = soya3d.World(lev)
w.set_xyz(-20.0, -20.0, -20.0)
atm = soya3d.Atmosphere()
atm.ambient = (0.6, 0.6, 0.5, 1.0)
atm.bg_color  = (0.6, 0.4, 0.3, 1.0)
atm.skyplane = 1
atm.sky_color = (1.0, 1.0, 0.2, 1.0)
atm.fog_color = (0.6, 0.4, 0.3, 1.0)
atm.fog_type    = 0
atm.fog_start   = 20.0
atm.fog_end     = 50.0
atm.fog         = 1
atm.fog_density = 0.001
atm.cloud = model.Material.get("clouds1")
w.atmosphere = atm
land = soya.land.Land()
land.from_image(model.Image("/home/blam/data/construct/racinde_2.png"))
land.map_size = 8
land.scale_factor = 1.5
land.multiply_height(30.0)
land.set_texture_layer(model.Material.get("sand1"),  0.0,  13.0)
land.set_texture_layer(model.Material.get("grass1"), 12.0,  17.0)
land.set_texture_layer(model.Material.get("grass2"),  16.0, 22.0)
land.set_texture_layer(model.Material.get("rocks1"),  21.0, 50.0)

import Image

circuit = Image.open("/home/blam/data/construct/racinde_1.png")
m = model.Material.get("ground5")
i = 0
while(i < 129):
  j = 0
  while(j < 129):
    if circuit.getpixel((i, j)) == (0, 0, 0):
      land.set_texture(i, j, m)
    j = j + 1
  i = i + 1

circuit = Image.open("/home/blam/data/construct/racinde_3.png")
m = model.Material.get("ground6")
i = 0
while(i < 129):
  j = 0
  while(j < 129):
    if circuit.getpixel((i, j)) == (0, 0, 0):
      land.set_texture(i, j, m)
    j = j + 1
  i = i + 1


w.set_shape(land)


ww = soya3d.World()

w2 = soya3d.World.get("construct-racinde")
i = 0
while (i < 3):
  w3 = w2.children[i]
  for face in w3:
    ww.add(face)
  i = i + 1

v = soya3d.Volume(w)
shap = ww.shapify()
shap.subdivide(50, 30.0)
shap.build_tree()
v.set_shape(shap)
v.set_xyz(20.0, 20.0, 20.0)



w.filename = "world-racinde"
w.save()

lev.filename = "level-racinde"
lev.save()



print '[ OK ]'


# lev = slune.level.Level()
# w = soya3d.World(lev)
# w.set_xyz(-20.0, -20.0, -20.0)
# atm = soya3d.Atmosphere()
# atm.ambient = (0.3, 0.3, 0.3, 1.0)
# atm.bg_color  = (0.2, 0.1, 0.4, 1.0)
# atm.skyplane = 1
# atm.sky_color = (1.0, 1.0, 0.5, 1.0)
# atm.fog_color = (0.2, 0.1, 0.4, 1.0)
# atm.fog_type    = 0
# atm.fog_start   = 10.0
# atm.fog_end     = 50.0
# atm.fog         = 1
# atm.fog_density = 0.0
# atm.cloud = model.Material.get("clouds1")
# w.atmosphere = atm
# land = soya.land.Land()
# land.from_image(os.path.join(model.Image.PATH, "map.png"))
# land.map_size = 8
# land.scale_factor = 1.5
# land.multiply_height(50.0)
# land.set_texture_layer(model.Material.get("grass1"),  0.0,  15.0)
# land.set_texture_layer(model.Material.get("rocks1"), 15.0,  21.0)
# land.set_texture_layer(model.Material.get("snow1"),  21.0, 50.0)
# w.set_shape(land)
# light = soya3d.Light(lev)
# light.set_xyz(20.0, 30.0, 20.0)

# lev.filename = "at_the_mountain"

# lev.save()

# print "Done."
