28
import flash.display.MovieClip;
29
import flash.display.Sprite;
31
import flash.geom.Point;
32
import flash.geom.Rectangle;
34
import flash.events.Event;
35
import flash.events.MouseEvent;
36
import flash.events.ProgressEvent;
37
import flash.events.KeyboardEvent;
38
import flash.ui.Keyboard;
40
import flash.net.FileReference;
43
import orfaust.CustomEvent;
44
import orfaust.containers.List;
47
public class Home extends Base
49
private var _aamap:Aamap;
51
private var _tool:ToolInterface;
52
private static var _pointer:MovieClip;
53
private static var _snapToGrid:Boolean = true;
55
private const ZOOM_FACTOR = .95;
56
private var _scale = 1;
57
private static var _cursor:Point = new Point(0,0);
59
private var _infoHandlerMouseDown:Boolean = false;
60
private const INFO_MAX_WIDTH = 230;
62
private var _draggingMap:Boolean = false;
63
private var _keyDown:List = new List;
68
override protected function init():void
70
pointer.visible = false;
73
// testing urls to load external maps
75
//var xmlUrl = 'aamap.php?url=';
77
//xmlUrl += 'resource.armagetronad.net/resource/ZURD/race/Crossdeath-1.0.1.aamap.xml';
78
//xmlUrl += 'resource.armagetronad.net/resource/ZURD/race/ecdmazed-1.aamap.xml';
79
//xmlUrl += 'resource.armagetronad.net/resource/hoop/motorace/tester-0.1.aamap.xml';
80
//xmlUrl += 'resource.armagetronad.net/resource/hoop/race/alba-1.6.aamap.xml';
83
//var xmlUrl = 'aamap/default-1.0.1.aamap.xml';
84
var xmlUrl = 'aamap/vectron-1.0.aamap.xml';
88
stage.addEventListener(Event.RESIZE,onStageResize,false,0,true);
91
infoHandler.addEventListener(MouseEvent.MOUSE_DOWN,handleInfoSize,false,0,true);
92
infoHandler.addEventListener(MouseEvent.MOUSE_UP,handleInfoSize,false,0,true);
93
infoHandler.addEventListener(MouseEvent.ROLL_OVER,infoHandlerHover,false,0,true);
94
infoHandler.addEventListener(MouseEvent.ROLL_OUT,infoHandlerHover,false,0,true);
95
infoHandler.addEventListener(MouseEvent.MOUSE_MOVE,infoHandlerHover,false,0,true);
97
toolBar.tools.addEventListener(MouseEvent.CLICK,onToolClick,false,0,true);
98
toolBar.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
99
toolBar.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
101
info.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
102
info.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
103
infoHandler.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
104
infoHandler.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
106
_tool = toolBar.tools.select;
108
stage.addEventListener(KeyboardEvent.KEY_DOWN,handleKeyboard,false,0,true);
109
stage.addEventListener(KeyboardEvent.KEY_UP,handleKeyboard,false,0,true);
111
super.loadUrl(xmlUrl,initMap,loadingProgress);
114
private function handleInfoSize(e:MouseEvent):void
116
if(e.type == MouseEvent.MOUSE_DOWN)
117
infoHandler.startDrag(false,new Rectangle(0,0,INFO_MAX_WIDTH,0));
119
infoHandler.stopDrag();
121
private function infoHandlerHover(e:MouseEvent):void
123
pointer.visible = true;
124
pointer.gotoAndStop(2);
126
if(e.type == MouseEvent.ROLL_OVER || e.type == MouseEvent.MOUSE_MOVE)
128
infoMask.width = infoHandler.x;
129
pointer.x = stage.mouseX;
130
pointer.y = stage.mouseY;
134
pointer.visible = false;
140
public static function get mapCursor():Point
144
public static function set snapToGrid(val:Boolean)
149
public static function get pointer():MovieClip
28
import flash.display.MovieClip;
29
import flash.display.Sprite;
31
import flash.geom.Point;
32
import flash.geom.Rectangle;
34
import flash.events.Event;
35
import flash.events.MouseEvent;
36
import flash.events.ProgressEvent;
37
import flash.events.KeyboardEvent;
38
import flash.ui.Keyboard;
40
import flash.net.FileReference;
43
import orfaust.CustomEvent;
44
import orfaust.containers.List;
47
public class Home extends Base
49
private var _aamap:Aamap;
51
private var _tool:ToolInterface;
52
private static var _pointer:MovieClip;
53
private static var _snapToGrid:Boolean = true;
55
private const ZOOM_FACTOR = .95;
56
private var _scale = 1;
57
private static var _cursor:Point = new Point(0,0);
59
private var _infoHandlerMouseDown:Boolean = false;
60
private const INFO_MAX_WIDTH = 230;
62
private var _draggingMap:Boolean = false;
63
private var _keyDown:List = new List;
68
override protected function init():void
70
pointer.visible = false;
73
// testing urls to load external maps
75
//var xmlUrl = 'aamap.php?url=';
77
//xmlUrl += 'resource.armagetronad.net/resource/ZURD/race/Crossdeath-1.0.1.aamap.xml';
78
//xmlUrl += 'resource.armagetronad.net/resource/ZURD/race/ecdmazed-1.aamap.xml';
79
//xmlUrl += 'resource.armagetronad.net/resource/hoop/motorace/tester-0.1.aamap.xml';
80
//xmlUrl += 'resource.armagetronad.net/resource/hoop/race/alba-1.6.aamap.xml';
83
//var xmlUrl = 'aamap/default-1.0.1.aamap.xml';
84
var xmlUrl = 'aamap/vectron-1.0.aamap.xml';
88
stage.addEventListener(Event.RESIZE,onStageResize,false,0,true);
91
infoHandler.addEventListener(MouseEvent.MOUSE_DOWN,handleInfoSize,false,0,true);
92
infoHandler.addEventListener(MouseEvent.MOUSE_UP,handleInfoSize,false,0,true);
93
infoHandler.addEventListener(MouseEvent.ROLL_OVER,infoHandlerHover,false,0,true);
94
infoHandler.addEventListener(MouseEvent.ROLL_OUT,infoHandlerHover,false,0,true);
95
infoHandler.addEventListener(MouseEvent.MOUSE_MOVE,infoHandlerHover,false,0,true);
97
toolBar.tools.addEventListener(MouseEvent.CLICK,onToolClick,false,0,true);
98
toolBar.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
99
toolBar.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
101
info.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
102
info.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
103
infoHandler.addEventListener(MouseEvent.ROLL_OVER,breakToolEvents,false,0,true);
104
infoHandler.addEventListener(MouseEvent.ROLL_OUT,breakToolEvents,false,0,true);
106
_tool = toolBar.tools.select;
108
stage.addEventListener(KeyboardEvent.KEY_DOWN,handleKeyboard,false,0,true);
109
stage.addEventListener(KeyboardEvent.KEY_UP,handleKeyboard,false,0,true);
111
super.loadUrl(xmlUrl,initMap,loadingProgress);
114
private function handleInfoSize(e:MouseEvent):void
116
if(e.type == MouseEvent.MOUSE_DOWN)
117
infoHandler.startDrag(false,new Rectangle(0,0,INFO_MAX_WIDTH,0));
119
infoHandler.stopDrag();
121
private function infoHandlerHover(e:MouseEvent):void
123
pointer.visible = true;
124
pointer.gotoAndStop(2);
126
if(e.type == MouseEvent.ROLL_OVER || e.type == MouseEvent.MOUSE_MOVE)
128
infoMask.width = infoHandler.x;
129
pointer.x = stage.mouseX;
130
pointer.y = stage.mouseY;
134
pointer.visible = false;
140
public static function get mapCursor():Point
144
public static function set snapToGrid(val:Boolean)
149
public static function get pointer():MovieClip
158
private function zoom(e:MouseEvent):void
166
private function zoomIn():void
172
_scale /= ZOOM_FACTOR;
175
factor = _scale - factor;
177
_aamap.x -= _cursor.x * factor;
178
_aamap.y -= -_cursor.y * factor;
183
private function zoomOut():void
189
_scale *= ZOOM_FACTOR;
194
_aamap.x += _cursor.x * factor;
195
_aamap.y += -_cursor.y * factor;
201
private function setScale():void
203
_aamap.scaleX = _scale;
204
_aamap.scaleY = -_scale;
207
private function setInfo():void
209
_cursor.x = (stage.mouseX - _aamap.x) / _scale;
210
_cursor.y = (-stage.mouseY + _aamap.y) / _scale;
212
snapPointer.visible = _snapToGrid;
215
var gridSize = grid.size;
217
var xSnap = Math.floor((_cursor.x + gridSize.x / 2) / gridSize.x);
218
var ySnap = Math.floor((_cursor.y + gridSize.y / 2) / gridSize.y);
220
_cursor.x = xSnap * gridSize.x;
221
_cursor.y = ySnap * gridSize.y;
223
snapPointer.x = _aamap.x + _cursor.x * _aamap.scaleX;
224
snapPointer.y = _aamap.y + _cursor.y * _aamap.scaleY;
228
'x: ' + _cursor.x.toString() + '\n' +
229
'y: ' + (_cursor.y).toString() + '\n' +
230
'zoom: ' + Math.floor(_scale * 100).toString() + '%';
158
private function zoom(e:MouseEvent):void
166
private function zoomIn():void
172
_scale /= ZOOM_FACTOR;
175
factor = _scale - factor;
177
_aamap.x -= _cursor.x * factor;
178
_aamap.y -= -_cursor.y * factor;
183
private function zoomOut():void
189
_scale *= ZOOM_FACTOR;
194
_aamap.x += _cursor.x * factor;
195
_aamap.y += -_cursor.y * factor;
201
private function setScale():void
203
_aamap.scaleX = _scale;
204
_aamap.scaleY = -_scale;
207
private function setInfo():void
209
_cursor.x = (stage.mouseX - _aamap.x) / _scale;
210
_cursor.y = (-stage.mouseY + _aamap.y) / _scale;
212
snapPointer.visible = _snapToGrid;
215
var gridSize = grid.size;
217
var xSnap = Math.floor((_cursor.x + gridSize.x / 2) / gridSize.x);
218
var ySnap = Math.floor((_cursor.y + gridSize.y / 2) / gridSize.y);
220
_cursor.x = xSnap * gridSize.x;
221
_cursor.y = ySnap * gridSize.y;
223
snapPointer.x = _aamap.x + _cursor.x * _aamap.scaleX;
224
snapPointer.y = _aamap.y + _cursor.y * _aamap.scaleY;
228
'x: ' + _cursor.x.toString() + '\n' +
229
'y: ' + (_cursor.y).toString() + '\n' +
230
'zoom: ' + Math.floor(_scale * 100).toString() + '%';
238
private function breakToolEvents(e:MouseEvent):void
240
if(e.type == 'rollOver')
242
//removeMapListeners();
244
snapPointer.visible = false;
252
private function onToolClick(e:MouseEvent):void
254
switchTool(e.target);
257
private function switchTool(selected:*):void
259
if(selected == _tool || selected == toolBar || selected == toolBar.overlay)
262
pointer.visible = false;
265
//removeToolListeners();
268
toolBar.overlay.x = toolBar.tools.x + selected.x;
269
//addToolListeners();
272
private function addToolListeners():void
274
_tool.addEventListener('ADD_EDITING_OBJECT',addEditingObject,false,0,true);
275
_tool.addEventListener('EDITING_OBJECT_COMPLETE',editingObjectComplete,false,0,true);
276
_tool.addEventListener('REMOVE_EDITING_OBJECT',removeEditingObject,false,0,true);
278
if(_tool == toolBar.tools.select)
280
_aamap.addEventListener(MouseEvent.MOUSE_DOWN,handleObjectMouseEvent,false,0,true);
281
_aamap.addEventListener(MouseEvent.MOUSE_UP,handleObjectMouseEvent,false,0,true);
282
_aamap.addEventListener(MouseEvent.MOUSE_MOVE,handleObjectMouseEvent,false,0,true);
283
_aamap.addEventListener('OBJECT_ROLL_OVER',handleObjectHover,false,0,true);
284
_aamap.addEventListener('OBJECT_ROLL_OUT',handleObjectHover,false,0,true);
288
private function removeToolListeners():void
290
_tool.removeEventListener('ADD_EDITING_OBJECT',addEditingObject);
291
_tool.removeEventListener('EDITING_OBJECT_COMPLETE',editingObjectComplete);
292
_tool.removeEventListener('REMOVE_EDITING_OBJECT',removeEditingObject);
294
if(_tool == toolBar.tools.select)
296
_aamap.removeEventListener(MouseEvent.MOUSE_DOWN,handleObjectMouseEvent);
297
_aamap.removeEventListener(MouseEvent.MOUSE_UP,handleObjectMouseEvent);
298
_aamap.removeEventListener(MouseEvent.MOUSE_MOVE,handleObjectMouseEvent);
299
_aamap.removeEventListener('OBJECT_ROLL_OVER',handleObjectHover);
300
_aamap.removeEventListener('OBJECT_ROLL_OUT',handleObjectHover);
238
private function breakToolEvents(e:MouseEvent):void
240
if(e.type == 'rollOver')
242
//removeMapListeners();
244
snapPointer.visible = false;
252
private function onToolClick(e:MouseEvent):void
254
switchTool(e.target);
257
private function switchTool(selected:*):void
259
if(selected == _tool || selected == toolBar || selected == toolBar.overlay)
262
pointer.visible = false;
265
//removeToolListeners();
268
toolBar.overlay.x = toolBar.tools.x + selected.x;
269
//addToolListeners();
272
private function addToolListeners():void
274
_tool.addEventListener('ADD_EDITING_OBJECT',addEditingObject,false,0,true);
275
_tool.addEventListener('EDITING_OBJECT_COMPLETE',editingObjectComplete,false,0,true);
276
_tool.addEventListener('REMOVE_EDITING_OBJECT',removeEditingObject,false,0,true);
278
if(_tool == toolBar.tools.select)
280
_aamap.addEventListener(MouseEvent.MOUSE_DOWN,handleObjectMouseEvent,false,0,true);
281
_aamap.addEventListener(MouseEvent.MOUSE_UP,handleObjectMouseEvent,false,0,true);
282
_aamap.addEventListener(MouseEvent.MOUSE_MOVE,handleObjectMouseEvent,false,0,true);
283
_aamap.addEventListener('OBJECT_ROLL_OVER',handleObjectHover,false,0,true);
284
_aamap.addEventListener('OBJECT_ROLL_OUT',handleObjectHover,false,0,true);
288
private function removeToolListeners():void
290
_tool.removeEventListener('ADD_EDITING_OBJECT',addEditingObject);
291
_tool.removeEventListener('EDITING_OBJECT_COMPLETE',editingObjectComplete);
292
_tool.removeEventListener('REMOVE_EDITING_OBJECT',removeEditingObject);
294
if(_tool == toolBar.tools.select)
296
_aamap.removeEventListener(MouseEvent.MOUSE_DOWN,handleObjectMouseEvent);
297
_aamap.removeEventListener(MouseEvent.MOUSE_UP,handleObjectMouseEvent);
298
_aamap.removeEventListener(MouseEvent.MOUSE_MOVE,handleObjectMouseEvent);
299
_aamap.removeEventListener('OBJECT_ROLL_OVER',handleObjectHover);
300
_aamap.removeEventListener('OBJECT_ROLL_OUT',handleObjectHover);
311
private function initMap(e:Event):void
313
progBar.visible = false;
317
_aamap = new Aamap(e.target.data);
325
mapContainer.addChild(_aamap);
331
//addToolListeners();
333
stage.addEventListener(MouseEvent.MOUSE_WHEEL,zoom,false,0,true);
335
toolBar.save.addEventListener(MouseEvent.CLICK,saveXml,false,0,true);
336
toolBar.open.addEventListener(MouseEvent.CLICK,loadXml,false,0,true);
338
grid.size = new Point(10,10);
339
//grid.visible = false;
345
private function removeSelected(e:MouseEvent):void
347
toolBar.tools.select.removeSelected();
350
private function saveXml(e:MouseEvent):void
353
Debug.log('\n' + _aamap.xml);
356
private function loadXml(e:MouseEvent):void
363
private function addMapListeners():void
365
stage.addEventListener(MouseEvent.MOUSE_DOWN,handleStageMouseEvent,false,0,true);
366
stage.addEventListener(MouseEvent.MOUSE_UP,handleStageMouseEvent,false,0,true);
367
stage.addEventListener(MouseEvent.MOUSE_MOVE,handleStageMouseEvent,true,0,true);
369
private function removeMapListeners():void
371
stage.removeEventListener(MouseEvent.MOUSE_DOWN,handleStageMouseEvent);
372
stage.removeEventListener(MouseEvent.MOUSE_UP,handleStageMouseEvent);
373
stage.removeEventListener(MouseEvent.MOUSE_MOVE,handleStageMouseEvent);
311
private function initMap(e:Event):void
313
progBar.visible = false;
317
_aamap = new Aamap(e.target.data);
325
mapContainer.addChild(_aamap);
331
//addToolListeners();
333
stage.addEventListener(MouseEvent.MOUSE_WHEEL,zoom,false,0,true);
335
toolBar.save.addEventListener(MouseEvent.CLICK,saveXml,false,0,true);
336
toolBar.open.addEventListener(MouseEvent.CLICK,loadXml,false,0,true);
338
grid.size = new Point(10,10);
339
//grid.visible = false;
345
private function removeSelected(e:MouseEvent):void
347
toolBar.tools.select.removeSelected();
350
private function saveXml(e:MouseEvent):void
353
Debug.log('\n' + _aamap.xml);
356
private function loadXml(e:MouseEvent):void
363
private function addMapListeners():void
365
stage.addEventListener(MouseEvent.MOUSE_DOWN,handleStageMouseEvent,false,0,true);
366
stage.addEventListener(MouseEvent.MOUSE_UP,handleStageMouseEvent,false,0,true);
367
stage.addEventListener(MouseEvent.MOUSE_MOVE,handleStageMouseEvent,true,0,true);
369
private function removeMapListeners():void
371
stage.removeEventListener(MouseEvent.MOUSE_DOWN,handleStageMouseEvent);
372
stage.removeEventListener(MouseEvent.MOUSE_UP,handleStageMouseEvent);
373
stage.removeEventListener(MouseEvent.MOUSE_MOVE,handleStageMouseEvent);
381
private function handleStageMouseEvent(e:MouseEvent):void
386
if(e.ctrlKey && e.type != MouseEvent.MOUSE_MOVE && !_tool.objectDragging || _draggingMap)
390
case MouseEvent.MOUSE_DOWN:
393
_pointer.visible = false;
396
case MouseEvent.MOUSE_UP:
398
_draggingMap = false;
401
case MouseEvent.MOUSE_MOVE:
409
if(e.type == MouseEvent.MOUSE_MOVE)
411
pointer.x = stage.mouseX;
412
pointer.y = stage.mouseY;
414
_tool.handleMouse(e,_aamap);
420
private function handleObjectMouseEvent(e:MouseEvent):void
422
_tool.handleObjectMouseEvent(e,_cursor);
425
private function handleObjectHover(e:CustomEvent):void
427
_tool.handleObjectMouseHover(e);
432
private function handleKeyboard(e:KeyboardEvent):void
434
//Debug.log(e.keyCode);
439
case KeyboardEvent.KEY_DOWN:
440
if(!_keyDown.find(ch))
443
if(!e.ctrlKey && !e.altKey && ! e.shiftKey)
448
case KeyboardEvent.KEY_UP:
449
if(_keyDown.find(ch))
454
_tool.handleKeyboard(_keyDown);
457
private function shortCuts(ch):void
461
case 65: // A -> edit tool
462
switchTool(toolBar.tools.edit);
465
case 83: // S -> spawn tool
466
switchTool(toolBar.tools.spawn);
469
case 86: // V -> select tool
470
switchTool(toolBar.tools.select);
473
case 87: // W -> wall tool
474
switchTool(toolBar.tools.wall);
477
case 90: // Z -> zone tool
478
switchTool(toolBar.tools.zone);
381
private function handleStageMouseEvent(e:MouseEvent):void
386
if(e.ctrlKey && e.type != MouseEvent.MOUSE_MOVE && !_tool.objectDragging || _draggingMap)
390
case MouseEvent.MOUSE_DOWN:
393
_pointer.visible = false;
396
case MouseEvent.MOUSE_UP:
398
_draggingMap = false;
401
case MouseEvent.MOUSE_MOVE:
409
if(e.type == MouseEvent.MOUSE_MOVE)
411
pointer.x = stage.mouseX;
412
pointer.y = stage.mouseY;
414
_tool.handleMouse(e,_aamap);
420
private function handleObjectMouseEvent(e:MouseEvent):void
422
_tool.handleObjectMouseEvent(e,_cursor);
425
private function handleObjectHover(e:CustomEvent):void
427
_tool.handleObjectMouseHover(e);
432
private function handleKeyboard(e:KeyboardEvent):void
434
//Debug.log(e.keyCode);
439
case KeyboardEvent.KEY_DOWN:
440
if(!_keyDown.find(ch))
443
if(!e.ctrlKey && !e.altKey && ! e.shiftKey)
448
case KeyboardEvent.KEY_UP:
449
if(_keyDown.find(ch))
454
_tool.handleKeyboard(_keyDown);
457
private function shortCuts(ch):void
461
case 65: // A -> edit tool
462
switchTool(toolBar.tools.edit);
465
case 83: // S -> spawn tool
466
switchTool(toolBar.tools.spawn);
469
case 86: // V -> select tool
470
switchTool(toolBar.tools.select);
473
case 87: // W -> wall tool
474
switchTool(toolBar.tools.wall);
477
case 90: // Z -> zone tool
478
switchTool(toolBar.tools.zone);
485
485
/* tool listeners */
487
private function addEditingObject(e:CustomEvent):void
489
if(_aamap.editing.numChildren != 0)
490
error('editing is not empty');
493
_aamap.editing.addChild(e.data);
496
private function editingObjectComplete(e:Event):void
498
if(_aamap.editing.numChildren == 0)
499
error('editing is empty');
501
else if(_aamap.editing.numChildren > 1)
502
error('editing contains more than 1 object');
506
var obj = _aamap.editing.getChildAt(0);
507
_aamap.addObject(obj);
510
private function removeEditingObject(e:Event):void
512
if(_aamap.editing.numChildren == 0)
513
error('editing is empty');
515
else if(_aamap.editing.numChildren > 1)
516
error('editing contains more than 1 object');
520
var obj = _aamap.editing.getChildAt(0);
521
_aamap.editing.removeChild(obj);
525
private function objectDragStart(e:CustomEvent):void
527
var obj = e.data as AamapObject;
531
private function objectDragStop(e:CustomEvent):void
533
var obj = e.data as AamapObject;
487
private function addEditingObject(e:CustomEvent):void
489
if(_aamap.editing.numChildren != 0)
490
error('editing is not empty');
493
_aamap.editing.addChild(e.data);
496
private function editingObjectComplete(e:Event):void
498
if(_aamap.editing.numChildren == 0)
499
error('editing is empty');
501
else if(_aamap.editing.numChildren > 1)
502
error('editing contains more than 1 object');
506
var obj = _aamap.editing.getChildAt(0);
507
_aamap.addObject(obj);
510
private function removeEditingObject(e:Event):void
512
if(_aamap.editing.numChildren == 0)
513
error('editing is empty');
515
else if(_aamap.editing.numChildren > 1)
516
error('editing contains more than 1 object');
520
var obj = _aamap.editing.getChildAt(0);
521
_aamap.editing.removeChild(obj);
525
private function objectDragStart(e:CustomEvent):void
527
var obj = e.data as AamapObject;
531
private function objectDragStop(e:CustomEvent):void
533
var obj = e.data as AamapObject;
542
private function loadingProgress(e:ProgressEvent):void
544
progBar.setProgress(e.bytesLoaded,e.bytesTotal);
542
private function loadingProgress(e:ProgressEvent):void
544
progBar.setProgress(e.bytesLoaded,e.bytesTotal);
550
private function onStageResize(e:Event):void
550
private function onStageResize(e:Event):void
556
progBar.x = _sW / 2 - progBar.width / 2;
557
progBar.y = _sH / 2 - progBar.height / 2;
556
progBar.x = _sW / 2 - progBar.width / 2;
557
progBar.y = _sH / 2 - progBar.height / 2;
b'\\ No newline at end of file'