/game/source/mteb/view/ui/UiLayer.as

https://github.com/earthworksbuilder/neh.prototype
ActionScript | 108 lines | 84 code | 24 blank | 0 comment | 1 complexity | ae42c696eb0921cc595e30454ac50974 MD5 | raw file
  1. package mteb.view.ui
  2. {
  3. import flash.display.Sprite;
  4. import flash.display.Stage;
  5. import flash.events.Event;
  6. import pixeldroid.signals.ISignal;
  7. import pixeldroid.signals.ISignalBus;
  8. import pixeldroid.signals.ISignalReceiver;
  9. import mteb.control.SignalBus;
  10. import mteb.control.signals.PreferencesChanged;
  11. import mteb.control.signals.StageResized;
  12. import mteb.data.DataLocator;
  13. import mteb.data.IDataLocator;
  14. import mteb.data.config.IConfig;
  15. public final class UiLayer extends Sprite implements ISignalReceiver
  16. {
  17. protected var heading:HeadingDisplay;
  18. protected var timeControl:TimeControl;
  19. protected var mapControl:MapControl;
  20. protected var messageControl:MessageControl;
  21. public function UiLayer()
  22. {
  23. super();
  24. const signalBus:ISignalBus = SignalBus.getInstance();
  25. signalBus.addReceiver(StageResized, this);
  26. signalBus.addReceiver(PreferencesChanged, this);
  27. addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  28. }
  29. public function receive(signal:ISignal, authority:* = null):void
  30. {
  31. switch (true)
  32. {
  33. case (signal is StageResized):
  34. onStageResized(authority as Stage);
  35. break;
  36. case (signal is PreferencesChanged):
  37. onPreferencesChanged(authority as IConfig);
  38. break;
  39. default:
  40. debug(this, "receive() - unrecognized signal {0}", signal);
  41. break;
  42. }
  43. }
  44. protected function onAddedToStage(event:Event):void
  45. {
  46. removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  47. mouseEnabled = false;
  48. mouseChildren = true;
  49. heading = new HeadingDisplay();
  50. heading.mouseEnabled = false;
  51. heading.mouseChildren = false;
  52. addChild(heading);
  53. timeControl = new TimeControl();
  54. timeControl.mouseEnabled = true;
  55. addChild(timeControl);
  56. timeControl.visible = false;
  57. mapControl = new MapControl();
  58. mapControl.mouseEnabled = true;
  59. addChild(mapControl);
  60. messageControl = new MessageControl();
  61. messageControl.mouseEnabled = false;
  62. messageControl.mouseChildren = false;
  63. addChild(messageControl);
  64. onStageResized(stage);
  65. debug(this, "ui layer ready...");
  66. const dataLocator:IDataLocator = DataLocator.getInstance();
  67. dataLocator.mcp.onUiLayerReady();
  68. }
  69. protected function onPreferencesChanged(config:IConfig):void
  70. {
  71. timeControl.visible = config.showTimeControl;
  72. }
  73. protected function onStageResized(stage:Stage):void
  74. {
  75. debug(this, "onStageResized() - adjusting to new dimensions: {0}x{1}", stage.stageWidth, stage.stageHeight);
  76. heading.x = 0;
  77. heading.y = stage.stageHeight - heading.height;
  78. timeControl.x = (stage.stageWidth * .5) - (timeControl.width * .5);
  79. timeControl.y = stage.stageHeight - timeControl.height;
  80. mapControl.x = stage.stageWidth - (mapControl.width / 2);
  81. mapControl.y = stage.stageHeight - (mapControl.height / 2);
  82. }
  83. }
  84. }