Beispiel #1
0
 def OnGenClick(self, event):
     global config
     generator = self.nb.GetPageText(self.nb.GetSelection())
     if generator is not "Constants":
         configfile = open('assets/smg.conf', 'wb')
         config.write(configfile)
         configfile.close()
         self.genButton.Disable()
         self.hydroButton.Disable()
         self.logger.Clear()
         start = time.clock()
         self.logger.AppendText("Initializing map.\n")
         pub.sendMessage("draw.blank", '')
         self.tileMap = TileMap(config, generator)
         self.mapPanel.mapCanvas.tiles = self.tileMap.generate()
         gentime = time.clock() - start
         self.logger.AppendText("Finished generating in " + str(gentime) + "\n")
         self.genButton.Enable()
         self.hydroButton.Enable()
Beispiel #2
0
class smgMainFrame(wx.Frame):
   def __init__(self, parent, ID, title):
       global config
       wx.Frame.__init__(self, parent, ID, title, size=(200, 100))
       
       smgIcon = wx.Icon('assets/smg.ico', wx.BITMAP_TYPE_ICO, 16, 16)
       wx.Frame.SetIcon(self, smgIcon)
       self.mapPanel = MapPanel(self)
       
       font = wx.Font(12, wx.NORMAL, wx.NORMAL, wx.BOLD)
       self.genButton = wx.Button(self, -1, "Select a generator")
       self.genButton.SetFont(font)
       
       self.hydroButton = wx.Button(self, -1, "Redo hydrology")
       self.hydroButton.SetFont(font)
       
       self.windButton = wx.Button(self, -1, "Redo windmap")
       self.windButton.SetFont(font)

       self.logger = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.TE_READONLY)
       self.nb = ConfBook(self)
       
       pageKeys = {
                   "Constants" : "Map Constants",
                   "Domino" : "Domino Tilemap",
                   #"Perlin" : "Perlin Noise",
                   #"Fault" : "Fault Method",
                   #"Hills" : "Hill Algorithm"
                   }
       
       self.pages = {}

       for i in sorted(pageKeys.keys()):
           if config.has_section(i):
               self.pages[i] = NbPage(self.nb, {i:pageKeys[i]})
               self.nb.AddPage(self.pages[i], i)

       lrBox = wx.BoxSizer(wx.HORIZONTAL) #left-right split
       
       rBox = wx.BoxSizer(wx.VERTICAL) # right side of the frame

       lrBox.Add(self.mapPanel, 4, wx.EXPAND)
       rBox.Add(self.nb, 3, wx.EXPAND)
       rBox.Add(self.logger, 3, wx.EXPAND)
       rBox.Add(self.genButton, 1, wx.EXPAND)
       rBox.Add(self.hydroButton, 1, wx.EXPAND)
       rBox.Add(self.windButton, 1, wx.EXPAND)
       lrBox.Add(rBox, 1, wx.EXPAND)  
       self.SetAutoLayout(True)
       self.SetSizer(lrBox)
       self.Layout()
       self.genButton.Disable()
       self.hydroButton.Disable()
       
       self.Bind(wx.EVT_BUTTON, self.OnGenClick, self.genButton)
       self.Bind(wx.EVT_BUTTON, self.OnRedoHydrology, self.hydroButton)
       self.Bind(wx.EVT_BUTTON, self.OnRedoWind, self.windButton)
       self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnNbChange)
       self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter)
       
       pub.subscribe(self.OnLogText, "log.text")
       self.nb.SetSelection(1) 
       
   def OnNbChange(self, event):
       newPage = self.nb.GetSelection()

       newPageSection = self.nb.GetPageText(newPage)
       if newPageSection == "Constants":
           self.genButton.Disable()
           self.hydroButton.Disable()
           self.genButton.SetLabel("Select a generator")
       else:
           generatorType = self.pages[newPageSection].titleString
           self.genButton.SetLabel("Generate " + generatorType)
           if self.pages[newPageSection].validateValues() is False:
               self.genButton.Disable()
           else:
               self.genButton.Enable()
               
   def OnEnter(self, event):
       self.logger.AppendText("Pressed Enter\n")
       if self.genButton.Enabled is True:
           self.OnGenClick(event)
       
   def OnGenClick(self, event):
       global config
       generator = self.nb.GetPageText(self.nb.GetSelection())
       if generator is not "Constants":
           configfile = open('assets/smg.conf', 'wb')
           config.write(configfile)
           configfile.close()
           self.genButton.Disable()
           self.hydroButton.Disable()
           self.logger.Clear()
           start = time.clock()
           self.logger.AppendText("Initializing map.\n")
           pub.sendMessage("draw.blank", '')
           self.tileMap = TileMap(config, generator)
           self.mapPanel.mapCanvas.tiles = self.tileMap.generate()
           gentime = time.clock() - start
           self.logger.AppendText("Finished generating in " + str(gentime) + "\n")
           self.genButton.Enable()
           self.hydroButton.Enable()
           
   def OnRedoHydrology(self, event):
     self.tileMap.redoHydrology()
     
   def OnRedoWind(self, event):
     self.tileMap.redoWinds()
   
   def OnLogText(self, msg):
       self.logger.AppendText(msg.data)
import wx
import ConfigParser
from libs.SMGTilemap import TileMap
from wx.lib.pubsub import Publisher as pub
import datetime
import Image, ImageDraw

config = ConfigParser.ConfigParser()
config.read('../assets/smg.conf')

def logMessage(msg):
  print msg.data

#pub.subscribe(logMessage, "log.text")
start = datetime.datetime.now()
tileMap = TileMap(config, "Domino")
tiles = tileMap.generate()
stop = datetime.datetime.now()
gentime = stop - start
print "Finished generating in", gentime

tileColors = {
                           'elevation' : ["#006688", "#009900", "#AAAA66", "#999999", "#FFFFFF"],
                           'solarization' : ["#0000FF", "#00FFFF", "#00FF00", "#FFFF00", "#FF0000"],
                           'groundwater' : ["#003333", "#006666", "#009999", "#00CCCC", "#00FFFF"],
                           'getTopsoil' : ["#FFCC66", "#CCCC66", "#99CC66", "#66CC66", "#33CC66"],
                           'getMoisture' : ["#FF0000", "#E80017", "#D1002E", "#B90046", "#A2005D", "#8B0074", "#74008B", "#4600B9", "#2E00D1", "#1700E8", "#0000FF"],
                           'getTemperature' : ["#FFFFFF", "#FFFF99", "#FFFF00", "#FF9900", "#FF6600", "#00FFFF", "#66FFFF", "#99FFFF", "#CCFFFF"],
                           'windSpeed' : ["#0000FF", "#00FFFF", "#00FF00", "#FFFF00", "#FF0000"],
                          }