source: rc/puzzlebox_brainstorms_client_interface.py @ 11

Last change on this file since 11 was 11, checked in by sc, 13 years ago

server:

  • Debugging output added

configuration:

  • Client Interface configuration defaults added

client:

  • time module import removed

client_interface:

  • initial checkin
  • Property svn:executable set to *
File size: 6.9 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#
4# Puzzlebox - Brainstorms - Client Interface
5#
6# Copyright Puzzlebox Productions, LLC (2010)
7#
8# Portions of this code have been previously
9# released under the GNU Pulic License (GPL) version 2
10# and is Copyright Steven M. Castellotti (2010)
11# For more information please refer to http://www.gnu.org/copyleft/gpl.htm
12#
13# Last Update: 2010.02.01
14#
15#####################################################################
16
17import os, sys
18import puzzlebox_brainstorms_configuration as configuration
19#import puzzlebox_logger
20
21#####################################################################
22# Globals
23#####################################################################
24
25DEBUG = 1
26
27SERVER_HOST = configuration.SERVER_HOST
28SERVER_PORT = configuration.SERVER_PORT
29
30DISPLAY_WINDOW_X_COORDINATE = configuration.DISPLAY_WINDOW_X_COORDINATE
31DISPLAY_WINDOW_Y_COORDINATE = configuration.DISPLAY_WINDOW_Y_COORDINATE
32DISPLAY_WINDOW_X_DIMENSION = configuration.DISPLAY_WINDOW_X_DIMENSION
33DISPLAY_WINDOW_Y_DIMENSION = configuration.DISPLAY_WINDOW_Y_DIMENSION
34
35WINDOW_BACKGROUND_COLOR = configuration.WINDOW_BACKGROUND_COLOR
36
37#####################################################################
38# Classes
39#####################################################################
40
41class puzzlebox_brainstorms_client:
42       
43        def __init__(self, log, \
44                     display_window_x_coordinate, \
45                     display_window_y_coordinate, \
46                     display_window_x_dimension, \
47                     display_window_y_dimension, \
48                     window_background_color, \
49                     DEBUG=DEBUG):
50       
51                self.log = log
52                self.DEBUG = self.DEBUG
53               
54                self.display_window_x_coordinate = display_window_x_coordinate
55                self.display_window_y_coordinate = display_window_y_coordinate
56                self.display_window_x_dimension = display_window_x_dimension
57                self.display_window_y_dimension = display_window_y_dimension
58                self.window_background_color = window_background_color
59               
60                #self.hostname = hostname
61                #self.port = port
62                #self.service_name = service_name
63                #self.target_name = target_name
64                #self.max_connection_attempts = max_connection_attempts
65               
66                if (os.name == "nt") or (os.name == "dos"):
67                        self.operating_system = "windows"
68                else:
69                        self.operating_system = os.name
70               
71                self.initialize_pygame()
72                #self.initialize_speech()
73               
74                self.pygame.FLIP = FLIP
75               
76                self.draw_background()
77               
78                #self.pointer = thinking_cap_pointer(self.pygame, \
79                                                                                                                #self.screen, \
80                                                                                                                #os.path.join(IMAGE_DIRECTORY, \
81                                                                                                                                                 #POINTER_IMAGE),
82                                                                                                                #self.DEBUG)
83                #self.action_message = 'Thinking Cap Demo'
84                #self.message = ''
85               
86                #self.initialize_menu(menu_letter_tree)
87               
88                self.update_display()
89       
90       
91        #####################################################################
92       
93        def initialize_pygame(self):
94               
95                import pygame
96                import pygame.font
97                import pygame.image
98                import pygame.locals
99               
100                os.environ['SDL_VIDEO_WINDOW_POS'] = "%i,%i" % (self.display_window_x_coordinate, \
101                                                                                                                                                self.display_window_y_coordinate)
102               
103                pygame.init()
104               
105                if (FLIP):
106                       
107                        self.screen = pygame.display.set_mode((self.display_window_x_dimension, \
108                                                                                                                                self.display_window_y_dimension), \
109                                                                                                                                pygame.HWSURFACE|pygame.DOUBLEBUF)
110               
111                else:
112               
113                        self.screen = pygame.display.set_mode((self.display_window_x_dimension, \
114                                                                                                                                self.display_window_y_dimension), \
115                                                                                                                                pygame.HWSURFACE)
116               
117               
118                if (self.DEBUG >= 2):
119                        print "Display Driver:",
120                        print pygame.display.get_driver()
121                        print "Display Info:",
122                        print pygame.display.Info()
123                        #print "Get Flags:",
124                        #print pygame.display.screen.get_flags()
125               
126               
127                self.pygame = pygame
128                self.pygame.FLIP = FLIP
129                self.pygame.mouse.set_visible(0)
130               
131               
132                pygame.display.set_caption('Puzzlebox Brainstorms - Client Interface')
133               
134                # Set Background
135                self.background = pygame.Surface(self.screen.get_size())
136                self.background.fill(self.window_background_color)
137                #self.background.set_alpha(0)
138                self.screen.blit(self.background, (0,0))
139       
140       
141        ##################################################################
142       
143        def start(self):
144               
145                self.update_screen = 0
146                clock = self.pygame.time.Clock()
147               
148                while 1:
149                       
150                        #update_screen = self.pointer.update()
151
152                        #if (update_screen):
153                                ## Redraw Background
154                                ##self.display_image(self.background_image)
155                                #self.draw_background()
156
157                                #for icon in self.icons:
158                                        #icon.display()
159
160                                #self.pointer.display()
161
162                                #self.draw_action_message()
163                                #self.draw_message()
164
165                                #self.update_display()
166
167
168                        #for icon in self.icons:
169                                #collision = icon.check_collision(self.pointer.location_rect())
170
171                                #if collision:
172                                        #if (icon.action != None):
173
174                                                #if self.DEBUG > 1:
175                                                        #print icon.action,
176
177                                                #if (icon.hits >= HITS_TO_CHANGE):
178                                                        #self.execute_action(icon.action)
179                                                        #icon.hits = 0
180
181
182                                                #else:
183                                                        #self.action_message = icon.action
184
185                                        #else:
186                                                #if self.DEBUG > 1:
187                                                        #print "bling!",
188
189                                        #if self.DEBUG > 1:
190                                                #print ":%i" % icon.hits
191
192
193                        clock.tick(60)
194                       
195                        for event in self.pygame.event.get():
196                               
197                                if event.type in (self.pygame.locals.QUIT):
198                                        sys.exit()
199                               
200                               
201                                elif event.type in self.pygame.locals.KEYDOWN:
202                                       
203                                        print event
204
205
206#####################################################################
207# Functions
208#####################################################################
209
210
211#####################################################################
212# Main
213#####################################################################
214
215if __name__ == '__main__':
216       
217        #log = puzzlebox_logger.puzzlebox_logger(logfile='mcc')
218        log = None
219       
220       
221        # Collect default settings and command line parameters
222        server_host = SERVER_HOST
223        server_port = SERVER_PORT
224        display_window_x_coordinate = DISPLAY_WINDOW_X_COORDINATE
225        display_window_y_coordinate = DISPLAY_WINDOW_Y_COORDINATE
226        display_window_x_dimension = DISPLAY_WINDOW_X_DIMENSION
227        display_window_y_dimension = DISPLAY_WINDOW_Y_DIMENSION
228        window_background_color = WINDOW_BACKGROUND_COLOR
229       
230       
231        for each in sys.argv:
232               
233                if each.startswith("--host="):
234                        server_host = each[ len("--host="): ]
235                if each.startswith("--port="):
236                        server_port = each[ len("--port="): ]
237       
238       
239        # Window Defaults
240        try:
241                display_window_x_coordinate = string.atoi(sys.argv[-4])
242                display_window_y_coordinate = string.atoi(sys.argv[-3])
243                display_window_x_dimension = string.atoi(sys.argv[-2])
244                display_window_y_dimension = string.atoi(sys.argv[-1])
245        except:
246                if DEBUG:
247                        print "Using default display coordinates"
248       
249       
250        interface = puzzlebox_brainstorms_client_interface( \
251                                             log, \
252                                             display_window_x_coordinate, \
253                                             display_window_y_coordinate, \
254                                             display_window_x_dimension, \
255                                             display_window_y_dimension, \
256                                             window_background_color, \
257                                             DEBUG=DEBUG)
258       
259        interface.start()
260
261
Note: See TracBrowser for help on using the repository browser.