Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////
- //
- // © 2017 nexters.com
- //
- ////////////////////////////////////////////////////////////////////////////////
- package ru.nexters.ie2.view.scene.aspects {
- import flash.utils.Dictionary;
- import protobuf.Dictionary_;
- import ru.nexters.ie2.controller.aspects.AspectControllerBase;
- import ru.nexters.ie2.model.process.ProcessCheckResult;
- import ru.nexters.ie2.model.process.ProcessGraph;
- import ru.nexters.ie2.model.process.ProcessWrapper;
- import ru.nexters.ie2.view.components.drag.InstrumentData;
- import ru.nexters.ie2.view.scene.Entity;
- /**
- * @author v.proskurin
- * @version 1.0
- * @playerversion Flash 10
- * @langversion 3.0
- * @date Mar 27, 2017
- */
- public class InstrumentApplierAspect extends AspectControllerBase {
- //------------------------------------------------------------------------------
- // Class constants
- //------------------------------------------------------------------------------
- //------------------------------------------------------------------------------
- // Class variables
- //------------------------------------------------------------------------------
- //------------------------------------------------------------------------------
- // Class methods
- //------------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- // Constructor
- //--------------------------------------------------------------------------
- public function InstrumentApplierAspect() {
- super();
- }
- //--------------------------------------------------------------------------
- // Variables
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- // Properties
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- // Public methods
- //--------------------------------------------------------------------------
- override public function init(target:Entity):void {
- super.init(target);
- _target.signals.onApplyInstrument.add(apply);
- }
- override public function dispose():void{
- _target.signals.onApplyInstrument.remove(apply);
- }
- //--------------------------------------------------------------------------
- // Protected methods
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- // Private methods
- //--------------------------------------------------------------------------
- private function apply(instrument:InstrumentData):void {
- switch (instrument.type) {
- case InstrumentData.SETUP:
- addProcess(instrument);
- break;
- case InstrumentData.COLLECT:
- removeProcesses(instrument);
- break;
- }
- }
- private function addProcess(instrument:InstrumentData):void {
- const context:ProcessGraph = ProcessGraph.instance;
- const processId:Dictionary_ = instrument.data;
- const pw:ProcessWrapper = ProcessWrapper.fromProtoAndObjects(processId.prototype.as32,[_target.source]);
- const result:ProcessCheckResult = pw.canBeAdded(context);
- if (result.isOk) {
- context.addProcess(pw);
- instrument.dispatch(true);
- } else if (result.error == ProcessCheckResult.REQS_NOT_SATISFIED) {
- instrument.dispatch(false);
- }
- }
- private function removeProcesses(instrument:InstrumentData):void {
- const context:ProcessGraph = ProcessGraph.instance;
- const processes:Dictionary = _target.source.allProcesses;
- var status:Boolean;
- for each (var process:ProcessWrapper in processes) {
- const result:ProcessCheckResult = process.canBeRemoved(context, false);
- if (result.isOk) {
- _target.scene.source.sceneEvents.dropCreated.dispatch(process.drop, _target.position);
- context.requestRemove(process);
- status = true;
- }
- }
- instrument.dispatch(status);
- }
- //--------------------------------------------------------------------------
- // Event handlers
- //--------------------------------------------------------------------------
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement