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()
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"], }