{"version":3,"sources":["defines.js","globals.js","config.js","jsb_pm.js","fonts.js","Settings.js","Version.js","ClassMapping.js","Class.js","MapClass.js","UserCache.js","WorldEditLog.js","World.js","WorldList.js","Events.js","LocalizedString.js","SpriteUtils.js","ApiServerUtils.js","AudioUtils.js","FileUtils.js","Utils.js","WorldFormatConvertFunctionsK.js","WorldFormatConvertFunctionsP.js","WorldUtils.js","BackgroundUtils.js","ValidationUtils.js","NetworkDebugClientImpl.js","NetworkUtils.js","RunningSceneUtils.js","NetworkProtocol.js","GameServerImpl.js","GameClientImpl.js","TeacherServerImpl.js","StudentClientImpl.js","ControlledNetworkGame.js","TutorialUtils.js","TutorialScenario.js","Hint.js","Object.js","TaskList.js","Task.js","AppUtils.js","KModule.js","PModule.js","SyntaxTree.js","RobotFunction.js","AbstractRobot.js","AnimationTransaction.js","PlayerRobot.js","VariableList.js","ProgramUtils.js","ProgramUtilsK.js","ProgramUtilsP.js","RobotManager.js","RobotManagerP.js","RobotManagerK.js","AbstractMap.js","MapElement.js","MapsContainerLayer.js","MapLayer.js","AbstractLevel.js","MapLayer2D.js","Map2D.js","ObjectSprite2D.js","DynamicSprite.js","TopologicalSortLayer.js","TerrainSprite.js","MapElement2D.js","PlayerRobot2D.js","StaticSprite.js","RobotSprite2D.js","IsoRobotSprite.js","OrthoRobotSprite.js","ModuleInfo.js","ModuleUtils.js","GlobalRobotHelper.js","GlobalRobot.js","Output.js","OutputTask.js","Counter.js","CounterSprite.js","ExtendedCounter.js","ExCounterMemoryTask.js","ExtendedCounterSprite.js","FlagRobot.js","FlagRobotSprite.js","GreenFlagRobot.js","OrangeFlagRobot.js","SquarableLevel.js","SquarableMapLayer.js","SquarableMap.js","PlayerRobot4.js","PositionTask4.js","MapElement4WithWalls.js","WallSprite4.js","SquarableMapWithWalls.js","SquarableMapLayerWithWalls.js","PlayerRobot4Walls.js","SelectPatternMenu.js","PlayerRobotSettingsLayer.js","PlayerRobotInterfaceLayerK.js","PlayerRobotInterfaceLayerP.js","LevelSettingsLayer.js","LevelSettings.js","SquarableMapEditorLayer.js","TaskLayer.js","PhysicalConnector.js","LegoPhysicalConnector.js","BLEPhysicalConnector.js","SoundPhysicalConnector.js","MagnetPhysicalConnector.js","RepairLevel.js","RepairMap.js","RepairMapLayer.js","RepairMapElement.js","RepairTask.js","RepairRobot.js","RepairRobotSprite.js","RepairLevelModule.js","RepairMapEditorLayer.js","RepairRobotSettingsLayer.js","RepairTaskLayer.js","PushLevel.js","PushMap.js","PushMapLayer.js","PushMapElement.js","PushTask.js","PushRobot.js","PushRobotSprite.js","PullRobot.js","PullRobotSprite.js","PushObject.js","PushObjectSprite.js","PushBox.js","PushBoxSprite.js","PushBarrel.js","PushBarrelSprite.js","PushLevelModule.js","PushMapEditorLayer.js","PushRobotSettingsLayer.js","PushTaskLayer.js","LightLamp.js","LightLampSprite.js","LightObject.js","LightObjectSprite.js","LightLevel.js","LightMap.js","LightMapLayer.js","LightMapElement.js","LightRobot.js","LightRobotSprite.js","LightTask.js","LightLevelModule.js","LightMapEditorLayer.js","LightRobotSettingsLayer.js","LightTaskLayer.js","PhysicalRobotLevel.js","PhysicalRobotMap.js","PhysicalRobotMapLayer.js","PhysicalRobotMapElement.js","PhysicalRobot.js","PhysicalRobotSprite.js","PhysicalRobotLevelModule.js","PhysicalRobotMapEditorLayer.js","PhysicalRobotSettingsLayer.js","PhysicalTask.js","PhysicalTaskLayer.js","TrainLevel.js","TrainMap.js","TrainMapLayer.js","TrainMapElement.js","TrainTask.js","TrainRobot.js","TrainRobotSprite.js","TrainObject.js","TrainObjectSprite.js","TrainCar.js","TrainCarSprite.js","TrainBarrel.js","TrainBarrelSprite.js","TrainLevelModule.js","TrainMapEditorLayer.js","TrainRobotSettingsLayer.js","TrainTaskLayer.js","KumirLevel.js","KumirMap.js","KumirMapLayer.js","KumirMapElement.js","KumirTask.js","KumirRobot.js","KumirRobotSprite.js","KumirLevelModule.js","KumirMapEditorLayer.js","KumirRobotSettingsLayer.js","KumirTaskLayer.js","AquariusLevel.js","AquariusTank.js","AquariusTankSprite.js","AquariusMap.js","AquariusMapLayer.js","AquariusTask.js","AquariusRobot.js","AquariusLevelModule.js","AquariusMapEditorLayer.js","AquariusRobotSettingsLayer.js","AquariusTaskLayer.js","GrasshopperLevel.js","GrasshopperMap.js","GrasshopperMapLayer.js","GrasshopperMapElement.js","GrasshopperTask.js","GrasshopperRobot.js","GrasshopperRobotSprite.js","GrasshopperLevelModule.js","GrasshopperMapEditorLayer.js","GrasshopperRobotSettingsLayer.js","GrasshopperTaskLayer.js","DraftsmanLevel.js","DraftsmanMap.js","DraftsmanMapLayer.js","DraftsmanMapElement.js","DraftsmanTask.js","DraftsmanRobot.js","DraftsmanRobotSprite.js","DraftsmanLevelModule.js","DraftsmanMapEditorLayer.js","DraftsmanRobotSettingsLayer.js","DraftsmanTaskLayer.js","TurtleLevel.js","TurtleMap.js","TurtleMapLayer.js","TurtleTask.js","TurtleRobot.js","TurtleRobotSprite.js","TurtleLevelModule.js","TurtleMapEditorLayer.js","TurtleRobotSettingsLayer.js","TurtleTaskLayer.js","TableView.js","SelectionListView.js","SelectTableView.js","ComboBox.js","TextInput.js","NumberTextInput.js","Button.js","SelectionButton.js","Layout.js","OvalLayout.js","DialogLayout.js","MovingAfterKeyboardLayout.js","PopupLayer.js","CheckBox.js","Text.js","TextInputDialog.js","ConfirmWindow.js","ChangeWorldNameDialog.js","MessageBox.js","InterfaceButton.js","DragAndDropLayout.js","SlidingMenu.js","SlidingMenuElement.js","NodeLayer.js","StartNode.js","FunctionNode.js","BodyNode.js","GlobalBodyNode.js","AllocNode.js","CommandNode.js","IfNode.js","ElseBlock.js","ConditionNode.js","RepeaterNode.js","NTimesRepeaterNode.js","WhileRepeaterNode.js","ForRepeaterNode.js","NumberNode.js","BoolNode.js","ReplaceNode.js","HorizontalBarNode.js","VariableNode.js","StatementNode.js","ExpressionNode.js","LogicExpressionNode.js","NumericExpressionNode.js","LoadLayer.js","LoadingLayer.js","WaitNetworkGameLayer.js","RegisterLayer.js","LoginLayer.js","SoundButton.js","SoundPopupLayer.js","LevelPreview.js","LanguageLayer.js","EditLogInfoLayer.js","WorldInfoLayer.js","WaitLayer.js","LevelConflictLayer.js","CommonLessonPage.js","RepairLessonPage.js","PushLessonPage.js","PhysicalLessonPage.js","LightLessonPage.js","ChooseLessonElement.js","ChooseLessonLayer.js","ProgramAlgorithmLayer.js","MethodStackLessonLayer.js","CounterLessonLayer.js","SelectPageMenu.js","StartMenuLayer.js","SelectGameLayer.js","SelectLevelLayer.js","SelectWorldLayer.js","SettingsLayer.js","MarketLayer.js","InfoMarketLayer.js","CommonSettingsLayer.js","ChangeLevelMenu.js","StateInformLayer.js","LevelMenuLayer.js","SelectMapMenu.js","TutorialControlLayer.js","WinLayer.js","RobotsStepCountLayer.js","NetDiscoverLayer.js","NetControlLayer.js","MethodStackScrollLayer.js","MethodStackLayer.js","ProgramControlLayer.js","HintLayer.js","NumberInputLayer.js","GlobalRobotsLayer.js","CounterRobotLayer.js","OutputRobotLayer.js","FlagRobotLayer.js","LevelLayer.js","FunctionButton.js","FunctionButtonP.js","FunctionButtonK.js","MethodListButtonP.js","MethodListButtonK.js","RecognizeResultButton.js","EmptyFunctionButton.js","VarFunctionButton.js","RepeaterButton.js","CounterRepeaterButton.js","FunctionButtonBar.js","ProgramContainerLayer.js","ProgramContainerLayerK.js","ProgramContainerLayerP.js","TextualTree.js","PiktoTree.js","PiktoTreeCreator.js","TextualTreeCreator.js","ProgramTree.js","ProgramLayer.js","ProgramLayerK.js","ProgramLayerP.js","ClassControlLayer.js","ChangeLevelClassControl.js","TeamGameLayout.js","ChooseLevelLayer.js","MapElementsLayer.js","TaskSettingsLayer.js","ObjectsSettingsLayer.js","ActiveObjectSettingsLayer.js","GlobalRobotsSettingsLayer.js","GlobalRobotLayer.js","CounterLayer.js","OutputLayer.js","ExtendedCounterLayer.js","FlagLayer.js","PositionTask4Layer.js","ExCounterMemoryTaskLayer.js","OutputTaskLayer.js","SelectWorldEditorLayer.js","MenuEditorElement.js","MenuEditorLayer.js","SelectMireraCourseLayer.js","LevelEditorLayer.js","LevelMenuEditorLayer.js","ProgramEditorLayerP.js","ProgramEditorLayerK.js","MapsContainerEditorLayer.js","HintEditorLayer.js","FunctionSettingsLayer.js","ChangeLevelMenuEditor.js","NewWorldLayer.js","UploadWorldLayer.js","SelectLevelTypeLayer.js","TutorialEditLayer.js","TutorialStepEditLayers.js","main.js"],"names":["CORE_BUILD","pm","pme","pmui","utils","data","String","prototype","format","args","arguments","this","replace","match","number","Array","top","length","cc","sys","isNative","Node","_addChild","addChild","child","zOrder","tag","undefined","push","apply","appConfig","apiAddress","authAddress","mlURL","writablePathPrefix","pmAppID","useDefaultWorlds","canLogIn","showMarket","showInternalSettings","useNetworkFeatures","recognizeType","demoWorldID","builtinWorlds","id","name","sourceName","description","createDate","owner","pm-k","getFileList","convertIPAddress","setHttpRequestTimeout","setParallaxArrayItemOffset","parallax","index","offset","getParallaxArray","setOffset","setParallaxArrayItemRatio","ratio","setRatio","getParallaxArrayItemChild","getChild","scrollViewOnTouchBegan","scrollView","touch","event","onTouchBegan","scrollViewOnTouchMoved","onTouchMoved","scrollViewOnTouchEnded","onTouchEnded","scrollViewOnTouchCancelled","onTouchCancelled","playAudio","file","loop","volume","pauseAudio","audioID","resumeAudio","stopAudio","setAudioVolume","getAudioVolume","getAudioState","socialLogin","authUrl","callback","createNativeTouch","x","y","setNativeTouchLocation","destroyNativeTouch","dispatchEventFromNativeTouch","eventCode","btleManager","BTLEManager","getInstance","isBTLEAvailable","setReceiveDataCallback","setConnectCallback","setDisconnectCallback","scan","cleanup","sendData","programRecognizer","ProgramRecognizer","setSuccessCallback","setErrorCallback","recognize","taskID","setStatsURL","url","matsRecognizer","MatsRecognizer","setServerURL","broadcastServer","BroadcastServer","broadcastClient","BroadcastClient","DATA_PORT","BROADCAST_PACKET_PRIORITY","LOW","HIGH","BROADCAST_PACKET_TYPE","DISCOVER_REQUEST","DISCOVER_INFO","DATA_REQUEST","GameServer","Class","extend","CLIENT_CONNECTED_EVENT","CLIENT_DISCONNECTED_EVENT","MagnetClient","GAME_SERVER_PORT","TEACHER_SERVER_PORT","GameClient","CONNECTED_EVENT","DISCONNECTED_EVENT","marketHelper","MarketHelper","setProductInfoCallback","requestProductInfo","products","setPaymentEventCallback","purchaseProduct","product","restorePurchases","cleanupTransaction","isMarketAvailable","getDeviceUUID","EVENT","PURCHASE","RESTORE","TextFieldWrapper","ccui","TextField","fonts","Comfortaa-Light","type","srcs","Comfortaa-Regular","Comfortaa-Bold","Evolventa","getRealFontName","fontName","SYSTEM_ANIMATION_DELAY","SCREEN_BOUND","MAX_ANIMATION_SPEED","MEDIUM_ANIMATION_SPEED","SMALL_ANIMATION_SPEED","MIN_ANIMATION_SPEED","MOBILE_DPI_FACTOR","DEVICE_WIDTH_INDICATOR","TABLET_RETINA_TARGET_DPI","TABLET_RETINA_TARGET_WIDTH","TABLET_RETINA_TARGET_HEIGHT","PHONE_RETINA_TARGET_DPI","PHONE_RETINA_TARGET_WIDTH","PHONE_RETINA_TARGET_HEIGHT","DESKTOP_RETINA_DISPLAY_MIN_WIDTH","IPHONE_BIG_DISPLAY_MIN_WIDTH","TOUCH_CRITICAL_DISTANCE","SETTINGS_VERSION","USER_TYPE","ADMIN","TEACHER","USER","settings","_cacheDir","fontDefinition","FontDefinition","fontBoldName","fontLightName","fontSize","transparentColor","color","levelFontColor","userLoggedIn","isRetinaEnabled","isEditorMode","isHelpMode","_screenBounds","getScreenSize","director","getWinSize","getSafeAreaRect","getOpenGLView","screenSize","width","height","getScreenBounds","safeAreaRect","safeAreas","left","bottom","right","getMapSize","size","appUtils","getProgramLayerWidth","ProgramLayer","METHOD_STACK_WIDTH","save","fileUtils","saveObject","_getSettingsPath","_cache","load","appType","isFileExist","fileContent","readObject","version","removeFile","i","addWorld","setWorldMetaData","setSelectedWorldID","createDirectory","getWritablePath","_loadDefaultCache","animationSettings","animationSpeed","languageSettings","language","soundSettings","backgroundVolume","effectVolume","soundEnabled","worldSettings","selectedUserGroupID","selectedWorldID","worlds","userSettings","userAutoLogin","accessToken","refreshToken","userData","login","accountType","username","firstName","surname","PhysicalConnectorType","useProgramRecognizer","useTurboMode","useClearProgramButton","deviceName","modifyDate","getWorldPath","worldID","getWorldDir","getSelectedWorldID","getSupportedLevelFormatVersion","getWorldEditLogPath","getWorldTempDir","getWorldCachePath","getSelectedUserGroupID","getWorldRecord","getSelectedUserID","setSelectedUserGroupID","groupID","updateModifyDate","Date","clearModifyDate","getModifyDate","metadata","world","toISOString","linkedWithMirera","groups","isUserAutoLogin","setUserAutoLogin","status","getGame","game","setGame","getLevel","level","setLevel","decLevel","decGame","incGame","incLevel","renameWorld","newName","setWorldLinkedWithMirera","changeWorldDescription","newDesc","deleteWorld","getAvailableWorlds","getAnimationSpeed","isAnimationDisabled","setAnimationSpeed","value","getBackgroundVolume","setBackgroundVolume","getEffectVolume","setEffectVolume","getLanguage","setLanguage","getAccessToken","setAccessToken","token","getRefreshToken","setRefreshToken","getUserData","setUserName","setUserLogin","setUserData","clearUserData","setPhysicalConnectorType","sendCustomEvent","PHYSICAL_ROBOT_TYPE_CHANGED","getPhysicalConnectorType","BLE","setUseProgramRecognizer","state","getUseProgramRecognizer","setUseTurboMode","getUseTurboMode","setUseClearProgramButton","getUseClearProgramButton","setUserDeviceName","getUserDeviceName","pmVersion","pmkVersion","build","PM_SUPPORTED_LEVEL_FORMAT_VERSION","PMK_SUPPORTED_LEVEL_FORMAT_VERSION","classMapping","loadClassMapping","key","typeName","deserialize","sourceArray","isArray","isObject","o","exception","console","log","clone","obj","newObj","constructor","copy","cloneClassObject","propertyIsEnumerable","ctor","nonEnumerableProps","__nonEnumerableProps","definedObject","isFunction","Object","defineProperty","enumerable","indexOf","configurable","writable","__instanceId","serialize","filePath","object","createNewObject","JSON","parse","self","_addNonEnumerableProps","props","hasOwnProperty","MapClass","_super","userCache","CACHE_SYNC_INTERVAL","_cacheUpdated","init","registerCustomEventListener","USER_PROGRAM_UPDATED_STR","tutorialUtils","isProcessingTutorial","runningLevel","isTutorial","networkUtils","isNetworkGame","saveLevelProgram","bind","_getPath","_getLevelRobotGroupd","robots","_loadLevelProgramCache","cache","programDataCache","_loadWorldProgramCache","updatedLevels","getGameCount","getLevelCount","levelId","games","levels","levelProgramData","programData","_scheduleSync","getScheduler","schedule","_syncCache","REPEAT_FOREVER","forceSyncCache","dt","updateAllLevels","apiServerUtils","getLevelsCache","error","response","stringify","levelVersion","levelRevision","revision","updateLevelsCache","_save","syncCache","clearLevelData","score","_incLevelCacheRevision","clearUnusedData","found","j","remove","setScore","stage","_clearCurrentLevelScore","AbstractLevel","getCompleteMapCount","keys","getScore","WorldEditLog","_editLog","_worldID","clear","isEmpty","setUpdatedFlag","updated","isUpdated","isGameUpdated","setUpdated","setGameDeleted","deletedGames","isGameDeleted","setGameRenamed","renamed","reordered","isGameRenamed","setGameReordered","isGameReordered","setLevelDeleted","deletedLevels","isLevelDeleted","setLevelUpdated","isLevelUpdated","setLevelReordered","isLevelReordered","getChangedGames","getChangedLevels","GameType","Local","Net","Game","order","World","public","_clipboard","loadLevel","preview","robotIndex","levelObject","worldObject","path","rename","changeDescription","changePublicity","flag","getEditLog","getGames","getGameName","getLevelName","removeLevel","splice","swapLevels","level1","level2","tmp","tmpOrder","addLevel","levelType","moduleUtils","generateEmptyLevel","renameGame","removeGame","swapGames","game1","game2","addGame","LocalizedString","paste","getGameById","getLevelById","WorldList","_selectGraph","_worldList","_loadCallback","_loadTarget","_loadLocalWorlds","target","loadLocalWorlds","getSelectGraph","loadList","_selectedGroupID","_selectedWorldID","tasks","_loadDefaultWorlds","apiCall","getUserWorldList","WORLD_TYPE","OWN","getSharedWorlds","SHARED","getPublicWorlds","PUBLIC","getPurchasedWorlds","PURCHASED","getGrantedWorlds","GRANTED","async","map","iterator","_loadWorldList","iteratorTarget","cb","_onLoadWorlds","cbTarget","PUBLIC_GROUP","foundWorld","call","errors","worldLists","text","w","_matchLocalAvailableWorlds","_createSelectGraph","params","worldList","availableWorlds","groupData","OWN_GROUP","PURCHASED_GROUP","SHARED_GROUP","sort","a","b","GAME_ON_HIDE_EVENT","GAME_ON_SHOW_EVENT","ROBOT_WIN_EVENT_STR","ROBOT_LOOSE_EVENT_STR","ROBOT_FAILURE_EVENT_STR","ROBOT_STEP_COUNT_EVENT_STR","HIGHLIGHT_METHOD_EVENT_STR","HIGHLIGHT_CONDITION_EVENT_STR","HIGHLIGHT_POINT_IN_REP_EVENT","RELOAD_REPEATERS_EVENT_STR","REM_LAST_HIGHLIGHT_EVENT_STR","HIGHLIGHT_BROKEN_METHOD_EVENT_STR","ROBOT_TOUCH_EVENT_STR","PROGRAM_START_EVENT_STR","PROGRAM_TESL_ALL_MAPS_EVENT_STR","TEST_CURRENT_ROBOT_EVENT_STR","CURRENT_ROBOT_TESTED_EVENT_STR","START_NETWORK_GAME_EVENT_STR","MAP_COMPLETED_STR","LAYER_ZOOM_IN_EVENT","LAYER_ZOOM_OUT_EVENT","ANIMATE_HIDE_BUTTON","ANIMATE_RESTART_BUTTON","PROGRAM_STOP_EVENT_STR","PROGRAM_RESTART_EVENT_STR","PROGRAM_MAKE_STEP_EVENT_STR","MAP_CHANGED_EVENT_STR","MAP_DRAGGED_EVENT_STR","BACK_TO_MENU","CLEAR_CACHE","CLEAN_CLIENTS","UPDATE_INNER_PROGRAM_LAYER_CONTAINER","UPDATE_SCROLL_POS","UPDATE_LEVEL_LAYER","ENABLE_CONTROLLED_MODE_STR","DISABLE_CONTROLLED_MODE_STR","READY_TO_CHANGE_LEVEL_STR","LEVEL_SCENE_ENTERED","GLOBAL_ROBOT_STATE_UPDATED","RESET_LEVEL_EVENT_STR","COUNTER_LAYER_OPENED_EVENT_STR","COUNTER_LAYER_CLOSED_EVENT_STR","GREEN_FLAG_LAYER_OPENED_EVENT_STR","GREEN_FLAG_LAYER_CLOSED_EVENT_STR","ORANGE_FLAG_LAYER_OPENED_EVENT_STR","ORANGE_FLAG_LAYER_CLOSED_EVENT_STR","METHOD_STACK_LAYER_OPENED_EVENT_STR","METHOD_STACK_LAYER_CLOSED_EVENT_STR","METHOD_STACK_LAYER_ACTIVE_EVENT_STR","FORCED_COMMANDS_ENDED_EVENTS_STR","TAB_LOADED_STR","SET_ROBOT_PROGRAM_EVEN_STR","FOCUS_TO_ROBOT_IN_MAP","COMMANDS_CHANGED","ADD_FUNCTION_METHOD","REMOVE_FUNCTION","VARIABLES_CHANGED","PATTERN_CHANGED","RECOGNIZE_PROGRAM","SHOW_INFO","UPDATE_SCENE","TURN_TURBO_MODE","UPDATE_CLEAR_PROGRAM_BUTTON","TUTORIAL_ENDED","TUTORIAL_SCENARIO_CLOSED","UPDATE_TIME_TABLE","MAP_ELEMENT_SELECT_EVENT_STR","PAGE_CHANGED","MAP_GRASS_COUNT_CHANGED_EVENT_STR","ADD_ROBOT_SELECT_EVENT_STR","ADD_OBJECT_SELECT_EVENT_STR","MAP_LAYERS_COUNT_CHANGED_EVENT_STR","MULTIMAP_MODE","PATTERNS_COUNT_CHANGED_EVENT_STR","REMOVE_GLOBAL_ROBOT","ADD_ROBOT","REMOVE_ROBOT","COOPERATIVE_MODE","REDRAW_GLOBAL_ROBOT","ADD_GLOBAL_ROBOT","ADD_CLONE","ADD_OR_REMOVE_ROWS","CHANGE_NUMBER_IN_INPUT_NODE","CLOSE_NUMBER_INPUT_LAYER","VARIABLE_VALUE_CHANGED","FUNCTION_DEFINITION_REMOVED","VARIABLE_DEFINITION_REMOVED","COMMAND_REMOVED","FUNCTION_PARAMS_CHANGED","HIDE_SELECT_LAYOUT","SHOW_SELECT_LAYOUT","RESET_HIGHLIGHT","DESELECT_NODE","DESELECT_FUNCTIONBUTTON","PARSE_NODE","CHANGE_NUMBER_NODE","eventName","EventCustom","eventManager","dispatchEvent","nodeOrPriority","listener","EventListener","create","CUSTOM","addListener","_localizedStrings","ResetLanguage","loader","getRes","extendLocalization","NORMAL_STATE","SELECTED_STATE","DISABLED_STATE","FAILED_STATE","spriteUtils","_levelType","_tempSpriteFrames","addTempSpriteFrames","spriteFrameCache","addSpriteFrames","registerTempSpriteFrames","initMapTexture","tileset","getMapTileset","removeSpriteFramesFromFile","getMapTextureName","initRobotTextures","robotType","GlobalRobotType","Counter","ExtendedCounter","GreenFlag","OrangeFlag","resources","getResources","initLevelRobotsTextures","getRobotCount","getType","globalRobots","getIconName","getButtonGroupName","getIconSprite","Sprite","getIconSpriteFrame","getSpriteFrame","getInterfaceElementName","getNodeLayerElementName","getInterfaceElementSprite","getInterfaceElementFrame","getRobotMethodSpriteName","method","isNumber","EMPTY_METHOD","getNumberButtonSpriteName","getEmptyMethodSpriteName","getMethodCallSpriteName","getStatementSpriteName","getRobotMethodSprite","getRobotMethodSpriteFrame","getRobotVariableSprite","getRobotVariableSpriteFrame","getRobotConditionSpriteName","condition","getConditionStatementSpriteName","getExprSpriteName","getSignSpriteName","sign","getAllocSpriteName","getNumberSpriteName","getIntMethodSpriteName","getBoolSpriteName","getRobotConditionSprite","getRobotConditionSpriteFrame","getRepeaterSpriteName","repeater","getRepeaterSprite","getRepeaterSpriteFrame","getMapGrassTileName","tile","getMapGrassTile","getMapGrassTileFrame","getMapWallTile","wall","getMapWallTileFrame","orientation","MapLayer2D","Orientation","Iso","Ortho","getMapTileName","getMapTile","getMapTileFrame","OK_STATUS","DEFAULT_TIMEOUT","_sendRequest","xhr","getXMLHttpRequest","request","encodeURIComponent","open","setRequestHeader","withAuth","timeout","ontimeout","Error","onerror","errorText","onreadystatechange","readyState","responseText","e","hasCheckResponse","checkResponse","error_description","message","send","_sendRequestWithToken","updateAccessToken","updateResponse","access_token","refresh_token","pass","password","client_id","loginByCode","code","codeVerifier","redirectUri","code_verifier","redirect_uri","register","mail","getUserAccountData","getPMVersion","getMarketableWorlds","getWorld","getWorldMeta","uploadWorld","worldData","updateWorld","updateQuery","getMireraCourses","linkWorldWithMirera","course","unlinkWorldWithMirera","getLevels","uploadSolution","solution","getGameSolutionsResult","gameID","sendPurchaseData","restore","purchasePlatform","os","OS_IOS","OS_ANDROID","uuid","paymentData","audioUtils","BACKGROUND_AUDIO_FILE","WIN_SOUND_FILE","LOOSE_SOUND_FILE","_backgroundAudioID","_playAudioFile","performFunctionInCocosThread","playBackgroundMusic","audioEngine","playMusic","setMusicVolume","setBackgroundMusicVolume","setEffectsVolume","playLooseSound","playEffect","playWinSound","playSound","stubCallback","saveValue","jsb","writeStringToFile","encodedValue","Base64","encode","LZString","compress","encoded","localStorage","setItem","readData","getStringFromFile","getItem","decompress","decode","appFolder","removeItem","fullPathForFileName","fullPathForFilename","copyFileFromRes","source","dest","resData","copyFile","dir","fileList","isString","getFileContent","getArcPoints","cx","cy","r","start_angle","arc_angle","num_segments","theta","tangetial_factor","Math","tan","radial_factor","cos","sin","arc_vertices","ii","p","ty","logError","SOCIAL_TYPE","FB","VK","socialType","codeChallenge","scheme","redirect","window","location","href","redirParts","split","lastPart","focus","loginCallback","origin","removeEventListener","addEventListener","openURL","Application","worldConvertFunctionsK","hasConvertFunction","from","to","Number","res","convert","worldPathOrObject","convertLevel","fromVersion","toVersion","v","fn","_1_to_2","_2_to_3","k","l","functionData","f","newF","functionID","hidden","givenText","doText","blocks","newB","resizable","minHeight","maxHeight","minWidth","maxWidth","methods","newH","hint","funcBlockHints","funcHint","h","_3_to_4","block","m","methodID","executeType","_4_to_5","conditions","_5_to_6","canEditProgramPattern","maxFunctionCount","maxMethodCount","functions","_6_to_7","globalRobotData","startRobotIndex","baseRobotIndex","maps","robotsTaskList","childRobotID","_7_to_8","gRobot","oldData","robotDataGroups","config","useCompareConditions","_8_to_9","headerValue","_9_to_10","taskList","robotID","taskType","needToRepair","targetPoint","_10_to_11","tutorialScenario","mapElements","_11_to_12","objects","items","_12_to_13","robot","globalRobotConfig","_13_to_14","task","PushLevelModule","Type","_14_to_15","func","t","max","symbols","symbolString","symbol","SymbolType","Method","Function","Empty","Condition","programDataMap","_15_to_16","_16_to_17","newProgramData","currentIndex","programDataArray","maxRepeaterCount","maxConditionCount","maxCondRepeaterCount","_17_to_18","usedMethodsCount","useGroupButtons","funcsMap","_18_to_19","_19_to_20","alloc","AllocVals","INT","BOOL","nodesList","programTree","head","node","pop","children","Identifier","_20_to_21","useCustomFuncs","customFuncs","_21_to_22","Body","_nodeName","BodyTag","IFThenTag","IFElseTag","worldConvertFunctionsP","oldWidth","oldHeight","worldUtils","loadWorld","loadLocalOnError","_loadWorldFromNetwork","callbackTarget","checkOrders","isWellOrdered","syncWorld","_syncWorld","_loadLocalWorld","_worldMetaCallback","_worldCallback","worldPath","_succeededLoadWorld","sourcePath","_failedLoadWorld","getWorldConvertFunctions","compareFn","errorMessage","isBuiltinWorld","reloadBuiltinOnError","_clearPreviousWorldVersions","versions","getWorldVersions","cacheFileList","_handleNetworkError","_worldMetaSyncCallback","_levelsCallback","g","rl","_gameSyncProtocol","gameMeta","protocol","editLog","deleteLevels","addLevels","levelFound","conflictLevels","levelsToSync","updateLevels","actions","_worldSyncProtocol","worldMeta","addedGames","gameFound","layer","LevelConflictLayer","_conflictResult","setPosition","getRunningScene","syncLevels","_updateWorldCallback","gameIterator","actionResult","results","action","_worldSyncResult","_getSyncLevelsForGame","_getSyncLevelsForWorld","concat","result","downloadWorld","backgroundUtils","_levelBackgroundParameters","generateBackground","LayerColor","BACKGROUND_COLOR","centerX","centerY","setContentSize","centerSpr","mist1","mist2","galaxy1","galaxy2","light1","light2","setAnchorPoint","skipCount","excludedAreas","rect","STARS_INTENSITY","random0To1","exclude","rectContainsPoint","MAX_SKIP_COUNT","star","setScale","setOpacity","setRotation","generateLevelBackground","areaSize","parameters","getBackgroundParameters","_generateLayerByParams","centerImage","intensityMultiplier","angle","PI","radiusX","rand","radiusY","ITEMS_INTENSITY","WIDTH_DELTA","validationUtils","WORLD_SCHEMA_PATTERN","_supportedLevelFormatVersions","_ajv","Ajv","v5","ownProperties","worldSchemaName","schema","addSchema","validateWorld","formatVersion","warn","validator","getSchema","validateWorldUserCache","worldDataCache","compile","$ref","NetworkDebugClientImpl","_broadcastServerStarted","_broadcastClientStarted","_ignoreRequests","inGame","_networkGame","_networkDebugClient","startDebug","start","NetworkDebugSendTypes","OTHER","setDataCallback","_dataCallback","setDiscoverCallback","_onDiscoverRequest","_gameOnHide","_gameOnShow","debugHost","networkDebugAddress","LOCAL_ADDRESS","isConnected","clearCallbacks","disconnect","connect","sendType","packet","host","time","sendPacket","timestamp","setPaused","startDiscover","discoverServerCallback","priority","setHidden","setPacketPriority","stopDiscover","sendConnectRequest","sendReadyForNetworkGame","ready","port","BROADCAST_DATA_PACKET_TYPE","FREE","isServer","SERVER","isClient","CLIENT","clientPacket","u","getConnectedHost","getGameIndex","getLevelIndex","clientSendPacket","CONNECT_TO_TEACHER_SERVER","ControlledNetworkGame","_netControlledGameStopped","DEBUG_RECONNECT","NetworkGameState","ProcessingLevel","Broken","Win","Loose","Develop","ReadyToChangeLevel","DISCOVER","BROADCAST_DATA","TEACHER_SERVER","STUDENT_CLIENT","GAME_SERVER","GAME_CLIENT","OVERLAY_START_ORDER","runningSceneUtils","_children","_order","_overlayOrder","_currentScene","_checkScene","runningScene","addChildWithOverlayOrder","removeChild","GAME_SERVER_PACKET_TYPE","LOAD_LEVEL","PROGRAM_UPDATED","START_GAME","GAME_CLIENT_PACKET_TYPE","READY_FOR_GAME","TEACHER_SERVER_PACKET_TYPE","START_SERVER","BECOME_SERVER","CONNECT_TO_SERVER","RECONNECT_TO_SERVER","CHANGE_LEVEL","STOP_GAME","STATUS_REQUEST","TIME_INFO","STUDENT_CLIENT_PACKET_TYPE","STATUS","LEVEL_STATUS_UPDATED","ROBOT_INDEX_MAP","PROGRAM","GameServerImpl","_clients","_playersConnectedCallback","_requiredPlayersCount","_robotIndexMap","setEventCallback","_eventCallback","setPacketCallback","_packetCallback","setPlayersConnectedCallback","setPlayersCount","count","_sendLoadLevel","client","getId","sendPacketToClient","getHost","loaded","clientIndex","cleanReadyFlag","stop","parsedPacket","sendBroadcastPacket","startPacket","setRobotIndexMap","robotIndexMap","getRobotIndexMap","GameClientImpl","_loadLevelCallback","_robotIndex","_programChangedCallback","setLoadLevelCallback","program","getCurrentRobot","getProgramData","programDataIndex","ControlledTeam","hostStudent","students","statesMap","markDeleted","transitionFinished","ControlledStudent","clearPrograms","discoverDate","lastConnectPacketDate","State","Disconnected","Free","Connecting","Connected","ConnectedToGame","PendingReconnect","TeacherServerImpl","teams","_refreshCallback","setRefreshCallback","_sendStartServer","playerCount","programMap","sendStopGame","_sendBecomeServer","sendConnectToServer","sendChangeLevel","sendTimeInfo","solvingTimes","_sendReconnectToServer","_reselectTeamHost","team","newHostIndex","newHost","indexMap","s","student","connectedToGame","foundTeam","foundTeamIndex","foundStudent","isHost","disconnected","programMapCopy","levelState","StudentClientImpl","sendCurrentLevelStatus","sendStatus","sendRobotIndexMap","sendProgram","sendTimeInfoToTeacher","sendLevelSceneEntered","_pendingGameIndex","_pendingLevelIndex","_pendingLevelObject","_pendingProgramMap","_waitLayer","_gameClient","_studentClient","_gameServer","_teacherHost","_connectedHost","_reconnecting","_started","_inGame","_isServer","_stopCallback","_solvingTimes","_currentLevelState","stopCallback","teacherHost","WaitNetworkGameLayer","show","_cleanup","WAIT_TIMEOUT","_teacherEventCallback","_teacherPacketCallback","_gameClientEventCallback","_startGameAsServer","_becomeServer","_startGameAsClient","_changeLevel","_reconnectToNewServer","trans","TransitionFade","StartMenuScene","runScene","_hideWaitLayer","_showWaitLayer","_stopGameClient","_stopGameServer","_stopStudentClient","_startGameServer","_startGameClient","LevelScene","_serverClientsConnectedCallback","generateProgramData","unschedule","_onWin","_onLoose","_onFailure","_startLevel","_onReadyToChangeLevel","_onLevelSceneEntered","_tutorialObjects","_scenario","_processingTutorial","_overlay","_pointer","_currentStep","_currentWaitListener","_isEmulating","_emulateTouchTimer","_processStepTimer","_scene","_startPoint","_isTouchMoved","_emulatedTouch","_draggingObject","_showTutorial","_tutorialScale","registerTutorialObject","isDraggable","isDroppable","Layout","Button","getTutorialObjectByName","getTutorialObjectByPoint","point","objName","isVisible","rectApplyAffineTransform","getBoundingBox","getParent","getNodeToWorldTransform","setTutorialScenario","scenario","startTutorial","scene","tutorialData","objectName","scale","lock","touchListener","TOUCH_ONE_BY_ONE","swallowTouches","_touchBegan","_touchMoved","_touchEnded","getPosition","_processNextStep","editTutorial","editLayer","getChildByTag","TUTORIAL_EDIT_LAYER_TAG","TutorialEditLayer","_dispatchTouchEvent","touchEvent","EventTouch","_eventCode","_createEmulatedTouch","realPoint","convertToUI","Touch","_setEmulatedTouchLocation","setTouchInfo","getID","_emulateClick","pos","EventCode","BEGAN","setSpriteFrame","setTimeout","ENDED","TUTORIAL_DELAY","_emulateMove","fromPos","toPos","totalStepCount","timePerMove","dx","dy","pointerTransform","getWorldToNodeTransform","pointerFrom","pointApplyAffineTransform","pointerTo","pdx","pdy","stepCount","moveEvent","MOVED","restart","clearTimeout","CANCELLED","stopAllActions","removeFromParent","_clear","_generateMoveAndClickAnimation","emulate","callFunc","animationFrames","animation","Animation","runAction","repeatForever","animate","getCurrentStepIndex","move","moveTo","sequence","_generatePressAndMoveAnimation","press","moveFrom","reverse","_generateMoveAnimation","delay","delayTime","hide","fadeTo","processCurrentStep","TutorialStepType","CLICK_OBJECT","_processClickStep","DRAG_OBJECT","_processDragStep","MOVE_TO","_processMoveToStep","CLICK_AREA","_processClickAreaStep","WAIT_EVENT","_handleProcessNextStep","nextStepIndex","nextStep","steps","TUTORIAL_SHOW_DELAY","getNextStep","_processWaitEvent","clickObject","unlock","transform","objRect","pointerRect","emulateFn","fromObject","toObject","fromTransform","fromRect","pointerFromRect","toTransform","toRect","pointerToRect","draggingObjectAction","cloneImage","pAdd","delta","destRect","removeListener","onDropToObject","dropObjectName","onDragCancelled","cancelTouch","convertToWorldSpace","radius","pDistance","convertTouchToNodeSpace","clearTutorialObjects","reset","touchPoint","OBJECT_NAMES","START_PROGRAM","MAKE_STEP","RESTART_PROGRAM","START_ALL_PROGRAM","PREV_LEVEL","NEXT_LEVEL","CHANGE_SPEED","MAX_SPEED","SETTINGS","BACK","GLOBAL_HINT","SHOW_MSL","HIDE_MSL","CLEAR_MSL","DRAG_STACK","COUNTER_SHOW","COUNTER_HIDE","GREEN_FLAG_SHOW_HIDE","ORANGE_FLAG_SHOW_HIDE","OBJECT_NAME_PATTERNS","STAR","SELECT","REPEATER","CONDITION","METHOD","RESIZE_BLOCK","SHOW_PICTURES","TutorialStep","TutorialScenario","getPrevStep","empty","Hint","FunctionHint","emptyBlockHints","GlobalHint","parentMap","position","startPosition","sprite","_isPlayingAnimation","visualId","isPlayingAnimation","physicalConnector","_getPhysicalConnector","isBusy","playAnimation","animationCallback","forced","playObjectAnimation","getAnimation","stopAnimation","_endAnimation","updateSprite","generateSprite","previewDraw","getState","setState","updateNumberSprite","parentLevel","hasPhysicalConnector","getPhysicalConnector","TaskList","initWithLevel","Task","getTaskCount","addTask","deleteTask","getTask","getNotCompletedObjects","mapIndex","retArray","GlobalTaskType","ExCounterMemory","Position4","OutputValue","_level","fillWithInitialData","moveDown","moveUp","moveLeft","moveRight","_modules","robotManager","generateRobotManager","FunctionButton","getButtonTypes","deselect","getDeselectFunction","availableRobotList","getAvailableRobots","module","compileRobotProgram","generateProgramLayer","gameType","useMethodStack","generateProgramEditorLayer","isFilled","getFunctionButtonPrototype","getProgramLayerPrototype","generateFunctionButton","drawBackground","createMethodListButton","generatePlayerRobotInterfaceLayer","getAvailableGlobalRobots","useExtraMethodsInKumirRobot","getAppVersion","getAquariusTankScale","KModule","programUtilsK","ProgramLayerK","ProgramEditorLayerK","RobotManagerK","ProgramDataK","Repeater","CondRepeater","MethodList","RecognizeResult","IfStatement","LogicExpression","Alloc","Variable","Statement","Expression","Constant","HorizontalBar","IntMethod","Bool","ElseBlock","selectedButton","FunctionButtonK","MethodListButtonK","PlayerRobotInterfaceLayerK","labels","Output","KumirLevelModule","AquariusLevelModule","GrasshopperLevelModule","RepairLevelModule","TrainLevelModule","DraftsmanLevelModule","TurtleLevelModule","PhysicalRobotLevelModule","LightLevelModule","PModule","programUtilsP","ProgramLayerP","ProgramEditorLayerP","RobotManagerP","ProgramDataP","FunctionButtonP","MethodListButtonP","PlayerRobotInterfaceLayerP","parentNode","_isEditable","_nodeView","val","parent","setNodeView","nodeView","getNodeView","getTagName","setTagName","getChildren","isMain","MAIN","setNonEditable","isEditable","Func","newNode","childClone","getUsedMethodsCount","Action","methodsCount","SyntaxTree","createMainAlg","main","MainAlg","createGlobals","body","Globals","moveNode","place","_getChildPlace","BodyFirstChildTag","createNode","Prog","Loop","LoopVals","nTimes","for","whileC","ArythmMethods","Division","Addition","Substraction","Multiplication","ArythmConditions","LeftLRight","RightLLeft","Equal","NotEqual","LeftEqual","RightEqual","NTimesNumTag","StatementVarTag","StatementValueTag","BoolTrue","BoolFalse","CommanParamTag","ExpressionLeftTag","ExpressionRightTag","ForIteratorTag","ForBegTag","ForEndTag","ForStepTag","FuncParamTag","IFCondTag","WhileCondTag","ArythmConditionsButtons","ArythmMethodsButtons","IfVals","IF_ST","IF_ELSE","Constants","One","Two","Three","Four","Five","Six","loops","funcs","CMD_A","CMD_B","CMD_C","CMD_D","CMD_E","conds","expressions","logicOperatorsLessGreater","logicOperatorsEquals","ifConstructions","_values","set","has","get","forEach","elem","some","values","delete","deleteIndex","SetClass","add","NativeFunction","_paramsNumber","_nativeMethod","_returnArgsNumber","paramsNumber","returnArgsNumber","execute","getParamsNumber","returnArgs","CMD_MAIN","CMD_GLOBALS","CMD_INDICATE","CONDITION_EMPTY","CONDITION_DISABLE","MAX_REPEATER","REPEATER_EMPTY","REPEATER_DISABLE","MAX_FUNCTION_COUNT","MAX_PROGRAM_WIDTH","Symbol","condsOpp","constants","intMethods","ProgramInfo","getCurrentProgramData","getProgramDataByIndex","RobotState","NoState","EndedWork","PlayingAnimation","AbstractRobot","_state","parentRobot","childRobot","nativeFunctions","nativeFunctionMap","repeaters","conditionOpposites","_lastAnimation","originalProgram","newCache","canEditProgramSymbol","isProgramDataEditable","setProgramData","setStateFlag","clearStateFlag","isEndedWork","isBroken","clearAllStateFlags","hasNativeFunction","findNativeFunction","executeNativeFunction","pConnectorState","_getPhysicalConnectorState","incStepCount","executeRobotCommand","getChildFunctions","getChildRepeaters","getChildConditions","getChildConditionOpposites","getMap","activeMap","setStepCount","checkCondition","_checkConditionInternal","getRepeaterValue","_getRepeaterValueInternal","win","destroy","interact","interactable","canMoveOn","getConditionCount","getRepeaterCount","_physicalStateChanged","getLastAnimation","getRobotMethodName","methodName","AnimationTransaction","spawn","addPart","addAnimationToPart","sequenceAnimation","targetedAction","getSprite","PlayerRobotType","RepairRobot","PushRobot","PhysicalRobot","BLERobot","LightRobot","PlayerRobot","needToPlayAnimation","generateRobotSprite","updateConditions","hasChangeableConditions","variableList","_variables","_reservedTagsNum","addVariable","reserved","setValue","getValue","clearList","clearNotReservedList","Instruction","command","EXECUTE","CHECK_CONDITION","START_LOOP","END_LOOP","RETURN","JUMP_IF","JUMP_NIF","JUMP","ALLOC","FETCH","PUSH","STORE","POP","CALC","RobotProgram","instructions","stack","instrPosition","ended","paused","setForceInstruction","methodId","LABEL_PATTERN","programUtils","totalLabelCount","searchNativeRobotFunction","searchRobot","searchGlobalNativeFunction","getLabel","label","searchRobotForCondition","searchGlobalRobotForCondition","RobotProgramK","memory","argRegister","parseProgram","parseTree","instrList","instLength","instr","paramQuantity","retInstr","blockLength","jmpInstr","jumpLabel","compileArg","varType","varName","allocateInstr","storeInstr","leftOp","rightOp","operation","compileIFStatement","compileSimpleCondition","compileSimpleLoop","_compileWhileBlock","until","_compileUntilBlock","HorizontalBarNode","CHILD_TAG","paramCount","nativeFunc","funcArgs","fromReg","blockStartInstr","NIFInstr","blockStartLabel","condEndLabel","popInstr","repInstr","loopBodyStartLabel","blockEndLabel","repIndex","repBeg","repVal","repStep","repBody","ForRepeaterNode","STEP_TAG","stepTag","repType","repeaterTag","iteratorTag","repPlace","_lineUp","_lineDown","endInstr","repArgs","elseBlock","thenBlock","elseLabel","condInstr","condRobot","condArgs","compileFunctionCall","argres","paramsNum","Arg","Res","ArgRes","RobotProgramP","parsedProgram","_compileFunctionBlocks","FunctionBlockType","Root","currentDepth","currentMaxLength","parseFunction","leftUp","rightDown","depth","maxLength","currentParent","lastNotEmptyString","isMethodBlock","methodBlock","isEmptyRow","Simple","tempCurrentParent","currentBlock","_getComplexBlockType","symbolType","_compileFunction","currentFunction","_compileBlock","_compileSimpleBlock","_compileRepeaterBlock","_compileConditionBlock","_compileCondRepeaterBlock","functionExist","methodPlace","repeaterRobot","_searchRobotForRepeater","_searchGlobalRobotForRepeater","valueTag","conditionPlace","conditionTag","RobotManager","_controlled","_testAllLevelMaps","_testCurrentRobot","_startMapIndex","_currentMapIndex","_programs","_forcedList","_executedStepForceInstrCount","states","_revertCount","_loopCount","Paused","PausedByStep","SteppedWorking","getActiveMapIndex","_compilePrograms","Working","RequestSteppedWorking","scheduleCallbackForTarget","_loop","pauseTarget","resumeTarget","testAllMapsSync","MAX_SYNC_LOOP_COUNT","testAllMaps","_updateVisualState","isBrokenRobot","sendEvent","rebaseRobots","baseRobot","robotsEndedWork","objectsPlayingAnimation","RevertingForceInstructions","_processForceCommands","ProcessingForceFunction","_processRobotProgram","programPaused","robotsPlayingAnimation","robotsLoose","completeInfo","getTaskCompleteInfoForMap","completed","notCompletedObjects","setNotCompleted","isRobotWin","isWin","setActiveMap","forcedInstr","robotStates","shift","addForceCommand","n","canAddForceCommand","isGlobal","revertForceCommands","preMethodID","preMethod","preInstr","setControlledMode","clearPausedFlags","_p","defineGetterSetter","highlightEvent","iterNum","rep","step","saved","got","sqrt","abs","random","min","AbstractMap","mapLayer","clean","MapLayer","spawnObjects","placeRobots","firstPlace","removeRobots","generateMapLayer","MapElement","_type","originalType","_robotsHere","_objectsHere","startForRobot","startRobotData","_notCompletedSprite","generateTerrainSprite","setType","initElement","addRobot","removeRobot","removeAllRobots","containsRobot","containsRobotID","addObject","removeObject","getObjectCount","getRobotsCount","removeAllObjects","getObjectByKeyIndex","containsObject","setVisible","scaleTo","START_FOR_NO_ROBOT","MapsContainerLayer","activeMapIndex","_parallax","_background","_canScrollLayers","_previewDraw","_tutorialDraw","_mapScrollVector","_touchType","_touchCount","_scale","_centerPoint","_parallaxDelta","_enableScroll","_parallaxArray","_enableMoving","tutorialDraw","startMapIndex","TouchType","None","mapSize","setClippingEnabled","scaledMapSize","BACKGROUND_SCALE","drawMapLayers","_touches","TOUCH_ALL_AT_ONCE","onTouchesBegan","onTouchesMoved","onTouchesEnded","_mapChangedEventCallback","_zoomIn","_zoomOut","_focusToRobot","changeActiveMap","_moveParallaxLayerByDelta","centerMap","newActiveMapIndex","prevActiveMapIndex","removeFocus","_getMapLayerRatio","_rebaseRobots","_recalculateMapLayersZOrder","_correctMaps","setLocalZOrder","getMapCount","ACTIVE_MAP_RATIO","BACKGROUND_RATIO","_getOriginalMapLayerPos","generateLayers","_updateLayers","pSub","_layerPositionByIndex","_getScaleByX","opacity","_layerOpacityByX","ignoreAnchorPointForPosition","pLength","touches","pEvent","enabled","activeMapLayer","foundFlag","containsPoint","ScaleActiveMap","TouchActiveMap","ScrollMaps","DragActiveMap","diff","getDelta","diff1","diff2","loc1","getLocation","loc2","dist","oldDist","newScale","SCALE_VELOCITY","getScale","_setMapsScale","angleCos","pDot","pNormalize","_scrollMaps","activeLayerPos","mapPosX","shiftedX","_centerCurrentMap","handleTouch","_getScaleByIndex","ZOOM_SPEED","animated","speed","targetPos","backRatio","backgroundTargetPos","moveEnd","_endMove","activeLayer","moveDelta","mapBB","minX","maxX","minY","maxY","activeMapPos","mapCount","lastMapPos","firstMapPos","realMapPos","realMapPosWithoutParallax","curMapIndex","prevMapPosIndex","nextMapPosIndex","nextMapPos","prevMapPos","curMapPos","targetMapPos","distanceToTargetMap","mapDelta","LAYER_POSITION_X_DELTA","newMapPos","_shiftPointByDelta","shiftedPoint","moveLayer","scaleLayer","fadeLayer","_getIndexByX","atan","LAYER_POSITION_ANGLE","Layer","_map","_enabled","_clicksEnabled","setCascadeOpacityEnabled","setEnabled","isEnabled","enableClicks","checkPositionTasks","removePositionMarks","drawRobotStartPositionMark","markPosition","drawMap","update","realPosition","positionFromReal","restoreElement","getWorldMinimumPoint","scheduleUpdate","unscheduleUpdate","_currentRobot","_activeMapIndex","_physicalConnector","globalRobotHelper","createRobot","connectToPhysicalEnvironment","disconnectFromPhysicalEnvironment","garbageCollect","setCurrentRobot","setActiveMapIndex","ObjectSprite2D","retain","release","exceptRobot","clearCache","mapStates","globalRobotsStates","globalRobot","_supportsPhysicalConnector","PhysicalConnector","getConnectorForType","setStateCallback","_mapElementSize","terrainLayer","objectLayer","depthLayer","container","_orientation","_containerShift","getMapElementSize","getRealHeight","getRealWidth","addTerrainObject","TerrainSprite","removeTerrainObject","_drawIsoLayers","_drawOrthoLayers","_drawMapElements","_drawDepthLines","bake","createOrderGraph","setOrientation","getOrientation","TopologicalSortLayer","setScaleY","elementRect","getNodeToParentTransform","depthSprite","getDepthLineSprites","depthHorizontal","horizontal","ISO_TRANSFORM","depthVertical","vertical","robotSprite","robotPosition","DETECTING_ROBOT_AREA","moveVector","handles","currentRobot","_activeRobot","rob","setSpriteColor","getRobotIndex","setActive","startMarkName","START_MARK_NAME_PATTERN","startMarkSprite","getChildByName","INACTIVE_ROBOT_OPACITY","posMarkName","POSITION_MARK_NAME_PATTERN","posMarkSprite","mapPoint","getContentSize","_drawPositionMark","_removePositionMark","terrainSprite","element","setRealPosition","setDirection","direction","markSprite","setName","_setRobotStartPositionMarkPosition","_removeRobotStartPositionMark","markName","_setMarkPosition","showCommands","firstRobots","hasChangeOrientationOption","needToDrawOrientationOption","ENABLE_DEBUG_DRAW_BB","ISO_TRANSFORM_INV","affineTransformScale","affineTransformRotate","affineTransformMakeIdentity","degreesToRadians","affineTransformInvert","Map2D","hasWalls","setSize","elementFromPoint","getNextDirectionalElementPosition","getPrevDirectionalElementPosition","mapElementsStates","objectsStates","_minPoint","_maxPoint","_needToUpdateZOrder","_needClearUpdateZOrder","frame","_debugDrawBB","getMinPoint","getMaxPoint","needToUpdateZOrder","clearUpdateZOrderFlags","needClearUpdateZOrderFlag","setLocalAABBPoints","minPoint","maxPoint","getRealPosition","centerPoint","bbCenterPoint","removeAllChildren","bottomDraw","DrawNode","topDraw","bottomPoints","leftPoints","topPoints","rightPoints","invTransform","rightPoint","leftPoint","drawPoly","RED","draw","points","DynamicSprite","endCallBack","_objects","_sprOrder","_graphCreated","_forceUpdate","childCount","StaticSprite","a_max","behindCount","b_min","spritesBehind","visited","updateOrderGraph","forceUpdate","needToUpdate","_visitSprite","spr","MapElement2D","PlayerRobot2D","_oldPosition","_indicate","RobotAnimation2D","Indicate","_endIndicate","getDirectionCount","_removeFromOldPosition","_removeFromCurrentPosition","_turnLeft","newDirection","Turn","_endTurn","_turnRight","Destroy","_canMoveTo","_moveTo","initialDirection","skipAnimation","Move","_endInteract","_move","nextPos","_moveReverse","prevPos","_realMinPoint","_realMaxPoint","_calculateRealBBPoints","RobotColorList2D","Green","Orange","Blue","Pink","Length","RobotSprite2D","_activeSprite","_activeCircleSprite","_commandsSprite","_commandsCount","_getActiveSpritePosition","_getCommandsSpritePosition","Text","setColor","setNormalizedPosition","_getFrameName","_getDestroyAnimationName","_getIndicateAnimationName","MethodStackLayer","opened","setString","indicateCommands","SHOW_COMMANDS_TIMEOUT","getRobotColor","_turn","_destroy","_getMoveAnimation","oldDirection","curDirection","endCallback","moveRobot","_transport","animationCache","setDelayPerUnit","Animate","end","CallFunc","Sequence","getTotalDelayUnits","IsoRobotSprite","_getTurnAnimationName","turnEnd","OrthoRobotSprite","_getTurnAngle","turn","rotateTo","ModuleInfo","generateEmptyMap","_fillLevelData","_fillRobotProgramData","getObjectsInfo","getRobotsInfo","getRobotConditionName","condName","getRobotSpriteSheet","getSettings","getExtraLevelSettings","getExtraMapSettings","getExtraInfo","getMapElementsType","getRobotDisplayedName","getDisplayedNames","generateObject","objectType","generateRobot","stopResizingWidth","side","stopDecreasingHeight","stopResizingHeight","canUseMethodStack","getAffineVector","dif","getLocalization","generateTaskLayer","getTaskLabel","needToRotateRobot","addLevelTask","addExtraMethods","getChangeableConditions","compareConditions","getLessonMapLayer","getModuleType","getLevelNames","ret","getLevelTypes","getLessonMapLayers","tyleset","canNotDragOrAddObject","localizedStrings","moduleLoc","loc","GreenFlagRobot","OrangeFlagRobot","configure","GlobalRobot","_currentRobotID","_currentRobotGroup","_value","NativeMethod","Write","_write","CounterSprite","IncValue","_endPlayingAnimation","_counter","NotEmpty","Value","Set","_dec","_inc","_setStonesByValue","_stonesSprite","OutputTask","Inc","Dec","_empty","DecValue","Reset","Fill","_countLabel","_lightSprite","_counterValue","_getSpriteFramesFile","front","_getFrontFrameName","back","_getBackFrameName","_getLightFrameName","_getLightX","_getLightY","FONT_NAME","FONT_SIZE","setTextColor","_getCenterX","_getValueLabelY","_getBottomY","_getBottomStoneAniY","_getTopY","_incValue","_decValue","_setValue","_reset","stone","showIn","FadeIn","MoveTo","finish","_dysplayValue","showOut","FadeOut","_lightAnimation","fadeIn","fadeOut","FONT_COLOR","_memory","_useCompareConditions","MemClear","_memClear","MemAdd","_memAdd","MemSub","_memSub","MemRestore","_memRestore","Memory","reconfigure","ExtendedCounterSprite","MemSet","counter","Random","ExCounterMemoryTask","complete","targetGroupValues","robotGroups","getRobotDataGroups","_memoryLabel","_getValueLabelX","_setValues","_memSet","FlagRobot","_flagState","_up","Up","FlagRobotSprite","_down","Down","IsUp","IsDown","SquarableLevel","Magnet","SquarableMapLayer","del","X","floor","Y","MapDirection4","Right","Left","SquarableMap","retPos","PlayerRobot4","TurnLeft","TurnRight","Clear","Wall","MoveReverse","PositionTask4","MapElement4WithWalls","wallUpSprite","wallLeftSprite","walls","setDimension","dimension","generateWallLeftSprite","WallSprite4","WallType4","generateWallUpSprite","SquarableMapWithWalls","editWalls","SquarableMapLayerWithWalls","_getWallType","_drawWall","el","_removeWall","PlayerRobot4Walls","_isNearClear","nextElement","_isNearWall","oldPosition","SelectPatternMenu","_selectedPatternIndex","_robot","_target","_callback","setBackGroundImageScale9Enabled","setBackGroundImageCapInsets","setLayoutType","LINEAR_HORIZONTAL","updateCircles","patternCount","circle","SEPARATOR_SIZE","buttonMargin","LinearLayoutParameter","setGravity","CENTER_VERTICAL","setMargin","buttonMargin0","icon","Widget","PLIST_TEXTURE","setLayoutParameter","setTag","addClickEventListener","_selectPattern","getChildrenCount","setTouchEnabled","sender","getTag","oldCircle","_updateTextures","newCircle","loadTextures","LEFT_MARGIN","HEIGHT","LEFT_BOUND","PlayerRobotSettingsLayer","_label","_settingsLayout","_canEditProgramPattern","RELATIVE","LevelSettingsLayer","SEPARATOR","labelAlign","RelativeLayoutParameter","setAlign","PARENT_TOP_CENTER_HORIZONTAL","setRelativeName","settingsLayoutAlign","LOCATION_BELOW_CENTER","setRelativeToWidgetName","CheckBox","_canEditProgramPatternChanged","canEditAlign","PARENT_TOP_LEFT","settingsInterface","settingInterfaceAlign","LOCATION_BELOW_LEFTALIGN","patternLayout","_createPatternLayout","WIDTH","BORDER_RADIUS","relativeToName","patternLayoutAlign","addPatternLeftButton","_addLeftPattern","addPatternRightButton","_addRightPattern","deleteButton","_deletePattern","addPatternRightButtonAlign","_getRobotPatternCount","MAX_PATTERN_COUNT","setObject","_useTabs","_useCustomFuncs","_maxMethods","maxMethodLabel","maxMethodLabelAlign","TextInput","maxMethodsAlign","LOCATION_RIGHT_OF_CENTER","setInsertTextCallback","_maxMethodsChanged","_useTabsChanged","useTabsAlign","_useCustomFuncsChanged","drawChangeableButs","prevLayoutName","condHeight","logs","drawGroupChangeableButs","LogicExpressionNode","slice","logsAlign","logsEq","logsEqAlign","RepeaterNode","vals","ifSts","IfNode","allocs","AllocNode","intVals","setTitleText","setTitleColor","exprs","NumericExpressionNode","consts","levelVals","layoutName","topSeparator","LoopsLayerLayout","LoopsLayerLayoutAlign","SelectionButton","setSelectedTexture","setNormalTexture","chosenVals","programDataValues","groupButton","groupValues","programVals","selected","getString","_maxFunctions","_maxRepeaters","_maxConditions","_maxCondRepeaters","_fillSettingsP","maxFunctionLabel","maxFunctionsLabelAlign","_createTextInputAlign","_createLabel","_maxFunctionsChanged","_maxRepeatersChanged","_maxConditionsChanged","_maxCondRepeatersChanged","_gradientLayer","setBackGroundImage","updateSize","settingsAlign","PARENT_TOP_RIGHT","setBackGroundColorType","BG_COLOR_GRADIENT","setBackGroundColorVector","setBackGroundColor","OvalLayout","GRAD_START_COLOR","GRAD_END_COLOR","gradientLayerAlign","moveBy","_showEnded","_hideEnded","LevelSettings","_levelName","_editTutorialButton","levelNameAlign","_insertText","relativeName","_useMethodStackChanged","useMethodStackAlign","_useProgramRecognizerChanged","useProgramRecognizerAlign","canEditProgramData","_canEditProgramDataChanged","canEditProgramDataAlign","indicateMethod","_indicationChanged","robotsCanBeIndicated","indicateAlign","extraSettings","extraAlign","tutorialLayout","HBox","_isTutorialChanged","_editTutorial","tutorialElementAlign","tutorialAlign","mapLayersLayout","mapLayersLayoutAlign","addDownButton","_addDownLayer","addUpButton","_addUpLayer","_deleteLayer","addUpButtonAlign","conditionsLayout","_conditionChanged","conditionsAlign","useGreyCondition","useLightBlueCondition","useBlueCondition","MapLayersEditActions","AddDown","AddUp","DeleteCurrent","SquarableMapEditor_touchType","Resize","DragRobot","DragStartPoint","EditMap","MoveMap","DragObject","DeleteObject","ResizeLeft","EditorTapsType","ChangeMapElement","AddRobot","AddObject","AddClone","SquarableMapEditor_resizeSide","SquarableMapEditorLayerHelper","_resizeLeftSprite","_resizeSprite","_startDragPoint","_dragedObject","_selectedObjectForTapType","_tapType","_disableEditing","rectL","dragedRobot","startPoint","resizeTouchMoved","affineVector","_resizeWidthLeft","_resizeWidthRight","_resizeHeightLeft","_resizeHeightRight","_dragRobotMoved","p_normal","_positionOutOfMap","_dragObjectMoved","normalPoint","_dragStartPointMoved","pCompOp","_changeWallsForTouch","p_left","p_up","p_right","p_down","_setActiveRobot","newRobot","newActiveRobot","activeIndex","_onRemoveRobot","deleteRobotGroupID","needToUpdateGroupID","_removeObject","_mapElementClicked","_addRobot","_onAddRobot","_addObject","_addClone","isFound","indexes","sgn","wallsRemoved","_deleteMapElement","specialTask","newLine","createMapElement","unshift","_drawMapElement","_update","_moveWallsUp","moveElementsUp","newPos","oldPos","_moveWallsDown","moveElementsDown","_moveWallsRight","_moveWallsLeft","moveElementsRight","moveElementsLeft","resizeContainer","TaskLayer","_task","_taskType","_deleteCallback","_deleteTarget","header","LINEAR_VERTICAL","headerLayout","headerAlign","CENTER_HORIZONTAL","_delete","addDeleteCallback","getTaskType","_onTaskRemoved","refresh","_connected","_stateCallback","_busy","_endCommand","STATE","CONNECTED","DISCONNECTED","CONNECTING","Lego","Sound","LegoPhysicalConnector","BLEPhysicalConnector","SoundPhysicalConnector","MagnetPhysicalConnector","_robotHost","DEFAULT_HOST","_currentCommand","_dataReceiveCallback","_connectedCallback","_disconnectedCallback","_client","_magnetHost","_sendConnectTime","_lastPacketTime","_lastStatusPacketTime","_reconnectCount","_packetQueue","_packetsProcessedConfirm","_magnetCommands","_packetNumber","_waitingForPacketProcessed","_paused","_robotMap","_objectMap","_mapCoordinatesTable","_mapCoordinatedReceived","_levelInitialized","_logList","hasCommand","hasAnimation","showMagnetLog","_addDebugWindow","ListView","BG_COLOR_SOLID","WHITE","started","magnetUDPPort","_log","START_PACKET_NUMBER","_sendConnectPacket","LOOP_INTERVAL","LOOP_NAME","_sendPacket","ip","fromCharCode","BYTES","SR_START","SEND_END","_requestMapCoordinates","_sendStatusPacket","_extractReceivedPacketData","bytes","CONNECTED_START","PACKET_TYPE","STATUS_START","SYSTEM","MAP_START","checkSize","STATUS_END","DELIVERED_END","MAP_END","DELIVER_CONFIRM","lastByte","MAP","clearCallback","string","stringBytes","stringByte","toString","startsWith","packetData","_udpLog","_programRestart","_parseMapCoordinates","_initLevel","_processPacketQueue","_finalizeRunningCommands","donePacketNumber","_endRunningCommands","curTime","MAX_RECONNECT_COUNT","RESEND_CONNECT_TIMEOUT","RECONNECT_TIMEOUT","_checkPacketQueue","sent","sendTime","RESEND_PACKET_TIMEOUT","retryCount","_sendQueuedPacket","STATUS_SEND_TIMEOUT","packetNumber","allConfirmed","_queuePacket","END_PACKET_NUMBER","EXCLUDE_PACKET_NUMBER","START","END","_addMagnetStepCommands","commands","sendCommands","passiveObjectsCommands","_getPassiveObjectsCommands","_sendMagnetCommands","magnetCommands","_getMagnetRobotCommands","_getMagnetObjectCommands","robotCommand","magnetPos","_getMagnetCoordinatesFromMap","magnetNextPos","magnetDirection","_getMagnetRobotDirection","RobotTypes","PullRobot","Pull","leftDirection","rightDirection","Repair","objectAnimation","_getMagnetObjectDirection","PushObjectAnimation","ObjectTypes","PushBarrel","PushBox","objMagnetPos","leftWall","upWall","RobotType","RepairMapElement","RepairMapElementType","BlueGrass","BrokenGrass","RepairedGrass","PushMapElement","PushMapElementType","BarrelTarget","BoxTarget","CommonTarget","coordinates","mapSymbol","robotDirection","BLACK","pushBackCustomItem","jumpToBottom","magnetLogUDPAddress","magnetLogUDPPort","RepairLevel","RepairMap","RepairMapEditorLayer","RepairMapLayer","repairElement","repair","disrepairElement","disrepair","LightBlueGrass","_repairCount","isRepaired","isBadRepaired","RepairTask","repaired","badRepaired","_repair","RepairRobotSprite","RepairRobotAnimation","_endRepair","_disRepair","_endDisRepair","GrassIsGrey","GrassIsNotGrey","GrassIsLightBlue","GrassIsNotLightBlue","GrassIsBlue","GrassIsNotBlue","_changeCondition","_changeConditionOpposite","DisRepair","addAnimations","sqrtCount","RepairRobotSettingsLayer","LANGUAGE_ENGLISH","RepairLevelType","NeedToRepairPattern","rep_repair","rep_gig","rep_ging","rep_gilb","rep_ginlb","rep_gib","rep_ginb","LANGUAGE_RUSSIAN","RepairTaskLayer","repairValue","greyCondition","lightBlueCondition","blueCondition","greyAlign","lightBlueAlign","blueAlign","lastIndexOf","elementType","_repairSlider","_repairLabel","_repairValue","_allRepairValue","repairLabelAlign","LEFT","Slider","loadBarTexture","loadProgressBarTexture","loadSlidBallTextureNormal","_repairSliderValueChanged","repairAlign","_updateRepairSliderValue","setPercent","_createRepairSliderValue","getPercent","eventType","EVENT_PERCENT_CHANGED","PushLevel","PushMap","_pushTargetElements","updatePushTargetElements","Grass","PushMapEditorLayer","PushMapLayer","PushTask","elementObjectType","CanMoveForward","CanNotMoveForward","lastObjectPosition","objectBlockLength","PushObject","isMoving","wasBroken","objectNextPos","PushRobotSprite","_isClearForward","hasObjects","_pull","objectPosition","prevElement","PullRobotSprite","_endMoving","PushObjectSprite","moveObject","PushBoxSprite","PushBarrelSprite","PushRobotSettingsLayer","Push","PushLevelType","push_pull","push_mf","push_nmf","PushTaskLayer","_updateTaskData","LightLampState","unLightened","lightened","LightLamp","countIgnitions","Lamp","turnOff","turnOn","callBack","LightLampAnimation","TurnOn","TurnOff","isLightened","LightLampSprite","_turnOn","_turnOff","lights","LightLamp0","LightLamp1","light","ParticleSystem","setPositionType","TYPE_GROUPED","LightObject","LightObjectSprite","LightObject0","LightObject1","LightLevel","LightDirection","UpLeft","DownLeft","DownRight","UpRight","LightMap","LightMapEditorLayer","LightMapLayer","LightMapElement","paths","LightRobotCourse","_fishes","_findDirectionFish","fishDirection","possibleShifts","periodOfRandom","q","fishFound","LightMapElementType","BottomWater","_getDirectionByShift","FISH_MOVE_STRAIGHT_WEIGHT","FISH_NO_WAY_DIR","_decideFunction","animationList","fishAnimation","FISH_SPEED","turnCount","moveFish","_needDrawFishes","countFishes","wallsHere","roadsHere","topWater","botWater","mainRoad","grass","Road","StopPoint","grassSprite","GreenGrass","waterBot","topSprite","TOP_WATER_ELEMENT","COUNT_SQUARES_TO_FISH","fish","_drawAroundWater","_drawAroundRoad","_checkForWater","_checkForRoads","curElements","_evolutionOfWall","curPos","originalPos","continueEvolution","variant1","WALLS","RIGHT_SMALL_ANGLE","variant2","DOWN_WALL","variant3","LEFT_BIG_ANGLE","t1","t2","LEFT_SMALL_ANGLE","WALLS_COUNT","UP_WALL","UP_SMALL_ANGLE","wallString","wallSprite","_checkForWall","currentElement","_evolutionOfRoad","ROAD_EVOLUTION_FLAGS","NO_ROAD","t3","t4","NO_EVOLUTION","flag2","EVOLUTION_DOWN_LEFT","EVOLUTION_UP_LEFT","EVOLUTION_UP_RIGHT","EVOLUTION_DOWN_RIGHT","roadSprite","elWidth","elHeight","spWidth","spHeight","_cleanWallSprites","borders","_getBordersForElementPosition","x1","y1","x2","y2","currentType","_cleanTopRoadSprites","roads","setElement","curType","UP_BIG_ANGLE","RIGHT_BIG_ANGLE","DOWN_BIG_ANGLE","DOWN_SMALL_ANGLE","LEFT_WALL","RIGHT_WALL","_turnLamps","_beginDirection","_wasTurn","_breakFlag","_stopPoint","_beginInverseDirections","_instrStack","_countLoops","countLoops","_left","_right","LeftReverse","_leftReverse","RightReverse","_rightReverse","LightRobotSprite","_endAnimate","_moveLoop","inverse","beginDirection","endDirection","wayPeace","invShift","_getShift","invType","_insertStraightPeace","tryDirection","tryDir","sh","_insertTurnPeace","straightShift","straightType","LightRobotAnimation","Play","TurnToLamp","_changeLamp","_turnOnReverse","oneTurnToOnLamp","_turnOffReverse","oneTurnToOffLamp","ob","getDirectionLamp","lamp","compare","compareEl","turnOnOneLamp","turnOffOneLamp","_play","_turnToLamp","inverseDirection","_insertMovePeace","_insertTurnAndIndicatePeace","_insertIndicatePeace","moveStart","animations","_getLightAnimationName","lightAnim","LightTask","LightRobotSettingsLayer","Light","LightLevelType","LightTaskLayer","PhysicalRobotLevel","physicalStateChanged","PhysicalRobotMap","_visitedCells","PhysicalRobotMapEditorLayer","PhysicalRobotMapLayer","PhysicalRobotMapElement","getVisitedCells","PhysicalRobotMapElementType","Plus","Minus","Divide","Red","Yellow","NullElement","OneElement","TwoElement","ThreeElement","FourElement","FiveElement","SixElement","SevenElement","EightElement","NineElement","PhysicalRobotSprite","_PhysicalConnector","PhysicalRobotAnimation","ChangeState","_updateTaskInformation","_stateIndicator","_push","_changeState","_getStateIndicatorPosition","setStartColor","GREEN","targetBack","moveRobotBack","PhysicalTask","PhysicalRobotSettingsLayer","Physical","PhysicalLevelType","phys_push","phys_pull","PhysicalTaskLayer","recognizeProgramButton","_onRecognizeMatsClick","_onRecognizeMats","_onRecognizeError","_mapRecognizeElementType","field","recType","isNaN","parseInt","messageBox","MessageBox","correctArray","currentArray","completedFlag","_cellsInput","_cellsTaskArray","setAttachCallback","_updateTaskFromInput","cellsAlign","_updateCellsInputValue","_updateCellsInputString","array","taskArray","TrainLevel","TrainMap","_trainTargetElements","updateTrainTargetElements","TrainMapElementType","TrainMapEditorLayer","TrainMapLayer","TrainMapElement","CarTarget","TrainTask","TrainCar","TrainBarrel","TrainRobot","connectionSprites","Carry","_carry","_magnet","DisMagnet","_disMagnet","MagnetAll","_magnetAll","DisMagnetAll","_disMagnetAll","CanLink","CanNotLink","CanDislink","CanNotDislink","_disconnectFromTrain","train","_findTrain","magnetRobotId","car","nextPosType","oldObjectPosition","setConnectionSpritesAtPosition","_recalculateSprites","TrainObjectAnimation","_reverseCarry","setConnectionSpritesAtPositionRightDown","_reverseRecalculateSprites","x3","y3","lastCar","firstCar","trainExists","curObject","firstForRobotId","childObject","parentObject","isMagnet","dir1","dir2","dir3","preLastCar","tempTrain","tempObject","temp","tempCar","activeSprite","firstIndex","lastIndex","TrainRobotSprite","TrainObject","childObjectPosition","parentObjectPosition","_updateConnectionSprites","generateObjectConnections","firstObjectPosition","secondObjectPosition","updateNumber","TrainObjectSprite","_idNumber","_idSprite","activeFrame","setScaleX","_getIdNumberSpritePosition","setIdVisible","TrainCarSprite","TrainBarrelSprite","TrainRobotSettingsLayer","Train","TrainLevelType","train_link","train_unlink","train_link_all","train_unlink_all","train_can_link","train_can_not_link","TrainTaskLayer","KumirLevel","KumirMap","_paintTargetElements","KumirMapEditorLayer","KumirMapLayer","KumirMapElement","paintElement","paint","unpaintElement","unpaint","KumirMapElementType","UnpaintedGrass","_radiation","_radiationLabel","_temperature","_temperatureLabel","_paintCount","_paintTarget","TEXT_MARGIN","isPainted","isBadPainted","isTargetPainted","getRadiation","setRadiation","radiation","getTemperature","setTemperature","temperature","SELECT_ELEMENT_PARAMS","LABEL_TAG","RADIATION_TAG","TEMPERATURE_TAG","START_ELEMENT_POS","KumirTask","painted","badPainted","targetPainted","KumirRobot","Paint","_paint","MoveUp","_moveUp","MoveDown","_moveDown","MoveLeft","_moveLeft","MoveRight","_moveRight","Temperature","_getTemperature","Radiation","_getRadiation","GrassIsPainted","ClearUp","ClearDown","ClearLeft","ClearRight","GrassIsNotPainted","WallUp","WallDown","WallLeft","WallRight","KumirRobotSprite","KumirRobotAnimation","_endPaint","_unpaint","_endUnpaint","Unpaint","KumirRobotSettingsLayer","separator","cellSize","elementMenu","elementLabel","elementRadiationLabel","radiationLabelAlign","elementRadiationInput","radiationInputAlign","elementTemperatureLabel","temperatureLabelAlign","elementTemperatureInput","temperatureInputAlign","elementParamsTable","SelectTableView","addSelectEventListener","selectedMapElement","mapElementsTable","deselectAll","menu","setSelectFrame","setFitObjectsSizes","ImageView","setCell","tableAlign","menuAlign","LOCATION_RIGHT_OF_TOPALIGN","layout","startElementPos","Kumir","KumirLevelType","NeedToPaintPattern","kumir_paint","kumir_move_up","kumir_move_down","kumir_move_left","kumir_move_right","kumir_gib","kumir_ginb","kumir_wall_up","kumir_wall_down","kumir_wall_left","kumir_wall_right","kumir_clear_up","kumir_clear_down","kumir_clear_left","kumir_clear_right","kumir_temperature","kumir_radiation","KumirTaskLayer","paintValue","posY","AquariusLevel","tankA","tankB","tankC","AquariusTank","availableCapacity","currentCapacity","startCapacity","_name","frontSprite","AquariusTankSprite","setAvailableCapacity","capacity","updateTankPosition","setCurrentCapacity","withoutAnimation","_endChangingCurrentCapacity","setStartCapacity","_innerColumn","_extraColumn","_frontLayout","_topWater","_bottomWater","_scaleLayer","_frontFloat","_backFloat","_currentArrow","_currentCircle","_currentLabel","_currentAlign","_availableLabel","_availableAlign","INNER_WIDTH","UNIT_HEIGHT","BACK_ADDITION","FRONT_ADDITION","frontAlign","PARENT_BOTTOM_CENTER_HORIZONTAL","FRONT_SHIFT","TOP_MARGIN","BOTTOM_MARGIN","nameLabel","getNameColor","nameAlign","NAME_SHIFT","frontFloatName","backFloatName","FLOAT_MARGIN","CIRCLE_SEPARATOR","getLabelColor","TEXT_COLOR","LABEL_MARGIN","BLUE","WATER_WIDTH","innerAlign","INNER_MARGIN","EXTRA_HEIGHT","scaleAlign","PARENT_RIGHT_BOTTOM","SCALE_MARGIN","_updateScaleLayer","spriteName","SCALE_STEP","mark","forceDoLayout","moveToY","moveWater","moveFloat","moveArrow","moveCircle","scaleTargeted","moveTargeted","moveFrontTargeted","moveBackTargeted","moveArrowTargeted","moveCircleTargeted","changingEnd","changingTexture","COLOR_DIFF","AquariusMap","AquariusMapEditorLayer","AquariusMapLayer","updateNativeFunctions","tankSpriteA","tankSpriteB","tankSpriteC","visibleTanks","realWidth","firstTank","secondTank","thirdTank","BORDER","AquariusTask","AquariusRobot","AToB","_AToB","BToA","_BToA","BToC","_BToC","CToB","_CToB","AToC","_AToC","CToA","_CToA","FullA","_fullA","EmptyA","_emptyA","FullB","_fullB","EmptyB","_emptyB","FullC","_fullC","EmptyC","_emptyC","_deleteNativeFunction","_tank1ToTank2","tank1","tank2","currentCapacity1","currentCapacity2","availableCapacity2","_fullTank","tank","_emptyTank","capacityA","capacityB","capacityC","AquariusRobotSettingsLayer","availableTankALabel","availableTankALabelAlign","availableTankA","availableTankAAlign","currentTankALabel","currentTankALabelAlign","currentTankA","currentTankAAlign","availableTankBLabel","availableTankBLabelAlign","availableTankB","availableTankBAlign","currentTankBLabel","currentTankBLabelAlign","currentTankB","currentTankBAlign","availableTankCLabel","availableTankCLabelAlign","availableTankC","availableTankCAlign","currentTankCLabel","currentTankCLabelAlign","currentTankC","currentTankCAlign","SLIM","taskLabel","taskAlign","SLIM_BORDER_RADIUS","setContentSizeWithBorder","Aquarius","AquariusLevelType","AquariusFullTask","EnterAmountOfLiters","CurrentTankCapacity","AvailableTankCapacity","aquarius_AToB","aquarius_BToC","aquarius_AToC","aquarius_fullA","aquarius_fullB","aquarius_fullC","aquarius_BToA","aquarius_CToB","aquarius_CToA","aquarius_emptyA","aquarius_emptyB","aquarius_emptyC","AquariusTaskLayer","_literInput","TASK_WIDTH","literAlign","GrasshopperLevel","leftStepCount","rightStepCount","isStartPointEditable","GrasshopperMap","_startElementPos","GrasshopperMapEditorLayer","GrasshopperMapLayer","GrasshopperMapElement","setStartElementPos","getStartElementPos","boundingBox","EXTRA_MAP_ELEMENTS_COUNT","GrasshopperMapElementType","_elementNumber","updateElementNumber","GrasshopperTask","GrasshopperRobot","GrasshopperRobotSprite","GrasshopperRobotAnimation","mapElementSize","diffPosX","diffPosY","speedRatio","jumpTo","GrasshopperRobotSettingsLayer","leftStepCountLabel","leftStepCountLabelAlign","leftStepCountAlign","rightStepCountLabel","rightStepCountLabelAlign","rightStepCountAlign","editableStartPoint","editableStartPointAlign","taskLabelAlign","Grasshopper","GrasshopperLevelType","EditableStartPoint","FindStartPoint","LeftStepCount","RightStepCount","GrasshopperTaskLayer","_paintSlider","_paintLabel","_paintValue","_allPaintValue","paintLabelAlign","_paintSliderValueChanged","paintAlign","_updatePaintSliderValue","_createPaintSliderValue","DraftsmanLevel","DraftsmanMap","lines","badLines","DraftsmanMapEditorLayer","DraftsmanMapLayer","DraftsmanMapElement","drawLayer","badDrawLayer","taskDrawLayer","_updateMapElementsNumbers","drawTask","line","drawSegment","LINE_WIDTH","TASK_LINE_COLOR","DraftsmanMapElementType","ELEMENT_NUMBER_TAG","removeChildByTag","DraftsmanTask","drawnLines","taskLines","filter","DraftsmanRobot","_penFlag","MoveToPoint","_moveToPoint","MoveToVector","_moveToVector","PenDown","_penDown","PenUp","_penUp","DraftsmanRobotSprite","setPenFlag","_endPenDown","_endPenUp","getPenFlag","rotationAngle","radiansToDegrees","acos","Scale9Sprite","DraftsmanRobotAnimation","scaleLine","moveAction","scaleAction","DraftsmanRobotSettingsLayer","Draftsman","DraftsmanLevelType","draftsman_move_to_point","draftsman_move_to_vector","draftsman_pen_down","draftsman_pen_up","DraftsmanTaskLayer","updateButton","_updateTask","updateButtonAlign","TurtleLevel","TurtleMap","TurtleMapEditorLayer","TurtleMapLayer","startDirection","backgroundLayer","TurtleTask","TurtleRobot","_tailFlag","MoveForward","_moveForward","MoveBackward","_moveBackward","TailDown","_tailDown","TailUp","_tailUp","TurtleRobotSprite","setTailFlag","_endTailDown","_endTailUp","getTailFlag","round","clockwise","TurtleRobotAnimation","rotateBy","TurtleRobotSettingsLayer","Turtle","TurtleLevelType","turtle_move_forward","turtle_move_backward","turtle_turn_left","turtle_turn_right","turtle_tail_down","turtle_tail_up","TurtleTaskLayer","ScrollViewTouchWrapper","ScrollView","_clickDepth","clickDepth","setClickEventCallback","interceptTouchEvent","_touchEnabled","TOUCH_ENDED","_innerContainer","isHighlighted","TableView","_cellSize","_cellSeparator","_rowCount","_columnCount","_fitObjectSizes","_cells","_placeholderRows","_fixed","_scroll","_innerLayout","cellSeparator","rowCount","columnCount","fixed","DIR_VERTICAL","setBounceEnabled","setInertiaScrollEnabled","setScrollBarEnabled","align","_updateSize","contentSize","_updateCells","scaleX","scaleY","_cellPosition","setInnerContainerSize","getInnerContainer","placeholderSumHeight","row","_getCellContainer","col","widget","getCellPosition","getCell","setCellSize","setCellSeparator","getCellSize","getCellSeparator","insertRow","rowArray","insertLength","insertPlaceholderRow","RowPlaceholderCell","setPlaceholderRow","deleteRow","setRowCount","setColumnCount","getRowCount","getColumnCount","insertColumn","deleteColumn","cellAtPosition","heightBelowPos","prevPlaceholderRow","abovePlaceholderIndex","cellAtTouch","SelectionListView","_selectedIndex","_selectedLayer","_items","_listView","layoutSize","setItemsMargin","LIST_ITEM_SEPARATOR","setScrollBarOpacity","setScrollBarWidth","SCROLL_BAR_WIDTH","_fillList","_onSelectStep","setIndexCallback","getSelectedItemIndex","addItem","item","cutNumber","substring","ON_SELECTED_ITEM_END","getCurSelectedIndex","_moveSelectionLayer","itemPosInLayout","convertToNodeSpace","clearSelection","START_CUT_NUMBER","_selectFrame","_selectFrameScale9","_selectedCell","_startTouchSelectedCell","canDeselectCell","_onSelectItem","frameOrImage","scale9Sprite","SpriteFrame","_updateSelection","setPreferredSize","_updateSelectionPosition","selectCell","_selectCell","getSelectedCell","ComboBox","_onShow","_onSelect","_onClose","_dropDownList","_selectedLabel","_selectedObject","_backgroundSprite","_fontSize","_extraBorder","_objectsHeight","_maxDropDownViewHeight","_height","_itemsSeparator","onSelect","extraBorder","onShow","onClose","DEFAULT_HEIGHT","setValueList","DEFAULT_WIDTH","buttonSprite","BOUND_X","BOUND_Y","setCapInsets","setPropagateTouchEvents","_onSelectObject","dropDownHeight","SCROLL_BORDER","_updateDropDownViewSize","getValueList","labelHeight","preferredScrollSize","setMaximumDropDownViewHeight","getDropdownSize","selectObject","getSelectedObjectValue","getSelectedIndex","selectedObject","isClippingParentContainsPoint","_editing","_input","_cursor","_cursorShowingTime","_cursorPosition","_strings","_isMultiLine","_placeholder","_insertTextCallback","_oldText","_attachCallback","_attachCallbackTarget","placeholder","multiLineHeight","setPlaceHolderColor","PLACEHOLDER_COLOR","_handleInputEvent","BORDER_X","_lineWidth","_lineHeight","bordersY","BORDER_TOP","BORDER_BOTTOM","clipping","setTouchAreaEnabled","setTouchSize","getVirtualRenderer","setDimensions","setCursorEnabled","LabelTTF","setFontFillColor","setPasswordStyleText","_warpMultilineText","inputHeight","str","setPasswordInput","setPasswordEnabled","closeKeyboard","didNotSelectSelf","getContentScaleFactor","strings","_renderCmd","_checkWarp","_getStringLength","_measure","_getCursorPosition","CURSOR_CORRECTION","strLength","substr","stringLength","EVENT_INSERT_TEXT","EVENT_DELETE_BACKWARD","maxCompLength","EVENT_ATTACH_WITH_IME","setPlaceHolder","EVENT_DETACH_WITH_IME","CURSOR_TIME_SHOW_HIDE","isPasswordEnabled","getPasswordStyleText","NumberTextInput","_locked","_originalState","normalImage","selectedImage","disableImage","texType","setBright","_setClickEnabled","isBright","setHighlighted","_normalImage","_selectedImage","_texType","loadTextureNormal","_borderRadius","borderRadius","THIN","STANDARD_BORDER_RADIUS","image","DialogLayout","_text","scrollAlign","setTextHorizontalAlignment","TEXT_ALIGNMENT_CENTER","setTextAreaSize","setText","MovingAfterKeyboardLayout","_attached","_attachedInput","setInputAttach","input","isMobile","_textInputAttach","attached","closeAttachKeyboard","PopupLayer","hideDuration","STANDARD_HIDE_DURATION","HIDE_DURATION_NEVER","_startSelfRemove","_selfRemove","setHideCallback","removeLayer","duration","DelayTime","FadeTo","_clickCallback","_checkBox","clickCallback","setSelected","_checkBoxClicked","_clicked","getChecked","isSelected","setChecked","EVENT_SELECTED","TextInputDialog","_okCallback","_cancelCallback","labelStr","defaultValue","INPUT_WIDTH","inputAlign","buttonLayout","buttonLayoutAlign","okButton","InterfaceButton","_ok","cancelButton","_cancel","cancelMargin","loadingLayer","LoadingLayer","setCallback","okCallback","cancelCallback","ConfirmWindow","extraInformation","ChangeWorldNameDialog","_inputDescription","descriptionLabel","descriptionLabelAlign","DESCRITPION_HEIGHT","inputDescriptionAlign","ok_callback","cancel_callback","ignoreContentAdaptWithSize","CENTER_IN_PARENT","textLayout","textLayoutAlign","textFontSize","setScale9Enabled","setTitleFontName","setTitleFontSize","titleSize","getTitleRenderer","TEXT_PADDING_X","TEXT_PADDING_Y","DragAndDropLayout","_dndName","_dropTargets","_callbackTarget","_draggedElement","_clonedElement","_startTouchPoint","_dragStarted","_touchIntercepted","clickEnabled","dragEnabled","dropEnabled","ignoreBoundingBox","dndName","DRAG_ONLY","_dndLayoutsMap","DRAG_AND_DROP","onExit","_interceptTouchBegan","DROP_ONLY","_findElementByTouch","_isElementClickable","_interceptTouchMoved","_isElementDraggable","_cloneElement","getBoundingBoxToWorld","dropTarget","_findDropTarget","Event","DRAG_START","clonedPosition","_interceptTouchEnded","cancel","DRAG_CANCELLED","selfRemove","DROP","CLICKED","worldPoint","proposedWidgets","nodePoint","addDropTargetName","addDNDEventListener","SlidingMenu","_elementCallback","_elementCallbackTarget","_viewWidth","_viewHeight","clickedItem","addMenuElement","_updateContainer","insertMenuElement","insertCustomItem","setCurrentElement","scrollToItem","jumpToItem","SlidingGameMenu","_selectedItem","DIR_HORIZONTAL","GRAVITY_CENTER_VERTICAL","setMagneticType","MAGNETIC_CENTER","ITEMS_MARGIN","_addEventListener","_selectCenterItem","curElem","getCenterItemInCurrentView","SlidingLevelMenu","SlidingMenuElement","SlidingWorldMenuElement","textAreaSize","NAME_SIZE","texture","HIGHLIGHT_ON_RECT","HIGHLIGHT_OFF_RECT","highlightSprite","HIGHLIGHT_WIDTH_CORRECTION","TEXT_SEPARATOR","HIGHLIGHT_HEIGHT_ADDITION","SlidingLevelMenuElement","levelID","_starSprite","_completed","labelText","levelNumber","screenBounds","countStars","border","needToDrawDots","completedIcon","countLabel","dot","setMireraCompleted","mireraCompleted","SlidingGameMenuElement","gameNumber","margin","TEXT_SIZE","starName","completedCount","notCompletedFlag","starLayout","LABEL_SEPARATOR","STAR_SEPARATOR","NodeLayer","_id","_treeNode","_selected","_parentNode","_lastNodeId","_repTypes","_addTypes","_withBorder","_withRoundBorder","isPartlyClonable","treeNode","SEPARATORY","KUMIR_MODE","getNodeId","deSelect","removeBackGroundImage","highlight","highlightBroken","removeHighlight","select","ProgramContainerLayer","SELECTED_TAG","NOT_SELECTED_TAG","removeCallbackAction","revAction","calculateSize","isPar","sizeOfVContainer","createText","MAIN_COLOR","setTextVerticalAlignment","canAdd","canReplace","sizeOfContainer","cont","mX","mY","getLayoutParameter","getMargin","_removeNode","_removeNodeFromTree","removeLinks","isBody","isProgram","prevNode","focusNode","setBody","_bodyNode","makeCleanUp","getChildrenNodes","createALignSome","neighbour","isHorizontalBar","isAlloc","isMethod","isElseBlock","isExpression","isReplaceable","_drawNode","SEPARATORX","IMAGE_TAG","CONSTR_COLOR","ALLOC_COLOR","CONST_COLOR","USE_COLOR","VAR_COLOR","StartNode","_mainFunc","_globalCont","_funcReplace","_firstFunc","_funcCont","_nextNode","robotName","robotUsageText","hBox","sep","param","GlobalBodyNode","setMain","getMain","setGlobals","forPar","getMainBody","getChildByNext","addChildNode","selectedNode","nextNodeId","next","getFuncs","getChildCont","FunctionNode","_params","_cont","_rBrace","_lBrace","PARENT_LEFT_CENTER_VERTICAL","but","text1","first","paramsSelect","addParameter","getBody","removeLink","link","VarFunctionButton","text2","SEPARATOR_SIZEX","varValueSpace","L_BRACE_TAG","R_BRACE_TAG","PARENT_RIGHT_CENTER_VERTICAL","comma","CommandNode","COMMAND_COMMA_TAG","getNextParamName","piktoVals","BodyNode","_firstElem","_dotSprite","firstElemAlignType","VBox","FIRST_HEIGHT","FIRST_WIDTH","_firstElemSelect","getFirstChild","getAlign","firstAlign","_variableName","_variableValue","_typeName","_treeLinks","isInt","getName","getVarType","setFontSize","DEBUG_WIDTH","getVarName","getTypeName","setTypeName","isBool","boolVals","INT_NAMING","BOOL_NAMING","_prevWidth","_robotType","commandName","isIntMethod","leftMargin","BUTTON_WIDTH","COMMAND_NAME_TAG","paramOrder","lBrace","COMMAND_L_BRACE_TAG","COMMAND_R_BRACE_TAG","notCalculateSize","BUTTON_HEIGHT","_condition","_thenBody","ReplaceNode","ifText","thenName","END_TAG","IF_TEXT_TAG","THEN_TEXT_TAG","ELSE_BLOCK_NAME","setElseBody","boolNode","newElseBlock","bodyWidth","bodyHeight","IF_COND_TAG","ELSE_WORD_TAG","_elseBody","elseName","ConditionNode","_condButton","BEGIN_TAG","BODY_TAG","updateIteratorVal","NTimesRepeaterNode","_number","num","WhileRepeaterNode","while_text","WHILE_TAG","_iterator","_begVal","_endVal","_step","FOR_TAG","FROM_TAG","TO_TAG","text3","text4","NumberNode","_repId","_changeLayout","NumberInputLayer","NUMBER_CODE","_addNumber","MINUS_CODE","_changeSignNumber","REMOVE_CODE","_removeNumber","MINUS","charAt","isOpened","BoolNode","forParent","repTypes","cond","EmptyFunctionButton","childNumber","placementTag","CHILD_TAG_name","isReplaced","horBar","VariableNode","_varName","nameText","VARTAG","StatementNode","valReplace","rightAlign","VALUE_TAG","VAR_TAG","leftAlign","_sign","setSwallowTouches","centerAlign","createExpression","ExpressionNode","_lOp","_rOp","leftBrace","rightBrace","getNodeMargin","changeSign","getSign","valN","sign2","LoadLayer","colorLayer","backGround","loadSprite","loadBarBack","totalHeight","loadBarLayer","ClippingNode","shape","setStencil","returnPos","loadAliases","_endLoadAliases","_endLoadWorlds","loadedWorldID","supportsBLE","OS_OSX","connectorType","supportedConnectorType","mlStatsURL","matsRecognitionURL","SelectLevelScene","LoadScene","Scene","onEnter","_removed","loadLayer","satellite","planet","satelliteLayer","ZORDER","TAG","RegisterLayer","_emailInput","_passwordInput","_confirmPasswordInput","_nameInput","_secondNameInput","_confidenceFlag","_loadInterface","closeButton","closeButtonAlign","emailAlign","passwordAlign","confirmPasswordAlign","nameInputAlign","secondNameAlign","confidenceCheckBox","_checkConfidence","confidenceAlign","userLink","_onUserLink","userLinkAlign","LOCATION_RIGHT_OF_BOTTOMALIGN","andLabel","andLabelAlign","AND_MARGIN","confidenceLink","_onConfidenceLink","confidenceLinkAlign","_register","registerAlign","USER_AGREEMENT_URL","PRIVACY_POLICY_URL","passwordConfirm","regMessage","LoginLayer","_inputLayout","_loginInput","_errorLabel","_autoLogin","_loginCallback","_close","loginVKButton","_loginVK","orLabel","orLabelAlign","loginAlign","stripName","leftStrip","leftStripLayout","leftStripLayoutAlign","LOCATION_ABOVE_LEFTALIGN","BOTTOM_BORDER","rightStrip","rightStripLayout","rightStripLayoutAlign","LOCATION_ABOVE_RIGHTALIGN","check","_onCheckClicked","checkAlign","enter","_login","enterAlign","loginVKButtonAlign","inputLayoutAlign","wait","WaitLayer","_randomBase64String","Uint8Array","crypto","getRandomValues","_formatBase64","base64","_sha256","bits","sjcl","codec","utf8String","toBits","fromBits","hash","sha256","_codeVerifier","_codeChallenge","_socialLogin","_socialLoginError","_getUserAccountDataCallback","permissions","registerLayer","_closeRegister","SoundButton","relativeParameter","WIDGET_NAME","_showSoundPopup","POPUP_TAG","SoundPopupLayer","soundButtonAlign","getLocalZOrder","backgroundVolumeLabel","effectVolumeLabel","_backgroundSlider","_backgroundVolumeChanged","_effectSlider","_effectVolumeChanged","backgroundVolumeLabelAlign","effectVolumeLabelAlign","PARENT_LEFT_BOTTOM","backgroundSliderAlign","effectSliderAlign","LevelPreview","_levelClass","_mapSprite","_width","setBackGroundColorOpacity","_initWithPreview","_initWithGameAndLevel","_loadLevelView","renderTexture","RenderTexture","setVirtualViewport","getWinSizeInPixels","_beforeRenderToTextureBegin","begin","visit","_afterRenderToTextureEnd","getTexture","_cacheFlag","_renderType","RENDER_TYPE_CANVAS","renderer","_isCacheToCanvasOn","_isCacheToBufferOn","LanguageLayer","russianLanguage","enLanguage","_selectLanguage","EditLogInfoLayer","_changesListView","listAlign","_fillChangesList","changedGames","changedLevels","gameId","renamedString","reorderedString","updatedString","WorldInfoLayer","ownerName","ownerLabel","ownerLabelMargin","worldChanged","statusLabel","statusLabelMargin","showEditLogButton","_showEditLog","buttonAlign","editLogInfoLayer","_closeEditLog","_object","_levelsUpdate","_levelsSync","_levelUpdateList","_levelSyncList","_selectLayout","_levelUpdateContainer","_levelSyncContainer","selectLayoutAlign","SELECT_WIDTH","SELECT_HEIGHT","levelUpdateLabel","buttonsLayout","RelativeBox","syncButtons","addToSync","_addToSync","addToUpdate","_addToUpdate","syncButtonsAlign","levelSyncLabel","CommonLessonPage","_container","SCALE_X","SCALE_Y","MARGIN","CELL_HEIGHT","TABLE_MARGIN","RepairLessonPage","_loadExtraInterface","repairSprite","repairLabel","commonTextLabel","commonTextAlign","tableInfo","finishBox","finishLabel","finishLabelAlign","finishContainer","containerMargin","imageAlign","_getObjectDescription","labelMargin","commandBox","commandLabel","commandLabelAlign","commandContainer","_getCommandDescription","conditionLabel","conditionLabelAlign","conditionInfo","conditionAlign","conditionBox1","conditionContainer","conditionContainerMargin","_getConditionDescription","conditionBox2","PushLessonPage","pushSprite","pullSprite","pushAlign","pullAlign","pushLabel","pullLabel","pushLabelAlign","pullLabelAlign","LOCATION_BELOW_RIGHTALIGN","PhysicalLessonPage","physicalSprite","physicalAlign","physicalLabel","physicalLabelAlign","LightLessonPage","lightSprite","lightAlign","lightLabel","lightLabelAlign","image1","imageContainer","ChooseLessonElement","nameOfPage","cellWidth","nodeScale","NODE_SCALE","HEIGHT_MARGIN","button","BUTTON_BORDER","ChooseLessonLayer","_lessonTable","_curWorldID","_loadingLayer","_downloadDemoWorld","goToStartScreen","_startScreen","goToStartScreenAlign","selectPageMenu","SelectPageMenu","PAGES","CHOOSE_LESSON","selectPageAlign","MAX_ELEMENTS_IN_ROW","_selectPageElementCallback","scrollLessonAlign","_drawLessonTable","mapLayersArray","rows","cellHeight","ELEMENT_MARGIN","selectedPage","lessonPage","_closePage","_downloadWorld","_endDownLoadWorld","GAME_ID","_endDownLoadDemoWorld","getCurrentWorldID","ChooseLessonScene","backLayer","ProgramAlgorithmLayer","_showLayer","_descriptionLayer","_typesTable","_backButtonWidth","TUTORIAL_LEVELS","LINEAR","_drawTutorialLevel","backButton","backButtonAlign","PROGRAM_ALGORITHM","_stopTutorial","DESCRIPTION_FONT_SIZE","descriptionAlign","STANDARD_SEPARATOR","typesOfAlg","typesOfAlgAlign","linearLayout","linear","linearAlign","linearButton","linearBar","_createAlgorithmBar","linearBarAlign","SMALL_SEPARATOR","ifElseLayout","ifElse","ifElseAlign","ifElseButton","ifElseBar","ifElseBarAlign","repeaterLayout","withRepeater","withRepeaterAlign","repeaterButton","RepeaterButton","repeaterBar","repeaterBarAlign","cycleLayout","cycleWhile","cycleWhileAlign","cycleButton","cycleBar","cycleBarAlign","TYPES_SEPARATOR","TYPES_ROWS","TYPES_COLUMNS","_selectType","REPEATERS","WHILE","redraw","page","TUTORIAL_ID","TUTORIAL_SCALE","levelContainer","levelContainerAlign","levelLayer","LevelLayer","_drawDescription","widthScale","heightScale","ADDITIONAL_HEIGHT","showAlign","descriptionLayerAlign","_drawLinearDescription","_drawIfElseDescription","_drawRepeaterDescription","_drawWhileDescription","margins","MARGINS","controlLabel","controlAlign","CONTROL","commandsLabel","commandsLabelAlign","COMMANDS","mainAlgorithm","mainAlgorithmAlign","algoritmA","algoritmAAlign","A","conditionsLabel","conditionsLabelAlign","CONDITIONS","repeatersLabel","repeatersLabelAlign","mainButton","BAR_COLOR","MENU_SEPARATOR","BUTTON_SIZE","BAR_LENGTH","selectedType","_linearBarCall","_ifElseBarCall","_repeaterBarCall","_cycleBarCall","ProgramAlgorithmScene","MethodStackLessonLayer","TUTORIAL_LEVEL_ID","METHOD_STACK","methodStackLabel","TITLE_FONT_SIZE","methodStackLabelAlign","methodStackDescription","methodStackDescriptionLabel","TEXT_AREA_WIDTH","methodStackDescriptionAlign","MethodStackLessonScene","CounterLessonLayer","COUNTER","counterLabel","counterLabelAlign","counterDescription","counterDescriptionLabel","counterDescriptionAlign","TITLE_MARGIN","counterMethodsBar","_getCounterMethods","methodContainer","methodsBarAlign","counterCondRepBar","_getCounterConditions","_getCounterRepeater","repeaterContainer","condRepBarAlign","CounterLessonScene","_selectedPageIndex","_updateCircles","PAGE_NUMBER","BUTTON_MARGIN","_selectPage","_getIconByTag","_getSceneByTag","loadTexture","StartMenuLayer","_loginButton","_marketButton","_mainButtonLayer","_upperButtonLayer","_lowerButtonLayer","_drawMenuButtons","_drawLayout","mistName","worldButton","_onWorld","gameButton","_onGame","optionsButton","_onOptions","optionsButtonMist","learnButton","_onLearn","learnButtonMist","MIST_SHIFT","rightMargin","rightButtonMargin","buttonLayerAlign","RIGHT_BAR_WIDTH","_onLogin","loginLayer","_loginSuccess","LOGINLAYER_TAG","_drawLowerLayer","_drawUserLayout","_drawTeacherLayout","_drawNotLoggedInLayout","upperButtonLayerAlign","lowerButtonLayerAlign","versionLabel","resetButton","_onResetConfirm","_onMarket","_exitFromAccount","toEditorButton","_toEditor","classControl","_classControl","CONFIRM_LAYER_TAG","date","dateString","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","_onReset","MenuEditorScene","ClassControlScene","SelectWorldScene","SelectGameScene","SettingsLayer","settingsLayer","_closeOptions","MarketLayer","infoMarketLayer","InfoMarketLayer","_closeMarketInfo","MENU_INDENTATION","SelectGameLayer","_worldSelect","_menuButtonHeight","_labelHeight","textureCache","removeAllTextures","_clearCache","_menu","menuButton","_showMenu","menuButtonAlign","slidingLayout","slidingLayoutAlign","_selectGame","_drawWorld","slidingMenuAlign","_onUserChanged","_closeMenu","SelectLevelLayer","_refreshInterval","_levelsMenu","_selectLevel","goToSelectGame","_gamesMenu","selectGameAlign","_requestGameMireraResults","setInterval","REFRESH_STATUS_INTERVAL","onExitTransitionDidStart","clearInterval","SelectWorldLayer","_groupSelect","_comboBoxMoving","_innerContainerOldPosition","_startInnerPosition","_menuButtonWidth","_onLoadWorldList","TEXT_WIDTH","ELEMENT_WIDTH","_selectWorld","_moveComboBox","getInnerContainerPosition","_selectGroupOnSelect","_selectGroupOnShow","_selectGroupOnClose","groupAlign","EVENT_CONTAINER_MOVED","_drawGroup","selectedGroup","_getSelectGraph","selectedIndex","worldNumber","worldsLength","curWorld","galaxyNode","_removeLoadingLayer","_addLoadingLayer","_fillGroupsCombobox","selectedGroupID","_setComboboxValues","combobox","valueList","selectValueID","comboboxValues","TEXT_HEIGHT","onEnterTransitionDidFinish","_showCommonSettings","_turboModeButton","_clearProgramButton","showCommonSettings","musicLabel","musicLabelAlign","LEFT_BORDER","TOP_BORDER","effectsLabel","effectsLabelAlign","musicSlider","_volumeMusicChanged","musicSliderAlign","effectsSlider","_volumeEffectsChanged","effectsSliderAlign","turboLabel","turboLabelAlign","_getTurboButtonState","_changeTurboMode","turboButtonAlign","clearLabel","clearLabelAlign","_getClearProgramButtonState","_changeClearProgramButton","clearProgramButtonAlign","languageLabel","languageLabelAlign","languageLayer","languageLayerAlign","commonSettingsButton","_onCommonSettings","commonSettingsButtonAlign","CommonSettingsLayer","_closeSettings","ProductItemLayout","_purchaseButton","title","price","purchased","purchaseAlign","priceAlign","LOCATION_LEFT_OF_CENTER","titleAlign","setPurchased","_worlds","_products","_purchaseInProgress","_onLoadMarketableWorlds","listViewAlign","restoreButton","_restorePurchases","restoreAlign","close","_showMessage","_getWorldProductID","marketData","AppStoreID","GooglePlayID","productIDs","_productInfoCallback","getTitle","getDescription","getPrice","_purchaseCallback","listViewItems","getItems","_paymentEventCallback","_validatePurchaseCallback","purchases","mainLabel","mainLabelAlign","MAIN_SEPARATOR","commonLabel","commonLabelAlign","firstLabel","firstLabelAlign","secondLabel","secondLabelAlign","thirdLabel","thirdLabelAlign","fourthLabel","fourthLabelAlign","okButtonAlign","physicalRobotCombobox","isRecogniseCheckbox","_isRecognise","isRecogniseAlign","_getComboboxValueList","_changePhysicalConnectorType","comboboxAlign","ChangeLevelMenu","_nextLevelButton","_prevLevelButton","_processingAnimation","_prevLevel","BUTTON_SEPARATOR","_nextLevel","_addLevelCountLabel","_setButtonsStates","levelCount","countLabelAlign","_transLevel","animateNextLevelButton","showSelected","showNormal","stopAnimateNextLevelButton","StateInformLayer","_hidden","brokenSprite","_getSpriteName","isHidden","FAIL","WIN","LevelMenuLayer","_isNetGame","_tutorialControlLayer","_changeLevelMenu","_selectMapMenu","_hintLayer","_winLayer","_looseLayer","_failureLayer","_mapCompleteLayer","_netDiscoverLayer","_netControlLayer","_backButton","_orientationButton","isNetGame","showTutorialControl","_backToMainMenu","ChangeLevelMenuEditor","changeLevelMenuAlign","_backToMenu","SelectMapMenu","selectMapMenuAlign","_drawTransButton","HintLayer","_hints","_lastY","TutorialControlLayer","tutorialMenuAlign","drawScaleButtons","WinLayer","winLayerAlign","INFORM_MARGIN_Y","INFORM_MARGIN_X","informAlign","_drawHint","_drawExtraInfo","NetControlLayer","netControlLayerAlign","_registerInfoEventListener","_hideInforms","_editor","toEditorAlign","LevelEditorScene","drawChangeOrientationButton","normal","disabled","_changeMapOrientation","orientationButtonAlign","loadTexturePressed","loadTextureDisabled","extraInfo","zoomInButton","zoomInButtonAlign","zoomOutButton","zoomOutButtonAlign","_showHint","_discoverClicked","onStartGame","_enableMenus","onRestartGame","onWin","getCompletedMaps","onMapCompleted","onLoose","onFailure","onRobotTested","stopGameClient","stopGameServer","_selectedMapIndex","updateMaps","_mapDragged","getSelectedMapIndex","_selectMap","oldMapIndex","newMapIndex","getBackGroundImageTextureSize","restartButton","processStepButton","stopButton","_processStep","_restart","_stop","restartMargin","_leftStar","_rightStar","_centralStar","_completedLevelsLabel","_startScreenButton","_restartButton","_closeButton","winSprite","winSpriteAlign","ROBOT_BORDER_Y","starAlign","STAR_SHIFT_X","STAR_SHIFT_Y","BORDER_Y","completedLevelsLabelAlign","nextLevelAlign","_readyToChangeLevel","startScreenButtonAlign","returnButtonAlign","_enableButtons","_recalculateCompletedInformation","starSprite","RobotsStepCountLayer","_resultList","PROGRAM_SEPARATOR","resultListAlign","removeAllItems","module10StepCount","module100StepCount","getInnerContainerSize","NetDiscoverLayer","_clientHosts","ROW_SEPARATOR","clientsAlign","_sendGameRequest","_discoverCallback","sendHosts","clients","checkedMap","clientBox","getData","ROW_HIEGHT","_readyButton","_notReadyButton","_readyClicked","_notReadyClicked","MethodStackScrollLayer","_minimalPlaceholderHeight","_itemsHeight","_itemsPopCallback","_itemsPopCallbackTarget","_fitPlaceholderSize","_onClick","pushItem","setMinimalPlaceholderHeight","setItemsPopCallback","childrenCount","deleteCount","deleted","thisSize","innerHeight","jumpToPercentVertical","scrollToPercentVertical","ControlledModeData","addMethodCallback","_innerLayer","_showButton","_hideButton","_clearButton","_topPoint","_curPoint","_functionButtonStacks","_robotIdStack","_activeButtonsCount","_stackCapacity","_methodListButton","DNDNAME","showButtonAlign","CONTROL_BUTTONS_MARGIN","clearButtonAlign","_show","_hide","_clearCallback","buttonWidth","_removeMethods","SCROLL_LEFT_MARGIN","SCROLL_BOTTOM_MARGIN","SCROLL_CORRECTION_X","dragStackButtonAlign","getMethodList","_getMethodList","currentRobotGroupID","animateHideButton","_toggleIcons","_addMethod","_processMethod","draggedElementBB","worldPosition","topWorldPoint","moveSpriteParabolic","jumpBy","moveToPoint","maximumYPoint","curWorldPoint","moveDownRatio","moveSpriteDown","reorder","_endAddMethod","removeCount","fadeColorLayer","fadeColorButton","drawRobotMethodList","robotGroupId","cloneDisabledImage","repeat","OUTER_RIGHT_MARGIN","ProgramControlLayer","_showStartAllButton","_useProgramRecognizer","_startProgramButton","_restartProgramButton","_makeStepButton","_startAllButton","_infoButton","_settingsButton","_changeViewModeButton","_changeSpeedButton","_turboButton","_velocity","_recognizeResultButton","showStartAllButton","_dndEventCallback","reloadInterface","turboMode","relativeStartName","relativeSpeedName","BUTTON_SEPARATOR3","HORIZONTAL_MARGIN1","BUTTON_SEPARATOR2","HORIZONTAL_MARGIN2","BUTTON_SEPARATOR1","infoAlign","VERTICAL_MARGIN","_buttonPressed","changerowsAlign","TOP_SEPARATOR","changeRowsButton","recognizeAlign","RecognizeResultButton","recognizeResultAlign","startAlign","startAllAlign","makeStepAlign","restartAlign","_getVelocity","_getSpeedButtonTexture","_isTurboEnabled","_getSpeed","_changeSpeed","speedAlign","_turnMaxSpeed","turboAlign","optionsAlign","localTouch","recognizeBB","animSpeed","VELOCITY","Fast","Medium","Low","_turnOffMaxSpeed","isControlled","setButtonsEnabled","showRecognizeResultButton","predictions","hideRecognizeResultButton","_visible","worldLabelText","gameLabelText","worldLabel","gameLabel","worldLabelAlign","HINT_SEPARATOR","gameLabelAlign","levelLabelText","levelLabel","levelLabelAlign","_onHide","getPositionX","getPositionY","positionX","_originalAnimationSpeed","BUTTONS_RELATIVE_NAME","BUTTONS_MARGIN","_onNumberClick","minus","_onMinusNumber","zeroButton","_onRemoveNumber","OUTER_MARGIN","_showNumberInput","GlobalRobotsLayer","_flagContainer","_placeCounter","_placeOutput","_placeFlag","redrawRobot","OUTPUT_LAYER_NAME","COUNTER_LAYER_NAME","GREEN_FLAG_LAYER_NAME","ORANGE_FLAG_LAYER_NAME","FLAG_LAYER_SIZE","fLayer","CounterRobotLayer","fLayerAlign","OutputRobotLayer","containerAlign","FlagRobotLayer","SHIFT","_functionButtonLayout","_colorLayer","_controlledMode","_buttonClickCallback","_buttonClickCallbackTarget","fButtonLayoutAlign","PROGRAM_COLOR","colorLayerAlign","LOCATION_LEFT_OF_TOPALIGN","SH_BUTTON_BG_TOP_MARGIN","SH_BUTTON_BG_RIGHT_MARGIN","_showHide","robotLayout","robotLayoutAlign","LOCATION_LEFT_OF_BOTTOMALIGN","ROBOT_BOTTOM_MARGIN","_drawFunctionButtons","SH_POSITION_CORRECTION","_enableControlledMode","_disableControlledMode","_createFunctionButtonsBar","COMPONENT_SEPARATOR","methodBar","conditionBar","FBL_LEFT_MARGIN","FBL_BORDER","FBL_TOP_MARGIN","FunctionButtonBar","_dragCallback","_canDragButtons","controlledModeData","_borderLayout","_showHideButton","colorAlign","showHideButtonAlign","borderAlign","SCALE_SHIFT","LOCATION_ABOVE_CENTER","POSITION_CORRECTION","_programLayer","_mapsContainerLayer","_levelMenuLayer","_globalRobotsLayer","_tutorialData","_timerID","_gameIndex","_levelIndex","_gameType","_programStarted","_testAllMaps","_wasMethodStackOpened","_completedMaps","_onRobotTested","_restartLevel","_makeStep","_testWholeLevel","_resetLevel","_startNetworkGame","_onMapCompleted","_setRobotProgram","_registerUpdateSceneEvent","_loadLevel","levelMenuAlign","programLayerAlign","mapsContainerLayerAlign","globalRobotsLayerAlign","_uploadResult","setProgramControlEnabled","TUTORIAL_TIMEOUT","_backSprite","_drawBackground","isCondition","isRepeater","isCondRepeater","startAnimation","ScaleBy","scaleFrom","RepeatForever","animateOnce","initial","_valueChanged","_isEmpty","_getBackgroundSprite","BACKGROUND_SPRITE_TAG","COND_REPEATER_SCALE","_isNative","isNativeMethod","switchPointsNumberR","iterNumber","_getRSpriteName","_getMethodListCallback","_getMethodListCallbackTarget","setMethodListCallback","_title","_varType","switchPointsNumber","CounterRepeaterButton","_iterNum","UPPER_MARGIN","_canDragFunction","_canDragFunctionTarget","canDragFunction","_program","_highlightedMethodsStack","_startedRepeatersStack","programLayer","_parseProgram","updateProgram","_recalculateSizes","_isEmptyButton","highlightMethodBroken","highlightMethod","switchPointsInRepeater","reloadRepeaters","clearLastHighlight","clearAllHighlights","isProgramPatternEditable","EMPTY_ROW_SEPARATOR_HEIGHT","REPEATER_BUTTON_NAME","RESIZE_SPRITE_NAME","SEPARATOR_COLOR","SEPARATOR_LWIDTH","SYMBOL_TABLE_MARGIN","ID_PATTERN","ADD_ROWS_STATE","REMOVE_ROWS_STATE","ProgramContainerLayerK","_visualType","_programTree","_createNodeTree","addOutput","createTree","getRobot","getOutputRobot","ProgramTree","nodeTree","getTree","getMode","treeAlign","TREE_TAG","touchCoords","box","clonedElem","activeObject","_onDragCancel","_onDropButton","PIKTO_K_MODE","onDragStart","updateView","_findDropBody","pasteObject","getSelectedNode","pasteNodeList","pasteNode","getMethodsCount","_formatButs","FUNCTIONS_BUTTON_TAG","_findNode","par","_findSelected","kid","PIKTO_MODE","ProgramContainerLayerP","_symbolTable","_backgroundLayer","_arrowsLayer","_parsedProgram","_resizing","_realWidth","_realHeight","_brokenSprite","_canAddRemoveRowsState","_loadAddRemoveRowTexture","_getProgramHeight","lastNotEmptyRow","_drawProgram","_drawFunctionButton","_updateFunctionInfo","_drawBackgroundObjects","_drawResizeImage","_drawRectangles","_drawBackSprites","curChild","parity","rectangle","leftX","bottomY","topY","rightX","pow","backSprite","symbolButton","tutorialPattern","symbolTableAlign","_drawAddArrows","_drawRemoveArrows","elementPos","buttonPosition","_pasteMethodList","_pasteRecognizeResult","_replaceButton","setSymbol","_getSymbolTypeForButton","isFunctionSymbol","notEmptySymbolsCount","notEmptySymbolX","notEmptySymbolY","newButton","_checkIfCanAddBlock","_checkNextBlock","_checkIfCanAddButton","notUpdated","countSymbols","functionMap","newElementPos","oldType","oldValue","newType","suitableButton","_findSuitableDropButton","_checkCanDropInTutorial","fromPosition","methodList","_setSymbol","symbolPosOrButton","symbolPos","buttonPos","_resizeHeight","_resizeWidth","methodStackLength","lastElem","recSignIndex","isFunctionID","robotHasMethod","_isEmptyTailRow","isEmptyTailNextRow","_createAddRemoveRowsButton","iconName","offsetY","arrowsCount","_rowsButtonClick","_addEmptyRowAtPosition","_removeRowFromPosition","positive","negative","TextualTree","_outputRobot","_programContainer","_nodeTree","_dynamicObjects","_dynamicParams","_programData","outputRobot","_createVisualTree","addOutputRobot","changeParamsValues","clearAllHighlight","vTree","visualNode","_addFunc","variable","find","allocVal","arr","_isAllocationHigher","syntTreeNode","updateTree","getVisualTree","curParent","PiktoTree","_maxPikts","_variablesNumber","isParceable","addCounterSprites","marginParam","emptyParam","mainAlg","funcView","vBox","mainView","childView","nameView","linearLayoutParameter","horContainer","maxCount","horContWidth","thenBody","conditionView","bodyView","repView","valueObj","PiktoTreeCreator","_visualTree","programContainer","selectedElem","TextualTreeCreator","getNativeFunction","updateSelectL","paramsN","mainBody","ind","statType","_isParentUpper","_isVariableLower","_tree","_treeCreator","_mode","mode","_selectPatternMenu","_patternContainer","_functionScroll","_methodStackLayer","_gameLabel","_worldLabel","_workLayout","_programControlLayer","_colorBarLayer","_colorProgramLayer","_middleBorder","_colorBorder","_createProgramControlLayer","_drawClearProgramButton","HEADER_HEIGHT","workLayoutAlign","setRobot","_drawSelectLayout","updateProgramContainer","_updateSelectPatternMenu","_clearProgramConfirm","_clearProgram","programMenuAlign","_createSelectButtonsBar","registerTutorial","_onProgramRecognize","steppedWorking","curMethodCount","getCurMethodCount","setCurMethodCount","SELECTDNDNAME","REPEATER_BUTTON_NUM","SECOND_ROW_MARGIN","WORK_LAYOUT_MARGIN","CONDITIONS_MARGIN","CONDITIONS_MARGIN_EDITOR","COLOR_BAR_MARGIN","PATTERN_COLOR","PATTERN_HEIGHT","_buttonGroup","_butCont","_numberInputLayer","_oldScrollPos","msShift","methodStackLayerAlign","numberInputLayerAlign","functionsAlign","OPTIONAL_BUTTON_TAG","setEnabledKids","_fillButtonsGroup","buttonsGroup","_drawRobotMethods","CONDITIONS_BUTTON_TAG","_drawRobotConditions","CONSTRUCTIONS_BUTTON_TAG","_drawCommonRepeaters","_drawOptionalButtons","buttonGroupAlign","_drawTabButtons","contAlign","tabButtonAlign","TAB_BUTTON_MARGIN","optional","isVarFunctionButton","exportedFunctions","methods2","intMethodsLayer","addButton","_addCustomFunc","addCustomFuncLayer","trim","POPUP_LAYER_TAG","elseBlocksContainer","firstRow","optCondsValues","optCond","secondRow","rowAlign","oldY","curY","functionScrollHeight","funcScrollWidth","_findFuncPlace","childNodes","intersec","butWidth","butHeight","childNode","rectIntersection","rectIntersectsRect","_recognizeProgram","useRepeaters","useConditions","useCondRepeaters","layoutMargin","repeatersMargin","_drawRobotRepeaters","isConditions","_drawChildRobotRepeaters","_drawRobotChildMethods","_drawRobotChildConditions","_drawFunctionEditButtons","_createEditButtonsBar","extraHeight","lessHeight","newHeight","newWidth","countButtons","firstRowFunctions","secondRowFunctions","repeaterNum","externalRepeaters","childConditions","childConditionOpposites","functionsCount","c","charCodeAt","percent","requestDoLayout","functionExists","munich_mode","signs","notEmpty","ClassControlLayer","_freeStudentsList","_teamList","_freeStudents","_freeStudentsSelectedMap","_server","chooseGameLevelLayout","_unionInput","_commonAutoChange","_unionCount","_unionGameIndex","_unionLevelIndex","_timeLayout","_workHeight","_teams","setDiscoverTimeout","_discoverServerCallback","_refreshTeam","_showTime","autoChangeCheckbox","_autoChangeAll","autoChangeAlign","showTime","showTimeAlign","editLevel","_editLevel","editLevelAlign","ChangeLevelClassControl","changeLevelAlign","_refreshChangeLevelMenu","selectWorldLayer","SelectWorldEditorLayer","Gravity","HORIZONTAL","worldLayerAlign","workSpaceWidth","SEPARATOR_NUMBER","classLayoutWidth","CLASS_WIDTH_PERCENT","gameLayoutWidth","GAME_WIDTH_PERCENT","workSpaceHeight","classLayout","staticClassLayer","staticLayerAlign","classLayoutAlign","unionIntoGameN","unionIntoGameNAlign","unionLabel","unionLabelAlign","unionWidth","unionInputAlign","unionButton","_unionIntoGameN","unionButtonAlign","MEDIUM_SEPARATOR","unionIntoGame","_unionIntoGame","unionIntoGameAlign","reconnectButton","_reconnectAll","reconnectButtonAlign","classListHeight","gameLayout","staticGameLayer","gameLayoutAlign","gameListHeight","teamsAlign","toPiktomirButton","_piktomir","toPiktomirAlign","clearAllCache","_clearAllCache","clearAllCacheAlign","destroyAllTeams","_destroyAllTeamsConfirm","destroyAllTeamsAlign","noPrevLevel","setEnabledPrevLevelButton","noNextLevel","setEnabledNextLevelButton","setAutoConnect","_destroyAllTeams","_teamLayerCallback","TeamGameLayout","DESTROY_TEAM","currentFreeStudents","createdTeams","ifDifferent","teamIndex","_handleStudentConnection","freeStudent","deleteTeam","STUDENT_LOST_TIMEOUT","compareTeams","_compareTeams","teamGameLayout","removeList","now","DISCOVER_EXPIRE_TIMEOUT","_compareElement","_childSelected","k1","k2","number1","_sendConnectToTeacherServerPacket","STUDENT_CONNECT_RETRY_TIMEOUT","ChooseLevelLayer","_okLevel","numberInTeam","_okUnionLevel","sendStudents","gameIndex","levelIndex","server","chooseLevelLayout","_unionTeam","UNION_GAME_TIMEOUT","_okEditLevel","matrix","nameString","st","totalTime","timeOfSolving","solvingSeconds","timeOfSolvingMinutes","solvingMinutes","timeOfSolvingHours","solvingHours","tempStr","_sortMatrix","_drawTimeLayout","_drawTimeTable","timeAlign","completedLevels","notCompletedLevels","separatorSize","timeTable","timeTableAlign","_compareStrings","i1","i2","notCompletedLevels1","notCompletedLevels2","setGameName","setLevelName","EDIT_LEVEL","SEND_TIME_INFO","TRANSITION_FINISHED","buttonAnimated","stateOfRobot","stateText","changeLevel","controlLayout","_autoChange","_autoChangeCheckbox","lastDate","timeList","timeLayout","autoChange","teamLayout","teamAlign","teamListAlign","serverChild","TeamStudentLayout","gameAlign","controlHeight","levelAlign","stateAlign","_autoChangeLevel","showTimeButton","drawTimeLayout","destroyTeam","_destroyTeam","destroyTeamAlign","teamLayoutWidth","ITEM_SEPARATOR","timeListAlign","noTimeLabel","changeState","isLastLevel","currentDate","serverItem","_getStudentStateSprite","studentName","hostAlign","statusAlign","NAME_LIMIT","gameArray","chooseGameLevelWidth","WIDTH_PERCENT","chooseGameLevelHeight","HEIGHT_PERCENT","chooseGameLayout","chooseGameAlign","cancelAlign","chooseGameList","WIDTH_GAME_PERCENT","gameSelected","chooseGameListAlign","levelArray","chooseLevelWidth","WIDTH_LEVEL_PERCENT","chooseLevelHeight","chooseLevelAlign","okLevel","okLevelAlign","chooseLevelList","levelSelected","chooseLevelListAlign","MapElementsLayer","_mapElementTypes","_extraSettings","wallsAlign","borderMargin","mapElementsType","maxElementsCountPerRaw","_selectMapElementCallback","TaskSettingsLayer","_taskList","_availableTaskList","_addTaskSelect","addLayout","addLayoutAlign","_selectTaskOnSelect","_addTask","addButtonAlign","_fillTaskList","_generateAvailableTaskList","_onAddGlobalRobot","_onRemoveGlobalRobot","_refreshTasks","_generateLayerForTask","_removeTask","PositionTask4Layer","ExCounterMemoryTaskLayer","OutputTaskLayer","parentWidth","mapWidth","mapHeight","ObjectsSettingsLayer","_robotsTable","_objectsTable","_robots","robotRows","objectRows","_selectRobot","robotScrollAlign","_selectObject","objectScrollAlign","_updateCloneSprite","objectSprite","LOCAL_TEXTURE","selectedRobot","robotImage","ActiveObjectSettingsLayer","_settings","_drawSettings","GlobalRobotsSettingsLayer","_robotList","_availableRobotList","_addRobotSelect","_selectRobotOnSelect","_fillRobotList","_generateAvailableRobotList","existingRobotsTypes","robotExist","_generateLayerForRobot","CounterLayer","ExtendedCounterLayer","OutputLayer","FlagLayer","availableRobotsInformation","getGlobalRobotType","GlobalRobotLayer","_onRobotRemoved","_removeRobot","_useCompare","TOP","_robotAdded","_robotRemoved","_memoryValue","layoutAlign","valueLabel","memoryValueAlign","_memoryValueChanged","_selectCallback","_gravity","gravity","_selectWorldOnSelect","_selectWorldOnShow","_selectWorldOnClose","worldAlign","getWorldIDInSelectedGroup","exceptWorldID","group","updateParent","_fillComboboxes","_fillWorldsCombobox","returnValue","worldIndex","VERTICAL","MenuEditorElement","_index","_shiftRightButton","_shiftLeftButton","_pasteRightButton","_pasteLeftButton","maxIndex","showShiftButtons","showPasteButtons","_remove","_copy","mapsCounter","_shiftLeft","_shiftRight","_pasteLeft","_pasteRight","MenuEditorLayer","EventType","ShiftRight","ShiftLeft","PasteRight","PasteLeft","Remove","Copy","_selectWorldLayer","_gameTable","_levelTable","_selectedGameIndex","_selectedLevelIndex","_selectLevelTypeLayer","_pastingAvailable","_changingAvailable","_changePublicityWorldButton","_redrawWorld","_addGame","addGameAlign","_renameGame","renameGameAlign","_addLevel","addLevelAlign","_paste","pasteAlign","changing","_changing","changingAlign","downloadALign","_uploadWorld","uploadWorldAlign","_addWorld","addWorldAlign","sync","_confirmSyncWorld","syncAlign","mirera","_confirmLinkWorldWithMirera","mireraAlign","_renameWorld","renameWorldAlign","_confirmDeletingWorld","deleteWorldAlign","_changePublicityWorld","isPublicWorldAlign","updateWorldList","_updateWorldList","updateWorldListAlign","showInfoButton","_showInfo","_selectGameElementCallback","scrollGameAlign","_selectLevelElementCallback","scrollLevelAlign","boundsY","DOTS_INTENSITY","_drawGameTable","needToJump","_gameEventCallback","_drawLevelTable","_levelEventCallback","_removeGame","_copyGame","_shiftLeftGame","_shiftRightGame","_pasteLeftGame","_pasteRightGame","_removeLevel","_copyLevel","_shiftLeftLevel","_shiftRightLevel","_pasteLeftLevel","_pasteRightLevel","selectedGameElement","selectedLevelElement","_loadChangePublicityWorldTexture","newWorldLayer","NewWorldLayer","_onWorldAdded","UploadWorldLayer","worldId","_uploadError","_syncError","_linkWorldWithMirera","selectLayer","SelectMireraCourseLayer","courses","_setWorldName","newDescription","_deleteWorld","deleteWorldID","user","userWorldCount","_setGameName","SelectLevelTypeLayer","_addLevelWithType","_cancelAddLevelWithType","_setVisiblePasting","table","cell","_setVisibleChanging","blob","Blob","FileSaver","saveAs","_courses","ok","okAlign","courseNameArray","chooseCourseList","courseSelected","chooseCourseListAlign","LevelEditorLayer","LevelMenuEditorLayer","MapsContainerEditorLayer","_layersListener","_currentPageName","_currentButton","_levelSettings","_mapElements","_taskSettings","_objectsSettings","_activeObjectSettings","_globalRobotsSettings","levelSettingsButton","PageName","Level","_showSettings","levelSettingsButtonAlign","EDITOR_BUTTONS_SEPARATOR","mapSettingsButton","Map","mapSettingsButtonAlign","taskSettingsButton","taskSettingsButtonAlign","objectSettingsButton","Objects","objectSettingsButtonAlign","robotSettingsButton","Robot","robotSettingsButtonAlign","globalSettingsButton","Global","globalSettingsButtonAlign","HintEditorLayer","_getPageByName","isMethodCountLimited","_canAddFunctions","addMap","_createNewLayer","_hint","_hintInput","hintLayout","info","infoMargin","_saveHint","enterMargin","_closeHint","buttonsLayoutAlign","hintLayoutAlign","FunctionSettingsLayer","_maxBlocksInput","_startDataInput","_endDataInput","startDataLabel","endDataLabel","startDataLabelAlign","endDataLabelAlign","startDataInputAlign","endDataInputAlign","BOUND","_worldNameInput","_worldData","worldNameAlign","_cancelCreate","_world","upload","removeFileReader","_selectLevelTypeInput","levelTypesView","_selectedLevelType","levelTypes","_selectLevelTypeOnSelect","selectLevelTypeInputAlign","_selectLevelTypeButtonAction","_scenarioLayout","_stepListLayer","_headerLayout","_selectStepCombobox","_upButton","_downButton","_addStepType","_selectedStepIndex","_drawLayer","_arrowSprite","_clickedObject","_newStepType","_touchListener","SCENARIO_LAYOUT_WIDTH","scenarioAlign","BACKGROUND_BORDER","headerHeight","_upStep","upButtonAlign","_downStep","downButtonAlign","_setUpDownButtonStates","clearScenario","_clearScenario","clearScenarioAlign","addStepLayout","addStepAlign","stepMap","STEP_MAP","strList","locString","_selectStepOnSelect","addStepButton","_addStepCallback","stepButtonAlign","middleBorder","MIDDLE_BORDER","stepListMargin","MIDDLE_SEPARATOR","_fillStepList","RENDER_COLOR","_renderSelectedStep","_clearSelection","_addStep","upState","downState","_generateStepLayer","setSelectionVisible","stepLayer","getStepNumber","setStepNumber","moveSelection","stepNumber","TutorialStepClickObjectEditLayer","_onStepRemoved","TutorialStepDragObjectEditLayer","TutorialStepMoveToEditLayer","TutorialStepClickAreaEditLayer","TutorialStepWaitEventEditLayer","decreaseStepNumber","clearIndex","oldStepLayer","_renderClickObjectOrAreaStep","_renderDragObjectStep","_renderMoveToStep","objectRect","drawRect","RENDER_LINE_WIDTH","_drawArrow","_renderDragObject","toPoint","fromPoint","drawCircle","_isObjectClickable","tutorialObj","DRAG_SCENARIO_LAYOUT","selectedStep","CLICK_NEW","CLICK_SELECTED","RESIZE_SELECTED_AREA","DRAG_SELECTED_AREA","DRAG_NEW","DRAG_TO_AREA","dropObject","DEFAULT_MOVE_TO_RADIUS","MOVE_TO_RADIUS_STEP","MAX_MOVE_TO_RADIUS","SELECTED_STEP_COLOR","TutorialStepEditLayer","_stepNumber","_removeCallback","_removeCallbackTarget","_upLayout","_downLayout","_selectedStepLayout","removeCallback","removeCallbackTarget","_getLabelText","_fillUpLayout","_fillDownLayout","upHeight","upChildren","downHeight","downChildren","upAlign","downAlign","_select","eventMap","EVENT_MAP","selectIndex","_selectTaskOnShow","_selectTaskOnClose","loadApp","onStart","setProjection","Director","PROJECTION_2D","browserType","BROWSER_TYPE_BAIDU","BROWSER_TYPE_WECHAT","view","enableAutoFullScreen","platform","MOBILE_BROWSER","DESKTOP_BROWSER","devicePixelRatio","matchMedia","matches","getFrameSize","Device","getDPI","sq","sq1","density","getRetinaFactor","IPHONE","IPAD","enableRetina","setContentScaleFactor","setDesignResolutionSize","ResolutionPolicy","SHOW_ALL","adjustViewPort","resizeWithBrowserSize","resFile","loadRes","document","getElementById","run"],"mappings":"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","file":"pmk.min.js","sourcesContent":["/**\n * Created by Nikita Besshaposhnikov on 15.03.16.\n */\n\nvar CORE_BUILD = false;\n\n\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * This callback is used in cocos2d-x framework.\n * @callback cocosClickCallback\n * @param {cc.Node} sender Object of MenuButton is clicked\n */\n\n/**\n * Namespace for all PiktoMir classes and functions.\n * @namespace\n */\nvar pm = pm || {};\n\n/**\n * Namespace for all PiktoMir editor classes and functions.\n * @namespace\n */\nvar pme = pme || {};\n\n/**\n * Namespace for all PiktoMir UI classes and functions.\n * @namespace\n */\nvar pmui = pmui || {};\n\n/**\n * Namespace for all PiktoMir utils functions.\n * @namespace\n */\npm.utils = pm.utils || {};\n\n/**\n * A namespace which contains all \"data\"-serializable classes\n * @namespace\n */\npm.data = {};\n\nif (!String.prototype.format)\n{\n\t/**\n * Formats string.\n * @example\n * var str = '123 {0}'.format(123);\n * // str = '123 123'\n * @returns {string}\n */\n\tString.prototype.format = function()\n\t{\n\t\tvar args = arguments;\n\t\treturn this.replace(/{(\\d+)}/g, function(match, number)\n\t\t{\n\t\t\treturn typeof args[number] !== \"undefined\"\n\t\t\t\t? args[number]\n\t\t\t\t: match\n\t\t\t;\n\t\t});\n\t};\n}\n\nif (!Array.prototype.top)\n{\n\t/**\n * Returns last value of array.
\n * Can be uses if array is a stack.\n * @returns {*}\n */\n\tArray.prototype.top = function()\n\t{\n\t\treturn this[this.length - 1];\n\t};\n}\n\n//Some holy shit for native platform:\n//Args on native platform counted incorrect\nif(cc.sys.isNative)\n{\n\tcc.Node.prototype._addChild = cc.Node.prototype.addChild;\n\n\tcc.Node.prototype.addChild = function(child, zOrder, tag)\n\t{\n\t\tvar args = [child];\n\n\t\tif(zOrder !== undefined)\n\t\t\targs.push(zOrder);\n\n\t\tif(tag !== undefined)\n\t\t\targs.push(tag);\n\n\t\tthis._addChild.apply(this, args);\n\t};\n}\n","pm.appConfig = {\n\tapiAddress: \"https://piktomir.ru/api/v4/\",\n\tauthAddress: \"https://account.infomir.ru/\",\n\tmlURL: \"https://mld.piktomir.ru/post\",\n\twritablePathPrefix: \"prod\",\n\tpmAppID: \"FDcQKg7RUw\",\n\tuseDefaultWorlds: false,\n\tcanLogIn: true,\n\tshowMarket: false,\n\tshowInternalSettings: false,\n\tuseNetworkFeatures: false,\n\trecognizeType: \"remote\",\n\tdemoWorldID: \"5784b4278666565302423ed7\",\n\tbuiltinWorlds: {\n\t\t\"pm\": [\n\t\t\t{\n\t\t\t\tid: \"55881818a43c62246e1a542e\",\n\t\t\t\tname: \"Базовый\",\n\t\t\t\tsourceName: \"Base\",\n\t\t\t\tdescription: \"Мир с базовым набором заданий\",\n\t\t\t\tcreateDate: \"2017-02-28T09:21:56.659+0000\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"5588181ca43c62246e1a5433\",\n\t\t\t\tname: \"Алгоритмика\",\n\t\t\t\tsourceName: \"Alg\",\n\t\t\t\tdescription: \"Мир с расширенным набором заданий\",\n\t\t\t\tcreateDate: \"2017-02-28T09:21:57.830+0000\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"5784b4278666565302423ed7\",\n\t\t\t\tname: \"Демо\",\n\t\t\t\tsourceName: \"Demo\",\n\t\t\t\tdescription: \"Мир с демо заданиями\",\n\t\t\t\tcreateDate: \"2016-02-28T09:21:55.480+0000\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"5784c055fb2dc65c02a59c7f\",\n\t\t\t\tname: \"Алгоритмика 2018\",\n\t\t\t\tsourceName: \"Alg2018\",\n\t\t\t\tdescription: \"Мир с расширенным набором заданий\",\n\t\t\t\tcreateDate: \"2018-03-23T11:54:47.316+0000\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"591c27dd3ce609067f59b70f\",\n\t\t\t\tname: \"Весь ПиктоМир\",\n\t\t\t\tsourceName: \"WholePM\",\n\t\t\t\tdescription: \"Мир с различными заданиями\",\n\t\t\t\tcreateDate: \"2018-02-28T09:21:55.178+0000\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t}\n\t\t],\n\t\t\"pm-k\": [\n\t\t\t{\n\t\t\t\tid: \"5d88e6fcfdcd43315337d241\",\n\t\t\t\tname: \"2 класс. Весна\",\n\t\t\t\tsourceName: \"SecondClass\",\n\t\t\t\tdescription: \"Мир с базовым набором заданий для 2 класса\",\n\t\t\t\tcreateDate: \"2019-04-28T17:09:04.914Z\",\n\t\t\t\towner: {id: \"55881339a561e76d4fb9285d\", name: \"НИИСИ\"}\n\t\t\t}\n\t\t]\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 30.12.14.\n */\n\npm.getFileList = pm.getFileList || function()\n{};\n\npm.convertIPAddress = pm.convertIPAddress || function()\n{};\n\npm.setHttpRequestTimeout = pm.setHttpRequestTimeout || function()\n{};\n\npm.setParallaxArrayItemOffset = pm.setParallaxArrayItemOffset || function(parallax, index, offset)\n{\n\tparallax.getParallaxArray()[index].setOffset(offset);\n};\n\npm.setParallaxArrayItemRatio = pm.setParallaxArrayItemRatio || function(parallax, index, ratio)\n{\n\tparallax.getParallaxArray()[index].setRatio(ratio);\n};\n\npm.getParallaxArrayItemChild = pm.getParallaxArrayItemChild || function(parallax, index)\n{\n\treturn parallax.getParallaxArray()[index].getChild();\n};\n\npm.scrollViewOnTouchBegan = pm.scrollViewOnTouchBegan || function(scrollView, touch, event)\n{\n\treturn scrollView.onTouchBegan(touch, event);\n};\n\npm.scrollViewOnTouchMoved = pm.scrollViewOnTouchMoved || function(scrollView, touch, event)\n{\n\treturn scrollView.onTouchMoved(touch, event);\n};\n\npm.scrollViewOnTouchEnded = pm.scrollViewOnTouchEnded || function(scrollView, touch, event)\n{\n\treturn scrollView.onTouchEnded(touch, event);\n};\n\npm.scrollViewOnTouchCancelled = pm.scrollViewOnTouchCancelled || function(scrollView, touch, event)\n{\n\treturn scrollView.onTouchCancelled(touch, event);\n};\n\npm.playAudio = pm.playAudio || function(file, loop, volume) {};\npm.pauseAudio = pm.pauseAudio || function(audioID) {};\npm.resumeAudio = pm.resumeAudio || function(audioID) {};\npm.stopAudio = pm.stopAudio || function(audioID) {};\npm.setAudioVolume = pm.setAudioVolume || function(audioID, volume) {};\npm.getAudioVolume = pm.getAudioVolume || function(audioID) {};\npm.getAudioState = pm.getAudioState || function(audioID) {};\n\npm.socialLogin = pm.socialLogin || function(authUrl, callback) {};\n\npm.createNativeTouch = pm.createNativeTouch || function(id, x, y) {};\npm.setNativeTouchLocation = pm.setNativeTouchLocation || function(x, y) {};\npm.destroyNativeTouch = pm.destroyNativeTouch || function() {};\npm.dispatchEventFromNativeTouch = pm.dispatchEventFromNativeTouch || function(eventCode) {};\n\npm.btleManager = pm.BTLEManager ? pm.BTLEManager.getInstance() : {\n\tisBTLEAvailable: function()\n\t{\n\t\treturn false;\n\t},\n\n\tsetReceiveDataCallback: function(callback) {},\n\tsetConnectCallback: function(callback) {},\n\tsetDisconnectCallback: function(callback) {},\n\tscan: function() {},\n\tcleanup: function() {},\n\tsendData: function(data) {}\n};\n\npm.programRecognizer = pm.ProgramRecognizer ? pm.ProgramRecognizer.getInstance() : {\n\tsetSuccessCallback: function(callback) {},\n\tsetErrorCallback: function(callback) {},\n\trecognize: function(data, taskID) {},\n\tsetStatsURL: function(url) {}\n};\n\npm.matsRecognizer = pm.MatsRecognizer ? pm.MatsRecognizer.getInstance() : {\n\tsetSuccessCallback: function(callback) {},\n\tsetErrorCallback: function(callback) {},\n\trecognize: function() {},\n\tsetServerURL: function(url) {}\n};\n\n\npm.broadcastServer = pm.BroadcastServer ? pm.BroadcastServer.getInstance() : {};\npm.broadcastClient = pm.BroadcastClient ? pm.BroadcastClient.getInstance() : {};\n\npm.broadcastServer.DATA_PORT = 18842;\n\npm.BROADCAST_PACKET_PRIORITY ={\n\tLOW: 1,\n\tHIGH: 0\n};\n\npm.BROADCAST_PACKET_TYPE = {\n\tDISCOVER_REQUEST: 0,\n\tDISCOVER_INFO: 1,\n\tDATA_REQUEST: 2\n};\n\npm.GameServer = pm.GameServer || cc.Class.extend({});\n\npm.GameServer.CLIENT_CONNECTED_EVENT = 0;\npm.GameServer.CLIENT_DISCONNECTED_EVENT = 1;\n\npm.MagnetClient = pm.MagnetClient || cc.Class.extend({});\n\npm.GAME_SERVER_PORT = 18843;\npm.TEACHER_SERVER_PORT = 18844;\n\npm.GameClient = pm.GameClient || cc.Class.extend({});\n\npm.GameClient.CONNECTED_EVENT = 0;\npm.GameClient.DISCONNECTED_EVENT = 1;\n\npm.marketHelper = pm.MarketHelper ? pm.MarketHelper.getInstance() : {\n\tsetProductInfoCallback: function(callback) {},\n\trequestProductInfo: function(products) {},\n\tsetPaymentEventCallback: function(callback) {},\n\tpurchaseProduct: function(product) {},\n\trestorePurchases: function() {},\n\tcleanup: function() {},\n\tcleanupTransaction: function() {},\n\tisMarketAvailable: function() { return false; },\n\tgetDeviceUUID: function() { return \"\" }\n};\n\npm.marketHelper.EVENT = {\n\tPURCHASE: 0,\n\tRESTORE: 1\n};\n\npm.TextFieldWrapper = pm.TextFieldWrapper || ccui.TextField;\n","/**\n * Created by Nikita Besshaposhnikov on 06.11.15.\n */\n\n/**\n * This namespace contains all PM fonts and functions to work with them\n * @namespace\n */\npm.fonts = {\n\t\"Comfortaa-Light\": {type: \"font\", name: \"Comfortaa-Light\", srcs: [\"res/fonts/Comfortaa-Light.ttf\"]},\n\t\"Comfortaa-Regular\": {type: \"font\", name: \"Comfortaa-Regular\", srcs: [\"res/fonts/Comfortaa-Regular.ttf\"]},\n\t\"Comfortaa-Bold\": {type: \"font\", name: \"Comfortaa-Bold\", srcs: [\"res/fonts/Comfortaa-Bold.ttf\"]},\n\t\"Evolventa\": {type: \"font\", name: \"Evolventa\", srcs: [\"res/fonts/Evolventa-Regular.ttf\"]},\n\n\t/**\n * Gets real font name to load with cocos2d-x\n * @param {String} fontName\n * @returns {String}\n */\n\tgetRealFontName: function(fontName)\n\t{\n\t\tif(!this[fontName])\n\t\t\treturn \"Arial\";\n\n\t\tif(cc.sys.isNative)\n\t\t\treturn this[fontName].srcs[0];\n\t\telse\n\t\t\treturn this[fontName].name;\n\t}\n};\n","/**\n * System animation delay.\n * @const\n * @type {number}\n * @default\n */\npm.SYSTEM_ANIMATION_DELAY = 0.4;\n/**\n * A default bound for placing elements on screen.\n * @const\n * @type {number}\n * @default\n */\npm.SCREEN_BOUND = 15.0;\n/**\n * Maximum animation speed.\n * @const\n * @type {number}\n * @default\n */\npm.MAX_ANIMATION_SPEED = 0.8;\n/**\n * Medium animation speed.\n * @const\n * @type {number}\n * @default\n */\npm.MEDIUM_ANIMATION_SPEED = 0.4;\n/**\n * Small animation speed.\n * @const\n * @type {number}\n * @default\n */\npm.SMALL_ANIMATION_SPEED = 0.2;\n/**\n * Minimum animation speed\n * @const\n * @type {number}\n * @default\n */\npm.MIN_ANIMATION_SPEED = 0.07;\n\n/**\n * DPI factor.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.MOBILE_DPI_FACTOR = 160.0;\n\n/**\n * Tablet or phone.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.DEVICE_WIDTH_INDICATOR = 5.0;\n\n/**\n * Target retina DPI for tablets.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.TABLET_RETINA_TARGET_DPI = 264.0;\n\n/**\n * Target retina width for tablets.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.TABLET_RETINA_TARGET_WIDTH = 2048.0;\n\n/**\n * Target retina height for tablets.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.TABLET_RETINA_TARGET_HEIGHT = 1536.0;\n\n/**\n * Target retina DPI for phones.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.PHONE_RETINA_TARGET_DPI = 458.0;\n\n/**\n * Target retina width for phones.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.PHONE_RETINA_TARGET_WIDTH = 2358.0;\n\n/**\n * Target retina height for phones.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.PHONE_RETINA_TARGET_HEIGHT = 750.0;\n\n/**\n * Minimum display width to recognize retina for desktop platform.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.DESKTOP_RETINA_DISPLAY_MIN_WIDTH = 2400;\n/**\n * Minimum display width to recognize retina.\n * @see cc.game.onStart\n * @const\n * @type {number}\n * @default\n */\npm.IPHONE_BIG_DISPLAY_MIN_WIDTH = 2200;\n/**\n * Minimum distance to detect drag or click.\n * @const\n * @type {Number}\n * @default\n */\npm.TOUCH_CRITICAL_DISTANCE = 5;\n\n/**\n * Version of settings file format\n * @const\n * @type {number}\n * @default\n */\npm.SETTINGS_VERSION = 260;\n\n/**\n * Enum for user types\n * @enum {String}\n */\npm.USER_TYPE = {\n\tADMIN: \"admin\",\n\tTEACHER: \"teacher\",\n\tUSER: \"user\"\n};\n\n/**\n * All game settings are stored here.\n * @namespace\n */\npm.settings = {\n\t/**\n * @private\n * @default\n */\n\t_cacheDir: \"Cache\",\n\t/**\n * Global font definition.\n * @type {cc.FontDefinition}\n * @default\n */\n\tfontDefinition: new cc.FontDefinition(),\n\t/**\n * Global font name.\n * @type {String}\n * @default\n */\n\tfontName: pm.fonts.getRealFontName(\"Comfortaa-Regular\"),\n\t/**\n\t * Global font name in bold style.\n\t * @type {String}\n\t * @default\n\t */\n\tfontBoldName: pm.fonts.getRealFontName(\"Comfortaa-Bold\"),\n\t/**\n\t * Global font name in light style.\n\t * @type {String}\n\t * @default\n\t */\n\tfontLightName: pm.fonts.getRealFontName(\"Comfortaa-Light\"),\n\t/**\n\t * Global font size.\n\t * @type {Number}\n\t * @default\n\t */\n\tfontSize: 20,\n\t/**\n * Global transparent color.\n * @type {cc.Color}\n * @default\n */\n\ttransparentColor: cc.color(0, 0, 0, 80),\n\n\t/**\n\t * Level font transparent color.\n\t * @type {cc.Color}\n\t * @default\n\t */\n\tlevelFontColor: cc.color(0, 102, 102),\n\n\t/**\n * Is user logged in editor.\n * @type {Boolean}\n * @default\n */\n\tuserLoggedIn: false,\n\n\t/**\n * If display is retina.\n * @type {Boolean}\n * @default\n */\n\tisRetinaEnabled: false,\n\n\t/**\n * If is in editor mode.\n * @type {Boolean}\n * @default\n */\n\tisEditorMode: false,\n\n\t/**\n\t * If it is help pages.\n\t *\n\t **/\n\tisHelpMode: false,\n\n\t/**\n\t * Screen bounds\n\t * @private\n */\n\t_screenBounds: null,\n\n\t/**\n * Returns a screen size.\n * @returns {cc.Size}\n */\n\tgetScreenSize: function()\n\t{\n\t\treturn cc.director.getWinSize();\n\t},\n\n\t/**\n * Returns a safe area rect on screen.\n * @returns {cc.Rect}\n */\n\tgetSafeAreaRect: function()\n\t{\n \tif(!cc.sys.isNative)\n\t\t{\n\t\t\tvar screenSize = this.getScreenSize();\n\n\t\t\treturn {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: screenSize.width,\n\t\t\t\theight: screenSize.height\n\t\t\t};\n\t\t}\n\n\t\treturn cc.director.getOpenGLView().getSafeAreaRect();\n\t},\n\t/**\n\t * Returns screen bounds\n * @returns {{safeAreas: {top: boolean, left: boolean, bottom: boolean, right: boolean}, top: number, left: number, bottom: number, right: number}}\n */\n\tgetScreenBounds: function()\n\t{\n\t\tif(!this._screenBounds)\n\t\t{\n\t\t\tvar safeAreaRect = this.getSafeAreaRect();\n\t\t\tvar screenSize = this.getScreenSize();\n\n\t\t\tvar safeAreas = {\n\t\t\t\ttop: false,\n\t\t\t\tleft: safeAreaRect.x !== 0,\n\t\t\t\tbottom: safeAreaRect.y !== 0,\n\t\t\t\tright: safeAreaRect.width + safeAreaRect.x < screenSize.width\n\t\t\t};\n\n\t\t\tthis._screenBounds = {\n\t\t\t\tsafeAreas: safeAreas,\n\t\t\t\ttop: pm.SCREEN_BOUND,\n\t\t\t\tleft: safeAreas.left ? safeAreaRect.x : pm.SCREEN_BOUND,\n\t\t\t\tbottom: safeAreas.bottom ? safeAreaRect.y : pm.SCREEN_BOUND,\n\t\t\t\tright: safeAreas.right ? screenSize.width - safeAreaRect.x - safeAreaRect.width : pm.SCREEN_BOUND\n\t\t\t};\n\t\t}\n\n\t\treturn this._screenBounds;\n\t},\n\n\t/**\n * Returns an area of map.\n * @returns {cc.Size}\n */\n\tgetMapSize: function()\n\t{\n\t\treturn cc.size(this.getScreenSize().width - pm.appUtils.getProgramLayerWidth() + ProgramLayer.METHOD_STACK_WIDTH, this.getScreenSize().height);\n\t},\n\t/**\n * Saves settings to file.\n */\n\tsave: function()\n\t{\n\t\tpm.fileUtils.saveObject(this._getSettingsPath(), this._cache);\n\t},\n\t/**\n * Loads settings.\n */\n\tload: function()\n\t{\n\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\tif(pm.fileUtils.isFileExist(this._getSettingsPath()))\n\t\t{\n\t\t\tvar fileContent = pm.fileUtils.readObject(this._getSettingsPath());\n\n\t\t\tif(fileContent.version < pm.SETTINGS_VERSION)\n\t\t\t{\n\t\t\t\tpm.fileUtils.removeFile(this._getSettingsPath());\n\n\t\t\t\tfor(var i = 0; i < builtinWorlds.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tthis.addWorld(builtinWorlds[i].id);\n\t\t\t\t\tthis.setWorldMetaData(builtinWorlds[i].id, builtinWorlds[i]);\n\t\t\t\t}\n\n\t\t\t\tthis.setSelectedWorldID(builtinWorlds[0].id);\n\t\t\t\tthis.save();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._cache = fileContent;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.fileUtils.createDirectory(pm.fileUtils.getWritablePath());\n\n\t\t\tthis._loadDefaultCache();\n\n\t\t\tthis.save();\n\t\t}\n\n\t\tthis.fontDefinition.fontName = this.fontName;\n\t\tthis.fontDefinition.fontSize = this.fontSize;\n\t},\n\n\t_cache: {},\n\n\t_loadDefaultCache: function()\n\t{\n\t\tthis._cache = {\n\t\t\tversion: pm.SETTINGS_VERSION,\n\t\t\tanimationSettings: {animationSpeed: 0.5},\n\t\t\tlanguageSettings: {language: cc.sys.language},\n\t\t\tsoundSettings: {\n\t\t\t\tbackgroundVolume: 0.99,\n\t\t\t\teffectVolume: 0.99,\n\t\t\t\tsoundEnabled: 1\n\t\t\t},\n\t\t\tworldSettings: {\n\t\t\t\tselectedUserGroupID: \"none\",\n\t\t\t\tselectedWorldID: pm.appConfig.builtinWorlds[pm.appConfig.appType][0].id,\n\n\t\t\t\tworlds: {}\n\t\t\t},\n\t\t\tuserSettings: {\n\t\t\t\tuserAutoLogin: false,\n\t\t\t\taccessToken: \"\",\n\t\t\t\trefreshToken: \"\",\n\n\t\t\t\tuserData: {\n\t\t\t\t\tid: \"\",\n\t\t\t\t\tlogin: \"\",\n\t\t\t\t\taccountType: \"\",\n\t\t\t\t\tusername: \"\",\n\n\t\t\t\t\tfirstName: \"\",\n\t\t\t\t\tsurname: \"\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tPhysicalConnectorType: \"none\",\n\t\t\tuseProgramRecognizer: false,\n\t\t\tuseTurboMode: false,\n\t\t\tuseClearProgramButton: false,\n\t\t\tdeviceName: null,\n\t\t\tmodifyDate: null\n\t\t};\n\n\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\tfor(var i = 0; i < builtinWorlds.length; ++i)\n\t\t{\n\t\t\tthis.addWorld(builtinWorlds[i].id);\n\t\t\tthis.setWorldMetaData(builtinWorlds[i].id, builtinWorlds[i]);\n\t\t}\n\n\t\tthis.setSelectedWorldID(builtinWorlds[0].id);\n\t},\n\n\t/**\n * Returns a path to settings.\n * @returns {string}\n * @private\n */\n\t_getSettingsPath: function()\n\t{\n\t\treturn pm.fileUtils.getWritablePath() + \"/Settings.json\";\n\t},\n\n\t/**\n * Returns a path to world of format version.\n * @param {String} [worldID] A world id.\n * @returns {string}\n */\n\tgetWorldPath: function(worldID)\n\t{\n\t\treturn \tthis.getWorldDir(worldID) + \"/world.json\";\n\t},\n\n\t/**\n * Returns a path to world dir of format version.\n * @param {String} [worldID] A world id.\n * @returns {string}\n */\n\tgetWorldDir: function(worldID)\n\t{\n\t\tworldID = ((worldID === undefined)? this.getSelectedWorldID() : worldID);\n\n\t\treturn \tpm.fileUtils.getWritablePath() + \"/\" + pm.appUtils.getSupportedLevelFormatVersion() + \"/\" + worldID;\n\t},\n\n\t/**\n * Returns a path to world edit log file.\n\t * @param {String} [worldID] A world name.\n\t * @returns {string}\n */\n\tgetWorldEditLogPath: function(worldID)\n\t{\n\t\treturn \tthis.getWorldDir(worldID) + \"/editlog.json\";\n\t},\n\t/**\n * Returns a path to world temp dir.\n * @returns {string}\n */\n\tgetWorldTempDir: function()\n\t{\n\t\treturn \tthis.getWorldDir() + \"/Temp\";\n\t},\n\t/**\n * Returns a path to world cache dir.\n * @param {String} [worldID] A world name.\n * @returns {string}\n */\n\tgetWorldCachePath: function(worldID)\n\t{\n\t\treturn \tthis.getWorldDir(worldID) + \"/\" + this._cacheDir;\n\t},\n\n\t/**\n * Returns selected world name.\n * @returns {String}\n */\n\tgetSelectedWorldID: function()\n\t{\n\t\treturn this._cache.worldSettings.selectedWorldID;\n\t},\n\n\t/**\n * Returns selected world name.\n * @returns {string}\n */\n\tgetSelectedUserGroupID: function()\n\t{\n\t\treturn this._cache.worldSettings.selectedUserGroupID;\n\t},\n\t/**\n * Sets selected world\n * @param {String} worldID World id to select.\n */\n\tsetSelectedWorldID: function(worldID)\n\t{\n\t\tthis._cache.worldSettings.selectedWorldID = worldID;\n\n\t\tthis.save();\n\t},\n\n\tgetWorldRecord: function(worldID)\n\t{\n\t\tworldID = worldID === undefined ? this.getSelectedWorldID() : worldID;\n\n\t\treturn this._cache.worldSettings.worlds[worldID];\n\t},\n\n\t/**\n * Returns selected user name\n * @returns {String}\n */\n\tgetSelectedUserID: function()\n\t{\n\t\treturn this._cache.worldSettings.worlds[this.getSelectedWorldID()].owner.id;\n\t},\n\t/**\n * Sets selected user group\n * @param {String} groupID Group id.\n */\n\tsetSelectedUserGroupID: function(groupID)\n\t{\n\t\tthis._cache.worldSettings.selectedUserGroupID = groupID;\n\n\t\tthis.save();\n\t},\n\n\tupdateModifyDate: function()\n\t{\n\t\tthis._cache.modifyDate = new Date();\n\n\t\tthis.save();\n\t},\n\n\tclearModifyDate: function()\n\t{\n\t\tthis._cache.modifyDate = null;\n\n\t\tthis.save();\n\t},\n\n\tgetModifyDate: function()\n\t{\n\t\treturn this._cache.modifyDate;\n\t},\n\n\t/**\n\t * Sets world metadata\n * @param {String} worldID\n * @param {Object} metadata\n\t * @param {String} metadata.name\n\t * @param {String} metadata.description\n\t * @param {String} metadata.createDate\n\t * @param {Boolean} metadata.linkedWithMirera\n\t * @param {Object} [metadata.owner]\n\t * @param {String} [metadata.owner.id]\n\t * @param {String} [metadata.owner.name]\n\t * @param {Array} [metadata.groups]\n */\n\tsetWorldMetaData: function(worldID, metadata)\n\t{\n\t\tif (this._cache.worldSettings.worlds[worldID])\n\t\t{\n \tvar world = this._cache.worldSettings.worlds[worldID];\n\n\t\t\tworld.name = metadata.name || \"\";\n\t\t\tworld.description = metadata.description || \"\";\n\t\t\tworld.createDate = metadata.createDate || (new Date()).toISOString();\n\t\t\tworld.linkedWithMirera = metadata.linkedWithMirera || false;\n\n\t\t\tif(metadata.owner)\n\t\t\t{\n\t\t\t\tif (!world.owner)\n\t\t\t\t\tworld.owner = {};\n\n\t\t\t\tworld.owner.id = metadata.owner.id || \"\";\n\t\t\t\tworld.owner.name = metadata.owner.name || \"\";\n\t\t\t}\n\n\t\t\tif(metadata.groups && metadata.groups.length > 0)\n\t\t\t{\n\t\t\t\tworld.groups = [];\n\n\t\t\t\tfor(var i = 0 ; i < metadata.groups.length; ++i)\n\t\t\t\t\tworld.groups.push(metadata.groups[i]);\n\t\t\t}\n\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\t/**\n * Is user auto login to editor.\n * @returns {boolean}\n */\n\tisUserAutoLogin: function()\n\t{\n\t\treturn this._cache.userSettings.userAutoLogin;\n\t},\n\n\t/**\n * Sets user auto login to editor.\n * @param {boolean} status\n */\n\tsetUserAutoLogin: function(status)\n\t{\n\t\tthis._cache.userSettings.userAutoLogin = status;\n\t},\n\n\t/**\n * Returns last played game index.\n * @returns {Number}\n */\n\tgetGame: function()\n\t{\n\t\treturn this.getWorldRecord().game;\n\t},\n\t/**\n * Sets last played game index.\n * @param {Number} game Game Index.\n */\n\tsetGame: function(game)\n\t{\n\t\tthis.getWorldRecord().game = game;\n\t\tthis.save();\n\t},\n\t/**\n * Returns last played level index.\n * @returns {Number}\n */\n\tgetLevel: function()\n\t{\n\t\treturn this.getWorldRecord().level;\n\t},\n\t/**\n * Sets last played level index.\n * @param {Number} level Level Index.\n */\n\tsetLevel: function(level)\n\t{\n\t\tthis.getWorldRecord().level = level;\n\t\tthis.save();\n\t},\n\n\t/**\n * Decrements last played level index\n */\n\tdecLevel: function()\n\t{\n\t\tthis.setLevel(this.getLevel() - 1);\n\t},\n\t/**\n * Decrements last played game index\n */\n\tdecGame: function()\n\t{\n\t\tthis.setGame(this.getGame() - 1);\n\t},\n\t/**\n * Increments last played game index\n */\n\tincGame: function()\n\t{\n\t\tthis.setGame(this.getGame() + 1);\n\t},\n\t/**\n * Increments last played level index\n */\n\tincLevel: function()\n\t{\n\t\tthis.setLevel(this.getLevel() + 1);\n\t},\n\n\t/**\n * Adds world to settings.\n * @param {String} worldID ID of world.\n */\n\taddWorld: function (worldID)\n\t{\n \tif(!this._cache.worldSettings.worlds[worldID])\n\t\t{\n\t\t\tthis._cache.worldSettings.worlds[worldID] = {\n \tid: worldID,\n\t\t\t\tgame: 0,\n\t\t\t\tlevel: 0\n\t\t\t};\n\t\t}\n\t},\n\n\t/**\n\t * Rename world\n\t * @param {String} worldID\n\t * @param {String} newName\n\t */\n\trenameWorld: function (worldID, newName)\n\t{\n\t\tif (this._cache.worldSettings.worlds[worldID])\n\t\t{\n\t\t\tthis._cache.worldSettings.worlds[worldID].name = newName;\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\t/**\n\t * Set world linked with mirera status\n\t * @param {String} worldID\n\t * @param {Boolean} linkedWithMirera\n\t */\n\tsetWorldLinkedWithMirera: function (worldID, linkedWithMirera)\n\t{\n\t\tif (this._cache.worldSettings.worlds[worldID])\n\t\t{\n\t\t\tthis._cache.worldSettings.worlds[worldID].linkedWithMirera = linkedWithMirera;\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\t/**\n * Change description of world\n * @param {String} worldID\n * @param {String} newDesc\n */\n\tchangeWorldDescription: function (worldID, newDesc)\n\t{\n\t\tif (this._cache.worldSettings.worlds[worldID])\n\t\t{\n\t\t\tthis._cache.worldSettings.worlds[worldID].description = newDesc;\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\t/**\n\t * Delete world\n\t * @param {String} worldID\n\t */\n\tdeleteWorld: function (worldID)\n\t{\n\t\tvar worlds = this._cache.worldSettings.worlds;\n\n\t\tdelete worlds[worldID];\n\t\tthis.save();\n\t},\n\n\t/**\n * Returns all world data stored in settings cache.\n * @returns {Object}\n */\n\tgetAvailableWorlds: function()\n\t{\n\t\treturn this._cache.worldSettings.worlds;\n\t},\n\n\t/**\n * Returns animation speed.\n * @returns {number}\n */\n\tgetAnimationSpeed: function()\n\t{\n\t\tif(this.isHelpMode)\n\t\t{\n\t\t\treturn pm.MEDIUM_ANIMATION_SPEED;\n\t\t}\n\t\treturn this._cache.animationSettings.animationSpeed;\n\t},\n\t/**\n * Returns if animation if disabled(animationSpeed < pm.MIN_ANIMATION_SPEED).\n * @returns {boolean}\n */\n\tisAnimationDisabled: function()\n\t{\n\t\treturn this._cache.animationSettings.animationSpeed < pm.MIN_ANIMATION_SPEED;\n\t},\n\t/**\n * Sets animation speed.\n * @param {Number} value Speed value.\n */\n\tsetAnimationSpeed: function(value)\n\t{\n\t\tthis._cache.animationSettings.animationSpeed = value;\n\t\tthis.save();\n\t},\n\t/**\n * Returns background music volume.\n * @returns {number}\n */\n\tgetBackgroundVolume: function()\n\t{\n\t\treturn this._cache.soundSettings.backgroundVolume;\n\t},\n\t/**\n * Sets background music volume.\n * @param {Number} value Background music value.\n */\n\tsetBackgroundVolume: function(value)\n\t{\n\t\tthis._cache.soundSettings.backgroundVolume = value;\n\t\tthis.save();\n\t},\n\t/**\n * Returns effect music volume.\n * @returns {number}\n */\n\tgetEffectVolume: function()\n\t{\n\t\treturn this._cache.soundSettings.effectVolume;\n\t},\n\t/**\n * Sets effect music volume.\n * @param {Number} value Effect music value.\n */\n\tsetEffectVolume: function(value)\n\t{\n\t\tthis._cache.soundSettings.effectVolume = value;\n\t\tthis.save();\n\t},\n\t/**\n * Returns language code.\n * @returns {String}\n */\n\tgetLanguage: function()\n\t{\n\t\treturn this._cache.languageSettings.language;\n\t},\n\t/**\n * Sets language code.\n * @param {String} value Language code.\n */\n\tsetLanguage: function(value)\n\t{\n\t\tthis._cache.languageSettings.language = value;\n\t\tthis.save();\n\t},\n\t/**\n * Returns access token for current user.\n * @returns {String}\n */\n\tgetAccessToken: function()\n\t{\n\t\treturn this._cache.userSettings.accessToken;\n\t},\n\t/**\n * Sets access token for current user.\n * @param {String} token Access token.\n */\n\tsetAccessToken: function(token)\n\t{\n\t\tthis._cache.userSettings.accessToken = token;\n\t\tthis.save();\n\t},\n\t/**\n * Returns refresh token for current user.\n * @returns {String}\n */\n\tgetRefreshToken: function()\n\t{\n\t\treturn this._cache.userSettings.refreshToken;\n\t},\n\t/**\n * Sets refresh token for current user.\n * @param {String} token Refresh token.\n */\n\tsetRefreshToken: function(token)\n\t{\n\t\tthis._cache.userSettings.refreshToken = token;\n\t\tthis.save();\n\t},\n\n\t/**\n * Returns user data of current user.\n * @returns {Object}\n */\n\tgetUserData: function()\n\t{\n\t\treturn this._cache.userSettings.userData;\n\t},\n\n\t/**\n * Sets user name\n * @param {String} username\n */\n\tsetUserName: function(username)\n\t{\n\t\tthis._cache.userSettings.userData.username = username;\n\t\tthis.save();\n\t},\n\n\t/**\n\t * Sets user login\n\t * @param {String} login\n\t */\n\tsetUserLogin: function(login)\n\t{\n\t\tthis._cache.userSettings.userData.login = login;\n\t\tthis.save();\n\t},\n\n\t/**\n * Sets user data\n * @param {String} accountType\n * @param {String} firstName\n * @param {String} surname\n */\n\tsetUserData: function(id, accountType, firstName, surname)\n\t{\n\t\tthis._cache.userSettings.userData.id = id;\n\t\tthis._cache.userSettings.userData.accountType = accountType;\n\t\tthis._cache.userSettings.userData.firstName = firstName;\n\t\tthis._cache.userSettings.userData.surname = surname;\n\n\t\tthis.save();\n\t},\n\n\t/**\n * Removes all user data + his tokens\n */\n\tclearUserData: function()\n\t{\n\t\tthis._cache.userSettings.userData.accountType = \"\";\n\t\tthis._cache.userSettings.userData.firstName = \"\";\n\t\tthis._cache.userSettings.userData.surname = \"\";\n\t\tthis._cache.userSettings.userData.username = \"\";\n\n\t\tthis._cache.userSettings.accessToken = \"\";\n\t\tthis._cache.userSettings.refreshToken = \"\";\n\n\t\tthis.save();\n\t},\n\n\t/**\n\t * Sets physical robot type.\n\t * @param {pm.PhysicalConnectorType} type\n */\n\tsetPhysicalConnectorType: function(type)\n\t{\n\t\tthis._cache.PhysicalConnectorType = type;\n\t\tthis.save();\n\n\t\tpm.sendCustomEvent(pm.PHYSICAL_ROBOT_TYPE_CHANGED, type);\n\t},\n\n\t/**\n * Returns physical robot type.\n\t * @returns {pm.PhysicalConnectorType}\n */\n\tgetPhysicalConnectorType: function()\n\t{\n\t\treturn this._cache.PhysicalConnectorType || pm.PhysicalConnectorType.BLE;\n\t},\n\n\t/**\n * Sets using of program recognizer.\n * @param {Boolean} state\n */\n\tsetUseProgramRecognizer: function(state)\n\t{\n\t\tthis._cache.useProgramRecognizer = state;\n\t\tthis.save();\n\t},\n\n\t/**\n * Returns using of program recognizer.\n\t * @returns {Boolean}\n */\n\tgetUseProgramRecognizer: function()\n\t{\n\t\treturn this._cache.useProgramRecognizer === undefined ? true : this._cache.useProgramRecognizer;\n\t},\n\n\t/**\n * Sets using of turbo mode.\n * @param {Boolean} state\n */\n\tsetUseTurboMode: function(state)\n\t{\n\t\tthis._cache.useTurboMode = state;\n\t\tthis.save();\n\t},\n\n\t/**\n * Returns using of turbo mode.\n * @returns {Boolean}\n */\n\tgetUseTurboMode: function()\n\t{\n\t\treturn this._cache.useTurboMode === undefined ? false : this._cache.useTurboMode;\n\t},\n\n\t/**\n\t * Sets using of clear program button.\n\t * @param {Boolean} state\n\t */\n\tsetUseClearProgramButton: function(state)\n\t{\n\t\tthis._cache.useClearProgramButton = state;\n\t\tthis.save();\n\t},\n\n\t/**\n\t * Returns using of clear program button.\n\t * @returns {Boolean}\n\t */\n\tgetUseClearProgramButton: function()\n\t{\n\t\treturn this._cache.useClearProgramButton === undefined ? false : this._cache.useClearProgramButton;\n\t},\n\n\tsetUserDeviceName: function(name)\n\t{\n\t\tthis._cache.deviceName = name;\n\t\tthis.save();\n\t},\n\n\tgetUserDeviceName: function()\n\t{\n\t\treturn !this._cache.deviceName ? \"Unnamed\": this._cache.deviceName;\n\t}\n};\n","/**\n * Created by Danila Eremin on 03.02.15.\n */\n\n/**\n * @const\n * @default\n * @type {string}\n */\nvar pmVersion = \"2.7.3\";\n/**\n * @const\n * @default\n * @type {string}\n */\nvar pmkVersion = \"3.0.0\";\n/**\n * @const\n * @default\n * @type {string}\n */\nvar build = \"debug\";\n/**\n * @const\n * @default\n * @type {Number}\n */\nvar PM_SUPPORTED_LEVEL_FORMAT_VERSION = 19;\n/**\n * @const\n * @default\n * @type {Number}\n */\nvar PMK_SUPPORTED_LEVEL_FORMAT_VERSION = 22;\n","/**\n * This property is used to store constructors for all \"data-classes\".\n * Do not change anything in this namespace.\n */\npm.classMapping = {};\n/**\n * This function loads \"data-classes\" constructors from data namespace\n * @see data\n */\npm.loadClassMapping = function()\n{\n\tfor(var key in pm.data)\n\t\tpm.classMapping[pm.data[key].prototype.typeName] = pm.data[key];\n};\n","/**\n * This function deserializes an array from raw array with \"data-classes\"\n * @param {Array} sourceArray A raw array\n */\nArray.prototype.deserialize = function(sourceArray)\n{\n\tfor (var i = 0; i < sourceArray.length; ++i)\n\t{\n\t\tif (cc.isArray(sourceArray[i]))\n\t\t{\n\t\t\tthis[i] = new Array();\n\t\t\tthis[i].deserialize(sourceArray[i]);\n\t\t}\n\t\telse if (sourceArray[i] && cc.isObject(sourceArray[i]))\n\t\t{\n\t\t\ttry {\n\t\t\t\tvar o = new pm.classMapping[sourceArray[i].typeName]();\n\n\t\t\t\to.deserialize(sourceArray[i]);\n\t\t\t}\n\t\t\tcatch(exception){\n\t\t\t\tconsole.log(exception);\n\t\t\t}\n\t\t\tthis.push(o);\n\t\t}\n\t\telse { this.push(sourceArray[i]); }\n\t}\n};\n\nif(CORE_BUILD || cc.sys.isNative)\n{\n\tcc.clone = function (obj)\n\t{\n\n\t\tvar newObj = (obj.constructor) ? new obj.constructor : {};\n\n\t\tfor (var key in obj)\n\t\t{\n\t\t\tvar copy = obj[key];\n\t\t\t// Beware that typeof null === \"object\" !\n\t\t\tif (((typeof copy) === \"object\") && copy)\n\t\t\t\tnewObj[key] = cc.clone(copy);\n\t\t\telse\n\t\t\t\tnewObj[key] = copy;\n\t\t}\n\t\treturn newObj;\n\t};\n}\n\n/**\n * This functions create a full clone of an Class object\n * @param {pm.Class} obj An object to clone\n * @returns {pm.Class} Cloned object\n */\nvar cloneClassObject = function(obj)\n{\n\tvar newObj = (obj.constructor) ? new obj.constructor : {};\n\n\tfor (var key in obj)\n\t{\n\t\tvar copy = obj[key];\n\t\t// Beware that typeof null===\"object\" !\n\t\tif (copy && (cc.isObject(copy) || cc.isArray(copy)))\n\t\t{\n\t\t\tif(obj.propertyIsEnumerable(key))\n\t\t\t\tnewObj[key] = cloneClassObject(copy);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnewObj[key] = copy;\n\t\t}\n\t}\n\treturn newObj;\n};\n/**\n * @class This is the base class for all serializable objects.
\n * Object is serialized to json format and deserialized from json with all class functions.
\n * Use \"_addNonEnumerableProps\" method in ctor of class before calling \"super\"-method to
\n * specify properties excluded from serialization.\n * @extends cc.Class\n */\npm.Class = cc.Class.extend(/** @lends Class# */{\n\n\tctor: function()\n\t{\n\t\t//try {\n\n\t\t//if(this.typeName === undefined)\n\t\t//\treturn;\n\n\t\tvar nonEnumerableProps = this.__nonEnumerableProps;\n\n\t\tfor (var key in this)\n\t\t{\n\t\t\tvar obj = this[key];\n\n\t\t\tif (key !== \"__nonEnumerableProps\" && key !== \"__pid\" && key !== \"__instanceId\"&& !cc.isFunction(obj))\n\t\t\t{\n\n\t\t\t\tvar definedObject;\n\n\t\t\t\tif(obj && (cc.isArray(obj) || cc.isObject(obj)))\n\t\t\t\t\tdefinedObject = cc.clone(obj);\n\t\t\t\telse\n\t\t\t\t\tdefinedObject = obj;\n\n\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\tenumerable: nonEnumerableProps ? (nonEnumerableProps.indexOf(key) < 0) : true,\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: definedObject\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tObject.defineProperty(this, \"__instanceId\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: false,\n\t\t\twritable: true,\n\t\t\tvalue: this.__instanceId\n\t\t});\n\t\t//}\n\t\t//catch(e)\n\t\t//{\n\t\t//\tconsole.log(this.typeName);\n\t\t//}\n\t},\n\t/**\n\t * This function will serialize class to JSON file by filePath\n\t * @param {String} filePath path to file\n\t */\n\tserialize: function(filePath)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tpm.fileUtils.saveObject(filePath, this);\n\t},\n\t/**\n\t * This function will construct class based know \"data-classes\" by raw JSON data.\n\t * @param {String | Object} object File path or an object to deserialize\n\t * @param {Boolean} [createNewObject=false] If createNewObject is true,\n\t * function will return a new copy if \"this\" object\n\t * @returns {pm.Class | undefined}\n\t */\n\tdeserialize: function(object, createNewObject)\n\t{\n\t\tif(createNewObject === undefined)\n\t\t\tcreateNewObject = false;\n\n\t\tvar data;\n\n\t\tif(typeof object === \"string\")\n\t\t{\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tdata = pm.fileUtils.readObject(object);\n\t\t\telse\n\t\t\t\tdata = JSON.parse(object);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdata = object;\n\t\t}\n\n\t\tvar self = this;\n\n\t\tif(createNewObject)\n\t\t\tself = new pm.classMapping[data.typeName]();\n\n\t\tfor(var key in data)\n\t\t{\n\n\t\t\tif(data[key] === undefined || data[key] === null)\n\t\t\t\tcontinue;\n\n\t\t\tif(cc.isArray(data[key]))\n\t\t\t{\n\t\t\t\tself[key] = new Array();\n\t\t\t\tself[key].deserialize(data[key]);\n\t\t\t}\n\t\t\telse if (cc.isObject(data[key]))\n\t\t\t{\n\n\t\t\t\tif(data[key].typeName !== undefined && pm.classMapping[data[key].typeName])\n\t\t\t\t{\n\t\t\t\t\tself[key] = new pm.classMapping[data[key].typeName]();\n\n\t\t\t\t\tself[key].deserialize(data[key]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tself[key] = cc.clone(data[key]);\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse { self[key] = data[key]; }\n\n\t\t}\n\n\t\tif(createNewObject)\n\t\t\treturn self;\n\t},\n\n\t_addNonEnumerableProps: function(props)\n\t{\n\t\tif(!this.hasOwnProperty(\"__nonEnumerableProps\"))\n\t\t{\n\t\t\tObject.defineProperty(this, \"__nonEnumerableProps\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: false,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: []\n\t\t\t});\n\t\t}\n\n\t\tfor(var i = 0; i < arguments.length; ++i)\n\t\t{\n\t\t\tif(this[\"__nonEnumerableProps\"].indexOf(arguments[i]) < 0)\n\t\t\t\tthis[\"__nonEnumerableProps\"].push(arguments[i]);\n\t\t}\n\t}\n\n});\n","/**\n * Created by Nikita Besshaposhnikov on 28.02.15.\n */\n\n/**\n * This class represents a \"Map\" container\n * @class\n * @extends pm.Class\n */\npm.data.MapClass = pm.Class.extend(/** @lends pm.data.MapClass */{\n\ttypeName: \"map\",\n\n\tctor: function() { this._super(); }\n});\n","/**\n * This namespace contains functions to work with user cache database.
\n * It contains score and user programs for loaded world.\n * @namespace\n */\npm.userCache = {\n\t/**\n * Sync interval in seconds\n * @type {Number}\n * @default\n */\n\tCACHE_SYNC_INTERVAL: 3,\n\n\t/**\n * A storage for cache. Do not change by yourself.
\n * Format : _records[level_id][level_stage] -> {Number}.\n * @private\n * @default\n */\n\t_cache: {},\n\n\t_cacheUpdated: false,\n\n\t/**\n * Initializes use cache\n */\n\tinit: function()\n\t{\n\t\tpm.registerCustomEventListener(pm.USER_PROGRAM_UPDATED_STR, function ()\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode && !pm.tutorialUtils.isProcessingTutorial()\n && !world.runningLevel.isTutorial && !pm.networkUtils.isNetworkGame)\n\t\t\t\tthis.saveLevelProgram(world.runningLevel);\n\t\t}.bind(this), 1);\n\t},\n\n\t/**\n * Returns a path where to store database.\n * @param {String} [worldID]\n * @returns {string}\n * @private\n */\n\t_getPath: function(worldID)\n\t{\n\t\treturn pm.settings.getWorldDir(worldID) + \"/cache.json\";\n\t},\n\n\t_getLevelRobotGroupd: function(level)\n\t{\n\t\tvar groups = [];\n\n\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tif(groups.indexOf(level.robots[i].groupID) === -1)\n\t\t\t\tgroups.push(level.robots[i].groupID);\n\t\t}\n\n\t\treturn groups;\n\t},\n\n\t_loadLevelProgramCache: function(level, cache)\n\t{\n\t\tvar data = new pm.Class();\n\n\t\tdata = data.deserialize(cache, true);\n\n\t\tvar groups = this._getLevelRobotGroupd(level);\n\n\t\tfor (var i = 0; i < groups.length; ++i)\n\t\t{\n\t\t\tvar groupID = groups[i];\n\n\t\t\tif (data[groupID] !== undefined)\n\t\t\t\tlevel.programDataCache[groupID] = data[groupID];\n\t\t}\n\t},\n\n\t_loadWorldProgramCache: function(updatedLevels)\n\t{\n\t\tfor (var game = 0; game < world.getGameCount(); ++game)\n\t\t{\n\t\t\tfor (var level = 0; level < world.getLevelCount(game); ++level)\n\t\t\t{\n\t\t\t\tvar levelId = world.games[game].levels[level].id;\n\n\t\t\t\tif(updatedLevels && updatedLevels.indexOf(levelId) === -1)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif(!this._cache[levelId])\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvar levelProgramData = this._cache[levelId].programData;\n\n\t\t\t\tif (levelProgramData)\n\t\t\t\t\tthis._loadLevelProgramCache(world.games[game].levels[level], levelProgramData);\n\t\t\t}\n\t\t}\n\t},\n\n\t_scheduleSync: function()\n\t{\n\t\tcc.director.getScheduler().schedule(\n\t\t\tthis._syncCache, this, pm.userCache.CACHE_SYNC_INTERVAL,\n\t\t\tcc.REPEAT_FOREVER, 0, false, \"cache_sync\"\n\t\t);\n\t},\n\n\t/**\n * Loads cache from file syncs it with server if user logged in.\n * @param {String} worldID\n * @param {Function} callback\n */\n\tload: function(worldID, callback)\n\t{\n\t\tif(pm.fileUtils.isFileExist(this._getPath(worldID)))\n\t\t\tthis._cache = pm.fileUtils.readObject(this._getPath(worldID));\n\t\telse\n\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(worldID));\n\n\t\tthis._cacheUpdated = false;\n\t\tthis._scheduleSync();\n\n\t\tif(pm.settings.getAccessToken() === \"\")\n\t\t{\n\t\t\tthis._loadWorldProgramCache();\n\n\t\t\tcallback();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._cacheUpdated = true;\n\t\tcallback();\n\t\tthis._syncCache(0, worldID, callback, true);\n\t},\n\n\tforceSyncCache: function()\n\t{\n\t\tthis._cacheUpdated = true;\n\t\tthis._syncCache(0, pm.settings.getSelectedWorldID(), null, true);\n\t},\n\n\t_syncCache: function(dt, worldID, callback, updateAllLevels)\n\t{\n\t\tif(this._cacheUpdated)\n\t\t{\n\t\t\tthis._cacheUpdated = false;\n\n\t\t\tif(pm.settings.getAccessToken() !== \"\")\n\t\t\t{\n\t\t\t\tworldID = worldID ? worldID : pm.settings.getSelectedWorldID();\n\n\t\t\t\tpm.apiServerUtils.getLevelsCache(function (error, response)\n\t\t\t\t{\n\t\t\t\t\tvar updatedLevels = [];\n\n\t\t\t\t\tif (!error)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (response.cache)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (var id in response.cache)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!this._cache[id] ||\n (response.cache[id].levelVersion === this._cache[id].levelVersion &&\n response.cache[id].levelRevision === this._cache[id].levelRevision &&\n response.cache[id].revision > this._cache[id].revision)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis._cache[id] = response.cache[id];\n\t\t\t\t\t\t\t\t\tupdatedLevels.push(id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpm.apiServerUtils.updateLevelsCache(function (error, response)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t\t\tcc.error(error);\n\n\t\t\t\t\t\t}, worldID, this._cache);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcc.error(JSON.stringify(error));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (updateAllLevels || updatedLevels.length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._loadWorldProgramCache(updateAllLevels ? null : updatedLevels);\n\t\t\t\t\t\tthis._save(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (callback)\n\t\t\t\t\t\tcallback();\n\n\t\t\t\t}.bind(this), worldID);\n\t\t\t}\n\t\t}\n\t},\n\t/**\n * Saves cache and sync it with server if user logged in.\n */\n\t_save: function(syncCache, worldID)\n\t{\n\t\tif(syncCache === undefined)\n\t\t\tsyncCache = true;\n\n\t\tpm.fileUtils.saveObject(this._getPath(worldID), this._cache);\n\n\t\tif(syncCache)\n\t\t\tthis._cacheUpdated = syncCache;\n\t},\n\n\t/**\n * clear cache data for level\n * @param {String} id Id of level\n */\n\n\tclearLevelData: function(id)\n\t{\n\t\tif(id !== \"\" && this._cache[id])\n\t\t{\n\t\t\tdelete this._cache[id].programData;\n\t\t\tdelete this._cache[id].score;\n\n\t\t\tthis._incLevelCacheRevision(id);\n\t\t}\n\n\t\tthis._save();\n\t},\n\n\t/**\n * Removes useless data from records.\n */\n\tclearUnusedData: function(worldID)\n\t{\n\t\tfor(var id in this._cache)\n\t\t{\n\t\t\tvar found = false;\n\n\t\t\tfor(var i = 0; i < world.games.length; ++i)\n\t\t\t{\n\t\t\t\tfor(var j = 0; j < world.games[i].levels.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar level = world.games[i].levels[j];\n\n\t\t\t\t\tif(level.id === id &&\n level.version === this._cache[id].levelVersion &&\n level.revision === this._cache[id].levelRevision\n\t\t\t\t\t)\n\t\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!found)\n\t\t\t\tdelete this._cache[id];\n\t\t}\n\n\t\tthis._save(true, worldID);\n\t},\n\t/**\n * Cleanup cache;\n */\n\tcleanup: function()\n\t{\n\t\tif(pm.fileUtils.isFileExist(this._getPath()))\n\t\t{\n\t\t\tfor(var i = 0; i < world.games.length; ++i)\n\t\t\t{\n\t\t\t\tfor(var j = 0; j < world.games[i].levels.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar level = world.games[i].levels[j];\n\n\t\t\t\t\tlevel.programDataCache = new pm.data.MapClass();\n\n\t\t\t\t\tif(this._cache[level.id])\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete this._cache[level.id].programData;\n\t\t\t\t\t\tdelete this._cache[level.id].score;\n\n\t\t\t\t\t\tthis._incLevelCacheRevision(level.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._save();\n\t\t}\n\t},\n\t/**\n\t * Totally removes cache\n\t */\n\tremove: function()\n\t{\n\t\tif(pm.fileUtils.isFileExist(this._getPath()))\n\t\t\tpm.fileUtils.removeFile(this._getPath());\n\n\t\tthis._cache = {};\n\n\t\tfor(var i = 0; i < world.games.length; ++i)\n\t\t{\n\t\t\tfor(var j = 0; j < world.games[i].levels.length; ++j)\n\t\t\t{\n\t\t\t\tvar level = world.games[i].levels[j];\n\n\t\t\t\tlevel.programDataCache = new pm.data.MapClass();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n * Sets score for level by map index.\n * @param {pm.AbstractLevel} level A level for which to save score\n * @param {Number} stage A map index of score to save.\n * @param {Number} score Score value.\n */\n\tsetScore: function(level, stage, score)\n\t{\n\t\tif(level.id === \"\") // do no cache result for levels not synced with server\n\t\t\treturn;\n\n\t\tif(!this._cache[level.id])\n\t\t{\n\t\t\tthis._cache[level.id] = {\n\t\t\t\tlevelVersion: level.version,\n\t\t\t\tlevelRevision: level.revision\n\t\t\t};\n\t\t}\n\n\t\tthis._incLevelCacheRevision(level.id);\n\n\t\tif(!this._cache[level.id].score)\n\t\t\tthis._cache[level.id].score = {};\n\n\t\tthis._cache[level.id].score[stage] = score;\n\n\t\tpm.settings.updateModifyDate();\n\t\tthis._save();\n\t},\n\n\t_incLevelCacheRevision: function(id)\n\t{\n\t\tif (this._cache[id].revision)\n\t\t\t++this._cache[id].revision;\n\t\telse\n\t\t\tthis._cache[id].revision = 0;\n\t},\n\n\t/**\n * Save levels' user program\n * @param {pm.AbstractLevel} level A level for which to save program\n */\n\tsaveLevelProgram: function(level)\n\t{\n\t\tif (level.id === \"\") // do no cache result for levels not synced with server\n\t\t\treturn;\n\n\t\tif (!this._cache[level.id])\n\t\t{\n\t\t\tthis._cache[level.id] = {\n\t\t\t\tlevelVersion: level.version,\n\t\t\t\tlevelRevision: level.revision\n\t\t\t};\n\t\t}\n\n\t\tthis._incLevelCacheRevision(level.id);\n\n\t\tif (!this._cache[level.id].programData)\n\t\t\tthis._cache[level.id].programData = new pm.data.MapClass();\n\n\t\tvar programData = this._cache[level.id].programData;\n\n\t\tvar groups = this._getLevelRobotGroupd(level);\n\n\t\tfor (var i = 0; i < groups.length; ++i)\n\t\t{\n\t\t\tvar groupID = groups[i];\n\t\t\tprogramData[groupID] = level.programDataCache[groupID];\n\t\t}\n\n\t\tpm.settings.updateModifyDate();\n\t\tthis._save();\n\t},\n\n\t_clearCurrentLevelScore: function()\n\t{\n\t\tvar level = world.runningLevel;\n\n\t\tif(!level || !(level instanceof pm.AbstractLevel))\n\t\t\treturn;\n\n\t\tif(level.id === \"\") // do no check result for levels not synced with server\n\t\t\treturn;\n\n\t\tif(this.getCompleteMapCount(level) > 0)\n\t\t{\n\t\t\tdelete this._cache[level.id];\n\t\t\tthis._save();\n\t\t}\n\t},\n\n\t/**\n * Returns completed map count\n * @param {pm.AbstractLevel} level A level for getting completed map count\n * @returns {Number}\n */\n\tgetCompleteMapCount: function(level)\n\t{\n\t\tif(!this._cache[level.id] || !this._cache[level.id].score)\n\t\t\treturn 0;\n\n\t\treturn Object.keys(this._cache[level.id].score).length;\n\t},\n\t/** Returns score for level's concrete map\n * @param {pm.AbstractLevel} level A level for getting score\n * @param {Number} stage Level's map index\n * @returns {Number}\n */\n\tgetScore: function(level, stage)\n\t{\n\t\tif(!this._cache[level.id] || !this._cache[level.id].score ||\n this._cache[level.id].score[stage] === undefined || this._cache[level.id].score[stage] === null)\n\t\t\treturn -1;\n\n\t\treturn this._cache[level.id].score[stage];\n\t}\n};\n","/**\n * This class contains functions to work with world edit log\n * @namespace\n */\npm.WorldEditLog = cc.Class.extend({\n\n\t_editLog: {},\n\t_worldID: \"\",\n\n\t/**\n * Loads edit log from file\n * @param {String} worldID\n */\n\tctor: function(worldID)\n\t{\n\t\tthis._worldID = worldID;\n\t\tthis._editLog = {};\n\n\t\tif(pm.fileUtils.isFileExist(pm.settings.getWorldEditLogPath(worldID)))\n\t\t\tthis._editLog = pm.fileUtils.readObject(pm.settings.getWorldEditLogPath(worldID));\n\t\telse\n\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(worldID));\n\t},\n\n\tclear: function()\n\t{\n\t\tthis._editLog = {};\n\t\tpm.fileUtils.removeFile(pm.settings.getWorldEditLogPath(this._worldID));\n\t},\n\n\t/**\n * Returns if edit log is empty\n * @returns {Boolean}\n */\n\tisEmpty: function()\n\t{\n\t\treturn Object.keys(this._editLog).length !== 0;\n\t},\n\n\t/**\n * Saves edit log.\n */\n\t_save: function()\n\t{\n\t\tpm.fileUtils.saveObject(pm.settings.getWorldEditLogPath(this._worldID), this._editLog);\n\t},\n\n\tsetUpdatedFlag: function()\n\t{\n\t\tthis._editLog.updated = true;\n\t\tthis._save();\n\t},\n\n\tisUpdated: function()\n\t{\n\t\treturn this._editLog.updated;\n\t},\n\n\tisGameUpdated: function(id)\n\t{\n\t\treturn this._editLog.games !== undefined && this._editLog.games[id] !== undefined;\n\t},\n\n\tsetUpdated: function()\n\t{\n\t\tthis._editLog.updated = true;\n\t\tthis._save();\n\t},\n\n\tsetGameDeleted: function(id)\n\t{\n\t\tif(this._editLog.games && this._editLog.games[id])\n\t\t\tdelete this._editLog.games[id];\n\n\t\tif(!this._editLog.deletedGames)\n\t\t\tthis._editLog.deletedGames = [];\n\n\t\tthis._editLog.deletedGames.push(id);\n\n\t\tthis._save();\n\t},\n\n\tisGameDeleted: function(id)\n\t{\n\t\treturn this._editLog.deletedGames && this._editLog.deletedGames.indexOf(id) !== -1;\n\t},\n\n\tsetGameRenamed: function(id)\n\t{\n\t\tif(!this._editLog.games)\n\t\t\tthis._editLog.games = {};\n\n\t\tif(!this._editLog.games[id])\n\t\t{\n\t\t\tthis._editLog.games[id] = {\n\t\t\t\trenamed: false,\n\t\t\t\treordered: false\n\t\t\t};\n\t\t}\n\n\t\tthis._editLog.games[id].renamed = true;\n\n\t\tthis._save();\n\t},\n\n\tisGameRenamed: function(id)\n\t{\n\t\tif(!this._editLog.games || !this._editLog.games[id])\n\t\t\treturn false;\n\n\t\treturn this._editLog.games[id].renamed;\n\t},\n\n\tsetGameReordered: function(id)\n\t{\n\t\tif(!this._editLog.games)\n\t\t\tthis._editLog.games = {};\n\n\t\tif(!this._editLog.games[id])\n\t\t{\n\t\t\tthis._editLog.games[id] = {\n\t\t\t\trenamed: false,\n\t\t\t\treordered: false\n\t\t\t};\n\t\t}\n\n\t\tthis._editLog.games[id].reordered = true;\n\n\t\tthis._save();\n\t},\n\n\tisGameReordered: function(id)\n\t{\n\t\tif(!this._editLog.games || !this._editLog.games[id])\n\t\t\treturn false;\n\n\t\treturn this._editLog.games[id].reordered;\n\t},\n\n\tsetLevelDeleted: function(id)\n\t{\n\t\tif(this._editLog.levels && this._editLog.levels[id])\n\t\t\tdelete this._editLog.levels[id];\n\n\t\tif(!this._editLog.deletedLevels)\n\t\t\tthis._editLog.deletedLevels = [];\n\n\t\tthis._editLog.deletedLevels.push(id);\n\n\t\tthis._save();\n\t},\n\n\tisLevelDeleted: function(id)\n\t{\n\t\treturn this._editLog.deletedLevels && this._editLog.deletedLevels.indexOf(id) !== -1;\n\t},\n\n\tsetLevelUpdated: function(id)\n\t{\n\t\tif(!this._editLog.levels)\n\t\t\tthis._editLog.levels = {};\n\n\t\tif(!this._editLog.levels[id])\n\t\t{\n\t\t\tthis._editLog.levels[id] = {\n\t\t\t\treordered: false,\n\t\t\t\tupdated: false\n\t\t\t};\n\t\t}\n\n\t\tthis._editLog.levels[id].updated = true;\n\n\t\tthis._save();\n\t},\n\n\tisLevelUpdated: function(id)\n\t{\n\t\tif(!this._editLog.levels || !this._editLog.levels[id])\n\t\t\treturn false;\n\n\t\treturn this._editLog.levels[id].updated;\n\t},\n\n\tsetLevelReordered: function(id)\n\t{\n\t\tif(!this._editLog.levels)\n\t\t\tthis._editLog.levels = {};\n\n\t\tif(!this._editLog.levels[id])\n\t\t{\n\t\t\tthis._editLog.levels[id] = {\n\t\t\t\treordered: false,\n\t\t\t\tupdated: false\n\t\t\t};\n\t\t}\n\n\t\tthis._editLog.levels[id].updated = true;\n\t\tthis._editLog.levels[id].reordered = true;\n\n\t\tthis._save();\n\t},\n\n\tisLevelReordered: function(id)\n\t{\n\t\tif(!this._editLog.levels || !this._editLog.levels[id])\n\t\t\treturn false;\n\n\t\treturn this._editLog.levels[id].reordered;\n\t},\n\n\tgetChangedGames: function()\n\t{\n\t\treturn this._editLog.games;\n\t},\n\n\tgetChangedLevels: function()\n\t{\n\t\treturn this._editLog.levels;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 11.11.14.\n */\n/**\n * Global world reference.\n * @type {pm.data.World}\n */\nvar world = {};\n\n/**\n *\n * @enum {Number}\n */\nvar GameType = {\n\tLocal: 0,\n\tNet: 1\n};\n\n/**\n * Class that contains levels array.\n * @class\n * @extends pm.Class\n * @constructor\n * @param {String} [name] Name of game.\n */\npm.data.Game = pm.Class.extend(/** @lends pm.data.Game# */{\n\n\tctor: function(name, order)\n\t{\n\t\tthis._super();\n\n\t\tif(name)\n\t\t\tthis.name = name;\n\n\t\tif(order !== undefined)\n\t\t\tthis.order = order;\n\t},\n\n\ttypeName: \"Game\",\n\t/**\n * id of game.\n * @type {String}\n */\n\tid: \"\",\n\t/**\n * Name of game.\n * @type {String}\n */\n\tname: \"\",\n\t/**\n * Order of game.\n * @type {Number}\n */\n\torder: 0,\n\t/**\n * Array of levels.\n * @type {Array}\n */\n\tlevels: []\n});\n\n/**\n * @class This class represents a \"data\"-class which contains all data of world.\n * @extends pm.Class\n */\npm.data.World = pm.Class.extend(/** @lends pm.data.World# */{\n\ttypeName: \"World\",\n\t/**\n * id of world.\n * @type {String}\n */\n\tid: \"\",\n\t/**\n * Name of world.\n * @type {String}\n */\n\tname: \"\",\n\t/**\n * Description of world.\n * @type {String}\n */\n\tdescription: \"\",\n\t/**\n * Publicity of world.\n * @type {Boolean}\n */\n\tpublic: false,\n\t/**\n\t * World is linked with Mirera\n\t * @type {Boolean}\n\t */\n\tlinkedWithMirera: false,\n\t/**\n * Date of world creation.\n * @type {String}\n */\n\tcreateDate: (new Date()).toISOString(),\n\t/**\n * Array of games.\n * @type {Array}\n */\n\tgames: [],\n\t/**\n * Current running level.\n * @type {pm.AbstractLevel}\n */\n\trunningLevel: {},\n\t/**\n * @private\n */\n\t_clipboard: {},\n\n\t_editLog: null,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_clipboard\", \"runningLevel\", \"_editLog\");\n\n\t\tthis._super();\n\t},\n\n\t/**\n * Load level and prepares it to game.\n * @function\n * @param {Boolean} preview Is a preview loading.\n * @param {Number} game Game index.\n * @param {Number} level Level index.\n * @param {Number} [robotIndex] Index of robot to use in level\n * @returns {pm.AbstractLevel}\n */\n\tloadLevel: function(preview, game, level, robotIndex)\n\t{\n\t\tvar levelObject = this.games[game].levels[level];\n\n\t\tif(!levelObject)\n\t\t\treturn null;\n\n\t\tlevelObject.load(preview, robotIndex);\n\n\t\tthis.runningLevel = levelObject;\n\n\t\treturn levelObject;\n\t},\n\n\t/**\n * Load world from file.\n * @function\n * @param {String} worldID\n * @param {Object} [worldObject]\n * @param {Function} [callback] Callback on world loaded with cache. Not called in CORE_BUILD.\n */\n\tload: function(worldID, worldObject, callback)\n\t{\n\t\tthis.games = [];\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.deserialize(worldObject ? worldObject : pm.settings.getWorldPath(worldID));\n\n\t\t\tpm.userCache.load(worldID, callback);\n\n\t\t\tthis._editLog = new pm.WorldEditLog(worldID);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.deserialize(worldID);\n\t\t}\n\t},\n\n\t/**\n * Save world to path.\n * @function\n * @param {String} [path]\n */\n\tsave: function(path)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.serialize((path === undefined) ? pm.settings.getWorldPath() : path);\n\t},\n\n\t/**\n * Renames world\n * @param {String} name A new name\n */\n\trename: function(name)\n\t{\n\t\tthis.name = name;\n\n\t\tthis._editLog.setUpdatedFlag();\n\t\tthis.save();\n\t},\n\n\t/**\n * Change description of world\n * @param {String} name A new description\n */\n\tchangeDescription: function(description)\n\t{\n\t\tthis.description = description;\n\n\t\tthis._editLog.setUpdatedFlag();\n\t\tthis.save();\n\t},\n\n\t/**\n * Change description of world\n * @param {Boolean} flag\n */\n\tchangePublicity: function(flag)\n\t{\n\t\tthis.public = flag;\n\n\t\tthis._editLog.setUpdatedFlag();\n\t\tthis.save();\n\t},\n\n\t/**\n * Returns edit log\n * @function\n * @returns {Array}\n */\n\tgetEditLog: function()\n\t{\n\t\treturn this._editLog;\n\t},\n\n\t/**\n * Returns games\n * @function\n * @returns {Array}\n */\n\tgetGames: function()\n\t{\n\t\treturn this.games;\n\t},\n\n\t/**\n * @function\n * @returns {Number}\n */\n\tgetGameCount: function() { return this.games.length; },\n\t/**\n * @function\n * @param {Number} game Game Index\n * @returns {Number}\n */\n\tgetLevelCount: function(game) { return this.games[game].levels.length; },\n\t/**\n * @function\n * @param {Number} game Game Index\n * @returns {string}\n */\n\tgetGameName: function(game) { return this.games[game].name; },\n\t/**\n * @function\n * @param {Number} game Game Index\n * @param {Number} level Level Index\n * @returns {string}\n */\n\tgetLevelName: function(game, level) { return this.games[game].levels[level].name; },\n\n\t/**\n * Removes level.\n * @function\n * @param {Number} game Game Index\n * @param {Number} level Level Index\n */\n\tremoveLevel: function(game, level)\n\t{\n\t\tif(this.games[game].levels[level].id !== \"\")\n\t\t\tthis._editLog.setLevelDeleted(this.games[game].levels[level].id);\n\n\t\tthis.games[game].levels.splice(level, 1);\n\n\t\tfor(var i = level; i < this.games[game].levels.length; ++i)\n\t\t{\n\t\t\t--this.games[game].levels[i].order;\n\t\t\tthis.setLevelReordered(game, i);\n\t\t}\n\n\t\tthis.save();\n\t},\n\n\t/**\n * Sets level updated flag for edit log\n */\n\tsetLevelUpdated: function(game, level)\n\t{\n\t\tif(this.games[game].levels[level].id !== \"\")\n\t\t\tthis._editLog.setLevelUpdated(this.games[game].levels[level].id);\n\t},\n\n\tsetLevelReordered: function(game, level)\n\t{\n\t\tif(this.games[game].levels[level].id !== \"\")\n\t\t\tthis._editLog.setLevelReordered(this.games[game].levels[level].id);\n\t},\n\n\t/**\n * @function\n * @param {Number} game Game Index\n * @param {Number} level1 Level Index\n * @param {Number} level2 Level Index\n */\n\tswapLevels: function(game, level1, level2)\n\t{\n\t\tthis.setLevelReordered(game, level1);\n\t\tthis.setLevelReordered(game, level2);\n\n\t\tvar tmp = this.games[game].levels[level1];\n\t\tvar tmpOrder = this.games[game].levels[level1].order;\n\n\t\tthis.games[game].levels[level1].order = this.games[game].levels[level2].order;\n\t\tthis.games[game].levels[level1] = this.games[game].levels[level2];\n\n\t\tthis.games[game].levels[level2].order = tmpOrder;\n\t\tthis.games[game].levels[level2] = tmp;\n\n\t\tthis.save();\n\t},\n\n\t/**\n * @function\n * @param {Number} game Game Index\n * @param {String} levelType\n */\n\taddLevel: function(game, levelType)\n\t{\n\t\tthis._editLog.setUpdated();\n\n\t\tvar level = pm.moduleUtils.generateEmptyLevel(levelType);\n\t\tlevel.version = pm.appUtils.getSupportedLevelFormatVersion();\n\t\tlevel.order = this.games[game].levels.length;\n\n\t\tthis.games[game].levels.push(level);\n\t\tthis.save();\n\t},\n\n\t/**\n * Renames game\n * @function\n * @param {Number} game Game Index\n */\n\trenameGame: function(game, name)\n\t{\n\t\tif(this.games[game].name !== name)\n\t\t{\n\t\t\tif (this.games[game].id !== \"\")\n\t\t\t\tthis._editLog.setGameRenamed(this.games[game].id);\n\n\t\t\tthis.games[game].name = name;\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\t/**\n * @function\n * @param {Number} game Game Index\n */\n\tremoveGame: function(game)\n\t{\n\t\tif(this.games[game].id !== \"\")\n\t\t\tthis._editLog.setGameDeleted(this.games[game].id);\n\n\t\tthis.games.splice(game, 1);\n\n\t\tfor(var i = game; i < this.games.length; ++i)\n\t\t{\n\t\t\t--this.games[i].order;\n\t\t\tthis._editLog.setGameReordered(this.games[i].id);\n\t\t}\n\n\t\tthis.save();\n\t},\n\n\t/**\n * @function\n * @param {Number} game1 Game Index\n * @param {Number} game2 Game Index\n */\n\tswapGames: function(game1, game2)\n\t{\n\t\tif(this.games[game1].id !== \"\")\n\t\t\tthis._editLog.setGameReordered(this.games[game1].id);\n\n\t\tif(this.games[game2].id !== \"\")\n\t\t\tthis._editLog.setGameReordered(this.games[game2].id);\n\n\t\tvar tmp = this.games[game1];\n\t\tvar tmpOrder = this.games[game1].order;\n\n\t\tthis.games[game1].order = this.games[game2].order;\n\t\tthis.games[game1] = this.games[game2];\n\n\t\tthis.games[game2].order = tmpOrder;\n\t\tthis.games[game2] = tmp;\n\n\t\tthis.save();\n\t},\n\n\t/**\n * @function\n */\n\taddGame: function()\n\t{\n\t\tthis._editLog.setUpdated();\n\n\t\tvar game = new pm.data.Game(LocalizedString(\"NewGame\"));\n\t\tgame.order = this.games.length;\n\n\t\tthis.games.push(game);\n\t\tthis.save();\n\t},\n\n\t/**\n * @function\n * @param {Number} game Game Index\n * @param {Number} level Level Index\n */\n\tcopy: function(game, level)\n\t{\n\t\tif (level === undefined)\n\t\t\tthis._clipboard = this.games[game];\n\t\telse\n\t\t\tthis._clipboard = this.games[game].levels[level];\n\t},\n\n\t/**\n * @function\n * @param {Number} game Game Index\n\t * @param {Number} index Insertion Place Index\n */\n\tpaste: function(game, index)\n\t{\n\t\tif (this._clipboard instanceof pm.AbstractLevel && game !== -1)\n\t\t{\n\t\t\tif(index === undefined)\n\t\t\t\tindex = this.games[game].levels.length;\n\n\t\t\tvar clone = cloneClassObject(this._clipboard);\n\t\t\tclone.id = \"\";\n\t\t\tclone.revision = -1;\n\t\t\tclone.order = index;\n\n\t\t\tthis._editLog.setUpdated();\n\t\t\tthis.games[game].levels.splice(index, 0, clone);\n\n\t\t\tfor (var i = index+1; i < this.games[game].levels.length; ++i)\n\t\t\t{\n\t\t\t\t++this.games[game].levels[i].order;\n\n\t\t\t\tthis.setLevelReordered(game, i);\n\t\t\t}\n\n\t\t\tthis.save();\n\t\t}\n\t\telse if (this._clipboard instanceof pm.data.Game)\n\t\t{\n\t\t\tif(index === undefined)\n\t\t\t\tindex = this.games.length;\n\n\t\t\tvar clone = cloneClassObject(this._clipboard);\n\t\t\tclone.id = \"\";\n\t\t\tclone.order = index;\n\n\t\t\tfor(var i = 0; i < clone.levels.length; ++i)\n\t\t\t{\n\t\t\t\tclone.levels[i].id = \"\";\n\t\t\t\tclone.levels[i].revision = -1;\n\t\t\t\tclone.levels[i].order = i;\n\t\t\t}\n\n\t\t\tthis._editLog.setUpdated();\n\t\t\tthis.games.splice(index, 0, clone);\n\n\t\t\tfor (var i = index+1; i < this.games.length; ++i)\n\t\t\t{\n\t\t\t\t++this.games[i].order;\n\n\t\t\t\tif(this.games[i].id !== \"\")\n\t\t\t\t\tthis._editLog.setGameReordered(this.games[i].id);\n\t\t\t}\n\n\t\t\tthis.save();\n\t\t}\n\t},\n\n\tgetGameById: function(id)\n\t{\n\t\tfor (var i = 0; i < this.games.length; ++i)\n\t\t{\n\t\t\tif (this.games[i].id === id)\n\t\t\t\treturn this.games[i];\n\t\t}\n\t},\n\n\tgetLevelById: function(id)\n\t{\n\t\tfor (var i = 0; i < this.games.length; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this.games[i].levels.length; ++j)\n\t\t\t{\n\t\t\t\tif (this.games[i].levels[j].id === id)\n\t\t\t\t\treturn this.games[i].levels[j];\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 23.08.18.\n */\n\n/**\n * @class Helper class for loading world list and separating it by groups\n * @extends cc.Class\n */\nvar WorldList = cc.Class.extend(/** @lends WorldList# */{\n\n\t_selectGraph: {},\n\t_worldList: {},\n\n\t_loadCallback: null,\n\t_loadTarget: null,\n\t_loadLocalWorlds: null,\n\n\tctor: function(callback, target, loadLocalWorlds)\n\t{\n\t\tthis._loadCallback = callback;\n\t\tthis._loadTarget = target;\n\n\t\tif(loadLocalWorlds === undefined)\n\t\t\tloadLocalWorlds = true;\n\n\t\tthis._loadLocalWorlds = loadLocalWorlds;\n\t},\n\n\tgetSelectGraph: function()\n\t{\n\t\treturn this._selectGraph;\n\t},\n\n\tloadList: function()\n\t{\n\t\tthis._worldList = {};\n\t\tthis._selectGraph = {};\n\n\t\tthis._selectedGroupID = pm.settings.getSelectedUserGroupID();\n\t\tthis._selectedWorldID = pm.settings.getSelectedWorldID();\n\n\t\tvar tasks =[];\n\n\t\tif (!pm.appConfig.useDefaultWorlds)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t{\n\t\t\t\ttasks.push({\n\t\t\t\t\tapiCall: pm.apiServerUtils.getPublicWorlds,\n\t\t\t\t\ttype: WorldList.WORLD_TYPE.PUBLIC\n\t\t\t\t});\n\n\t\t\t\ttasks.push({\n\t\t\t\t\tapiCall: pm.apiServerUtils.getPurchasedWorlds,\n\t\t\t\t\ttype: WorldList.WORLD_TYPE.PURCHASED\n\t\t\t\t});\n\n\t\t\t\tif (pm.settings.userLoggedIn)\n\t\t\t\t{\n\t\t\t\t\ttasks.push({\n\t\t\t\t\t\tapiCall: pm.apiServerUtils.getSharedWorlds,\n\t\t\t\t\t\ttype: WorldList.WORLD_TYPE.SHARED\n\t\t\t\t\t});\n\t\t\t\t\ttasks.push({\n\t\t\t\t\t\tapiCall: pm.apiServerUtils.getGrantedWorlds,\n\t\t\t\t\t\ttype: WorldList.WORLD_TYPE.GRANTED\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttasks.push({\n\t\t\t\t\tapiCall: pm.apiServerUtils.getUserWorldList,\n\t\t\t\t\ttype: WorldList.WORLD_TYPE.OWN\n\t\t\t\t});\n\t\t\t\ttasks.push({\n\t\t\t\t\tapiCall: pm.apiServerUtils.getSharedWorlds,\n\t\t\t\t\ttype: WorldList.WORLD_TYPE.SHARED\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcc.async.map(tasks, {\n\t\t\t\titerator: this._loadWorldList,\n\t\t\t\titeratorTarget: this,\n\t\t\t\tcb: this._onLoadWorlds,\n\t\t\t\tcbTarget: this\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._loadDefaultWorlds();\n\t\t}\n\t},\n\n\t_loadDefaultWorlds: function()\n\t{\n\t\tthis._selectGraph[WorldList.PUBLIC_GROUP.id] = {\n\t\t\tname: WorldList.PUBLIC_GROUP.name,\n\t\t\tworlds: []\n\t\t};\n\n\t\tvar worlds = this._selectGraph[WorldList.PUBLIC_GROUP.id].worlds;\n\n\t\tvar foundWorld = false;\n\n\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\tfor(var i = 0 ; i < builtinWorlds.length; ++i)\n\t\t{\n\t\t\tif(builtinWorlds[i].id === this._selectedWorldID)\n\t\t\t\tfoundWorld = true;\n\n\t\t\tworlds.push(builtinWorlds[i]);\n\n\t\t\tthis._worldList[builtinWorlds[i].id] = {\n\t\t\t\ttype: WorldList.WORLD_TYPE.PUBLIC,\n\t\t\t\tname: builtinWorlds[i].name,\n\t\t\t\tdescription: builtinWorlds[i].description,\n\t\t\t\towner: builtinWorlds[i].owner\n\t\t\t};\n\t\t}\n\n\t\tif(!foundWorld)\n\t\t{\n\t\t\tthis._selectedWorldID = builtinWorlds[0].id;\n\t\t\tpm.settings.setSelectedWorldID(this._selectedWorldID);\n\t\t}\n\n\t\tif(this._loadCallback)\n\t\t\tthis._loadCallback.call(this._loadTarget);\n\t},\n\n\t_onLoadWorlds: function(errors, worldLists)\n\t{\n\t\tif(errors || ! worldLists)\n\t\t{\n\t\t\tfor(var i = 0 ; i < errors.length; ++i)\n\t\t\t{\n\t\t\t\tif(errors[i])\n\t\t\t\t\tcc.log(\"Error loading world list: \" + errors[i].text);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = 0; i < worldLists.length; ++i)\n\t\t\t{\n\t\t\t\tfor (var w in worldLists[i])\n\t\t\t\t\tthis._worldList[w] = worldLists[i][w];\n\t\t\t}\n\t\t}\n\n\t\tthis._matchLocalAvailableWorlds();\n\n\t\tthis._createSelectGraph();\n\n\t\tif(this._loadCallback)\n\t\t\tthis._loadCallback.call(this._loadTarget);\n\t},\n\n\t_loadWorldList: function(params, index, cb)\n\t{\n\t\tparams.apiCall.call(pm.apiServerUtils, function(error, response)\n\t\t{\n\t\t\tvar worldList = {};\n\n\t\t\tif(!error && response)\n\t\t\t{\n\t\t\t\tfor(var i = 0; i < response.worlds.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tworldList[response.worlds[i].id] = response.worlds[i];\n\t\t\t\t\tworldList[response.worlds[i].id].type = params.type;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcb(error, worldList);\n\t\t});\n\t},\n\n\t_matchLocalAvailableWorlds: function()\n\t{\n\t\tvar availableWorlds = pm.settings.getAvailableWorlds();\n\n\t\tfor(var worldID in this._worldList)\n\t\t{\n\t\t\tif(availableWorlds[worldID])\n\t\t\t\tpm.settings.setWorldMetaData(worldID, this._worldList[worldID]);\n\t\t}\n\n\t\tif(this._loadLocalWorlds)\n\t\t{\n\t\t\tfor (var worldID in availableWorlds)\n\t\t\t{\n\t\t\t\tif (!this._worldList[worldID])\n\t\t\t\t{\n\t\t\t\t\tthis._worldList[worldID] = availableWorlds[worldID];\n\t\t\t\t\tthis._worldList[worldID].type = WorldList.WORLD_TYPE.PUBLIC;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_createSelectGraph: function()\n\t{\n\t\tfor(var worldID in this._worldList)\n\t\t{\n\t\t\tif(!pm.settings.isEditorMode && worldID === pm.appConfig.demoWorldID)\n\t\t\t\tcontinue;\n\n\t\t\tvar world = this._worldList[worldID];\n\n\t\t\tif(world.type !== WorldList.WORLD_TYPE.GRANTED)\n\t\t\t{\n\t\t\t\tvar groupData = null;\n\n\t\t\t\tswitch(world.type)\n\t\t\t\t{\n\t\t\t\t\tcase WorldList.WORLD_TYPE.PUBLIC:\n\t\t\t\t\t\tgroupData = WorldList.PUBLIC_GROUP;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase WorldList.WORLD_TYPE.OWN:\n\t\t\t\t\t\tgroupData = WorldList.OWN_GROUP;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase WorldList.WORLD_TYPE.PURCHASED:\n\t\t\t\t\t\tgroupData = WorldList.PURCHASED_GROUP;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase WorldList.WORLD_TYPE.SHARED:\n\t\t\t\t\t\tgroupData = WorldList.SHARED_GROUP;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif(groupData)\n\t\t\t\t{\n\t\t\t\t\tif (!this._selectGraph[groupData.id])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._selectGraph[groupData.id] = {\n\t\t\t\t\t\t\tname: LocalizedString(groupData.name),\n\t\t\t\t\t\t\tworlds: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tvar group = this._selectGraph[groupData.id];\n\t\t\t\t\tgroup.worlds.push(world);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor(var i = 0 ; i < world.groups.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar groupID = world.groups[i].id;\n\n\t\t\t\t\tif(!this._selectGraph[groupID])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._selectGraph[groupID] = {\n\t\t\t\t\t\t\tname: world.groups[i].name,\n\t\t\t\t\t\t\tworlds: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._selectGraph[groupID].worlds.push(world);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(var groupID in this._selectGraph)\n\t\t{\n\t\t\tthis._selectGraph[groupID].worlds.sort(function(a, b)\n\t\t\t{\n\t\t\t\treturn new Date(a.createDate) - new Date(b.createDate);\n\t\t\t});\n\t\t}\n\t}\n});\n\n/**\n * Public group data\n * @const\n * @type {{id:String, name:String}}\n * @default\n */\nWorldList.PUBLIC_GROUP = {id: \"public\", name: \"PublicWorldsGroup\"};\n\n/**\n * Own group data\n * @const\n * @type {{id:String, name:String}}\n * @default\n */\nWorldList.OWN_GROUP = {id: \"own\", name: \"OwnWorldsGroup\"};\n\n/**\n * Purchased group data\n * @const\n * @type {{id:String, name:String}}\n * @default\n */\nWorldList.PURCHASED_GROUP = {id: \"purchased\", name: \"PurchasedWorldsGroup\"};\n/**\n * Shared group data\n * @const\n * @type {{id:String, name:String}}\n * @default\n */\nWorldList.SHARED_GROUP = {id: \"purchased\", name: \"SharedWorldsGroup\"};\n\n/**\n * World type to select\n * @enum {String}\n */\nWorldList.WORLD_TYPE = {\n\tPUBLIC: \"public\",\n\tOWN: \"own\",\n\tGRANTED: \"granted\",\n\tPURCHASED: \"purchased\",\n\tSHARED: \"shared\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 23.07.15.\n */\n\n/**\n * Constant for a AppDelegate::applicationDidEnterBackground\n * @const\n * @default\n * @type {String}\n */\npm.GAME_ON_HIDE_EVENT = \"game_on_hide\";\n/**\n * Constant for a AppDelegate::applicationWillEnterForeground\n * @const\n * @default\n * @type {String}\n */\npm.GAME_ON_SHOW_EVENT = \"game_on_show\";\n\n/**\n * Constant for a robot win event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.ROBOT_WIN_EVENT_STR = \"robot_win\";\n\n/**\n * Constant for a robot loose event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.ROBOT_LOOSE_EVENT_STR = \"robot_loose\";\n\n/**\n * Constant for a robot failure event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.ROBOT_FAILURE_EVENT_STR = \"robot_failure\";\n\n/**\n * Constant for a robot step count changed event.\n * @const\n * @default\n * @type {String}\n */\npm.ROBOT_STEP_COUNT_EVENT_STR = \"robot_step_count\";\n\n/**\n * Constant for a highlight method button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.HIGHLIGHT_METHOD_EVENT_STR = \"highlight_method\";\n\n/**\n * Constant for a highlight method button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.HIGHLIGHT_CONDITION_EVENT_STR = \"highlight_condition\";\n\n/**\n * Constant for a highlight points in repeater button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.HIGHLIGHT_POINT_IN_REP_EVENT = \"highlight_rep\";\n\n/**\n * Constant for removing highlighted points in repeater button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.RELOAD_REPEATERS_EVENT_STR = \"reload_repeaters\";\n\n/**\n * Constant for a remove highlight method button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\n\npm.REM_LAST_HIGHLIGHT_EVENT_STR = \"rem_block_highlight\";\n\n/**\n * Constant for highlight as broken method button of {@link ProgramLayer} event by {@link pm.RobotManager}\n * @const\n * @default\n * @type {String}\n */\npm.HIGHLIGHT_BROKEN_METHOD_EVENT_STR = \"highlight_broken_method\";\n\n/**\n * Constant for a touch event on robots sprite.\n * @const\n * @default\n * @type {String}\n */\npm.ROBOT_TOUCH_EVENT_STR = \"robot_touch_event\";\n\n/**\n * Constant for start program.\n * @const\n * @default\n * @type {String}\n */\npm.PROGRAM_START_EVENT_STR = \"program_start_event\";\n\n/**\n * Constant for start program on all maps event.\n * @const\n * @default\n * @type {String}\n */\npm.PROGRAM_TESL_ALL_MAPS_EVENT_STR = \"program_test_all_maps_event\";\n\n/**\n * Constant for test current robot program\n * @const\n * @default\n * @type {String}\n */\npm.TEST_CURRENT_ROBOT_EVENT_STR = \"test_current_robot_event\";\n/**\n * Constant for test current robot program\n * @const\n * @default\n * @type {String}\n */\npm.CURRENT_ROBOT_TESTED_EVENT_STR = \"current_robot_tested_event\";\n\n/**\n * Constant for start network game\n * @const\n * @default\n * @type {String}\n */\npm.START_NETWORK_GAME_EVENT_STR = \"start_network_game_event\";\n/**\n * Constant for map completed event.\n * @const\n * @default\n * @type {String}\n */\npm.MAP_COMPLETED_STR = \"map_completed_event\";\n\npm.LAYER_ZOOM_IN_EVENT = \"layer_zoom_in_event\";\n\npm.LAYER_ZOOM_OUT_EVENT = \"layer_zoom_out_event\";\n\npm.ANIMATE_HIDE_BUTTON = \"animate_hide_button\";\n\npm.ANIMATE_RESTART_BUTTON = \"animate_restart_button\";\n/**\n * Constant for stop program.\n * @const\n * @default\n * @type {String}\n */\npm.PROGRAM_STOP_EVENT_STR = \"program_stop_event\";\n\n/**\n * Constant for restart program.\n * @const\n * @default\n * @type {String}\n */\npm.PROGRAM_RESTART_EVENT_STR = \"program_restart_event\";\n\n/**\n * Constant for make step of program.\n * @const\n * @default\n * @type {String}\n */\npm.PROGRAM_MAKE_STEP_EVENT_STR = \"program_make_step_event\";\n\n/**\n * Constant for a map changed event by {@link SelectMapMenu}\n * @const\n * @default\n * @type {String}\n */\npm.MAP_CHANGED_EVENT_STR = \"map_changed_event\";\n\n/**\n * Constant for a map dragged event by {@link pm.MapsContainerLayer}\n * @const\n * @default\n * @type {String}\n */\npm.MAP_DRAGGED_EVENT_STR = \"map_dragged_event\";\n\npm.BACK_TO_MENU = \"back_to_menu\";\n\npm.CLEAR_CACHE = \"clear_cache\";\n\npm.CLEAN_CLIENTS = \"clean_clients\";\n\npm.UPDATE_INNER_PROGRAM_LAYER_CONTAINER = \"update_inner_program_layer_container\";\npm.UPDATE_SCROLL_POS = \"update_inner_program_layer_scroll_position\";\n\npm.UPDATE_LEVEL_LAYER = \"update_level_layer_container\";\n\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.ENABLE_CONTROLLED_MODE_STR = \"enable_controlled_mode\";\n\n/**\n * Constant for a disable controlled mode event by {@link MethodStackLayer}\n * @const\n * @default\n * @type {String}\n */\npm.DISABLE_CONTROLLED_MODE_STR = \"disable_controlled_mode\";\n\n/**\n * Constant for a updating of program by user event in\n * {@link ProgramContainerLayer}, {@link ProgramLayer}\n * @const\n * @default\n * @type {String}\n */\npm.USER_PROGRAM_UPDATED_STR = \"user_program_updated\";\n\npm.READY_TO_CHANGE_LEVEL_STR = \"ready_to_change_level\";\n\n/**\n * Constant for updating change level menu\n * @const\n * @default\n * @type {String}\n */\npm.LEVEL_SCENE_ENTERED = \"level_scene_entered\";\n/**\n * Constant for changing state of global robot\n * @const\n * @default\n * @type {String}\n */\npm.GLOBAL_ROBOT_STATE_UPDATED = \"global_robot_state_updated\";\n\n/**\n * Constant for resetting level\n * @const\n * @default\n * @type {String}\n */\npm.RESET_LEVEL_EVENT_STR = \"reset_level_event\";\n\n/**\n * Constant for open event oc CounterRobotLayer\n * @const\n * @default\n * @type {String}\n */\npm.COUNTER_LAYER_OPENED_EVENT_STR = \"counter_layer_opened\";\n\n/**\n * Constant for close event oc CounterRobotLayer\n * @const\n * @default\n * @type {String}\n */\npm.COUNTER_LAYER_CLOSED_EVENT_STR = \"counter_layer_closed\";\n\npm.GREEN_FLAG_LAYER_OPENED_EVENT_STR = \"green_flag_layer_opened\";\n\npm.GREEN_FLAG_LAYER_CLOSED_EVENT_STR = \"green_flag_layer_closed\";\n\npm.ORANGE_FLAG_LAYER_OPENED_EVENT_STR = \"orange_flag_layer_opened\";\n\npm.ORANGE_FLAG_LAYER_CLOSED_EVENT_STR = \"orange_flag_layer_closed\";\n\n/**\n * Constant for open event of MethodStackLayer\n * @const\n * @default\n * @type {String}\n */\npm.METHOD_STACK_LAYER_OPENED_EVENT_STR = \"method_stack_layer_opened\";\n\n/**\n * Constant for close event of MethodStackLayer\n * @const\n * @default\n * @type {String}\n */\npm.METHOD_STACK_LAYER_CLOSED_EVENT_STR = \"method_stack_layer_closed\";\n/**\n * Constant for become active event of MethodStackLayer\n * @const\n * @default\n * @type {String}\n */\npm.METHOD_STACK_LAYER_ACTIVE_EVENT_STR = \"method_stack_layer_active\";\n/**\n * Constant for ended commands of method stack layer\n * @const\n * @default\n * @type {String}\n */\npm.FORCED_COMMANDS_ENDED_EVENTS_STR = \"forced_commands_ended\";\n/**\n * Constant for loaded buttons in program Layer in Tab {@link ProgramLayer}\n * @const\n * @default\n * @type {String}\n */\npm.TAB_LOADED_STR = \"ButtonsInTabLoaded\";\n/**\n * Constant for set robot program\n * @const\n * @default\n * @type {String}\n */\npm.SET_ROBOT_PROGRAM_EVEN_STR = \"set_robot_program\";\n\n/**\n * Constant for a focusing to robot when it's moving in map layer. cc.Point expected in data {@link MapLayer2D}\n * @const\n * @default\n * @type {String}\n */\npm.FOCUS_TO_ROBOT_IN_MAP = \"focus_to_robot_in_map\";\n\n/**\n * Constant for updating select layout\n * @const\n * @default\n * @type {String}\n */\npm.COMMANDS_CHANGED = \"commands_changed\";\n/**\n * Constant for updating select layout\n * @const\n * @default\n * @type {String}\n */\npm.ADD_FUNCTION_METHOD = \"add_method_call\";\n/**\n * Constant for updating select layout\n * @const\n * @default\n * @type {String}\n */\npm.REMOVE_FUNCTION = \"remove_func\";\n/**\n * Constant for updating select layout\n * @const\n * @default\n * @type {String}\n */\npm.VARIABLES_CHANGED = \"variables_changed\";\n\n/**\n * Constant for pattern changing\n * @const\n * @default\n * @type {String}\n */\npm.PATTERN_CHANGED = \"pattern_changed\";\n\npm.FOCUS_TO_ROBOT_IN_MAP = \"focus_to_robot_in_map\";\n\n/**\n * Constant for launching recognizing\n * @const\n * @default\n * @type {String}\n */\npm.RECOGNIZE_PROGRAM = \"recognize_program\";\n\n/**\n * Constant for showing info about level\n * @const\n * @default\n * @type {String}\n */\npm.SHOW_INFO = \"show_info\";\n\n/**\n * Constant for updating current scene\n * @const\n * @default\n * @type {String}\n */\npm.UPDATE_SCENE = \"update_scene\";\n\n/**\n * Constant for updating physical robot\n * @const\n * @default\n * @type {String}\n */\npm.PHYSICAL_ROBOT_TYPE_CHANGED = \"physical_robot_type_changed\";\n\n/**\n * Constant for updating program control\n * @const\n * @default\n * @type {String}\n */\npm.TURN_TURBO_MODE = \"turn_turbo_mode\";\n\n/**\n * Constant for updating clear program button\n * @const\n * @default\n * @type {String}\n */\npm.UPDATE_CLEAR_PROGRAM_BUTTON = \"update_clear_program_button\";\n\n/**\n * Constant for restarting tutorial in help\n * @const\n * @default\n * @type {String}\n */\npm.TUTORIAL_ENDED = \"tutorial_ended\";\n\n/**\n * Constant for closing tutorial scenario\n * @const\n * @default\n * @type {String}\n */\npm.TUTORIAL_SCENARIO_CLOSED = \"tutorial_scenario_closed\";\n\n/**\n * Constant for updating time table in class control\n * @const\n * @default\n * @type {String}\n */\npm.UPDATE_TIME_TABLE = \"update_time_table\";\n\n/**\n * Constant for a select map element event in editor menu {@link MapElementsLayer}\n* @const\n * @default\n* @type {String}\n*/\npme.MAP_ELEMENT_SELECT_EVENT_STR = \"map_element_select_event\";\n\npme.PAGE_CHANGED = \"page_changed\";\n\n/**\n * Constant for a repair map if grass count changed event in editor {@link MapElementsLayer}\n * @const\n * @default\n * @type {String}\n */\npme.MAP_GRASS_COUNT_CHANGED_EVENT_STR = \"map_grass_count_changed_event\";\n\n/**\n * Constant for add robot select event in editor {@link ObjectsSettingsLayer}\n * @const\n * @default\n * @type {String}\n */\npme.ADD_ROBOT_SELECT_EVENT_STR = \"add_robot_select_event\";\n\n/**\n * Constant for add robot select event in editor {@link ObjectsSettingsLayer}\n * @const\n * @default\n * @type {String}\n */\npme.ADD_OBJECT_SELECT_EVENT_STR = \"add_object_select_event\";\n\n/**\n * Constant for pressing buttons to add/delete map layers in editor {@link LevelSettings}\n * @const\n * @default\n * @type {String}\n */\npme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR = \"map_layers_count_changed_event\";\n\n/**\n * Constant for enter/exit multimap mode. Contains bool.\n * @const\n * @default\n * @type {String}\n */\npme.MULTIMAP_MODE = \"multimap_mode\"\n\n/**\n * Constant for pressing buttons to add/delete program patterns in editor {@link PlayerRobotSettingsLayer}\n * @const\n * @default\n * @type {String}\n */\npme.PATTERNS_COUNT_CHANGED_EVENT_STR = \"patterns_count_changed_event\";\n\n/**\n * Constant for remove global robot\n * @const\n * @default\n * @type {String}\n */\npme.REMOVE_GLOBAL_ROBOT = \"remove_global_robot\";\n/**\n * Constant for adding robot. Contains robot data\n * @const\n * @default\n * @type {String}\n */\npme.ADD_ROBOT = \"add_robot\";\n/**\n * Constant for remove robot. Contains robot data\n * @const\n * @default\n * @type {String}\n */\npme.REMOVE_ROBOT = \"remove_robot\";\n/**\n * Constant for enter/exit cooperative mode. Contains bool.\n * @const\n * @default\n * @type {String}\n */\npme.COOPERATIVE_MODE = \"cooperative_mode\"\n/**\n * Constant for redraw global robot\n * @const\n * @default\n * @type {String}\n */\npme.REDRAW_GLOBAL_ROBOT = \"redraw_global_robot\";\n\n/**\n * Constant for remove global robot\n * @const\n * @default\n * @type {String}\n */\npme.ADD_GLOBAL_ROBOT = \"add_global_robot\";\n\n/**\n * Constant for adding clone\n * @const\n * @default\n * @type {String}\n */\npme.ADD_CLONE = \"add_clone\";\n\n/**\n * Constant for a adding or removal rows from program in editor mode {@link ProgramContainerLayer} event by {@link pm.ProgramControlLayer}\n * @const\n * @default\n * @type {String}\n */\npm.ADD_OR_REMOVE_ROWS = \"change_rows\";\n\n/**\n * Constant for sending event to Program Layer to open numberInputLayer {@link NumberInputLayer} event by {@link pmui.NumberNode}\n * @const\n * @default\n * @type {String}\n */\npm.CHANGE_NUMBER_IN_INPUT_NODE = \"change_number\";\n\n/**\n * Constant for sending event to Program Layer to open numberInputLayer {@link NumberInputLayer} event by {@link pmui.NumberNode}\n * @const\n * @default\n * @type {String}\n */\npm.CLOSE_NUMBER_INPUT_LAYER = \"close_number_layer\";\n\n/**\n * Constant for sending event to AllocNode to change variable debug info\n * @const\n * @default\n * @type {String}\n */\npm.VARIABLE_VALUE_CHANGED = \"var_value_changed\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.FUNCTION_DEFINITION_REMOVED = \"function_removed\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.VARIABLE_DEFINITION_REMOVED = \"alloc_variable_removed\";\n\npm.COMMAND_REMOVED = \"command_removed\";\n\npm.FUNCTION_PARAMS_CHANGED = \"function_params_changed\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.HIDE_SELECT_LAYOUT = \"hide_select_layout\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.SHOW_SELECT_LAYOUT = \"show_select_layout\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.RESET_HIGHLIGHT = \"removehightlight\";\n/**\n * Constant for a enable controlled mode event by {@link MethodStackLayer, pm.ControlledModeData}\n * @const\n * @default\n * @type {String}\n */\npm.DESELECT_NODE = \"deselect_node_layer\";\n/**\n * Constant for stop animation of FunctionButton {@link FunctionButtonK}\n * @const\n * @default\n * @type {String}\n */\npm.DESELECT_FUNCTIONBUTTON = \"deselect_function_button\";\n/**\n * Constant for stop animation of FunctionButton {@link FunctionButtonK}\n * @const\n * @default\n * @type {String}\n */\npm.PARSE_NODE = \"parse_node\";\n/**\n * Constant for stop animation of FunctionButton {@link FunctionButtonK}\n * @const\n * @default\n * @type {String}\n */\npm.CHANGE_NUMBER_NODE = \"change_number_in_node\";\n/**\n * Sends custom event throw cocos dispatcher.\n * @param {String} eventName Name of event.\n * @param {*} [data] Custom data for event.\n */\n\npm.sendCustomEvent = function(eventName, data)\n{\n\tvar event = new cc.EventCustom(eventName);\n\n\tif(data !== undefined)\n\t\tevent.setUserData(data);\n\n\tcc.eventManager.dispatchEvent(event);\n};\n\n/**\n * Registers custom event listener.\n * @param {String} eventName\n * @param {Function} callback\n * @param {ccui.Widget|cc.Node|Number} nodeOrPriority\n * @returns {cc.EventListener}\n */\npm.registerCustomEventListener = function(eventName, callback, nodeOrPriority)\n{\n\tvar listener = cc.EventListener.create({\n\t\tevent: cc.EventListener.CUSTOM,\n\t\teventName: eventName,\n\t\tcallback: callback\n\t});\n\n\tcc.eventManager.addListener(listener, nodeOrPriority);\n\n\treturn listener;\n};\n","/**\n * Created by Nikita Besshaposhnikov on 12.11.14.\n */\n\n/**\n * A variable containing all localizations of strings.
\n * If not null: {\"localization_key\":\"localized_string\"}\n * @type {?Object}\n * @private\n * @default\n */\nvar _localizedStrings = null;\n\n/**\n * Removes all localized strings.\n */\nvar ResetLanguage = function()\n{\n\t_localizedStrings = null;\n};\n/**\n * Returns localized string for key.\n * @param {String} key Localized string key\n * @returns {String}\n */\nvar LocalizedString = function(key)\n{\n\tif(!_localizedStrings)\n\t{\n\t\tvar language = pm.settings.getLanguage();\n\n\t\t_localizedStrings = cc.loader.getRes(\"localizations/Localized-\" + language + \".json\");\n\t\tpm.moduleUtils.extendLocalization(_localizedStrings, language);\n\t}\n\tif(_localizedStrings.hasOwnProperty(key))\n\t\treturn _localizedStrings[key];\n\telse\n\t\treturn key;\n};\n","/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n/**\n * Normal state string appendix for resource files.\n * @see pm.spriteUtils\n * @const\n * @type {String}\n * @default\n */\npm.NORMAL_STATE = \"normal\";\n/**\n * Selected state string appendix for resource files.\n * @see pm.spriteUtils\n * @const\n * @type {String}\n * @default\n */\npm.SELECTED_STATE = \"selected\";\n/**\n * Disabled state string appendix for resource files.\n * @see pm.spriteUtils\n * @const\n * @type {String}\n * @default\n */\npm.DISABLED_STATE = \"disabled\";\n/**\n * Failed state string appendix for resource files.\n * @see pm.spriteUtils\n * @const\n * @type {String}\n * @default\n */\npm.FAILED_STATE = \"failed\";\n\n/**\n * This namespace contains functions to work with ingame sprites.\n * @namespace\n */\npm.spriteUtils = {\n\n\t/**\n * @default\n * @private\n */\n\t_levelType: 0,\n\t/**\n * Stores sprite frames to delete between level changes.\n * @default\n * @private\n */\n\t_tempSpriteFrames: [],\n\t/**\n * Adds sprite frame to temp array and frame cache.\n * @param {String} file File path to sprite frames .plist\n */\n\taddTempSpriteFrames: function(file)\n\t{\n\t\tthis._tempSpriteFrames.push(file);\n\t\tcc.spriteFrameCache.addSpriteFrames(file);\n\t},\n\t/**\n * Adds sprite frame only to temp array.\n * @param {String} file File path to sprite frames .plist\n */\n\tregisterTempSpriteFrames: function(file)\n\t{\n\t\tthis._tempSpriteFrames.push(file);\n\t},\n\t/**\n * Inits map textures for level type and tileset number.\n * @param {String} type A level type.\n * @param {Number} tileset Tileset number.\n */\n\tinitMapTexture: function(type, tileset)\n\t{\n\t\tthis._levelType = type;\n\t\tvar file = pm.moduleUtils.getMapTileset(type, tileset);\n\t\tif (file)\n\t\t\tthis.addTempSpriteFrames(file);\n\t},\n\t/**\n * Removes all temp sprite frames.\n */\n\tclear: function()\n\t{\n\t\tfor(var i = 0; i < this._tempSpriteFrames.length; ++i)\n\t\t\tcc.spriteFrameCache.removeSpriteFramesFromFile(this._tempSpriteFrames[i]);\n\n\t\tthis._tempSpriteFrames = [];\n\t},\n\n\t/**\n * Returns map texture name for level type and tileset.\n * @param {String} type A level type.\n * @param {Number} tileset Tileset number.\n * @returns {String}\n */\n\tgetMapTextureName: function(type, tileset)\n\t{\n\t\treturn pm.moduleUtils.getMapTileset(type, tileset);\n\t},\n\n\t/**\n * Inits robot textures by it's type..\n * @param {String} levelType Level type.\n * @param {pm.PlayerRobotType | pm.GlobalRobotType} [robotType] Robot type.\n */\n\tinitRobotTextures: function(levelType, robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\t\tthis.addTempSpriteFrames(\"Robot Methods/counter-methods.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Conditions/counter-conditions.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Repeaters/counter-repeaters.plist\");\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\tthis.addTempSpriteFrames(\"Robot Methods/counter-methods.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Conditions/counter-conditions.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Repeaters/counter-repeaters.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Robot Methods/extended_counter-methods.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Conditions/extended_counter-conditions.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Repeaters/extended_counter-repeaters.plist\");\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tthis.addTempSpriteFrames(\"Robot Methods/gflag-methods.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Conditions/gflag-conditions.plist\");\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tthis.addTempSpriteFrames(\"Robot Methods/oflag-methods.plist\");\n\t\t\t\tthis.addTempSpriteFrames(\"Conditions/oflag-conditions.plist\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tvar resources = pm.moduleUtils.getResources(levelType);\n\t\t\t\tfor (var i = 0; i < resources.length; ++i)\n\t\t\t\t\tthis.addTempSpriteFrames(resources[i]);\n\t\t}\n\n\t},\n\t/**\n * Removes robot textures by it's type.\n * @param {pm.PlayerRobotType | pm.GlobalRobotType} robotType Robot type.\n */\n\t// removeRobotTextures: function(robotType)\n\t// {\n\t// switch (robotType) {\n\t// case pm.GlobalRobotType.Counter:\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Robot Methods/counter-methods.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Conditions/counter-conditions.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Repeaters/counter-repeaters.plist');\n\t// break;\n\t// case pm.GlobalRobotType.ExtendedCounter:\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Robot Methods/counter-methods.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Conditions/counter-conditions.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Repeaters/counter-repeaters.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Robot Methods/extended_counter-methods.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Conditions/extended_counter-conditions.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Repeaters/extended_counter-repeaters.plist');\n\t// case \"repair-level\":\n\t// {\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Robot Methods/reapairrobot-methods.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Conditions/reapairrobot-conditions.plist');\n\t// break;\n\t// }\n\t// case \"push-level\":\n\t// {\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Robot Methods/reapairrobot-methods.plist');\n\t// cc.spriteFrameCache.removeSpriteFramesFromFile('Conditions/pushrobot-conditions.plist');\n\t// break;\n\t// }\n\t// default:\n\t// break;\n\t// }\n\t//\n\t// },\n\n\t/**\n * Inits robot textures for whole level.\n * @param {pm.AbstractLevel} level Level object.\n */\n\tinitLevelRobotsTextures: function(level)\n\t{\n\t\tfor(var i = 0; i < level.getRobotCount(); ++i)\n\n\t\t\tthis.initRobotTextures(level.getType());\n\n\t\tfor(var i = 0; i < level.globalRobots.length; ++i)\n\n\t\t\tthis.initRobotTextures(level.getType(), level.globalRobots[i].getType());\n\n\t},\n\t/**\n * Load common sprite frames.\n */\n\tinit: function()\n\t{\n\t\tcc.spriteFrameCache.addSpriteFrames(\"Robot Methods/common-methods.plist\");\n\t\tcc.spriteFrameCache.addSpriteFrames(\"Conditions/common-conditions.plist\");\n\t\tcc.spriteFrameCache.addSpriteFrames(\"Repeaters/common-repeaters.plist\");\n\t\tcc.spriteFrameCache.addSpriteFrames(\"System/iconset.plist\");\n\t\tcc.spriteFrameCache.addSpriteFrames(\"System/interface.plist\");\n\t\tcc.spriteFrameCache.addSpriteFrames(\"PiktomirK/pictomirKbuttons.plist\");\n\t},\n\n\t/**\n * Returns icon file name.\n * @param {String} name\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetIconName: function(name, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"{0}Icon-{1}.png\".format(name, state);\n\t},\n\n\t/**\n\t * Returns icon file name.\n\t * @param {String} name\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetButtonGroupName: function(name, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"{0}-button-{1}.png\".format(name, state);\n\t},\n\n\t/**\n *\n * @param {String} name\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.Sprite}\n */\n\tgetIconSprite: function(name, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn new cc.Sprite(this.getIconSpriteFrame(name, state));\n\t},\n\n\t/**\n *\n * @param {String} name\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.SpriteFrame}\n */\n\tgetIconSpriteFrame: function(name, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"{0}Icon-{1}.png\".format(name, state));\n\t},\n\n\t/**\n *\n * @param {String} name\n * @returns {String}\n */\n\tgetInterfaceElementName: function(name)\n\t{\n\t\treturn \"{0}.png\".format(name);\n\t},\n\n\t/**\n *\n * @param {String} name\n\t * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetNodeLayerElementName: function(name, state)\n\t{\n\t\treturn \"{0}-{1}.png\".format(name, state);\n\t},\n\n\t/**\n *\n * @param {String} name\n * @returns {cc.Sprite}\n */\n\tgetInterfaceElementSprite: function(name)\n\t{\n\t\treturn new cc.Sprite(this.getInterfaceElementFrame(name));\n\t},\n\n\t/**\n *\n * @param {String} name\n * @returns {cc.SpriteFrame}\n */\n\tgetInterfaceElementFrame: function(name)\n\t{\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"{0}.png\".format(name));\n\t},\n\n\t/**\n *\n * @param {String} method\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetRobotMethodSpriteName: function(method, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\tif(cc.isNumber(method))\n\t\t\tmethod = pm.EMPTY_METHOD;\n\n\t\treturn \"{0}-{1}.png\".format(method, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} number\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetNumberButtonSpriteName: function(number, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"n{0}-{1}.png\".format(number, state);\n\t},\n\t/**\n *\n * @param {String} method\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetEmptyMethodSpriteName: function(state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"empty-method-{0}.png\".format( state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} method\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetMethodCallSpriteName: function(state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"method-call-{0}.png\".format( state);\n\t},\n\t/**\n *\n * @param {String} method\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetStatementSpriteName: function(name, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"statement-{0}-{1}.png\".format(name, state);\n\t},\n\n\t/**\n *\n * @param {String} method\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.Sprite}\n */\n\tgetRobotMethodSprite: function(method, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn new cc.Sprite(this.getRobotMethodSpriteFrame(method, state));\n\t},\n\t/**\n\t *\n\t * @param {String} method\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {cc.Sprite}\n\t */\n\n\tgetRobotVariableSprite: function(method, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn new cc.Sprite(this.getRobotVariableSpriteFrame(method, state));\n\t},\n\n\t/**\n *\n * @param {String} method\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.SpriteFrame}\n */\n\tgetRobotMethodSpriteFrame: function(method, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"{0}-{1}.png\".format(method, state));\n\t},\n\t/**\n\t *\n\t * @param {String} method\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {cc.SpriteFrame}\n\t */\n\tgetRobotVariableSpriteFrame: function(method, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"cond-{0}-{1}.png\".format(method, state));\n\t},\n\n\t/**\n *\n * @param {String} condition\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetRobotConditionSpriteName: function(condition, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"cond-{0}-{1}.png\".format(condition, state);\n\t},\n\t/**\n\t *\n\t * @param {String} condition\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetConditionStatementSpriteName: function(type, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"condStat-{0}-{1}.png\".format(type, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} condition\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetExprSpriteName: function(value, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"expr-{0}-{1}.png\".format(value, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} condition\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetSignSpriteName: function(sign, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"{0}-sign-{1}.png\".format(sign, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} condition\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetAllocSpriteName: function(value, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"empty-method-{0}.png\".format(state);\n\t},\n\n\t/**\n\t *\n\t * @param {String} condition\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {String}\n\t */\n\tgetConditionStatementSpriteName: function(type, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"condStat-{0}-{1}.png\".format(type, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String|Number} repeater\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {cc.Sprite}\n\t */\n\tgetNumberSpriteName: function(state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"number-round-{0}.png\".format( state);\n\t},\n\n\t/**\n\t *\n\t * @param {String|Number} repeater\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {cc.Sprite}\n\t */\n\tgetIntMethodSpriteName: function(value, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"{0}-{1}.png\".format(value, state);\n\t},\n\n\t/**\n\t *\n\t * @param {String|Number} repeater\n\t * @param {String} [state=pm.NORMAL_STATE]\n\t * @returns {cc.Sprite}\n\t */\n\tgetBoolSpriteName: function(state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"bool-bg-{0}.png\".format( state);\n\t},\n\n\t/**\n *\n * @param {String} condition\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.Sprite}\n */\n\tgetRobotConditionSprite: function(condition, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn new cc.Sprite(this.getRobotConditionSpriteFrame(condition, state));\n\t},\n\n\t/**\n *\n * @param {String} condition\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.SpriteFrame}\n */\n\tgetRobotConditionSpriteFrame: function(condition, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"cond-{0}-{1}.png\".format(condition, state));\n\t},\n\n\t/**\n *\n * @param {String|Number} repeater\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {String}\n */\n\tgetRepeaterSpriteName: function(repeater, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn \"rep-{0}-{1}.png\".format(repeater, state);\n\n\t\t\t//return \"rep-{0}-{1}-{2}.png\".format(repeater, state, iterNum);\n\t},\n\n\t/**\n *\n * @param {String|Number} repeater\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.Sprite}\n */\n\tgetRepeaterSprite: function(repeater, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn new cc.Sprite(this.getRepeaterSpriteFrame(repeater, state));\n\t},\n\n\t/**\n *\n * @param {String|Number} repeater\n * @param {String} [state=pm.NORMAL_STATE]\n * @returns {cc.SpriteFrame}\n */\n\tgetRepeaterSpriteFrame: function(repeater, state)\n\t{\n\t\tif(state === undefined)\n\t\t\tstate = pm.NORMAL_STATE;\n\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"rep-{0}-{1}.png\".format(repeater, state));\n\t},\n\n\t/**\n * Returns map grass tile filename.\n * @param {Number | String} tile\n * @returns {String}\n */\n\tgetMapGrassTileName: function(tile)\n\t{\n\t\treturn \"mapElement{0}.png\".format(tile);\n\t},\n\n\t/**\n *\n * @param {Number | String} tile\n * @returns {cc.Sprite}\n */\n\tgetMapGrassTile: function(tile)\n\t{\n\t\treturn new cc.Sprite(this.getMapGrassTileFrame(tile));\n\t},\n\n\t/**\n *\n * @param {Number | String} tile\n * @returns {cc.SpriteFrame}\n */\n\tgetMapGrassTileFrame: function(tile)\n\t{\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"mapElement{0}.png\".format(tile));\n\t},\n\n\t/**\n *\n * @param {Number | String} wall\n * @returns {cc.Sprite}\n */\n\tgetMapWallTile: function(wall)\n\t{\n\t\treturn new cc.Sprite(this.getMapWallTileFrame(wall));\n\t},\n\n\t/**\n *\n * @param {Number | String} wall\n * @returns {cc.SpriteFrame}\n */\n\tgetMapWallTileFrame: function(wall, orientation)\n\t{\n\t\tif(orientation === undefined || orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\treturn cc.spriteFrameCache.getSpriteFrame(\"wall-{0}.png\".format(wall));\n\n\t\tif(orientation === pm.MapLayer2D.Orientation.Ortho)\n\t\t\treturn cc.spriteFrameCache.getSpriteFrame(\"wall-{0}-top.png\".format(wall));\n\n\t},\n\n\t/**\n * Returns map tile filename.\n * @param {String} tile\n * @returns {String}\n */\n\tgetMapTileName: function(tile)\n\t{\n\t\treturn \"{0}.png\".format(tile);\n\t},\n\n\t/**\n *\n * @param {String} tile\n * @returns {cc.Sprite}\n */\n\tgetMapTile: function(tile)\n\t{\n\t\treturn new cc.Sprite(this.getMapTileFrame(tile));\n\t},\n\n\t/**\n *\n * @param {String} tile\n * @returns {cc.SpriteFrame}\n */\n\tgetMapTileFrame: function(tile)\n\t{\n\t\treturn cc.spriteFrameCache.getSpriteFrame(\"{0}.png\".format(tile));\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 26.02.16.\n */\n\n/**\n * This namespace is used for api calls of piktomir server.\n * @namespace\n */\npm.apiServerUtils = {\n\n\t/**\n * Ok network status\n * @const\n * @type {String}\n * @default\n */\n\tOK_STATUS: \"ok\",\n\t/**\n * Default timeout for requests\n * @const\n * @type {Number}\n * @default\n */\n\tDEFAULT_TIMEOUT: 10000,\n\n\t/**\n * Send request using XHR.\n * @param {Object} params\n * @param {Function} params.callback\n\t * @param {String} params.method Method type for request\n * @param {String} params.url Url for request\n * @param {String} params.request Request path for specified url\n\t * @param {Boolean} [params.withAuth] send with auth\n\t * @param {Object} [params.data] Data for request\n * @param {Number} [params.timeout] Custom timeout for request\n * @private\n */\n\t_sendRequest: function(params)\n\t{\n\t\tvar xhr = cc.loader.getXMLHttpRequest();\n\n\t\tvar request = params.request +((params.request.indexOf(\"?\") > -1) ? \"&\" : \"?\") + \"app=\";\n\t\tparams.request = request + encodeURIComponent(pm.appConfig.appType);\n\n\t\txhr.open(params.method, params.url + params.request, true);\n\n\t\txhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n\t\tif(params.withAuth && pm.settings.getAccessToken())\n\t\t\txhr.setRequestHeader(\"x-access-token\", pm.settings.getAccessToken());\n\n\t\tvar timeout = this.DEFAULT_TIMEOUT;\n\n\t\tif(cc.sys.isNative)\n\t\t\tpm.setHttpRequestTimeout(timeout);\n\t\telse\n\t\t\txhr.timeout = timeout;\n\n\t\txhr.ontimeout = function ()\n\t\t{\n\t\t\tif (params.hasOwnProperty(\"callback\"))\n\t\t\t\tparams.callback({text: \"Timeout\", status: xhr.status}, -1);\n\t\t\telse\n\t\t\t\tthrow new Error(\"Timeout\");\n\t\t};\n\n\t\txhr.onerror = function (error)\n\t\t{\n\t\t\tvar errorText = error ? JSON.stringify(error) : \"Unknown XHR error\";\n\n\t\t\tif (params.hasOwnProperty(\"callback\"))\n\t\t\t\tparams.callback({text: errorText, status: -1});\n\t\t\telse\n\t\t\t\tthrow new Error(errorText);\n\t\t};\n\n\t\txhr.onreadystatechange = function ()\n\t\t{\n\t\t\tif (xhr.readyState === 4 )\n\t\t\t{\n\t\t\t\tvar response = null;\n\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tresponse = JSON.parse(xhr.responseText);\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tresponse = null;\n\t\t\t\t}\n\n\t\t\t\tvar hasCheckResponse = params.hasOwnProperty(\"checkResponse\");\n\n\t\t\t\tif (!hasCheckResponse || (hasCheckResponse && params.checkResponse))\n\t\t\t\t{\n\t\t\t\t\tif (!response)\n\t\t\t\t\t{\n\t\t\t\t\t\tparams.callback({text: \"Incorrect response\", status: xhr.status});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif((xhr.status >= 200 && xhr.status <= 207))\n\t\t\t\t{\n\t\t\t\t\tif(params.hasOwnProperty(\"callback\"))\n\t\t\t\t\t\tparams.callback(null, response);\n\t\t\t\t}\n\t\t\t\telse if (xhr.status !== 0)\n\t\t\t\t{\n\t\t\t\t\tif (params.hasOwnProperty(\"callback\"))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar text = response.error\n\t\t\t\t\t\t\t? response.error + \": \" + response.error_description\n\t\t\t\t\t\t\t: response.message || \"Empty error\";\n\n\t\t\t\t\t\tparams.callback({\n\t\t\t\t\t\t\ttext: text,\n\t\t\t\t\t\t\tstatus: xhr.status\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\txhr.status = 200;\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\txhr.send(params.hasOwnProperty(\"data\") ? JSON.stringify(params.data) : \"\");\n\t},\n\n\t/**\n * Send request with access token, If server returns '401' tries to update it.\n * @param {Object} params\n * @param {Function} params.callback\n * @param {String} params.method Method type for request\n * @param {String} params.url Url for request\n * @param {String} params.request Request path for specified url\n * @param {?Object} [params.data] Data for request\n * @param {Number} [params.timeout] Custom timeout for request\n * @private\n */\n\t_sendRequestWithToken: function(params)\n\t{\n\t\tif (pm.settings.getAccessToken())\n\t\t{\n\t\t\tparams.withAuth = true;\n\n\t\t\tvar callback = params.callback;\n\n\t\t\tparams.callback = function (error, response)\n\t\t\t{\n\t\t\t\tif (error && error.status === 401)\n\t\t\t\t{\n\t\t\t\t\tthis.updateAccessToken(function (error, updateResponse)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpm.settings.setAccessToken(updateResponse.access_token);\n\t\t\t\t\t\t\tpm.settings.setRefreshToken(updateResponse.refresh_token);\n\n\t\t\t\t\t\t\tparams.callback = callback;\n\t\t\t\t\t\t\tthis._sendRequest(params);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcallback(error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}.bind(this)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse if(error)\n\t\t\t\t{ callback(error); }\n\t\t\t\telse\n\t\t\t\t{ callback(null, response); }\n\n\t\t\t}.bind(this);\n\n\t\t\tthis._sendRequest(params);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._sendRequest(params);\n\t\t}\n\t},\n\n\t/**\n * Requests access and refresh token for server api.\n * @param {pm.apiServerUtils~loginCallback} callback\n * @param {String} login\n * @param {String} pass\n */\n\tlogin: function(callback, login, pass)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.authAddress,\n\t\t\trequest: \"app/authorize/token\",\n\t\t\tdata: {\n\t\t\t\tlogin: login,\n\t\t\t\tpassword: pass,\n\t\t\t\tclient_id: pm.appConfig.pmAppID\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n\t * Requests access and refresh token for server api.\n\t * @param {pm.apiServerUtils~loginCallback} callback\n\t * @param {String} code\n\t * @param {String} codeVerifier\n\t * @param {String} redirectUri\n\t */\n\tloginByCode: function(callback, code, codeVerifier, redirectUri)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.authAddress,\n\t\t\trequest: \"app/authorize/oauth/token\",\n\t\t\tdata: {\n\t\t\t\tcode: code,\n\t\t\t\tcode_verifier: codeVerifier,\n\t\t\t\tredirect_uri: redirectUri,\n\t\t\t\tclient_id: pm.appConfig.pmAppID\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n\t * Requests access token by refresh token\n\t * @param {pm.apiServerUtils~updateAccessTokenCallback} callback\n\t */\n\tupdateAccessToken: function(callback)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.authAddress,\n\t\t\trequest: \"app/authorize/token/refresh\",\n\t\t\tdata: {\n\t\t\t\trefresh_token: pm.settings.getRefreshToken(),\n\t\t\t\tclient_id: pm.appConfig.pmAppID\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n *Registration.\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} mail\n * @param {String} password\n * @param {String} name\n * @param {String} surname\n */\n\tregister: function(callback, mail, password, name, surname)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.authAddress,\n\t\t\trequest: \"app/registration/register\",\n\t\t\tdata: {\n\t\t\t\ttype: \"user\",\n\t\t\t\tmail: mail,\n\t\t\t\tpassword: password,\n\t\t\t\tname: name,\n\t\t\t\tsurname: surname\n\t\t\t},\n\t\t\tcallback: callback,\n\t\t\tcheckResponse: false\n\t\t});\n\t},\n\n\t/**\n * Requests account dta for current logged-in user\n * @param {pm.apiServerUtils~getUserAccountDataCallback} callback\n */\n\tgetUserAccountData: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.authAddress,\n\t\t\trequest: \"api/users\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Requests access and refresh token for server api.\n * @param {pm.apiServerUtils~getLevelsCacheCallback} callback\n * @param {String} worldID\n */\n\tgetLevelsCache: function(callback, worldID)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"cache/\" + encodeURIComponent(worldID),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Requests access and refresh token for server api.\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} worldID\n * @param {Object} cache\n */\n\tupdateLevelsCache: function(callback, worldID, cache)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"cache/\" + encodeURIComponent(worldID),\n\t\t\tdata: {cache: cache},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Requests current PM version\n * @param {pm.apiServerUtils~getPMVersionCallback} callback\n */\n\tgetPMVersion: function(callback)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"version\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Requests public worlds\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n */\n\tgetPublicWorlds: function(callback)\n\t{\n\t\tthis._sendRequest({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/public\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Requests marketable worlds\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n */\n\tgetMarketableWorlds: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/marketable?uuid=\" + encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Requests worlds granted for current user throw Mirera\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n */\n\tgetGrantedWorlds: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/granted\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Requests worlds purchased by current user\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n\t */\n\tgetPurchasedWorlds: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/purchased?uuid=\" + encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Requests worlds shared to current user\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n */\n\tgetSharedWorlds: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/shared\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\t/**\n * Download world data for certain id-version\n * @param {pm.apiServerUtils~downloadWorldCallback} callback\n * @param {String} worldID\n * @param {Number} [version] Maximum version to retrieve. If not present it's SUPPORTED_LEVEL_FORMAT_VERSION\n */\n\tgetWorld: function(callback, worldID, version)\n\t{\n\t\tif (version === undefined)\n\t\t\tversion = pm.appUtils.getSupportedLevelFormatVersion();\n\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + encodeURIComponent(worldID) + \"?maxVersion=\" + version + \"&uuid=\" + encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Download world metadata for certain id-version-revision\n * @param {pm.apiServerUtils~downloadWorldCallback} callback\n * @param {String} worldID\n * @param {Number} [version] Maximum version to retrieve. If not present it's SUPPORTED_LEVEL_FORMAT_VERSION\n */\n\tgetWorldMeta: function(callback, worldID, version)\n\t{\n\t\tif (version === undefined)\n\t\t\tversion = pm.appUtils.getSupportedLevelFormatVersion();\n\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + encodeURIComponent(worldID) + \"/meta?maxVersion=\" + version + \"&uuid=\" + encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Upload entire world\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {Object} worldData\n * @param {String} worldData.name\n * @param {Array} worldData.games\n */\n\tuploadWorld: function(callback, worldData)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"PUT\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds\",\n\t\t\tdata: {\n\t\t\t\tname: worldData.name,\n\t\t\t\tgames: worldData.games\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Updates world\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} worldID\n * @param {Object} updateQuery\n * @param {Array} updateQuery.actions\n * @param {Number} [version] Maximum version to retrieve. If not present it's SUPPORTED_LEVEL_FORMAT_VERSION\n */\n\tupdateWorld: function(callback, worldID, updateQuery, version)\n\t{\n\t\tif (version === undefined)\n\t\t\tversion = pm.appUtils.getSupportedLevelFormatVersion();\n\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + encodeURIComponent(worldID) + \"?version=\" + version,\n\t\t\tdata: updateQuery,\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n\t * Get mirera parent courses\n\t * @param {pm.apiServerUtils~standardCallback} callback\n\t */\n\tgetMireraCourses: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/mirera/courses\",\n\t\t\tdata: {},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n\t * Links world with mirera\n\t * @param {pm.apiServerUtils~standardCallback} callback\n\t * @param {string} worldID\n\t * @param {string} course\n\t */\n\tlinkWorldWithMirera: function(callback, worldID, course)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + encodeURIComponent(worldID) + \"/mirera\",\n\t\t\tdata: {\n\t\t\t\tcourse: course\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n\t * Unlinks world with mirera\n\t * @param {pm.apiServerUtils~standardCallback} callback\n\t * @param {string} worldID\n\t */\n\tunlinkWorldWithMirera: function(callback, worldID)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + encodeURIComponent(worldID) + \"/mirera/unlink\",\n\t\t\tdata: {},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Gets level for world\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {Array} levels List of levels to get\n * @param {Number} [version] Maximum version to retrieve. If not present it's SUPPORTED_LEVEL_FORMAT_VERSION\n */\n\tgetLevels: function(callback, levels, version)\n\t{\n\t\tif (version === undefined)\n\t\t\tversion = pm.appUtils.getSupportedLevelFormatVersion();\n\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/levels?maxVersion=\" + version + \"&uuid=\" + encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\tdata: {levels: levels},\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Request for deleting world\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} worldID\n */\n\tdeleteWorld: function(callback, worldID)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"DELETE\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds/\" + worldID,\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Requests world list of current user\n * @param {pm.apiServerUtils~getWorldsCallback} callback\n */\n\tgetUserWorldList: function(callback)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"worlds\",\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Uploads user solutions to test in Mirera\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {Object} solution\n\t * @param {String} solution.levelId\n\t * @param {Number} solution.version\n\t * @param {Number} solution.revision\n\t * @param {Object.} solution.data\n */\n\tuploadSolution: function(callback, solution)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"solutions\",\n\t\t\tdata: solution,\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Get solution test results from Mirera for world\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} gameID\n */\n\tgetGameSolutionsResult: function(callback, gameID)\n\t{\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"GET\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"solutions/game/\" + encodeURIComponent(gameID),\n\t\t\tcallback: callback\n\t\t});\n\t},\n\n\t/**\n * Sends purchase data to server.\n * @param {pm.apiServerUtils~standardCallback} callback\n * @param {String} data\n * @param {Boolean} restore\n */\n\tsendPurchaseData: function(callback, data, restore)\n\t{\n\t\tvar purchasePlatform = \"\";\n\n\t\tif (cc.sys.os === cc.sys.OS_IOS)\n\t\t\tpurchasePlatform = \"ios\";\n\t\telse if (cc.sys.os === cc.sys.OS_ANDROID)\n\t\t\tpurchasePlatform = \"android\";\n\n\t\tthis._sendRequestWithToken({\n\t\t\tmethod: \"POST\",\n\t\t\turl: pm.appConfig.apiAddress,\n\t\t\trequest: \"market/purchase/\" + purchasePlatform,\n\t\t\tdata: {\n\t\t\t\tuuid: encodeURIComponent(pm.marketHelper.getDeviceUUID()),\n\t\t\t\trestore: restore,\n\t\t\t\tpaymentData: data\n\t\t\t},\n\t\t\tcallback: callback\n\t\t});\n\t}\n\n};\n\n/**\n * @typedef {Object} pm.serverManager~RequestError\n * @property {Number} status XHR status of request\n * @property {String} text Description of error\n */\n\n/**\n * @callback pm.serverManager~standardCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n */\n\n/**\n * @callback pm.serverManager~loginCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} response\n * @param {String} response.access_token\n * @param {String} response.refresh_token\n */\n\n/**\n * @callback pm.serverManager~getUserAccountDataCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} response\n * @param {String} response.status\n * @param {String} response.username\n * @param {String} response._id\n * @param {Number} response.accountType\n * @param {String} response.name\n * @param {String} response.surname\n */\n\n/**\n * @callback pm.serverManager~updateAccessTokenCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} response\n * @param {String} response.status\n * @param {String} response.access_token\n * @param {String} response.refresh_token\n */\n\n/**\n * @callback pm.serverManager~getLevelsCacheCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {Object} [response]\n * @param {Object} [response.cache]\n */\n\n/**\n * @callback pm.serverManager~getPMVersionCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n * @param {String} response.version\n */\n\n/**\n * @typedef {Object} pm.serverManager~WorldRecord\n * @property {String} name\n * @property {Object} owner\n * @property {String} owner.id\n * @property {String} owner.name\n * @property {Object.} [groups]\n */\n\n/**\n * @callback pm.serverManager~getWorldsCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} response\n * @param {Object.} response.worlds\n */\n\n/**\n * @callback pm.serverManager~createWorldCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n * @param {String} response.id Id of new world\n */\n\n/**\n * @callback pm.serverManager~downloadWorldCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n * @param {String} response.data Stringified data of world\n * @param {String} response.date Date of downloaded world creation\n */\n\n/**\n * @callback pm.serverManager~getWorldFormatVersionCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n * @param {Number} response.version Latest version of world\n */\n\n/**\n * @callback pm.serverManager~getWorldRevisionCallback\n * @param {?pm.apiServerUtils~RequestError} error\n * @param {?Object} [response]\n * @param {String} response.status\n * @param {Number} response.revision Latest revision of world for format version\n */\n","/**\n * Created by Nikita Besshaposhnikov on 13.05.15.\n */\n/**\n * This namespace contains functions to control all game audio.\n * @namespace\n *\n */\npm.audioUtils =\n{\n\t/**\n * File path to background sound file\n * @constant\n * @type {String}\n * @default\n */\n\tBACKGROUND_AUDIO_FILE: \"Sounds/background.mp3\",\n\t/**\n * File path to bwin sound file\n * @constant\n * @type {String}\n * @default\n */\n\tWIN_SOUND_FILE: \"res/Sounds/win_sound.mp3\",\n\t/**\n * File path to loose sound file\n * @constant\n * @type {String}\n * @default\n */\n\tLOOSE_SOUND_FILE: \"res/Sounds/loose_sound.mp3\",\n\n\t/**\n * @default\n * @private\n * @type {Number}\n */\n\t_backgroundAudioID: -1,\n\n\t/**\n * Loads all needed data for pm.gameAudio.\n */\n\tload: function()\n\t{\n\n\t},\n\n\t/**\n * Common function to play audio from file.\n * @param {String} filePath A file path to sound file to play\n * @param {Boolean} loop Loop the audio\n * @param {Number} volume A start volume to play with\n * @private\n */\n\t_playAudioFile: function(filePath, loop, volume)\n\t{\n\t\tcc.director.getScheduler().performFunctionInCocosThread(\n\t\t\tfunction()\n\t\t\t{\n\t\t\t\tpm.playAudio(filePath, loop, volume);\n\t\t\t}\n\t\t);\n\t},\n\n\t/**\n * Plays background Music\n */\n\tplayBackgroundMusic: function()\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tvar self = this;\n\n\t\t\tcc.director.getScheduler().performFunctionInCocosThread(\n\t\t\t\tfunction()\n\t\t\t\t{\n\t\t\t\t\tself._backgroundAudioID = pm.playAudio(self.BACKGROUND_AUDIO_FILE, true, pm.settings.getBackgroundVolume());\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcc.audioEngine.playMusic(this.BACKGROUND_AUDIO_FILE, true);\n\t\t\tcc.audioEngine.setMusicVolume(pm.settings.getBackgroundVolume());\n\t\t}\n\t},\n\t/**\n * Sets background music volume\n * @param {Number} volume Volume value to set.\n */\n\tsetBackgroundMusicVolume: function(volume)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tif(pm.getAudioState(this._backgroundAudioID) > 0 )\n\t\t\t{\n\t\t\t\tvar self = this;\n\n\t\t\t\tcc.director.getScheduler().performFunctionInCocosThread(\n\t\t\t\t\tfunction()\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.setAudioVolume(self._backgroundAudioID, volume);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcc.audioEngine.setMusicVolume(volume);\n\t\t}\n\t},\n\t/**\n * Sets effect volume\n * @param {Number} volume Volume value to set.\n */\n\tsetEffectVolume: function(volume)\n\t{\n\t\tif(!cc.sys.isNative)\n\t\t\tcc.audioEngine.setEffectsVolume(volume);\n\t},\n\t/**\n * Plays loose sound\n */\n\tplayLooseSound: function()\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\tthis._playAudioFile(this.LOOSE_SOUND_FILE, false, pm.settings.getEffectVolume());\n\t\telse\n\t\t\tcc.audioEngine.playEffect(this.LOOSE_SOUND_FILE, false);\n\t},\n\t/**\n * Plays win sound\n */\n\tplayWinSound: function()\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\tthis._playAudioFile(this.WIN_SOUND_FILE, false, pm.settings.getEffectVolume());\n\t\telse\n\t\t\tcc.audioEngine.playEffect(this.WIN_SOUND_FILE, false);\n\t},\n\t/**\n * Plays audio from file\n * @param {String} filePath A file path to sound file to play\n */\n\tplaySound: function(filePath)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\tthis._playAudioFile(filePath, false, pm.settings.getEffectVolume());\n\t\telse\n\t\t\tcc.audioEngine.playEffect(filePath, false);\n\t}\n};\n","/**\n * This namespace stores functions for world with files.
\n * For html5 version uses localStorage\n * @namespace\n */\npm.fileUtils = {\n\n\tstubCallback: function() {},\n\n\t/**\n * This function saves object as json string in plist file's \"data\" section.\n * @param {String} path A path where to save object.\n * @param {Object} object An object to save.\n * @param {Function?} callback Callback for saving.\n */\n\tsaveObject: function (path, object, callback)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t{\n\t\t\tvar saveValue = JSON.stringify({data: object});\n\t\t\tjsb.fileUtils.writeStringToFile(saveValue, path, callback || this.stubCallback);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar encodedValue = JSON.stringify({data: Base64.encode((LZString.compress(JSON.stringify(object)))), encoded: true});\n\t\t\tcc.sys.localStorage.setItem(path, encodedValue);\n\t\t}\n\t},\n\t/**\n * This function reads object from a plist file's \"data\" section.\n * @param {String} path A path to file to read.\n * @returns {Object}\n */\n\treadObject: function (path)\n\t{\n\t\tvar readData = null;\n\n\t\tif (cc.sys.isNative)\n\t\t\treadData = jsb.fileUtils.getStringFromFile(path);\n\t\telse\n\t\t\treadData = cc.sys.localStorage.getItem(path);\n\n\t\tif(readData)\n\t\t\treadData = JSON.parse(readData);\n\n\t\tif (readData.data === undefined)\n\t\t\treturn readData;\n\n\t\tvar data = readData.data;\n\n\t\tif (readData.encoded)\n\t\t\tdata = JSON.parse(LZString.decompress(Base64.decode(data)));\n\n\t\treturn data;\n\t},\n\t/**\n * Returns a path where files can be stored\n * @returns {String}\n */\n\tgetWritablePath: function ()\n\t{\n\t\tvar appFolder = pm.appConfig.appType === 'pm' ? \"Piktomir\" : \"Piktomir-K\";\n\n\t\tif(pm.appConfig.writablePathPrefix !== \"\")\n\t\t\tappFolder = pm.appConfig.writablePathPrefix + '/' + appFolder;\n\n\t\tif (cc.sys.isNative)\n\t\t\treturn jsb.fileUtils.getWritablePath() + appFolder;\n\t\telse\n\t\t\treturn appFolder;\n\t},\n\t/**\n * Checks if file exists at path\n * @param {String} path A file path to check\n * @returns {Boolean}\n */\n\tisFileExist: function (path)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t\treturn jsb.fileUtils.isFileExist(path);\n\t\telse\n\t\t\treturn cc.sys.localStorage.getItem(path) !== null;\n\t},\n\t/**\n * Removes file by path\n * @param {String} path A path where to remove a file\n */\n\tremoveFile: function (path)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t\tjsb.fileUtils.removeFile(path);\n\t\telse\n\t\t\tcc.sys.localStorage.removeItem(path);\n\t},\n\t/**\n * Creates a directory structure by path.\n * @param {String} path A full path to folder to create.\n * @returns {Boolean}\n */\n\tcreateDirectory: function (path)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t\treturn jsb.fileUtils.createDirectory(path);\n\n\t\treturn true;\n\t},\n\t/**\n * Returns a full path from relative.\n * @param {String} path Relative path to file\n * @returns {String}\n */\n\tfullPathForFileName: function (path)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t\treturn jsb.fileUtils.fullPathForFilename(path);\n\t\telse\n\t\t\treturn \"res/\" + path;\n\t},\n\t/**\n * Copies file from resource folder to some path.\n * @param {String} source A file path which is in resource folder.\n * @param {String} dest WHere to store a copy of file.\n */\n\tcopyFileFromRes: function (source, dest)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t{\n\t\t\tvar data = jsb.fileUtils.getStringFromFile(source);\n\t\t\tif(data)\n\t\t\t\tjsb.fileUtils.writeStringToFile(data, dest);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar resData = cc.loader.getRes(source);\n\t\t\tif(resData)\n\t\t\t\tcc.sys.localStorage.setItem(dest, JSON.stringify(resData));\n\t\t}\n\t},\n\t/**\n * Just copies files.\n * @param {String} source A file path to source file\n * @param {String} dest A file path where to copy\n */\n\tcopyFile: function (source, dest)\n\t{\n\t\tif (cc.sys.isNative)\n\t\t\tjsb.fileUtils.writeStringToFile(jsb.fileUtils.getStringFromFile(source), dest);\n\t\telse\n\t\t\tcc.sys.localStorage.setItem(dest, cc.sys.localStorage.getItem(source));\n\t},\n\t/**\n * Returns a file list in directory with full path.\n * @param {String} dir A directory where to get a file list.\n * @returns {Array}\n */\n\tgetFileList: function (dir)\n\t{\n\t\tvar fileList = [];\n\n\t\tif (cc.sys.isNative)\n\t\t{\n\t\t\tfileList = pm.getFileList(dir);\n\n\t\t\tfor (var i = 0; i < fileList.length; ++i)\n\t\t\t\tfileList[i] = dir + \"/\" + fileList[i];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var key in cc.sys.localStorage)\n\t\t\t{\n\t\t\t\tif (cc.isString(key) && key.indexOf(dir) === 0)\n\t\t\t\t\tfileList.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn fileList;\n\t},\n\t/**\n * This function reads content form plist file in Object format\n * @param {String} file A file path to file to read.\n * @returns {Object}\n */\n\tgetFileContent: function (file)\n\t{\n\t\treturn cc.loader.getRes(file);\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * Returns an array with arc points.\n * @param {Number} cx X Center\n * @param {Number} cy Y Center\n * @param {Number} r Radius\n * @param {Number} start_angle\n * @param {Number} arc_angle\n * @param {Number} num_segments Number of segments.\n * @returns {Array<{x:Number,y:Number}>}\n */\npm.utils.getArcPoints = function(cx, cy, r, start_angle, arc_angle, num_segments)\n{\n\tvar theta = arc_angle / (num_segments - 1);\n\tvar tangetial_factor = Math.tan(theta);\n\n\tvar radial_factor = Math.cos(theta);\n\n\tvar x = r * Math.cos(start_angle);\n\tvar y = r * Math.sin(start_angle);\n\n\tvar arc_vertices = [];\n\n\tfor(var ii = 0; ii < num_segments; ii++)\n\t{\n\t\tarc_vertices.push( cc.p(x + cx, y + cy));\n\n\t\tvar tx = -y;\n\t\tvar ty = x;\n\n\t\tx += tx * tangetial_factor;\n\t\ty += ty * tangetial_factor;\n\n\t\tx *= radial_factor;\n\t\ty *= radial_factor;\n\t}\n\treturn arc_vertices;\n};\n\npm.utils.logError = function(error)\n{\n\tif(error)\n\t\tcc.error(cc.isObject(error) ? JSON.stringify(error): error);\n};\n\npm.utils.SOCIAL_TYPE = {\n\tFB: \"fb\",\n\tVK: \"vk\"\n};\n\npm.utils.socialLogin = function(socialType, callback, state, codeChallenge)\n{\n\tvar url = pm.appConfig.authAddress + \"app/authorize/\" + socialType + \"/\" +\n\t\t\"?flow=oauth\" +\n\t\t\"&state=\" + state +\n\t\t\"&code_challenge=\" + codeChallenge +\n\t\t\"&client_id=\" + pm.appConfig.pmAppID +\n\t\t\"&redirect_uri=\";\n\n\tif(cc.sys.isNative)\n\t{\n\t\tswitch(socialType)\n\t\t{\n\t\t\tcase pm.utils.SOCIAL_TYPE.VK:\n\t\t\t\tvar scheme = \"piktomir\";\n\n\t\t\t\tif(pm.appConfig.appType === 'pm-k')\n\t\t\t\t\tscheme = \"piktomir-k\";\n\n url += encodeURIComponent(scheme + \"://piktomir.ru\");\n\n\t\t\t\tpm.socialLogin(url, function (code, state)\n\t\t\t\t{\n\t\t\t\t\tif (code === \"\" || state === \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback(new Error(\"Social auth error\"));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\tcode: code,\n\t\t\t\t\t\t\tstate: state,\n\t\t\t\t\t\t\tredirectUri: scheme + \"://piktomir.ru\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}.bind(pm.utils));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\telse\n\t{\n\t\tswitch(socialType)\n\t\t{\n\t\t\tcase pm.utils.SOCIAL_TYPE.VK:\n\n\t\t\t\tvar redirect = window.location.href;\n\t\t\t\tvar redirParts = window.location.href.split('/');\n\t\t\t\tvar lastPart = redirParts[redirParts.length - 1];\n\n\t\t\t\tif(lastPart !== \"\")\n\t\t\t\t\tredirect = redirect.replace(lastPart, 'login.html');\n\t\t\t\telse\n\t\t\t\t\tredirect = redirect + 'login.html';\n\n\t\t\t\turl += encodeURIComponent(redirect);\n\n\t\t\t\tvar win = window.open(url, 'Login VK', \"modal,width=665,height=370\");\n\n\t\t\t\twin.focus();\n\n\t\t\t\tvar loginCallback = function(event){\n\t\t\t\t\tif(event.origin === window.location.origin)\n\t\t\t\t\t{\n\t\t\t\t\t\twindow.removeEventListener(\"message\", loginCallback);\n\n\t\t\t\t\t\tif(!event.data || cc.isString(event.data))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcallback(new Error(event.data));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\t\tcode: event.data.code,\n\t\t\t\t\t\t\t\tstate: event.data.state,\n\t\t\t\t\t\t\t\tredirectUri: redirect\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\twindow.addEventListener(\"message\", loginCallback, false);\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\n\npm.utils.openURL = function (url)\n{\n\tif (cc.sys.isNative)\n\t{\n\t\tcc.Application.getInstance().openURL(url);\n\t}\n\telse\n\t{\n\t\tvar win = window.open(url, '_blank');\n\t\twin.focus();\n\t}\n};\n\n","/**\n * Created by Nikita Besshaposhnikov on 24.06.15.\n */\n\n/**\n * This namespace stores convert function for world format versions.\n * @namespace\n */\npm.worldConvertFunctionsK = {\n\t/**\n * Checks if namespace has a convert chain functions.\n * @param {Number} from Source format version\n * @param {Number} to Destination format version\n * @returns {boolean}\n */\n\thasConvertFunction: function (from, to)\n\t{\n\t\tif (Number(from) === Number(to))\n\t\t\treturn false;\n\n\t\tvar res = true;\n\n\t\tfor (var i = Number(from); i < Number(to); ++i)\n\t\t{\n\t\t\tif (!this.hasOwnProperty(\"_\" + i + \"_to_\" + (i + 1)))\n\t\t\t\tres = false;\n\t\t}\n\n\t\treturn res;\n\t},\n\n\t/**\n * Converts world levels from one format version to another\n * @param {String | Object} worldPathOrObject Path to world to convert or world Object.\n * @param {Number} to Destination format version\n * @returns {Object}\n */\n\tconvert: function (worldPathOrObject, to)\n\t{\n\t\tvar worldObject = cc.isString(worldPathOrObject) ? pm.fileUtils.readObject(worldPathOrObject) : worldPathOrObject;\n\n\t\tfor(var i = 0; i < worldObject.games.length; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < worldObject.games[i].levels.length; ++j)\n\t\t\t{\n\t\t\t\tvar level = this.convertLevel(worldObject.games[i].levels[j], to);\n\n\t\t\t\tif(!level)\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn worldObject;\n\t},\n\n\t/**\n * Converts level from one format version to another\n * @param {Object} level A level object\n * @param {Number} to Destination format version\n * @returns {Object}\n */\n\tconvertLevel: function (level, to)\n\t{\n\t\tvar fromVersion = Number(level.version);\n\t\tvar toVersion = Number(to);\n\n\t\tfor (var v = fromVersion; v < toVersion; ++v)\n\t\t{\n\t\t\tvar fn = this[\"_\" + v + \"_to_\" + (v + 1)];\n\n\t\t\tif(!fn)\n\t\t\t\treturn null;\n\n\t\t\tfn.call(this, level);\n\t\t}\n\n\t\tif(fromVersion - toVersion !== 0)\n\t\t{\n\t\t\tlevel.version = to;\n\t\t\tlevel.revision = -1;\n\t\t}\n\n\t\treturn level;\n\t},\n\n\t//Added PushBarrel\n\t_1_to_2: function (level) {},\n\n\t//Support of function blocks.\n\t_2_to_3: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor(var l =0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tvar newF = {typeName: \"FunctionData\"};\n\n\t\t\t\tnewF.functionID = f.functionID;\n\t\t\t\tnewF.hidden = f.hidden;\n\t\t\t\tnewF.givenText = f.givenText;\n\t\t\t\tnewF.doText = f.doText;\n\t\t\t\tnewF.blocks = [];\n\n\t\t\t\tvar newB = {typeName: \"FunctionBlock\"};\n\t\t\t\tnewB.width = f.width;\n\t\t\t\tnewB.height = f.height;\n\t\t\t\tnewB.resizable = f.resizable;\n\t\t\t\tnewB.minHeight = f.minHeight;\n\t\t\t\tnewB.maxHeight = f.maxHeight;\n\t\t\t\tnewB.minWidth = 0;\n\t\t\t\tnewB.maxWidth = 0;\n\t\t\t\tnewB.repeater = f.repeater;\n\t\t\t\tnewB.condition = f.condition;\n\t\t\t\tnewB.methods = f.methods;\n\n\t\t\t\tnewF.blocks.push(newB);\n\n\t\t\t\tvar newH = {typeName: \"FunctionHint\"};\n\t\t\t\tnewH.text = f.hint.text;\n\t\t\t\tnewH.funcBlockHints = [];\n\n\t\t\t\tif(f.hint.funcHint.length > 0)\n\t\t\t\t{\n\t\t\t\t\tnewH.funcBlockHints.push([]);\n\t\t\t\t\tfor (var h = 0; h < f.hint.funcHint.length; ++h)\n\t\t\t\t\t\tnewH.funcBlockHints[0].push(f.hint.funcHint[h]);\n\t\t\t\t}\n\t\t\t\tnewF.hint = newH;\n\n\t\t\t\tlevel.robots[k].functionData.splice(l, 1, newF);\n\t\t\t}\n\t\t}\n\t},\n\n\t//Update method and condition names. && remove method execute type\n\t_3_to_4: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\tswitch(block.condition)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase \"r4_w\": block.condition = \"r4_wall\"; break;\n\t\t\t\t\t\tcase \"r4_nw\": block.condition = \"r4_clear\"; break;\n\t\t\t\t\t\tcase \"r4_gig\": block.condition = \"rep_gig\"; break;\n\t\t\t\t\t\tcase \"r4_gib\": block.condition = \"rep_gib\"; break;\n\t\t\t\t\t\tcase \"push_w\":\n\t\t\t\t\t\tcase \"push_b\":\n\t\t\t\t\t\tcase \"push_c\":\n\t\t\t\t\t\t\tblock.condition = \"empty\"; break;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar methods = block.methods;\n\n\t\t\t\t\tfor(var m=0; m < methods.length; ++m)\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch(methods[m].methodID)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase \"move\": methods[m].methodID = \"r4_move\"; break;\n\t\t\t\t\t\t\tcase \"turn_left\": methods[m].methodID = \"r4_turn_left\"; break;\n\t\t\t\t\t\t\tcase \"turn_right\": methods[m].methodID = \"r4_turn_right\"; break;\n\t\t\t\t\t\t\tcase \"paint\": methods[m].methodID = \"rep_repair\"; break;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelete methods[m].executeType;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tf.hint.funcBlockHints = [];\n\t\t\t}\n\t\t}\n\t},\n\n\t//Use if-else in function blocks. Also added maxFunctionCount && maxBlockCount;\n\t_4_to_5: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\tblock.conditions = {};\n\n\t\t\t\t\tif(block.condition !== \"disable\")\n\t\t\t\t\t\tblock.conditions[0] = block.condition;\n\n\t\t\t\t\tdelete block.condition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Added pm.data.ProgramData and maxFunctionCount && maxBlockCount;\n\t_5_to_6: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tlevel.robots[k].programData = {typeName: \"ProgramData\"};\n\t\t\tlevel.robots[k].programData.canEditProgramPattern = false;\n\t\t\tlevel.robots[k].programData.maxFunctionCount = 0;\n\t\t\tlevel.robots[k].programData.maxMethodCount = 0;\n\t\t\tlevel.robots[k].programData.functions = [];\n\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor (var b = 0; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tdelete f.blocks[b].resizable;\n\t\t\t\t\tdelete f.blocks[b].maxWidth;\n\t\t\t\t\tdelete f.blocks[b].maxHeight;\n\t\t\t\t\tdelete f.blocks[b].minWidth;\n\t\t\t\t\tdelete f.blocks[b].minHeight;\n\t\t\t\t}\n\n\t\t\t\tlevel.robots[k].programData.functions.push(f);\n\t\t\t}\n\n\t\t\tdelete level.robots[k].functionData;\n\t\t}\n\t},\n\n\t//Added global robots && renamed counter robots && change base robot logic in AL && renamed counters method names\n\t_6_to_7: function (level)\n\t{\n\t\tlevel.globalRobotData = {typeName: \"map\"};\n\n\t\tlevel.startRobotIndex = level.baseRobotIndex;\n\t\tdelete level.baseRobotIndex;\n\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tif(level.robots[k].typeName === \"Counter\")\n\t\t\t{\n\t\t\t\tlevel.globalRobotData[\"e_counter\"] = [];\n\n\t\t\t\tfor(var m = 0; m < level.maps.length;++ m)\n\t\t\t\t\tdelete level.maps[m].robotsTaskList[level.robots[k].id];\n\n\t\t\t\tlevel.robots.splice(k, 1);\n\t\t\t}\n\t\t\telse if(level.robots[k].typeName === \"LittleCounter\")\n\t\t\t{\n\t\t\t\tlevel.globalRobotData[\"counter\"] = [];\n\n\t\t\t\tfor(var m = 0; m < level.maps.length;++ m)\n\t\t\t\t\tdelete level.maps[m].robotsTaskList[level.robots[k].id];\n\n\t\t\t\tlevel.robots.splice(k, 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlevel.robots[k].childRobotID = -1;\n\n\t\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t\t{\n\t\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\t\tif(block.repeater === \"cnt_left\" || block.repeater === \"cnt_right\")\n\t\t\t\t\t\t\tblock.repeater = 1;\n\n\t\t\t\t\t\tfor(var m = 0; m < block.methods.length; ++m)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(block.methods[m].methodID === \"inc\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"cnt_inc\";\n\t\t\t\t\t\t\telse if(block.methods[m].methodID === \"dec\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"cnt_dec\";\n\t\t\t\t\t\t\telse if(block.methods[m].methodID === \"set_left\" ||\n block.methods[m].methodID === \"set_right\" ||\n block.methods[m].methodID === \"swap_counter\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"empty\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tif(level.globalRobotData[\"e_counter\"])\n\t\t{\n\t\t\tlevel.globalRobotData[\"e_counter\"].push({typeName: \"GRobotDataGroup\"});\n\t\t\tlevel.globalRobotData[\"e_counter\"][0].robots = [];\n\t\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t\t\tlevel.globalRobotData[\"e_counter\"][0].robots.push(level.robots[k].id);\n\n\t\t}\n\n\t\tif(level.globalRobotData[\"counter\"])\n\t\t{\n\t\t\tlevel.globalRobotData[\"counter\"].push({typeName: \"GRobotDataGroup\"});\n\t\t\tlevel.globalRobotData[\"counter\"][0].robots = [];\n\n\t\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t\t\tlevel.globalRobotData[\"counter\"][0].robots.push(level.robots[k].id);\n\n\t\t}\n\t},\n\n\t//Refactor global robot data && add common config for extended counter\n\t_7_to_8: function (level)\n\t{\n\t\tfor(var gRobot in level.globalRobotData)\n\t\t{\n\t\t\tif (cc.isArray(level.globalRobotData[gRobot]))\n\t\t\t{\n\t\t\t\tvar oldData = level.globalRobotData[gRobot];\n\t\t\t\tlevel.globalRobotData[gRobot] = {typeName: \"map\"};\n\t\t\t\tlevel.globalRobotData[gRobot].robotDataGroups = oldData;\n\n\t\t\t\tif (gRobot === \"e_counter\")\n\t\t\t\t\tlevel.globalRobotData[gRobot].config = {useCompareConditions: true};\n\t\t\t}\n\t\t}\n\t},\n\n\t//Block types\n\t_8_to_9: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\tfor (var b = 0; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\t\t\t\t\tblock.type = 0;\n\t\t\t\t\tblock.headerValue = 0;\n\n\t\t\t\t\tif(block.repeater !== -2 &&\n Object.keys(block.conditions).length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 3;\n\t\t\t\t\t\tblock.headerValue = block.conditions[Object.keys(block.conditions)[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse if(block.repeater !== -2)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 2;\n\n\t\t\t\t\t\tif(block.repeater !== -1)\n\t\t\t\t\t\t\tblock.headerValue = block.repeater;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tblock.headerValue = 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if(Object.keys(block.conditions).length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 1;\n\t\t\t\t\t\tblock.headerValue = block.conditions;\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete block.repeater;\n\t\t\t\t\tdelete block.conditions;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Move task to level\n\t_9_to_10: function (level)\n\t{\n\t\tlevel.taskList = {typeName: \"TaskList\"};\n\t\tlevel.taskList.tasks = {typeName: \"map\"};\n\t\tlevel.taskList.type = 0;\n\n\t\tfor(var m =0; m < level.maps.length; ++m)\n\t\t{\n\t\t\tvar map = level.maps[m];\n\t\t\tvar tasks = map.robotsTaskList;\n\n\t\t\tfor(var robotID in tasks)\n\t\t\t{\n\t\t\t\tif(!tasks[robotID].hasOwnProperty(\"typeName\"))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfor(var taskType in tasks[robotID].tasks)\n\t\t\t\t{\n\t\t\t\t\tif(!tasks[robotID].tasks[taskType].hasOwnProperty(\"typeName\"))\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(!level.taskList.tasks[taskType])\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (Number(taskType))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"RepairTask\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"PositionTask4\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"PushTask\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (Number(taskType))\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tif(level.taskList.tasks[taskType].data[m] === undefined)\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] = 0;\n\n\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] += tasks[robotID].tasks[taskType].needToRepair;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tif(level.taskList.tasks[taskType].data[m] === undefined)\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] = {};\n\n\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m][robotID] = tasks[robotID].tasks[taskType].targetPoint;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdelete map.robotsTaskList;\n\t\t}\n\t},\n\n\t//Add tutorials && delete unused property && some validation corrections\n\t_10_to_11: function (level)\n\t{\n\t\tlevel.isTutorial = false;\n\t\tlevel.tutorialScenario = {};\n\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\tdelete f.funcBlockHints;\n\t\t\t}\n\t\t}\n\n\t\tif(level.typeName === \"PushLevel\")\n\t\t{\n\t\t\tfor(var m =0; m < level.maps.length; ++m)\n\t\t\t{\n\t\t\t\tvar map = level.maps[m];\n\n\t\t\t\tfor(var x = 0 ; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor(var y = 0 ; y < map.height; ++y)\n\n\t\t\t\t\t\tmap.mapElements[y][x].typeName = \"PushMapElement\";\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Rename items to objects && remove separation of network and local games\n\t_11_to_12: function (level)\n\t{\n\t\tfor (var type in level.taskList.tasks)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase \"0\":\n\t\t\t\t\tlevel.taskList.tasks[\"repair\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"1\":\n\t\t\t\t\tlevel.taskList.tasks[\"position4\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"2\":\n\t\t\t\t\tlevel.taskList.tasks[\"push\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"3\":\n\t\t\t\t\tlevel.taskList.tasks[\"ex_counter_memory\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"4\":\n\t\t\t\t\tlevel.taskList.tasks[\"light\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor(var m = 0; m < level.maps.length; ++m)\n\t\t{\n\t\t\tvar map = level.maps[m];\n\t\t\tmap.objects = map.items;\n\t\t\tdelete map.items;\n\t\t}\n\t},\n\n\t//Remove global robot data added global robot config\n\t_12_to_13: function (level)\n\t{\n\t\tlevel.globalRobotConfig = new pm.data.MapClass();\n\n\t\tfor (var robot in level.globalRobotData)\n\t\t{\n\t\t\tif (cc.isObject(level.globalRobotData[robot]))\n\t\t\t\tlevel.globalRobotConfig[robot] = level.globalRobotData[robot].config;\n\t\t}\n\n\t\tdelete level.globalRobotData;\n\t},\n\n\t_13_to_14: function (level)\n\t{\n\t\tif (level.typeName === \"PushLevel\")\n\t\t{\n\t\t\tfor (var taskType in level.taskList.tasks)\n\t\t\t{\n\t\t\t\tif (taskType === undefined)\n\t\t\t\t{\n\t\t\t\t\tvar task = level.taskList.tasks[taskType];\n\n\t\t\t\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = task;\n\n\t\t\t\t\tdelete level.taskList.tasks[taskType];\n\t\t\t\t}\n\t\t\t\telse if (taskType === \"undefined\")\n\t\t\t\t{\n\t\t\t\t\tvar task = level.taskList.tasks[taskType];\n\n\t\t\t\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = task;\n\n\t\t\t\t\tdelete level.taskList.tasks[taskType];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_14_to_15: function(level)\n\t{\n\t\tlevel.useProgramRecognizer = true;\n\n\t\tif (level.robots)\n\t\t{\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar width = 0;\n\t\t\t\tvar height = 0;\n\n\t\t\t\tif (level.robots[i].programData)\n\t\t\t\t{\n\t\t\t\t\tfor (var j = 0; j < level.robots[i].programData.functions.length; ++j)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar func = level.robots[i].programData.functions[j];\n\n\t\t\t\t\t\tfor (var t = 0; t < func.blocks.length; ++t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar block = func.blocks[t];\n\n\t\t\t\t\t\t\tif (block.type !== 0)\n\t\t\t\t\t\t\t\twidth = Math.max(width, block.width+1);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\twidth = Math.max(width, block.width);\n\n\t\t\t\t\t\t\theight += block.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\theight += 2 * (level.robots[i].programData.functions.length - 1);\n\n\t\t\t\t\tvar programData = {\n\t\t\t\t\t\ttypeName: \"ProgramData\",\n\t\t\t\t\t\tcanEditProgramPattern: false,\n\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\theight: 0,\n\t\t\t\t\t\tsymbols: []\n\t\t\t\t\t};\n\n\t\t\t\t\tprogramData.width = width;\n\t\t\t\t\tprogramData.height = height;\n\n\t\t\t\t\tvar symbols = [];\n\n\t\t\t\t\tfor (var j = 0; j < level.robots[i].programData.functions.length; ++j)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar func = level.robots[i].programData.functions[j];\n\n\t\t\t\t\t\tif (j!==0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Function;\n\t\t\t\t\t\t\tsymbol.value = func.functionID;\n\n\t\t\t\t\t\t\tsymbolString.push(symbol);\n\n\t\t\t\t\t\t\tfor (var f = 0; f < width-1; ++f)\n\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var t = 0; t < func.blocks.length; ++t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar block = func.blocks[t];\n\n\t\t\t\t\t\t\tif (block.type === 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (var x = 0; x < block.height; ++x)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvar method = block.methods[x * block.width + y];\n\n\t\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (var p = block.width; p < width; ++p)\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\tvalue: 0\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tsymbol.type = block.type;\n\t\t\t\t\t\t\t\tsymbol.value = block.headerValue;\n\n\t\t\t\t\t\t\t\tif (symbol.type === pm.SymbolType.Condition)\n\t\t\t\t\t\t\t\t\tsymbol.value = block.headerValue[\"0\"];\n\n\t\t\t\t\t\t\t\tvar symbolString = [];\n\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\n\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar method = block.methods[y];\n\n\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor (var p = block.width; p < width-1; ++p)\n\n\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\n\t\t\t\t\t\t\t\tfor (var x = 1; x < block.height; ++x)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar symbolString = [];\n\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (var p = block.width; p < width; ++p)\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (j !== level.robots[i].programData.functions.length - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\tfor (var f = 0; f < width; ++f)\n\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tprogramData.symbols = symbols;\n\n\t\t\t\t\tlevel.robots[i].programData = programData;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar programDataMap = new pm.data.MapClass();\n\n\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar programData = level.robots[i].programData;\n\t\t\tvar groupID = level.robots[i].id;\n\n\t\t\tlevel.robots[i].groupID = groupID;\n\t\t\tprogramDataMap[groupID] = programData;\n\n\t\t\tdelete level.robots[i].programData;\n\t\t}\n\n\t\tlevel.programData = programDataMap;\n\t},\n\n\t_15_to_16: function(level)\n\t{\n\t\tif (level.typeName === \"LegoLevel\" || level.typeName === \"BLERobotLevel\")\n\t\t{\n\t\t\tlevel.typeName = \"PhysicalRobotLevel\";\n\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\n\t\t\t\tlevel.robots[i].typeName = \"PhysicalRobot\";\n\n\t\t\tfor (var i = 0; i < level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tvar map = level.maps[i];\n\n\t\t\t\tmap.typeName = \"PhysicalRobotMap\";\n\n\t\t\t\tfor (var x = 0 ; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor (var y = 0 ; y < map.height; ++y)\n\t\t\t\t\t\tmap.mapElements[y][x].typeName = \"PhysicalRobotMapElement\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdelete level.taskList.type;\n\t},\n\n\t_16_to_17: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tvar newProgramData = {\n\t\t\t\t\ttypeName: \"ProgramInfo\",\n\t\t\t\t\tcurrentIndex: 0,\n\t\t\t\t\tprogramDataArray: []\n\t\t\t\t};\n\n\t\t\t\tnewProgramData.programDataArray[0] = level.programData[o];\n\n\t\t\t\tnewProgramData.programDataArray[0].maxFunctionCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxMethodCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxRepeaterCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxConditionCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxCondRepeaterCount = 0;\n\n\t\t\t\tdelete level.programData[o];\n\t\t\t\tlevel.programData[o] = newProgramData;\n\t\t\t}\n\t\t}\n\t},\n\n\t_17_to_18: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\n\t\t\t\t\tprogramData.maxMethodCount = 10000;\n\t\t\t\t\tprogramData.usedMethodsCount = 0;\n\t\t\t\t\tprogramData.useGroupButtons = true;\n\t\t\t\t\tprogramData.funcsMap = {};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_18_to_19: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\n\t\t\t\t\tprogramData.maxMethodCount = 10000;\n\t\t\t\t\tprogramData.usedMethodsCount = 0;\n\t\t\t\t\tprogramData.useGroupButtons = true;\n\t\t\t\t\tprogramData.funcsMap = {};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_19_to_20: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\t\t\t\t\tif(programData.alloc.indexOf(pm.AllocVals.INT) !== -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tprogramData.alloc.splice(programData.alloc.indexOf(pm.AllocVals.INT));\n\t\t\t\t\t}\n\t\t\t\t\tif(programData.alloc.indexOf(pm.AllocVals.BOOL) !== -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tprogramData.alloc.splice(programData.alloc.indexOf(pm.AllocVals.BOOL));\n\t\t\t\t\t}\n\t\t\t\t\tvar nodesList = [programData.programTree.head]\n\n\t\t\t\t\twhile(nodesList.length !== 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar node = nodesList.pop();\n\t\t\t\t\t\tvar child = null;\n\t\t\t\t\t\tfor(var i = 0;i < node.children.length;i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tchild = node.children[i];\n\t\t\t\t\t\t\tif(child.type === pm.data.Node.Type.Identifier)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif(child.value === \"a0\")\n\t\t\t\t\t\t\t\t\tchild.value = \"x\";\n\t\t\t\t\t\t\t\telse if(child.value === \"a1\")\n\t\t\t\t\t\t\t\t\tchild.value = \"y\";\n\t\t\t\t\t\t\t\telse if(child.value === \"a2\")\n\t\t\t\t\t\t\t\t\tchild.value = \"k\";\n\t\t\t\t\t\t\t\telse if(child.value === \"п0\")\n\t\t\t\t\t\t\t\t\tchild.value = \"a\";\n\t\t\t\t\t\t\t\telse if(child.value === \"п1\")\n\t\t\t\t\t\t\t\t\tchild.value = \"b\";\n\t\t\t\t\t\t\t\telse if(child.value === \"п2\")\n\t\t\t\t\t\t\t\t\tchild.value = \"c\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if(child.children.length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnodesList.push(child);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_20_to_21: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\t\t\t\t\tprogramData.useCustomFuncs = false;\n\t\t\t\t\tprogramData.customFuncs = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_21_to_22: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\t\t\t\t\tprogramData.useCustomFuncs = false;\n\t\t\t\t\tprogramData.customFuncs = [];\n\t\t\t\t\tvar nodesList = [programData.programTree.head]\n\n\t\t\t\t\twhile(nodesList.length !== 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar node = nodesList.pop();\n\t\t\t\t\t\tvar child = null;\n\t\t\t\t\t\tfor(var i = 0;i < node.children.length;i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tchild = node.children[i];\n\t\t\t\t\t\t\tif(child.type === pm.data.Node.Type.Body)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tchild._nodeName = pm.BodyTag;\n\t\t\t\t\t\t\t\tif(child.value === pm.IFThenTag || child.value === pm.IFElseTag)\n\t\t\t\t\t\t\t\t\tchild._nodeName = child.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(child.children.length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnodesList.push(child);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 24.06.15.\n */\n\n/**\n * This namespace stores convert function for world format versions.\n * @namespace\n */\npm.worldConvertFunctionsP = {\n\t/**\n * Checks if namespace has a convert chain functions.\n * @param {Number} from Source format version\n * @param {Number} to Destination format version\n * @returns {boolean}\n */\n\thasConvertFunction: function (from, to)\n\t{\n\t\tif (Number(from) === Number(to))\n\t\t\treturn false;\n\n\t\tvar res = true;\n\n\t\tfor (var i = Number(from); i < Number(to); ++i)\n\t\t{\n\t\t\tif (!this.hasOwnProperty(\"_\" + i + \"_to_\" + (i + 1)))\n\t\t\t\tres = false;\n\t\t}\n\n\t\treturn res;\n\t},\n\n\t/**\n * Converts world levels from one format version to another\n * @param {String | Object} worldPathOrObject Path to world to convert or world Object.\n * @param {Number} to Destination format version\n * @returns {Object}\n */\n\tconvert: function (worldPathOrObject, to)\n\t{\n\t\tvar worldObject = cc.isString(worldPathOrObject) ? pm.fileUtils.readObject(worldPathOrObject) : worldPathOrObject;\n\n\t\tfor(var i = 0; i < worldObject.games.length; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < worldObject.games[i].levels.length; ++j)\n\t\t\t{\n\t\t\t\tvar level = this.convertLevel(worldObject.games[i].levels[j], to);\n\n\t\t\t\tif(!level)\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn worldObject;\n\t},\n\n\t/**\n * Converts level from one format version to another\n * @param {Object} level A level object\n * @param {Number} to Destination format version\n * @returns {Object}\n */\n\tconvertLevel: function (level, to)\n\t{\n\t\tvar fromVersion = Number(level.version);\n\t\tvar toVersion = Number(to);\n\n\t\tfor (var v = fromVersion; v < toVersion; ++v)\n\t\t{\n\t\t\tvar fn = this[\"_\" + v + \"_to_\" + (v + 1)];\n\n\t\t\tif(!fn)\n\t\t\t\treturn null;\n\n\t\t\tfn.call(this, level);\n\t\t}\n\n\t\tif(fromVersion - toVersion !== 0)\n\t\t{\n\t\t\tlevel.version = to;\n\t\t\tlevel.revision = -1;\n\t\t}\n\n\t\treturn level;\n\t},\n\n\t//Added PushBarrel\n\t_1_to_2: function (level) {},\n\n\t//Support of function blocks.\n\t_2_to_3: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor(var l =0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tvar newF = {typeName: \"FunctionData\"};\n\n\t\t\t\tnewF.functionID = f.functionID;\n\t\t\t\tnewF.hidden = f.hidden;\n\t\t\t\tnewF.givenText = f.givenText;\n\t\t\t\tnewF.doText = f.doText;\n\t\t\t\tnewF.blocks = [];\n\n\t\t\t\tvar newB = {typeName: \"FunctionBlock\"};\n\t\t\t\tnewB.width = f.width;\n\t\t\t\tnewB.height = f.height;\n\t\t\t\tnewB.resizable = f.resizable;\n\t\t\t\tnewB.minHeight = f.minHeight;\n\t\t\t\tnewB.maxHeight = f.maxHeight;\n\t\t\t\tnewB.minWidth = 0;\n\t\t\t\tnewB.maxWidth = 0;\n\t\t\t\tnewB.repeater = f.repeater;\n\t\t\t\tnewB.condition = f.condition;\n\t\t\t\tnewB.methods = f.methods;\n\n\t\t\t\tnewF.blocks.push(newB);\n\n\t\t\t\tvar newH = {typeName: \"FunctionHint\"};\n\t\t\t\tnewH.text = f.hint.text;\n\t\t\t\tnewH.funcBlockHints = [];\n\n\t\t\t\tif(f.hint.funcHint.length > 0)\n\t\t\t\t{\n\t\t\t\t\tnewH.funcBlockHints.push([]);\n\t\t\t\t\tfor (var h = 0; h < f.hint.funcHint.length; ++h)\n\t\t\t\t\t\tnewH.funcBlockHints[0].push(f.hint.funcHint[h]);\n\t\t\t\t}\n\t\t\t\tnewF.hint = newH;\n\n\t\t\t\tlevel.robots[k].functionData.splice(l, 1, newF);\n\t\t\t}\n\t\t}\n\t},\n\n\t//Update method and condition names. && remove method execute type\n\t_3_to_4: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\tswitch(block.condition)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase \"r4_w\": block.condition = \"r4_wall\"; break;\n\t\t\t\t\t\tcase \"r4_nw\": block.condition = \"r4_clear\"; break;\n\t\t\t\t\t\tcase \"r4_gig\": block.condition = \"rep_gig\"; break;\n\t\t\t\t\t\tcase \"r4_gib\": block.condition = \"rep_gib\"; break;\n\t\t\t\t\t\tcase \"push_w\":\n\t\t\t\t\t\tcase \"push_b\":\n\t\t\t\t\t\tcase \"push_c\":\n\t\t\t\t\t\t\tblock.condition = \"empty\"; break;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar methods = block.methods;\n\n\t\t\t\t\tfor(var m=0; m < methods.length; ++m)\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch(methods[m].methodID)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase \"move\": methods[m].methodID = \"r4_move\"; break;\n\t\t\t\t\t\t\tcase \"turn_left\": methods[m].methodID = \"r4_turn_left\"; break;\n\t\t\t\t\t\t\tcase \"turn_right\": methods[m].methodID = \"r4_turn_right\"; break;\n\t\t\t\t\t\t\tcase \"paint\": methods[m].methodID = \"rep_repair\"; break;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelete methods[m].executeType;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tf.hint.funcBlockHints = [];\n\t\t\t}\n\t\t}\n\t},\n\n\t//Use if-else in function blocks. Also added maxFunctionCount && maxBlockCount;\n\t_4_to_5: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\tblock.conditions = {};\n\n\t\t\t\t\tif(block.condition !== \"disable\")\n\t\t\t\t\t\tblock.conditions[0] = block.condition;\n\n\t\t\t\t\tdelete block.condition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Added pm.data.ProgramData and maxFunctionCount && maxBlockCount;\n\t_5_to_6: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tlevel.robots[k].programData = {typeName: \"ProgramData\"};\n\t\t\tlevel.robots[k].programData.canEditProgramPattern = false;\n\t\t\tlevel.robots[k].programData.maxFunctionCount = 0;\n\t\t\tlevel.robots[k].programData.maxMethodCount = 0;\n\t\t\tlevel.robots[k].programData.functions = [];\n\n\t\t\tfor (var l = 0; l < level.robots[k].functionData.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].functionData[l];\n\n\t\t\t\tfor (var b = 0; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tdelete f.blocks[b].resizable;\n\t\t\t\t\tdelete f.blocks[b].maxWidth;\n\t\t\t\t\tdelete f.blocks[b].maxHeight;\n\t\t\t\t\tdelete f.blocks[b].minWidth;\n\t\t\t\t\tdelete f.blocks[b].minHeight;\n\t\t\t\t}\n\n\t\t\t\tlevel.robots[k].programData.functions.push(f);\n\t\t\t}\n\n\t\t\tdelete level.robots[k].functionData;\n\t\t}\n\t},\n\n\t//Added global robots && renamed counter robots && change base robot logic in AL && renamed counters method names\n\t_6_to_7: function (level)\n\t{\n\t\tlevel.globalRobotData = {typeName: \"map\"};\n\n\t\tlevel.startRobotIndex = level.baseRobotIndex;\n\t\tdelete level.baseRobotIndex;\n\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tif(level.robots[k].typeName === \"Counter\")\n\t\t\t{\n\t\t\t\tlevel.globalRobotData[\"e_counter\"] = [];\n\n\t\t\t\tfor(var m = 0; m < level.maps.length;++ m)\n\t\t\t\t\tdelete level.maps[m].robotsTaskList[level.robots[k].id];\n\n\t\t\t\tlevel.robots.splice(k, 1);\n\t\t\t}\n\t\t\telse if(level.robots[k].typeName === \"LittleCounter\")\n\t\t\t{\n\t\t\t\tlevel.globalRobotData[\"counter\"] = [];\n\n\t\t\t\tfor(var m = 0; m < level.maps.length;++ m)\n\t\t\t\t\tdelete level.maps[m].robotsTaskList[level.robots[k].id];\n\n\t\t\t\tlevel.robots.splice(k, 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlevel.robots[k].childRobotID = -1;\n\n\t\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t\t{\n\t\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\t\tfor(var b =0 ; b < f.blocks.length; ++b)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar block = f.blocks[b];\n\n\t\t\t\t\t\tif(block.repeater === \"cnt_left\" || block.repeater === \"cnt_right\")\n\t\t\t\t\t\t\tblock.repeater = 1;\n\n\t\t\t\t\t\tfor(var m = 0; m < block.methods.length; ++m)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(block.methods[m].methodID === \"inc\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"cnt_inc\";\n\t\t\t\t\t\t\telse if(block.methods[m].methodID === \"dec\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"cnt_dec\";\n\t\t\t\t\t\t\telse if(block.methods[m].methodID === \"set_left\" ||\n block.methods[m].methodID === \"set_right\" ||\n block.methods[m].methodID === \"swap_counter\")\n\t\t\t\t\t\t\t\tblock.methods[m].methodID = \"empty\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tif(level.globalRobotData[\"e_counter\"])\n\t\t{\n\t\t\tlevel.globalRobotData[\"e_counter\"].push({typeName: \"GRobotDataGroup\"});\n\t\t\tlevel.globalRobotData[\"e_counter\"][0].robots = [];\n\t\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t\t\tlevel.globalRobotData[\"e_counter\"][0].robots.push(level.robots[k].id);\n\n\t\t}\n\n\t\tif(level.globalRobotData[\"counter\"])\n\t\t{\n\t\t\tlevel.globalRobotData[\"counter\"].push({typeName: \"GRobotDataGroup\"});\n\t\t\tlevel.globalRobotData[\"counter\"][0].robots = [];\n\n\t\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t\t\tlevel.globalRobotData[\"counter\"][0].robots.push(level.robots[k].id);\n\n\t\t}\n\t},\n\n\t//Refactor global robot data && add common config for extended counter\n\t_7_to_8: function (level)\n\t{\n\t\tfor(var gRobot in level.globalRobotData)\n\t\t{\n\t\t\tif (cc.isArray(level.globalRobotData[gRobot]))\n\t\t\t{\n\t\t\t\tvar oldData = level.globalRobotData[gRobot];\n\t\t\t\tlevel.globalRobotData[gRobot] = {typeName: \"map\"};\n\t\t\t\tlevel.globalRobotData[gRobot].robotDataGroups = oldData;\n\n\t\t\t\tif (gRobot === \"e_counter\")\n\t\t\t\t\tlevel.globalRobotData[gRobot].config = {useCompareConditions: true};\n\t\t\t}\n\t\t}\n\t},\n\n\t//Block types\n\t_8_to_9: function (level)\n\t{\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\tfor (var b = 0; b < f.blocks.length; ++b)\n\t\t\t\t{\n\t\t\t\t\tvar block = f.blocks[b];\n\t\t\t\t\tblock.type = 0;\n\t\t\t\t\tblock.headerValue = 0;\n\n\t\t\t\t\tif(block.repeater !== -2 &&\n Object.keys(block.conditions).length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 3;\n\t\t\t\t\t\tblock.headerValue = block.conditions[Object.keys(block.conditions)[0]];\n\t\t\t\t\t}\n\t\t\t\t\telse if(block.repeater !== -2)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 2;\n\n\t\t\t\t\t\tif(block.repeater !== -1)\n\t\t\t\t\t\t\tblock.headerValue = block.repeater;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tblock.headerValue = 1;\n\t\t\t\t\t}\n\t\t\t\t\telse if(Object.keys(block.conditions).length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tblock.type = 1;\n\t\t\t\t\t\tblock.headerValue = block.conditions;\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete block.repeater;\n\t\t\t\t\tdelete block.conditions;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Move task to level\n\t_9_to_10: function (level)\n\t{\n\t\tlevel.taskList = {typeName: \"TaskList\"};\n\t\tlevel.taskList.tasks = {typeName: \"map\"};\n\t\tlevel.taskList.type = 0;\n\n\t\tfor(var m =0; m < level.maps.length; ++m)\n\t\t{\n\t\t\tvar map = level.maps[m];\n\t\t\tvar tasks = map.robotsTaskList;\n\n\t\t\tfor(var robotID in tasks)\n\t\t\t{\n\t\t\t\tif(!tasks[robotID].hasOwnProperty(\"typeName\"))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfor(var taskType in tasks[robotID].tasks)\n\t\t\t\t{\n\t\t\t\t\tif(!tasks[robotID].tasks[taskType].hasOwnProperty(\"typeName\"))\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(!level.taskList.tasks[taskType])\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (Number(taskType))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"RepairTask\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"PositionTask4\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType] = {typeName: \"PushTask\"};\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data = {};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (Number(taskType))\n\t\t\t\t\t{\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tif(level.taskList.tasks[taskType].data[m] === undefined)\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] = 0;\n\n\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] += tasks[robotID].tasks[taskType].needToRepair;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tif(level.taskList.tasks[taskType].data[m] === undefined)\n\t\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m] = {};\n\n\t\t\t\t\t\t\tlevel.taskList.tasks[taskType].data[m][robotID] = tasks[robotID].tasks[taskType].targetPoint;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdelete map.robotsTaskList;\n\t\t}\n\t},\n\n\t//Add tutorials && delete unused property && some validation corrections\n\t_10_to_11: function (level)\n\t{\n\t\tlevel.isTutorial = false;\n\t\tlevel.tutorialScenario = {};\n\n\t\tfor(var k =0; k < level.robots.length; ++k)\n\t\t{\n\t\t\tfor (var l = 0; l < level.robots[k].programData.functions.length; ++l)\n\t\t\t{\n\t\t\t\tvar f = level.robots[k].programData.functions[l];\n\n\t\t\t\tdelete f.funcBlockHints;\n\t\t\t}\n\t\t}\n\n\t\tif(level.typeName === \"PushLevel\")\n\t\t{\n\t\t\tfor(var m =0; m < level.maps.length; ++m)\n\t\t\t{\n\t\t\t\tvar map = level.maps[m];\n\n\t\t\t\tfor(var x = 0 ; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor(var y = 0 ; y < map.height; ++y)\n\n\t\t\t\t\t\tmap.mapElements[y][x].typeName = \"PushMapElement\";\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Rename items to objects && remove separation of network and local games\n\t_11_to_12: function (level)\n\t{\n\t\tfor (var type in level.taskList.tasks)\n\t\t{\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase \"0\":\n\t\t\t\t\tlevel.taskList.tasks[\"repair\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"1\":\n\t\t\t\t\tlevel.taskList.tasks[\"position4\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"2\":\n\t\t\t\t\tlevel.taskList.tasks[\"push\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"3\":\n\t\t\t\t\tlevel.taskList.tasks[\"ex_counter_memory\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"4\":\n\t\t\t\t\tlevel.taskList.tasks[\"light\"] = level.taskList.tasks[type];\n\t\t\t\t\tdelete level.taskList.tasks[type];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor(var m = 0; m < level.maps.length; ++m)\n\t\t{\n\t\t\tvar map = level.maps[m];\n\t\t\tmap.objects = map.items;\n\t\t\tdelete map.items;\n\t\t}\n\t},\n\n\t//Remove global robot data added global robot config\n\t_12_to_13: function (level)\n\t{\n\t\tlevel.globalRobotConfig = new pm.data.MapClass();\n\n\t\tfor (var robot in level.globalRobotData)\n\t\t{\n\t\t\tif (cc.isObject(level.globalRobotData[robot]))\n\t\t\t\tlevel.globalRobotConfig[robot] = level.globalRobotData[robot].config;\n\t\t}\n\n\t\tdelete level.globalRobotData;\n\t},\n\n\t_13_to_14: function (level)\n\t{\n\t\tif (level.typeName === \"PushLevel\")\n\t\t{\n\t\t\tfor (var taskType in level.taskList.tasks)\n\t\t\t{\n\t\t\t\tif (taskType === undefined)\n\t\t\t\t{\n\t\t\t\t\tvar task = level.taskList.tasks[taskType];\n\n\t\t\t\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = task;\n\n\t\t\t\t\tdelete level.taskList.tasks[taskType];\n\t\t\t\t}\n\t\t\t\telse if (taskType === \"undefined\")\n\t\t\t\t{\n\t\t\t\t\tvar task = level.taskList.tasks[taskType];\n\n\t\t\t\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = task;\n\n\t\t\t\t\tdelete level.taskList.tasks[taskType];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_14_to_15: function(level)\n\t{\n\t\tlevel.useProgramRecognizer = true;\n\n\t\tif (level.robots)\n\t\t{\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar width = 0;\n\t\t\t\tvar height = 0;\n\n\t\t\t\tif (level.robots[i].programData)\n\t\t\t\t{\n\t\t\t\t\tfor (var j = 0; j < level.robots[i].programData.functions.length; ++j)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar func = level.robots[i].programData.functions[j];\n\n\t\t\t\t\t\tfor (var t = 0; t < func.blocks.length; ++t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar block = func.blocks[t];\n\n\t\t\t\t\t\t\tif (block.type !== 0)\n\t\t\t\t\t\t\t\twidth = Math.max(width, block.width+1);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\twidth = Math.max(width, block.width);\n\n\t\t\t\t\t\t\theight += block.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\theight += 2 * (level.robots[i].programData.functions.length - 1);\n\n\t\t\t\t\tvar programData = {\n\t\t\t\t\t\ttypeName: \"ProgramData\",\n\t\t\t\t\t\tcanEditProgramPattern: false,\n\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\theight: 0,\n\t\t\t\t\t\tsymbols: []\n\t\t\t\t\t};\n\n\t\t\t\t\tprogramData.width = width;\n\t\t\t\t\tprogramData.height = height;\n\n\t\t\t\t\tvar symbols = [];\n\n\t\t\t\t\tfor (var j = 0; j < level.robots[i].programData.functions.length; ++j)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar func = level.robots[i].programData.functions[j];\n\n\t\t\t\t\t\tif (j!==0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Function;\n\t\t\t\t\t\t\tsymbol.value = func.functionID;\n\n\t\t\t\t\t\t\tsymbolString.push(symbol);\n\n\t\t\t\t\t\t\tfor (var f = 0; f < width-1; ++f)\n\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var t = 0; t < func.blocks.length; ++t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar block = func.blocks[t];\n\n\t\t\t\t\t\t\tif (block.type === 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfor (var x = 0; x < block.height; ++x)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvar method = block.methods[x * block.width + y];\n\n\t\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (var p = block.width; p < width; ++p)\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\tvalue: 0\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tsymbol.type = block.type;\n\t\t\t\t\t\t\t\tsymbol.value = block.headerValue;\n\n\t\t\t\t\t\t\t\tif (symbol.type === pm.SymbolType.Condition)\n\t\t\t\t\t\t\t\t\tsymbol.value = block.headerValue[\"0\"];\n\n\t\t\t\t\t\t\t\tvar symbolString = [];\n\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\n\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar method = block.methods[y];\n\n\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor (var p = block.width; p < width-1; ++p)\n\n\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\n\t\t\t\t\t\t\t\tfor (var x = 1; x < block.height; ++x)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar symbolString = [];\n\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tfor (var y = 0; y < block.width; ++y)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvar symbol = {\n\t\t\t\t\t\t\t\t\t\t\ttype: pm.SymbolType.Method,\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"empty\"\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tsymbol.type = pm.SymbolType.Method;\n\t\t\t\t\t\t\t\t\t\tsymbol.value = method.methodID;\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (var p = block.width; p < width; ++p)\n\n\t\t\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (j !== level.robots[i].programData.functions.length - 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\t\tfor (var f = 0; f < width; ++f)\n\t\t\t\t\t\t\t\tsymbolString.push({type: pm.SymbolType.Empty, value: -1});\n\n\t\t\t\t\t\t\tsymbols.push(symbolString);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tprogramData.symbols = symbols;\n\n\t\t\t\t\tlevel.robots[i].programData = programData;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar programDataMap = new pm.data.MapClass();\n\n\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar programData = level.robots[i].programData;\n\t\t\tvar groupID = level.robots[i].id;\n\n\t\t\tlevel.robots[i].groupID = groupID;\n\t\t\tprogramDataMap[groupID] = programData;\n\n\t\t\tdelete level.robots[i].programData;\n\t\t}\n\n\t\tlevel.programData = programDataMap;\n\t},\n\n\t_15_to_16: function(level)\n\t{\n\t\tif (level.typeName === \"LegoLevel\" || level.typeName === \"BLERobotLevel\")\n\t\t{\n\t\t\tlevel.typeName = \"PhysicalRobotLevel\";\n\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\n\t\t\t\tlevel.robots[i].typeName = \"PhysicalRobot\";\n\n\t\t\tfor (var i = 0; i < level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tvar map = level.maps[i];\n\n\t\t\t\tmap.typeName = \"PhysicalRobotMap\";\n\n\t\t\t\tfor (var x = 0 ; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor (var y = 0 ; y < map.height; ++y)\n\t\t\t\t\t\tmap.mapElements[y][x].typeName = \"PhysicalRobotMapElement\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdelete level.taskList.type;\n\t},\n\n\t_16_to_17: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tvar newProgramData = {\n\t\t\t\t\ttypeName: \"ProgramInfo\",\n\t\t\t\t\tcurrentIndex: 0,\n\t\t\t\t\tprogramDataArray: []\n\t\t\t\t};\n\n\t\t\t\tnewProgramData.programDataArray[0] = level.programData[o];\n\n\t\t\t\tnewProgramData.programDataArray[0].maxFunctionCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxMethodCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxRepeaterCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxConditionCount = 0;\n\t\t\t\tnewProgramData.programDataArray[0].maxCondRepeaterCount = 0;\n\n\t\t\t\tdelete level.programData[o];\n\t\t\t\tlevel.programData[o] = newProgramData;\n\t\t\t}\n\t\t}\n\t},\n\n\t_17_to_18: function(level)\n\t{\n\t\tif (level.typeName === \"TrainLevel\")\n\t\t{\n\t\t\tfor (var o in level.programData)\n\t\t\t{\n\t\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\n\t\t\t\t\t\tfor (var x = 0; x < programData.height; ++x)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (var y = 0; y < programData.width; ++y)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar symbol = programData.symbols[x][y];\n\n\t\t\t\t\t\t\t\tif (symbol.value === \"rep_gib\")\n\t\t\t\t\t\t\t\t\tsymbol.value = \"train_can_link\";\n\t\t\t\t\t\t\t\telse if (symbol.value === \"rep_ginb\")\n\t\t\t\t\t\t\t\t\tsymbol.value = \"train_can_not_link\";\n\t\t\t\t\t\t\t\telse if (symbol.value === \"light_turn_on\")\n\t\t\t\t\t\t\t\t\tsymbol.value = \"train_link\";\n\t\t\t\t\t\t\t\telse if (symbol.value === \"light_turn_off\")\n\t\t\t\t\t\t\t\t\tsymbol.value = \"train_unlink\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_18_to_19: function(level)\n\t{\n\t\tfor (var o in level.programData)\n\t\t{\n\t\t\tif (cc.isObject(level.programData[o]))\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < level.programData[o].programDataArray.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar programData = level.programData[o].programDataArray[i];\n\n\t\t\t\t\tvar oldWidth = programData.width;\n\t\t\t\t\tvar oldHeight = programData.height;\n\n\t\t\t\t\tprogramData.width = 6;\n\t\t\t\t\tprogramData.height = 100;\n\n\t\t\t\t\tfor (var x = 0; x < oldHeight; ++x)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar symbolString = programData.symbols[x];\n\n\t\t\t\t\t\tfor (var y = oldWidth; y < programData.width; ++y)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbol = {type: -1, value: -1};\n\n\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (var x = oldHeight; x < programData.height; ++x)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar symbolString = [];\n\n\t\t\t\t\t\tfor (var y = 0; y < programData.width; ++y)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar symbol = {type: -1, value: -1};\n\n\t\t\t\t\t\t\tsymbolString.push(symbol);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tprogramData.symbols.push(symbolString);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 20.11.14.\n */\n\n/**\n * This callback is used when load of world is completed\n * @callback pm.worldUtils~loadCallback\n * @param {?Error} error If error occurs it will be stored here or null if no errors.\n * @param {Array} loadedWorlds Worlds was loaded.\n */\n\n/**\n * This callback is used when sync of world is completed\n * @callback pm.worldUtils~syncCallback\n * @param {?Error} error If error occurs it will be stored here or null if no errors.\n */\n\n/**\n * Functions from this namespace are used to work with worlds.\n * @namespace\n */\npm.worldUtils =\n{\n\t/**\n * Loads world.\n * @param {Object} params Params for world loading\n * @param {String} params.worldID\n * @param {pm.worldUtils~loadCallback} params.callback\n * @param {*} params.callbackTarget\n * @param {Boolean} [params.reloadBuiltinOnError]\n * @param {Boolean} [params.loadLocalOnError=true]\n */\n\tloadWorld: function(params)\n\t{\n\t\tif(params.loadLocalOnError === undefined)\n\t\t\tparams.loadLocalOnError = true;\n\n\t\tcc.async.map([params], {\n\t\t\titerator: this._loadWorldFromNetwork,\n\t\t\titeratorTarget: this,\n\t\t\tcb: params.callback.bind(params.callbackTarget),\n\t\t\tcbTarget: params.callbackTarget\n\t\t});\n\t},\n\n\t/**\n\t * Checks if world's games' orders aren't negative or duplicated; same for games' levels.\n\t * Prints games and levels with such problems.\n\t * @world {Object} world\n\t */\n\tcheckOrders: function (world)\n\t{\n\t\tif (!world)\n\t\t\treturn;\n\n\t\tvar isWellOrdered = true;\n\n\t\tfor (var i = 0; i < world.games.length; ++i)\n\t\t{\n\t\t\tif (world.games[i].order !== i)\n\t\t\t{\n\t\t\t\tisWellOrdered = false;\n\t\t\t\tconsole.log(\"Bad orders in world: {0}\".format(world.name));\n\n\t\t\t\tconsole.log(\"*** Bad games order\");\n\t\t\t\tfor (var k = 0; k < world.games.length; ++k)\n\t\t\t\t\tconsole.log(\"\\t game.name = {0}, game.order = {1}, game real index = {2}\".format(world.games[k].name, world.games[k].order, k));\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < world.games.length; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < world.games[i].levels.length; ++j)\n\t\t\t{\n\t\t\t\tif (world.games[i].levels[j].order !== j)\n\t\t\t\t{\n\t\t\t\t\tif (isWellOrdered)\n\t\t\t\t\t\tconsole.log(\"Bad orders in world: {0}\".format(world.name));\n\n\t\t\t\t\tisWellOrdered = false;\n\t\t\t\t\tconsole.log(\"*** Bad levels order in game {0}, game.order = {1}, game real index = {2}\".format(world.games[i].name, world.games[i].order, i ));\n\n\t\t\t\t\tfor (var k = 0; k < world.games[i].levels.length; ++k)\n\t\t\t\t\t\tconsole.log(\"\\t level.name = {0}, level.order = {1}, level real index = {2}\".format(world.games[i].levels[k].name, world.games[i].levels[k].order, k));\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(isWellOrdered)\n\t\t\tconsole.log(\"All orders are OK\");\n\t},\n\n\t/**\n * Synchronizes world with server.\n * @param {Object} params Params for world sync\n * @param {String} params.worldID\n * @param {pm.worldUtils~syncCallback} params.callback\n * @param {*} params.callbackTarget\n * @param {Boolean} [params.loadLocalOnError]\n */\n\tsyncWorld: function(params)\n\t{\n\t\tif(params.loadLocalOnError === undefined)\n\t\t\tparams.loadLocalOnError = true;\n\n\t\tcc.async.map([params], {\n\t\t\titerator: this._syncWorld,\n\t\t\titeratorTarget: this,\n\t\t\tcb: params.callback.bind(params.callbackTarget),\n\t\t\tcbTarget: params.callbackTarget\n\t\t});\n\t},\n\n\t/**\n * Load world from network\n * @private\n */\n\t_loadWorldFromNetwork: function(params, index, cb)\n\t{\n\t\tvar worldRecord = pm.settings.getWorldRecord(params.worldID);\n\n\t\tif(worldRecord && pm.fileUtils.isFileExist(pm.settings.getWorldPath(params.worldID)))\n\t\t{\n\t\t\t//Do not sync updated world with server\n\t\t\tif(!pm.fileUtils.isFileExist(pm.settings.getWorldEditLogPath(params.worldID)))\n\t\t\t{\n\t\t\t\tpm.apiServerUtils.getWorldMeta(\n\t\t\t\t\tthis._worldMetaCallback.bind(this, params, cb),\n\t\t\t\t\tparams.worldID,\n\t\t\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._loadLocalWorld(params, cb);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.apiServerUtils.getWorld(\n\t\t\t\tthis._worldCallback.bind(this, params, cb),\n\t\t\t\tparams.worldID,\n\t\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t\t);\n\t\t}\n\t},\n\n\t/**\n * Loads world from local cache.
\n * Called if some errors in network loading of world\n * @private\n */\n\t_loadLocalWorld: function(params, cb)\n\t{\n\t\tvar worldPath = pm.settings.getWorldPath(params.worldID);\n\n\t\tif(pm.fileUtils.isFileExist(worldPath))\n\t\t{\n\t\t\tvar world = pm.fileUtils.readObject(worldPath);\n\n\t\t\tthis._succeededLoadWorld({\n\t\t\t\tid: params.worldID,\n\t\t\t\tworldObject: world\n\t\t\t}, params, cb, true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar sourceName = \"\";\n\n\t\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\t\tfor (var i = 0; i < builtinWorlds.length; ++i)\n\t\t\t{\n\t\t\t\tif (builtinWorlds[i].id === params.worldID)\n\t\t\t\t\tsourceName = builtinWorlds[i].sourceName;\n\t\t\t}\n\t\t\t//Found built-in world\n\t\t\tif (sourceName !== \"\")\n\t\t\t{\n\t\t\t\tvar sourcePath = pm.fileUtils.fullPathForFileName(sourceName + \".json\");\n\n\t\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(params.worldID));\n\t\t\t\tpm.fileUtils.copyFileFromRes(sourcePath, worldPath);\n\n\t\t\t\tthis._succeededLoadWorld({\n\t\t\t\t\tid: params.worldID,\n\t\t\t\t\tworldObject: pm.fileUtils.readObject(worldPath)\n\t\t\t\t}, params, cb, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._failedLoadWorld(params, cb, \"No world data for world {0}\".format(params.worldID));\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n * Called on successful loading of world\n * @param {Object} worldData\n * @param {String} worldData.id\n * @param {Object} worldData.worldObject\n * @param {Object} params\n * @param cb\n * @param {Boolean} updated\n * @private\n */\n\t_succeededLoadWorld: function(worldData, params, cb, updated)\n\t{\n\t\tvar worldObject = worldData.worldObject;\n\n\t\tvar worldConvertFunctions = pm.appUtils.getWorldConvertFunctions();\n\n\t\tworldObject = worldConvertFunctions.convert(worldObject, pm.appUtils.getSupportedLevelFormatVersion());\n\n\t\tif(!worldObject)\n\t\t{\n\t\t\tthis._failedLoadWorld(params, cb, \"World {0} can not be converted\".format(params.worldID));\n\t\t\treturn;\n\t\t}\n\n\t\tif(updated)\n\t\t{\n\t\t\tvar compareFn = function (a, b)\n\t\t\t{\n\t\t\t\treturn a.order - b.order;\n\t\t\t};\n\n\t\t\tworldObject.games.sort(compareFn);\n\n\t\t\tfor (var i = 0; i < worldObject.games.length; ++i)\n\t\t\t\tworldObject.games[i].levels.sort(compareFn);\n\t\t}\n\n\t\tvar worldRecord = pm.settings.getWorldRecord(worldData.id);\n\n\t\tif(!worldRecord)\n\t\t\tpm.settings.addWorld(worldData.id);\n\n\t\tpm.settings.setWorldMetaData(worldData.id, {\n\t\t\tname: worldObject.name,\n\t\t\tdescription: worldObject.description,\n\t\t\tcreateDate: worldObject.createDate,\n\t\t\tlinkedWithMirera: worldObject.linkedWithMirera\n\t\t});\n\n\t\t// console.log(JSON.stringify(worldObject));\n\n\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(params.worldID));\n\t\tpm.fileUtils.saveObject(pm.settings.getWorldPath(worldData.id), worldObject);\n\n\t\tworld.load(worldData.id, worldObject, function ()\n\t\t{\n\t\t\tif(updated)\n\t\t\t\tpm.userCache.clearUnusedData(worldData.id);\n\n\t\t\tcb(null, worldData.id);\n\t\t});\n\n\t\tthis.checkOrders(worldObject);\n\t},\n\n\t_failedLoadWorld: function(params, cb, errorMessage)\n\t{\n\t\tvar isBuiltinWorld = false;\n\n\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\tfor(var i = 0 ; i < builtinWorlds.length; ++i)\n\t\t{\n\t\t\tif (builtinWorlds[i].id === params.worldID)\n\t\t\t\tisBuiltinWorld = true;\n\t\t}\n\n\t\tif(isBuiltinWorld)\n\t\t{\n\t\t\tpm.utils.logError(\"Fatal loading built-in world error: \"+ errorMessage);\n\t\t\tcb(errorMessage);\n\t\t}\n\t\telse if(params.reloadBuiltinOnError)\n\t\t{\n\t\t\tpm.utils.logError(\"Load world error: \\\"\" + errorMessage + \"\\\". Loading built-in world.\");\n\n\t\t\tthis._loadWorldFromNetwork({\n\t\t\t\tworldID: builtinWorlds[0].id,\n\t\t\t\tcallback: params.callback,\n\t\t\t\tcallbackTarget: params.callbackTarget,\n\t\t\t\treloadBuiltinOnError: params.reloadBuiltinOnError\n\t\t\t}, 0, cb);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcb(errorMessage);\n\t\t}\n\t},\n\n\t_clearPreviousWorldVersions: function(worldID)\n\t{\n\t\tvar versions = pm.settings.getWorldVersions(worldID);\n\n\t\tfor(var i =0 ; i < versions.length; ++i)\n\t\t{\n\t\t\tif(versions[i] === pm.appUtils.getSupportedLevelFormatVersion())\n\t\t\t\tcontinue;\n\n\t\t\tvar fileList = pm.fileUtils.getFileList(pm.settings.getWorldDir(worldID, versions[i]));\n\n\t\t\tfor(var j = 0; j < fileList.length; ++j)\n\t\t\t\tpm.fileUtils.removeFile(fileList[j]);\n\n\t\t\tvar cacheFileList = pm.fileUtils.getFileList(pm.settings.getWorldCachePath(worldID, versions[i]));\n\n\t\t\tfor(var j = 0; j < cacheFileList.length; ++j)\n\t\t\t\tpm.fileUtils.removeFile(cacheFileList[j]);\n\t\t}\n\t},\n\n\t_handleNetworkError: function(params, cb, error)\n\t{\n\t\tpm.utils.logError(error || \"Empty response from network\");\n\n\t\tif(params.loadLocalOnError)\n\t\t\tthis._loadLocalWorld(params, cb);\n\t\telse\n\t\t\tcb(error);\n\t},\n\n\t/**\n * Load world from network\n * @private\n */\n\t_syncWorld: function(params, index, cb)\n\t{\n\t\tif(!pm.fileUtils.isFileExist(pm.settings.getWorldEditLogPath(params.worldID)))\n\t\t{\n\t\t\tthis._loadWorldFromNetwork(params, index, cb);\n\t\t\treturn;\n\t\t}\n\n\t\tpm.apiServerUtils.getWorldMeta(\n\t\t\tthis._worldMetaSyncCallback.bind(this, params, cb),\n\t\t\tparams.worldID,\n\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t);\n\t},\n\n\t_levelsCallback: function(params, cb, world, error, response)\n\t{\n\t\tif(!error && response)\n\t\t{\n\t\t\tfor(var g = 0 ; g < world.games.length; ++g)\n\t\t\t{\n\t\t\t\tvar game = world.games[g];\n\n\t\t\t\tfor(var l = 0; l < game.levels.length; ++l)\n\t\t\t\t{\n\t\t\t\t\tfor(var rl = 0; rl < response.levels.length; ++rl)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(response.levels[rl].id === game.levels[l].id)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tgame.levels[l] = response.levels[rl].data;\n\t\t\t\t\t\t\tgame.levels[l].id = response.levels[rl].id;\n\t\t\t\t\t\t\tgame.levels[l].version = response.levels[rl].version;\n\t\t\t\t\t\t\tgame.levels[l].revision = response.levels[rl].revision;\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._succeededLoadWorld({\n\t\t\t\tid: params.worldID,\n\t\t\t\tworldObject: world\n\t\t\t}, params, cb, true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleNetworkError(params, cb, error);\n\t\t}\n\t},\n\n\t_gameSyncProtocol: function(game, gameMeta, protocol, editLog)\n\t{\n\t\tvar deleteLevels = [];\n\t\tvar addLevels = [];\n\n\t\tfor(var i = 0 ; i < gameMeta.levels.length; ++i)\n\t\t{\n\t\t\tvar levelFound = false;\n\n\t\t\tfor(var j = 0 ; j < game.levels.length; ++j)\n\t\t\t{\n\t\t\t\tif(game.levels[j].id === gameMeta.levels[i].id)\n\t\t\t\t{\n\t\t\t\t\tlevelFound = true;\n\n\t\t\t\t\tif(game.levels[j].version < gameMeta.levels[i].version ||\n game.levels[j].revision < gameMeta.levels[i].revision)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(editLog.isLevelUpdated(game.levels[j].id)) //level updated on server && on local\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprotocol.conflictLevels.push({\n\t\t\t\t\t\t\t\tgame: game,\n\t\t\t\t\t\t\t\tlevel: game.levels[j]\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse //level updated on server && no conflict\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprotocol.levelsToSync.push(gameMeta.levels[i].id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if(editLog.isLevelUpdated(game.levels[j].id)) //level updated locally\n\t\t\t\t\t{\n\t\t\t\t\t\tprotocol.updateLevels.push(game.levels[j]);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!levelFound)\n\t\t\t{\n\t\t\t\tif(!editLog.isLevelDeleted(gameMeta.levels[i].id))\n\t\t\t\t{\n\t\t\t\t\tgame.levels.push(gameMeta.levels[i]);\n\t\t\t\t\tprotocol.levelsToSync.push(gameMeta.levels[i].id);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdeleteLevels.push(gameMeta.levels[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0 ; i < game.levels.length; ++i)\n\t\t{\n\t\t\tif (game.levels[i].id === \"\")\n\t\t\t{\n\t\t\t\taddLevels.push(game.levels[i]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar levelFound = false;\n\n\t\t\t\tfor (var j = 0; j < gameMeta.levels.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (game.levels[i].id === gameMeta.levels[j].id)\n\t\t\t\t\t{\n\t\t\t\t\t\tlevelFound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!levelFound)\n\t\t\t\t\tgame.levels.splice(i, 1);\n\t\t\t}\n\t\t}\n\n\t\tif(addLevels.length > 0)\n\t\t{\n\t\t\tprotocol.actions.push({\n\t\t\t\ttype: \"add_levels\",\n\t\t\t\tgame: game.id,\n\t\t\t\tlevels: addLevels\n\t\t\t});\n\t\t}\n\n\t\tif(deleteLevels.length > 0)\n\t\t{\n\t\t\tprotocol.actions.push({\n\t\t\t\ttype: \"delete_levels\",\n\t\t\t\tgame: game.id,\n\t\t\t\tlevels: deleteLevels\n\t\t\t});\n\t\t}\n\t},\n\n\t_worldSyncProtocol: function(cb, world, worldMeta, editLog)\n\t{\n\t\tvar protocol = {\n\t\t\tlevelsToSync: [],\n\t\t\tactions: [],\n\t\t\tupdateLevels: [],\n\t\t\tconflictLevels: [],\n\t\t\taddedGames: []\n\t\t};\n\n\t\tif(editLog.isUpdated())\n\t\t{\n\t\t\tprotocol.actions.push({\n\t\t\t\ttype: \"update_world_info\",\n\t\t\t\tname: world.name,\n\t\t\t\tdescription: world.description,\n\t\t\t\tpublic: world.public\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tworld.name = worldMeta.name;\n\t\t\tworld.description = worldMeta.description;\n\t\t\tworld.public = worldMeta.public;\n\t\t}\n\n\t\tfor(var i = 0 ; i < worldMeta.games.length; ++i)\n\t\t{\n\t\t\tvar gameFound = false;\n\n\t\t\tfor(var j = 0 ; j < world.games.length; ++j)\n\t\t\t{\n\t\t\t\tif(world.games[j].id === worldMeta.games[i].id)\n\t\t\t\t{\n\t\t\t\t\tgameFound = true;\n\n\t\t\t\t\tif(editLog.isGameUpdated(worldMeta.games[i].id))\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!editLog.isGameRenamed(worldMeta.games[i].id))\n\t\t\t\t\t\t\tworld.games[j].name = worldMeta.games[i].name;\n\n\t\t\t\t\t\tif(!editLog.isGameReordered(worldMeta.games[i].id))\n\t\t\t\t\t\t\tworld.games[j].order = worldMeta.games[i].order;\n\n\t\t\t\t\t\tprotocol.actions.push({\n\t\t\t\t\t\t\ttype: \"update_game\",\n\t\t\t\t\t\t\tgame: world.games[j].id,\n\t\t\t\t\t\t\tname: world.games[j].name,\n\t\t\t\t\t\t\torder: world.games[j].order\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tworld.games[j].name = worldMeta.games[i].name;\n\t\t\t\t\t\tworld.games[j].order = worldMeta.games[i].order;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._gameSyncProtocol(world.games[j], worldMeta.games[i], protocol, editLog);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!gameFound)\n\t\t\t{\n\t\t\t\tif(!editLog.isGameDeleted(worldMeta.games[i].id))\n\t\t\t\t{\n\t\t\t\t\tvar game = new pm.data.Game(worldMeta.games[i].name, worldMeta.games[i].order);\n\t\t\t\t\tgame.id = worldMeta.games[i].id;\n\n\t\t\t\t\tworld.games.push(game);\n\n\t\t\t\t\tfor (var j = 0; j < worldMeta.games[i].levels.length; ++j)\n\t\t\t\t\t{\n\t\t\t\t\t\tgame.levels.push(worldMeta.games[i].levels[j]);\n\t\t\t\t\t\tprotocol.levelsToSync.push(worldMeta.games[i].levels[j].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tprotocol.actions.push({\n\t\t\t\t\t\ttype: \"delete_game\",\n\t\t\t\t\t\tgame: worldMeta.games[i].id\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0 ; i < world.games.length; ++i)\n\t\t{\n\t\t\tvar gameFound = false;\n\n\t\t\tif (world.games[i].id === \"\")\n\t\t\t{\n\t\t\t\tprotocol.addedGames.push(world.games[i]);\n\n\t\t\t\tprotocol.actions.push({\n\t\t\t\t\ttype: \"add_game\",\n\t\t\t\t\tname: world.games[i].name,\n\t\t\t\t\torder: world.games[i].order,\n\t\t\t\t\tlevels: world.games[i].levels\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var j = 0; j < worldMeta.games.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (world.games[i].id === worldMeta.games[j].id)\n\t\t\t\t\t{\n\t\t\t\t\t\tgameFound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!gameFound)\n\t\t\t\t\tworld.games.splice(i, 1);\n\t\t\t}\n\t\t}\n\n\t\tif(protocol.conflictLevels.length > 0)\n\t\t{\n\t\t\tvar layer = new LevelConflictLayer(protocol.conflictLevels, this._conflictResult.bind(this, cb, protocol));\n\n\t\t\tlayer.setPosition(\n\t\t\t\t(pm.settings.getScreenSize().width - layer.width) / 2,\n\t\t\t\t(pm.settings.getScreenSize().height - layer.height) / 2\n\t\t\t);\n\n\t\t\tcc.director.getRunningScene().addChild(layer, 1000, 1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(protocol.updateLevels.length > 0)\n\t\t\t{\n\t\t\t\tprotocol.actions.push({\n\t\t\t\t\ttype: \"update_levels\",\n\t\t\t\t\tlevels: protocol.updateLevels\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdelete protocol.updateLevels;\n\t\t\tdelete protocol.conflictLevels;\n\n\t\t\tcb(protocol);\n\t\t}\n\t},\n\n\t_conflictResult: function(cb, protocol, updateLevels, syncLevels)\n\t{\n\t\tfor(var i = 0 ; i < updateLevels.length; ++i)\n\t\t\tprotocol.updateLevels.push(updateLevels[i].level);\n\n\t\tif(protocol.updateLevels.length > 0)\n\t\t{\n\t\t\tprotocol.actions.push({\n\t\t\t\ttype: \"update_levels\",\n\t\t\t\tlevels: protocol.updateLevels\n\t\t\t});\n\t\t}\n\n\t\tfor(var i = 0 ; i < syncLevels.length; ++i)\n\t\t\tprotocol.levelsToSync.push(syncLevels[i].level.id);\n\n\t\tdelete protocol.updateLevels;\n\t\tdelete protocol.conflictLevels;\n\n\t\tcb(protocol);\n\t},\n\n\t_updateWorldCallback: function(params, cb, protocol, world, error, response)\n\t{\n\t\tif(!error && response)\n\t\t{\n\t\t\tvar gameIterator = 0;\n\n\t\t\tfor(var i = 0 ; i < protocol.actions.length; ++i)\n\t\t\t{\n\t\t\t\tvar actionResult = response.results[i];\n\t\t\t\tvar action = protocol.actions[i];\n\n\t\t\t\tswitch(action.type)\n\t\t\t\t{\n\t\t\t\t\tcase \"add_levels\":\n\n\t\t\t\t\t\tfor(var l = 0; l < action.levels.length; ++l)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taction.levels[l].id = actionResult.levels[l].id;\n\t\t\t\t\t\t\taction.levels[l].revision = actionResult.levels[l].revision;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"update_levels\":\n\n\t\t\t\t\t\tfor(var l = 0; l < action.levels.length; ++l)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taction.levels[l].version = actionResult.levels[l].version;\n\t\t\t\t\t\t\taction.levels[l].revision = actionResult.levels[l].revision;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"add_game\":\n\n\t\t\t\t\t\tvar game = protocol.addedGames[gameIterator++];\n\n\t\t\t\t\t\tgame.id = actionResult.id;\n\n\t\t\t\t\t\tfor(var l = 0; l < game.levels.length; ++l)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tgame.levels[l].id = actionResult.levels[l];\n\t\t\t\t\t\t\tgame.levels[l].revision = 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(protocol.levelsToSync.length > 0)\n\t\t\t{\n\t\t\t\tpm.apiServerUtils.getLevels(\n\t\t\t\t\tthis._levelsCallback.bind(this, params, cb, world),\n\t\t\t\t\tprotocol.levelsToSync,\n\t\t\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._succeededLoadWorld({\n\t\t\t\t\tid: params.worldID,\n\t\t\t\t\tworldObject: world\n\t\t\t\t}, params, cb, true);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleNetworkError(params, cb, error);\n\t\t}\n\t},\n\n\t_worldSyncResult: function(params, cb, world, protocol)\n\t{\n\t\tpm.apiServerUtils.updateWorld(\n\t\t\tthis._updateWorldCallback.bind(this, params, cb, protocol, world),\n\t\t\tparams.worldID,\n\t\t\t{ actions: protocol.actions },\n\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t);\n\t},\n\n\t/**\n *\n * @param {Error} error\n * @param {Object | Number} response\n * @private\n */\n\t_worldMetaSyncCallback: function(params, cb, error, response)\n\t{\n\n\t\tif(!error && response)\n\t\t{\n\t\t\tvar world = pm.fileUtils.readObject(pm.settings.getWorldPath(params.worldID));\n\n\t\t\tvar editLog = new pm.WorldEditLog(params.worldID);\n\n\t\t\tthis._worldSyncProtocol(\n\t\t\t\tthis._worldSyncResult.bind(this, params, cb, world),\n\t\t\t\tworld,\n\t\t\t\tresponse,\n\t\t\t\teditLog\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleNetworkError(params, cb, error);\n\t\t}\n\t},\n\n\t_getSyncLevelsForGame: function(game, gameMeta)\n\t{\n\t\tvar levelsToSync = [];\n\n\t\tfor(var i = 0 ; i < gameMeta.levels.length; ++i)\n\t\t{\n\t\t\tvar levelFound = false;\n\n\t\t\tfor(var j = 0 ; j < game.levels.length; ++j)\n\t\t\t{\n\t\t\t\tif(game.levels[j].id === gameMeta.levels[i].id)\n\t\t\t\t{\n\t\t\t\t\tlevelFound = true;\n\n\t\t\t\t\tif(game.levels[j].version < gameMeta.levels[i].version ||\n game.levels[j].revision < gameMeta.levels[i].revision)\n\n\t\t\t\t\t\tlevelsToSync.push(gameMeta.levels[i].id);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!levelFound)\n\t\t\t{\n\t\t\t\tgame.levels.push(gameMeta.levels[i]);\n\t\t\t\tlevelsToSync.push(gameMeta.levels[i].id);\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0 ; i < game.levels.length; ++i)\n\t\t{\n\t\t\tvar levelFound = false;\n\n\t\t\tfor(var j = 0 ; j < gameMeta.levels.length; ++j)\n\t\t\t{\n\t\t\t\tif(game.levels[i].id === gameMeta.levels[j].id)\n\t\t\t\t{\n\t\t\t\t\tlevelFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!levelFound)\n\t\t\t\tgame.levels.splice(i, 1);\n\t\t}\n\n\t\treturn levelsToSync;\n\t},\n\n\t_getSyncLevelsForWorld: function(world, worldMeta)\n\t{\n\t\tvar updated = false;\n\t\tvar levelsToSync = [];\n\n\t\tfor(var i = 0 ; i < worldMeta.games.length; ++i)\n\t\t{\n\t\t\tvar gameFound = false;\n\n\t\t\tfor(var j = 0 ; j < world.games.length; ++j)\n\t\t\t{\n\t\t\t\tif(world.games[j].id === worldMeta.games[i].id)\n\t\t\t\t{\n\t\t\t\t\tgameFound = true;\n\n\t\t\t\t\tif(world.games[j].name !== worldMeta.games[i].name)\n\t\t\t\t\t{\n\t\t\t\t\t\tworld.games[j].name = worldMeta.games[i].name;\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(world.games[j].order !== worldMeta.games[i].order)\n\t\t\t\t\t{\n\t\t\t\t\t\tworld.games[j].order = worldMeta.games[i].order;\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tlevelsToSync = levelsToSync.concat(this._getSyncLevelsForGame(world.games[j], worldMeta.games[i]));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!gameFound)\n\t\t\t{\n\t\t\t\tvar game = new pm.data.Game(worldMeta.games[i].name, worldMeta.games[i].order);\n\t\t\t\tgame.id = worldMeta.games[i].id;\n\n\t\t\t\tworld.games.push(game);\n\n\t\t\t\tfor(var j = 0 ; j < worldMeta.games[i].levels.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tgame.levels.push(worldMeta.games[i].levels[j]);\n\t\t\t\t\tlevelsToSync.push(worldMeta.games[i].levels[j].id);\n\t\t\t\t\tupdated = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0 ; i < world.games.length; ++i)\n\t\t{\n\t\t\tvar gameFound = false;\n\n\t\t\tfor(var j = 0 ; j < worldMeta.games.length; ++j)\n\t\t\t{\n\t\t\t\tif(world.games[i].id === worldMeta.games[j].id)\n\t\t\t\t{\n\t\t\t\t\tgameFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!gameFound)\n\t\t\t{\n\t\t\t\tworld.games.splice(i, 1);\n\t\t\t\tupdated = true;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tupdated: updated,\n\t\t\tlevelsToSync: levelsToSync\n\t\t};\n\t},\n\n\t/**\n *\n * @param {Error} error\n * @param {Object | Number} response\n * @private\n */\n\t_worldMetaCallback: function(params, cb, error, response)\n\t{\n\t\tif(!error && response)\n\t\t{\n\t\t\tvar world = pm.fileUtils.readObject(pm.settings.getWorldPath(params.worldID));\n\n\t\t\tworld.name = response.name;\n\t\t\tworld.description = response.description;\n\t\t\tworld.public = response.public;\n\t\t\tworld.linkedWithMirera = response.linkedWithMirera;\n\t\t\tworld.createDate = response.createDate;\n\n\t\t\tvar result = this._getSyncLevelsForWorld(world, response);\n\n\t\t\tif(result.levelsToSync.length > 0)\n\t\t\t{\n\t\t\t\tpm.apiServerUtils.getLevels(\n\t\t\t\t\tthis._levelsCallback.bind(this, params, cb, world),\n\t\t\t\t\tresult.levelsToSync,\n\t\t\t\t\tpm.appUtils.getSupportedLevelFormatVersion()\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._succeededLoadWorld({\n\t\t\t\t\tid: params.worldID,\n\t\t\t\t\tworldObject: world\n\t\t\t\t}, params, cb, result.updated);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleNetworkError(params, cb, error);\n\t\t}\n\t},\n\n\t/**\n *\n * @param {Error} error\n * @param {Object | Number} response\n * @private\n */\n\t_worldCallback: function(params, cb, error, response)\n\t{\n\t\tif(!error && response)\n\t\t{\n\t\t\tvar world = new pm.data.World();\n\t\t\tworld.name = response.name;\n\t\t\tworld.description = response.description;\n\t\t\tworld.public = response.public;\n\t\t\tworld.linkedWithMirera = response.linkedWithMirera;\n\t\t\tworld.createDate = response.createDate;\n\t\t\tworld.id = response.id;\n\n\t\t\tfor(var i = 0 ; i < response.games.length; ++i)\n\t\t\t{\n\t\t\t\tvar game = new pm.data.Game(response.games[i].name, response.games[i].order);\n\n\t\t\t\tgame.id = response.games[i].id;\n\t\t\t\tgame.levels = response.games[i].levels;\n\n\t\t\t\tworld.games.push(game);\n\t\t\t}\n\n\t\t\tthis._succeededLoadWorld({\n\t\t\t\tid: params.worldID,\n\t\t\t\tworldObject: world\n\t\t\t}, params, cb, true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleNetworkError(params, cb, error);\n\t\t}\n\t},\n\n\t/**\n\t * returns world object for saving\n\t *\n\t */\n\n\tdownloadWorld: function(params) {\n\t\tvar worldPath = pm.settings.getWorldPath(params.worldID);\n\n\t\tif (pm.fileUtils.isFileExist(worldPath)) {\n\t\t\treturn pm.fileUtils.readObject(worldPath);\n\t\t} else {\n\t\t\tvar sourceName = \"\";\n\n\t\t\tvar builtinWorlds = pm.appConfig.builtinWorlds[pm.appConfig.appType];\n\n\t\t\tfor (var i = 0; i < builtinWorlds.length; ++i) {\n\t\t\t\tif (builtinWorlds[i].id === params.worldID)\n\t\t\t\t\tsourceName = builtinWorlds[i].sourceName;\n\t\t\t}\n\t\t\t//Found built-in world\n\t\t\tif (sourceName !== \"\") {\n\t\t\t\tvar sourcePath = pm.fileUtils.fullPathForFileName(sourceName + \".json\");\n\n\t\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(params.worldID));\n\t\t\t\tpm.fileUtils.copyFileFromRes(sourcePath, worldPath);\n\t\t\t\treturn pm.fileUtils.readObject(worldPath);\n\t\t\t}\n\t\t}\n\t}\n\n};\n","/**\n * Created by Nikita Besshaposhnikov on 16.07.15.\n */\n\n/**\n * This namespace contains functions for working with backgrounds.\n * @namespace\n */\npm.backgroundUtils = {\n\n\t_levelBackgroundParameters: {},\n\n\tgenerateBackground: function()\n\t{\n\t\tvar layer = new cc.LayerColor(pm.backgroundUtils.BACKGROUND_COLOR);\n\n\t\tvar screenSize = pm.settings.getScreenSize();\n\t\tvar centerX = screenSize.width / 2;\n\t\tvar centerY = screenSize.height / 2;\n\n\t\tlayer.setContentSize(screenSize);\n\n\t\tvar centerSpr = new cc.Sprite(\"Background/main_background.png\");\n\n\t\tcc.spriteFrameCache.addSpriteFrames(\"Background/common-background.plist\");\n\n\t\tvar mist1 = new cc.Sprite(\"#stars.png\");\n\t\tvar mist2 = new cc.Sprite(\"#stars.png\");\n\t\tvar galaxy1 = new cc.Sprite(\"#galaxy.png\");\n\t\tvar galaxy2 = new cc.Sprite(\"#galaxy.png\");\n\t\tvar light1 = new cc.Sprite(\"#light.png\");\n\t\tvar light2 = new cc.Sprite(\"#light.png\");\n\n\t\tcenterSpr.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tcenterSpr.setPosition(centerX, centerY);\n\n\t\tlayer.addChild(centerSpr);\n\n\t\tvar i = 0;\n\t\tvar skipCount = 0;\n\n\t\tvar excludedAreas = [\n\t\t\tcc.rect(screenSize.width/3 - mist1.width/2, 3*screenSize.height/4 - mist1.height/2, mist1.width, mist1.height),\n\t\t\tcc.rect(5*screenSize.width/6 - mist2.width/2, screenSize.height/2 - mist2.height/2, mist2.width, mist2.height),\n\t\t\tcc.rect(screenSize.width/4 - galaxy1.width/2, screenSize.height/5 - galaxy1.height/2, galaxy1.width, galaxy1.height),\n\t\t\tcc.rect(2*screenSize.width/3 - galaxy2.width/2, 7*screenSize.height/9 - galaxy2.height/2, galaxy2.width, galaxy2.height)\n\t\t];\n\n\t\twhile (i < pm.backgroundUtils.STARS_INTENSITY)\n\t\t{\n\t\t\tvar x = cc.random0To1() * screenSize.width;\n\t\t\tvar y = cc.random0To1() * screenSize.height;\n\n\t\t\tvar exclude = false;\n\n\t\t\tfor(var j = 0; j < excludedAreas.length; ++j)\n\t\t\t{\n\t\t\t\tif(cc.rectContainsPoint(excludedAreas[j], cc.p(x, y)))\n\t\t\t\t{\n\t\t\t\t\texclude = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!exclude && skipCount > pm.backgroundUtils.MAX_SKIP_COUNT)\n\t\t\t{\n\t\t\t\tvar star = new cc.Sprite(\"#Star{0}.png\".format(i % 4));\n\n\t\t\t\tstar.setPosition(cc.p(x, y));\n\n\t\t\t\tstar.setScale(cc.random0To1() / 2);\n\t\t\t\tstar.setOpacity(255 * (cc.random0To1() / 2 + 0.4));\n\n\t\t\t\tlayer.addChild(star);\n\n\t\t\t\t++i;\n\t\t\t\tskipCount = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++skipCount;\n\t\t\t}\n\t\t}\n\n\t\tlight1.setAnchorPoint(cc.p(0.5, 0));\n\t\tlight2.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tmist1.setPosition(cc.p(screenSize.width/3, 3*screenSize.height/4));\n\t\tmist2.setPosition(cc.p(5*screenSize.width/6, screenSize.height/2));\n\t\tgalaxy1.setPosition(cc.p(screenSize.width/4, screenSize.height/5));\n\t\tgalaxy2.setPosition(cc.p(2*screenSize.width/3, 7*screenSize.height/9));\n\t\tlight1.setPosition(cc.p(screenSize.width/2, -80));\n\t\tlight2.setPosition(cc.p(screenSize.width/2, screenSize.height + 80));\n\n\t\tgalaxy1.setRotation(50);\n\t\tgalaxy1.setScale(0.8);\n\t\tlight2.setRotation(180);\n\n\t\tlayer.addChild(mist1);\n\t\tlayer.addChild(mist2);\n\t\tlayer.addChild(galaxy1);\n\t\tlayer.addChild(galaxy2);\n\t\tlayer.addChild(light1);\n\t\tlayer.addChild(light2);\n\n\t\treturn layer;\n\t},\n\n\t/**\n * Generates background layer by level type.\n * @param {String} levelType\n * @param {cc.Size} areaSize\n */\n\tgenerateLevelBackground: function(levelType, areaSize)\n\t{\n\t\tvar parameters = pm.moduleUtils.getBackgroundParameters(levelType);\n\n\t\treturn this._generateLayerByParams(parameters, areaSize);\n\t},\n\n\t_generateLayerByParams: function(parameters, areaSize)\n\t{\n\t\tvar layer = new cc.LayerColor(parameters.color, areaSize.width, areaSize.height);\n\n\t\tvar centerX = areaSize.width / 2;\n\t\tvar centerY = areaSize.height / 2;\n\n\t\tif(parameters.centerImage)\n\t\t{\n\t\t\tvar centerSpr = new cc.Sprite(parameters.centerImage);\n\n\t\t\tif (areaSize.height < centerSpr.height)\n\t\t\t\tcenterSpr.setScale(areaSize.height/centerSpr.height);\n\n\t\t\tcenterSpr.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tcenterSpr.setPosition(centerX, centerY);\n\n\t\t\tlayer.addChild(centerSpr);\n\t\t}\n\n\t\tvar intensityMultiplier = areaSize.width / pm.settings.getScreenSize().width;\n\n\t\tfor(var i = 0 ; i < pm.backgroundUtils.STARS_INTENSITY * intensityMultiplier; ++i)\n\t\t{\n\t\t\tvar angle = cc.random0To1() * Math.PI * 2;\n\t\t\tvar radiusX = cc.rand() % (areaSize.width/2);\n\t\t\tvar radiusY = cc.rand() % (areaSize.height/2);\n\n\t\t\tvar star = new cc.Sprite(\"#Star{0}.png\".format(i%4));\n\n\t\t\tstar.setPosition(cc.p(centerX + Math.cos(angle) * radiusX, centerY + Math.sin(angle) * radiusY));\n\n\t\t\tstar.setScale(cc.random0To1()/2);\n\t\t\tstar.setOpacity(255 * (cc.random0To1()/2+0.4));\n\n\t\t\tlayer.addChild(star);\n\t\t}\n\n\t\treturn layer;\n\t}\n};\n\npm.backgroundUtils.BACKGROUND_COLOR = cc.color(61, 61, 154);\npm.backgroundUtils.STARS_INTENSITY = 150;\npm.backgroundUtils.MAX_SKIP_COUNT = 3;\npm.backgroundUtils.ITEMS_INTENSITY = 4;\npm.backgroundUtils.WIDTH_DELTA = 20;\n","/**\n * Created by Nikita Besshaposhnikov on 01.07.16.\n */\n\n/**\n * Functions from this namespace are used to validate worlds.\n * @namespace\n */\npm.validationUtils = {\n\n\t/**\n * Pattern for world schema's id\n * @const\n * @type {String}\n * @default\n */\n\tWORLD_SCHEMA_PATTERN: \"world_{0}\",\n\n\t_supportedLevelFormatVersions: [],\n\t//_supportedLevelFormatVersions: [9, 10, 11,12],\n\n\t_ajv: null,\n\n\t/**\n * Loads initial data\n */\n\tload: function()\n\t{\n\t\tthis._ajv = new Ajv({ v5: true, ownProperties: true });\n\n\t\tfor(var i = 0; i < this._supportedLevelFormatVersions.length; ++i )\n\t\t{\n\t\t\tvar worldSchemaName = this.WORLD_SCHEMA_PATTERN.format(this._supportedLevelFormatVersions[i]);\n\n\t\t\tvar schema = pm.fileUtils.getFileContent(\"ValidationSchemas/\" + worldSchemaName + \".json\");\n\n\t\t\tthis._ajv.addSchema(schema, worldSchemaName);\n\t\t}\n\t},\n\n\t/**\n * Validates world object with schema for world format\n * @param {Object} worldData\n * @param {Number} formatVersion\n * @returns {?Array}\n */\n\tvalidateWorld: function(worldData, formatVersion)\n\t{\n\t\tif(this._supportedLevelFormatVersions.indexOf(formatVersion) < 0)\n\t\t{\n\t\t\tcc.warn(\"No validation schema for world format: \", formatVersion);\n\t\t\treturn null;\n\t\t}\n\n\t\tvar validator = this._ajv.getSchema(this.WORLD_SCHEMA_PATTERN.format(formatVersion));\n\n\t\tif(!validator)\n\t\t{\n\t\t\tcc.warn(\"Validation schema not compiled for world format: \", formatVersion);\n\t\t\treturn null;\n\t\t}\n\n\t\tif(validator(worldData))\n\t\t\treturn null;\n\t\telse\n\t\t\treturn validator.errors;\n\t},\n\n\t/**\n * Validates world cache object with schema for world format\n * @param {Object} worldDataCache\n * @param {Number} formatVersion\n * @returns {?Array}\n */\n\tvalidateWorldUserCache: function(worldDataCache, formatVersion)\n\t{\n\t\tif(this._supportedLevelFormatVersions.indexOf(formatVersion) < 0)\n\t\t{\n\t\t\tcc.warn(\"No validation schema for world format: \", formatVersion);\n\t\t\treturn null;\n\t\t}\n\n\t\tvar worldSchemaName = this.WORLD_SCHEMA_PATTERN.format(formatVersion);\n\n\t\ttry\n\t\t{\n\t\t\tvar validator = this._ajv.compile({$ref: worldSchemaName + \"#/definitions/worldUserCache\"});\n\n\t\t\tif (!validator)\n\t\t\t{\n\t\t\t\tcc.warn(\"Validation schema not compiled for world format: \", formatVersion);\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (validator(worldDataCache))\n\t\t\t\treturn null;\n\t\t\telse\n\t\t\t\treturn validator.errors;\n\t\t}\n\t\tcatch(error)\n\t\t{\n\t\t\tcc.warn(\n\t\t\t\t\"Error with compilation of validation schema for world format \",\n\t\t\t\tformatVersion, \": \", error.message\n\t\t\t);\n\n\t\t\treturn null;\n\t\t}\n\n\t\treturn null;\n\t}\n};\n","/**\n * Created by Kirill Mashchenko on 26.06.19.\n */\n\npm.NetworkDebugClientImpl = pm.GameClient.extend({\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 15.03.17.\n */\n\n/**\n * This namespace contains functions for network features\n * @namespace\n *\n */\npm.networkUtils =\n{\n\t_broadcastServerStarted: false,\n\t_broadcastClientStarted: false,\n\n\t_ignoreRequests: false,\n\n\tisNetworkGame: false,\n\tinGame: false,\n\n\t_networkGame: null,\n\n\t_networkDebugClient: null,\n\n\tinit: function()\n\t{\n\t\tif(cc.sys.isNative && pm.appConfig.useNetworkFeatures)\n\t\t{\n\t\t\tthis.startDebug();\n\n\t\t\tthis._broadcastServerStarted = pm.broadcastServer.start();\n\t\t\tpm.networkUtils.log(\"Discover server started :\" + this._broadcastServerStarted, pm.NetworkDebugSendTypes.OTHER);\n\n\t\t\tthis._broadcastClientStarted = pm.broadcastClient.start();\n\t\t\tpm.networkUtils.log(\"Discover client started :\" + this._broadcastClientStarted, pm.NetworkDebugSendTypes.OTHER);\n\n\t\t\tif(this._broadcastClientStarted)\n\t\t\t{\n\t\t\t\tpm.broadcastClient.setDataCallback(this._dataCallback.bind(this));\n\t\t\t\tpm.broadcastClient.setDiscoverCallback(this._onDiscoverRequest.bind(this));\n\t\t\t}\n\n\t\t\tpm.registerCustomEventListener(pm.GAME_ON_HIDE_EVENT, this._gameOnHide.bind(this), 1);\n\t\t\tpm.registerCustomEventListener(pm.GAME_ON_SHOW_EVENT, this._gameOnShow.bind(this), 1);\n\t\t}\n\t},\n\n\tstartDebug: function()\n\t{\n\t\tvar debugHost = pm.convertIPAddress(pm.appConfig.networkDebugAddress || pm.LOCAL_ADDRESS);\n\n\t\tif(this._networkDebugClient && this._networkDebugClient.isConnected())\n\t\t{\n\t\t\tthis._networkDebugClient.clearCallbacks();\n\t\t\tthis._networkDebugClient.disconnect();\n\t\t}\n\n\t\tthis._networkDebugClient = new pm.NetworkDebugClientImpl();\n\n\t\tthis._networkDebugClient.connect(debugHost, 18943);\n\t},\n\n\tlog: function(message, sendType, packet, host)\n\t{\n\t\tif (sendType === undefined)\n\t\t\tsendType = -1;\n\n\t\tvar username = \"\";\n\n\t\tif (pm.settings.getUserData().username !== \"\")\n\t\t\tusername = pm.settings.getUserData().username;\n\t\telse\n\t\t\tusername = pm.settings.getUserDeviceName();\n\n\t\tif (packet === undefined)\n\t\t\tpacket = {};\n\n\t\tif (host === undefined)\n\t\t\thost = null;\n\n\t\tcc.log(\"PM Network: \" + sendType +\", \"+ message+\", host: \"+host);\n\n\t\tvar time = +new Date();\n\n\t\tif (this._networkDebugClient)\n\t\t{\n\t\t\tthis._networkDebugClient.sendPacket(JSON.stringify({\n\t\t\t\tname: username,\n\t\t\t\ttype: sendType,\n\t\t\t\ttimestamp: time,\n\t\t\t\tmessage: message,\n\t\t\t\tpacket: packet,\n\t\t\t\thost: host\n\t\t\t}))\n\t\t}\n\t},\n\n\t_gameOnHide: function()\n\t{\n\t\tpm.broadcastClient.setPaused(true);\n\t},\n\n\t_gameOnShow: function()\n\t{\n\t\tpm.broadcastClient.setPaused(false);\n\t},\n\n\tstartDiscover: function(discoverServerCallback, priority)\n\t{\n\t\tif(!this._broadcastServerStarted)\n\t\t\treturn;\n\n\t\tif(this._broadcastClientStarted)\n\t\t\tpm.broadcastClient.setHidden(true);\n\n\t\tif(priority === undefined)\n\t\t\tpriority = pm.BROADCAST_PACKET_PRIORITY.LOW;\n\n\t\tpm.broadcastServer.setPacketPriority(priority);\n\t\tpm.broadcastServer.setDiscoverCallback(discoverServerCallback);\n\n\t\tpm.broadcastServer.startDiscover();\n\t},\n\n\tstopDiscover: function()\n\t{\n\t\tif(!this._broadcastServerStarted)\n\t\t\treturn;\n\n\t\tif(this._broadcastClientStarted)\n\t\t\tpm.broadcastClient.setHidden(false);\n\n\t\tpm.broadcastServer.stopDiscover();\n\t},\n\n\tsendConnectRequest: function(host)\n\t{\n\t\tif(!this._broadcastServerStarted)\n\t\t\treturn;\n\n\t\tpm.broadcastServer.sendPacket(host, \"connect_request\");\n\t},\n\n\tsendReadyForNetworkGame: function(ready)\n\t{\n\t\tif(!this._networkGame)\n\t\t\treturn;\n\n\t\tthis._networkGame.sendReadyForNetworkGame(ready);\n\t},\n\n\t_onDiscoverRequest: function (host, port)\n\t{\n\t\tvar type = pm.BROADCAST_DATA_PACKET_TYPE.FREE;\n\n\t\tif(this._networkGame)\n\t\t{\n\t\t\tif (this._networkGame.isServer())\n\t\t\t\ttype = pm.BROADCAST_DATA_PACKET_TYPE.SERVER;\n\t\t\telse if (this._networkGame.isClient())\n\t\t\t\ttype = pm.BROADCAST_DATA_PACKET_TYPE.CLIENT;\n\t\t}\n\n\t\tvar clientPacket = {};\n\n\t\tvar username = \"\";\n\n\t\tif (pm.settings.getUserData().username !== \"\")\n\t\t\tusername = pm.settings.getUserData().username;\n\t\telse\n\t\t\tusername = pm.settings.getUserDeviceName();\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.CLIENT:\n\t\t\t\tclientPacket = {\n\t\t\t\t\tt: type,\n\t\t\t\t\tu: username,\n\t\t\t\t\th: this._networkGame.getConnectedHost(),\n\t\t\t\t\tg: this._networkGame.getGameIndex(),\n\t\t\t\t\tl: this._networkGame.getLevelIndex()\n\t\t\t\t};\n\n\t\t\t\tbreak;\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.SERVER:\n\t\t\t\tclientPacket = {\n\t\t\t\t\tt: type,\n\t\t\t\t\tu: username,\n\t\t\t\t\tg: this._networkGame.getGameIndex(),\n\t\t\t\t\tl: this._networkGame.getLevelIndex()\n\t\t\t\t};\n\n\t\t\t\tbreak;\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.FREE:\n\t\t\t\tclientPacket = {\n\t\t\t\t\tt: type,\n\t\t\t\t\tu: username\n\t\t\t\t};\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar clientSendPacket = JSON.stringify(clientPacket);\n\n\t\tpm.broadcastClient.sendPacket(host, port, pm.BROADCAST_PACKET_TYPE.DISCOVER_INFO, clientSendPacket);\n\t},\n\n\t_dataCallback: function(host, port, packet)\n\t{\n\t\t// if(this._ignoreRequests)\n\t\t// return;\n\t\t//\n\t\t// this._ignoreRequests = true;\n\n\t\tvar parsedPacket = JSON.parse(packet);\n\n\t\t// this._requestedHost = parsedPacket.sh;\n\t\t// this._requestedPort = pm.GAME_SERVER_PORT;\n\n\t\tswitch (parsedPacket.t)\n\t\t{\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.CONNECT_TO_TEACHER_SERVER:\n\n\t\t\t\tif(!this._networkGame)\n\t\t\t\t\tthis._networkGame = new pm.ControlledNetworkGame(this._netControlledGameStopped.bind(this));\n\n\t\t\t\tthis._networkGame.start(host);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.CLEAR_CACHE:\n\t\t\t\tpm.sendCustomEvent(pm.CLEAR_CACHE);\n\t\t\t\tbreak;\n\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.DEBUG_RECONNECT:\n\t\t\t\tthis.startDebug();\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_netControlledGameStopped: function()\n\t{\n\t\tthis._networkGame = null;\n\t}\n\n};\n\npm.NetworkGameState = {\n\tProcessingLevel: \"NetProcessingLevel\",\n\tBroken: \"NetRobotBroken\",\n\tWin: \"NetTaskCompleted\",\n\tLoose: \"NetTaskFailed\",\n\tDevelop: \"NetDevelopProgram\",\n\tReadyToChangeLevel: \"NetReadyToChange\"\n};\n\npm.NetworkDebugSendTypes = {\n\tDISCOVER: 0,\n\tBROADCAST_DATA: 1,\n\tTEACHER_SERVER: 2,\n\tSTUDENT_CLIENT: 3,\n\tGAME_SERVER: 4,\n\tGAME_CLIENT: 5,\n\tOTHER: 6\n};\n","/**\n * Created by Nikita Besshaposhnikov on 28.11.18.\n */\n\n/**\n * Starting order of overlay layers.\n * @const\n * @type {number}\n */\nvar OVERLAY_START_ORDER = 1000;\n\n/**\n * This namespace contains functions to work with running scene.\n * @namespace\n */\npm.runningSceneUtils = {\n _children: [],\n _order: 0,\n _overlayOrder: OVERLAY_START_ORDER,\n _currentScene: null,\n\n _checkScene: function()\n {\n var runningScene = cc.director.getRunningScene();\n\n if(!this._currentScene || this._currentScene !== runningScene)\n {\n this._children = [];\n this._order = 0;\n this._overlayOrder = OVERLAY_START_ORDER;\n this._currentScene = runningScene;\n }\n },\n\n addChild: function(child, tag)\n {\n this._checkScene();\n this._children.push(child);\n\n this._currentScene.addChild(child, this._order++, tag);\n },\n\n\taddChildWithOverlayOrder: function(child, tag)\n\t{\n\t\tthis._checkScene();\n\t\tthis._children.push(child);\n\n\t\tthis._currentScene.addChild(child, ++this._overlayOrder, tag);\n\t},\n\n removeChild: function(child, cleanup)\n {\n var index = this._children.indexOf(child);\n\n if(index !== -1)\n {\n this._children.splice(index, 1);\n this._currentScene.removeChild(child, cleanup);\n }\n },\n\n cleanup: function()\n {\n for(var i = 0; i < this._children.length; ++i)\n this._currentScene.removeChild(this._children[i]);\n\n this._children = [];\n this._order = 0;\n\t\tthis._overlayOrder = OVERLAY_START_ORDER;\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 22.03.17.\n */\n\npm.LOCAL_ADDRESS = 16777343;\n\npm.GAME_SERVER_PACKET_TYPE = {\n\tLOAD_LEVEL: \"load_level\",\n\tPROGRAM_UPDATED: \"program_updated\",\n\tSTART_GAME: \"start_game\"\n};\n\npm.GAME_CLIENT_PACKET_TYPE = {\n\tPROGRAM_UPDATED: \"program_updated\",\n\tREADY_FOR_GAME: \"ready_for_game\"\n};\n\npm.TEACHER_SERVER_PACKET_TYPE = {\n\tSTART_SERVER: \"start_server\",\n\tBECOME_SERVER: \"become_server\",\n\tCONNECT_TO_SERVER: \"connect\",\n\tRECONNECT_TO_SERVER: \"reconnect\",\n\tCHANGE_LEVEL: \"change_level\",\n\tSTOP_GAME: \"stop_game\",\n\tSTATUS_REQUEST: \"status_request\",\n\tTIME_INFO: \"time_info\"\n};\n\npm.STUDENT_CLIENT_PACKET_TYPE = {\n\tSTATUS: \"status\",\n\tLEVEL_STATUS_UPDATED: \"level_status_updated\",\n\tROBOT_INDEX_MAP: \"robot_index_map\",\n\tPROGRAM: \"program\",\n\tTIME_INFO: \"time_info\",\n\tLEVEL_SCENE_ENTERED: \"level_scene_entered\"\n};\n\npm.BROADCAST_DATA_PACKET_TYPE = {\n\tCLIENT: \"c\",\n\tSERVER: \"s\",\n\tFREE: \"f\",\n\tCLEAR_CACHE: \"cl\",\n\tCONNECT_TO_TEACHER_SERVER: \"cts\",\n\tDEBUG_RECONNECT: \"rec\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 20.03.17.\n */\n\npm.GameServerImpl = pm.GameServer.extend({\n\n\t_clients: [],\n\t_playersConnectedCallback: null,\n\t_requiredPlayersCount: 0,\n\n\t_robotIndexMap: {},\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis._clients = [];\n\t\tthis._robotIndexMap = {};\n\n\t\tthis.setEventCallback(this._eventCallback.bind(this));\n\t\tthis.setPacketCallback(this._packetCallback.bind(this));\n\t},\n\n\tsetPlayersConnectedCallback: function(callback)\n\t{\n\t\tthis._playersConnectedCallback = callback;\n\t},\n\n\tsetPlayersCount: function(count)\n\t{\n\t\tthis._requiredPlayersCount = count;\n\t},\n\n\t_sendLoadLevel: function(client, robotIndex)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.GAME_SERVER_PACKET_TYPE.LOAD_LEVEL,\n\t\t\trobotIndex: robotIndex\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending load level packet to client with id: \" + client.getId(), pm.NetworkDebugSendTypes.GAME_SERVER, packet);\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\t_eventCallback: function(event, client)\n\t{\n\t\tswitch(Number(event))\n\t\t{\n\t\t\tcase pm.GameServer.CLIENT_CONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Client connected with id: \" + client.getId() + \", host: \" + client.getHost(), pm.NetworkDebugSendTypes.GAME_SERVER);\n\n\t\t\t\tif(this._clients.length === this._requiredPlayersCount)\n\t\t\t\t\treturn;\n\n\t\t\t\tthis._clients.push(client);\n\n\t\t\t\tif(this._clients.length === this._requiredPlayersCount)\n\t\t\t\t{\n\t\t\t\t\tif(this._playersConnectedCallback)\n\t\t\t\t\t\tthis._playersConnectedCallback.call();\n\n\t\t\t\t\tpm.networkUtils.log(\"Send load level packet to all clients\", pm.NetworkDebugSendTypes.GAME_SERVER);\n\n\t\t\t\t\tfor(var i = 0 ; i < this._clients.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!this._clients[i].loaded)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar robotIndex = this._robotIndexMap[this._clients[i].getHost()];\n\n\t\t\t\t\t\t\tif(robotIndex === undefined)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trobotIndex = i;\n\t\t\t\t\t\t\t\tthis._robotIndexMap[this._clients[i].getHost()] = i;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis._sendLoadLevel(this._clients[i], robotIndex);\n\t\t\t\t\t\t\tthis._clients[i].loaded = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpm.networkUtils.log(\"Final robot index map: \" + JSON.stringify(this._robotIndexMap), pm.NetworkDebugSendTypes.GAME_SERVER);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GameServer.CLIENT_DISCONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Client disconnected with id: \" + client.getId(), pm.NetworkDebugSendTypes.GAME_SERVER);\n\n\t\t\t\tvar clientIndex = this._clients.indexOf(client);\n\n\t\t\t\tif (this._clients[clientIndex])\n\t\t\t\t{\n\t\t\t\t\tthis._clients[clientIndex].loaded = false;\n\t\t\t\t\tthis._clients.splice(clientIndex, 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tcleanReadyFlag: function()\n\t{\n\t\tfor(var i = 0; i < this._clients.length; ++i)\n\t\t\tthis._clients[i].ready = false;\n\t},\n\n\tstop: function ()\n\t{\n\t\tthis._clients = [];\n\t\tpm.GameServer.prototype.stop.call(this);\n\t},\n\n\t_packetCallback: function(client, packet)\n\t{\n\t\tvar parsedPacket = undefined;\n\n\t\ttry\n\t\t{\n\t\t\tparsedPacket = JSON.parse(packet);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from client: \" + client.getId() + \". Packet data: \\n\" + packet, pm.NetworkDebugSendTypes.GAME_SERVER, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tif(parsedPacket !== null && !parsedPacket.type)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from client(no type field): \" + client.getId() + \". Packet data: \\n\" + packet, pm.NetworkDebugSendTypes.GAME_SERVER, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch(parsedPacket.type)\n\t\t{\n\t\t\tcase pm.GAME_CLIENT_PACKET_TYPE.PROGRAM_UPDATED:\n\t\t\t\tpm.networkUtils.log(\"Received program packet from client \" + client.getId(), pm.NetworkDebugSendTypes.GAME_SERVER, parsedPacket);\n\n\t\t\t\tparsedPacket.type = pm.GAME_SERVER_PACKET_TYPE.PROGRAM_UPDATED;\n\t\t\t\tparsedPacket.robotIndex = this._robotIndexMap[client.getHost()];\n\n\t\t\t\tpm.networkUtils.log(\"Sending program packet to all clients\", pm.NetworkDebugSendTypes.GAME_SERVER, parsedPacket);\n\n\t\t\t\tthis.sendBroadcastPacket(JSON.stringify(parsedPacket));\n\n\t\t\t\tbreak;\n\t\t\tcase pm.GAME_CLIENT_PACKET_TYPE.READY_FOR_GAME:\n\t\t\t\tpm.networkUtils.log(\"Received ready for game packet from client \" + client.getId(), pm.NetworkDebugSendTypes.GAME_SERVER, parsedPacket);\n\n\t\t\t\tclient.ready = parsedPacket.ready;\n\n\t\t\t\tvar send = true;\n\n\t\t\t\tfor(var i = 0; i < this._clients.length; ++i)\n\t\t\t\t\tsend = send && this._clients[i].ready;\n\n\t\t\t\tif(send)\n\t\t\t\t{\n\t\t\t\t\tvar startPacket = {type: pm.GAME_SERVER_PACKET_TYPE.START_GAME};\n\n\t\t\t\t\tpm.networkUtils.log(\"Send start game packet to all clients\", pm.NetworkDebugSendTypes.GAME_SERVER, startPacket);\n\n\t\t\t\t\tthis.sendBroadcastPacket(JSON.stringify(startPacket));\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tsetRobotIndexMap: function (robotIndexMap)\n\t{\n\t\tthis._robotIndexMap = robotIndexMap;\n\t},\n\n\tgetRobotIndexMap: function ()\n\t{\n\t\treturn this._robotIndexMap;\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 22.03.17.\n */\n\npm.GameClientImpl = pm.GameClient.extend({\n\n\t_loadLevelCallback: null,\n\n\t_robotIndex: 0,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.setEventCallback(this._eventCallback.bind(this));\n\t\tthis.setPacketCallback(this._packetCallback.bind(this));\n\n\t\tpm.registerCustomEventListener(pm.USER_PROGRAM_UPDATED_STR, this._programChangedCallback.bind(this), 10);\n\t},\n\n\tsetLoadLevelCallback: function(callback)\n\t{\n\t\tthis._loadLevelCallback = callback;\n\t},\n\n\tsendReadyForNetworkGame: function(ready)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.GAME_CLIENT_PACKET_TYPE.READY_FOR_GAME,\n\t\t\tready: ready\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending ready for network game packet\", pm.NetworkDebugSendTypes.GAME_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\t_eventCallback: function(event)\n\t{\n\t\tswitch(Number(event))\n\t\t{\n\t\t\tcase pm.GameClient.CONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Game client connected to server\", pm.NetworkDebugSendTypes.GAME_CLIENT);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GameClient.DISCONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Game client disconnected from server\", pm.NetworkDebugSendTypes.GAME_CLIENT);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_packetCallback: function(packet)\n\t{\n\t\tvar parsedPacket = undefined;\n\t\tcc.log(packet);\n\n\t\ttry\n\t\t{\n\t\t\tparsedPacket = JSON.parse(packet);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from network: \" + packet, pm.NetworkDebugSendTypes.GAME_CLIENT, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tif(parsedPacket !== null && !parsedPacket.type)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from network(no type field): \" + packet, pm.NetworkDebugSendTypes.GAME_CLIENT, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch(parsedPacket.type)\n\t\t{\n\t\t\tcase pm.GAME_SERVER_PACKET_TYPE.LOAD_LEVEL:\n\t\t\t\tpm.networkUtils.log(\"Received load level packet\", pm.NetworkDebugSendTypes.GAME_CLIENT, parsedPacket);\n\n\t\t\t\tthis._robotIndex = parsedPacket.robotIndex;\n\n\t\t\t\tif(this._loadLevelCallback)\n\t\t\t\t\tthis._loadLevelCallback(parsedPacket.robotIndex);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GAME_SERVER_PACKET_TYPE.PROGRAM_UPDATED:\n\t\t\t\tpm.networkUtils.log(\"Received program packet\", pm.NetworkDebugSendTypes.GAME_CLIENT, parsedPacket);\n\n\t\t\t\tif(this._robotIndex !== parsedPacket.robotIndex)\n\t\t\t\t\tpm.sendCustomEvent(pm.SET_ROBOT_PROGRAM_EVEN_STR, parsedPacket);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.GAME_SERVER_PACKET_TYPE.START_GAME:\n\t\t\t\tpm.networkUtils.log(\"Received start game packet\", pm.NetworkDebugSendTypes.GAME_CLIENT, parsedPacket);\n\n\t\t\t\tpm.sendCustomEvent(pm.START_NETWORK_GAME_EVENT_STR);\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpm.networkUtils.log(\"Unknown packet type: \" + parsedPacket.type, pm.NetworkDebugSendTypes.GAME_CLIENT, parsedPacket);\n\n\t\t}\n\t},\n\n\t_programChangedCallback: function()\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.GAME_CLIENT_PACKET_TYPE.PROGRAM_UPDATED,\n\t\t\tprogram: world.runningLevel.getCurrentRobot().getProgramData(),\n\t\t\tprogramDataIndex: world.runningLevel.programData[world.runningLevel.getCurrentRobot().groupID].currentIndex\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending program updated packet\", pm.NetworkDebugSendTypes.GAME_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 13.03.18.\n */\n\npm.ControlledTeam = cc.Class.extend({\n\n\tgame: 0,\n\tlevel: 0,\n\n\thostStudent: null,\n\n\tstudents: [],\n\n\tstate: pm.NetworkGameState.Develop,\n\n\tstatesMap: {},\n\n\tmarkDeleted: false,\n\n\trobotIndexMap: null,\n\n\tindex: -1,\n\n\ttransitionFinished: true,\n\n\tctor: function(host, name, game, level)\n\t{\n\t\tthis.hostStudent = new pm.ControlledStudent(host, name);\n\n\t\tthis.level = level;\n\t\tthis.game = game;\n\n\t\tthis.students = [];\n\t},\n\n\tclearPrograms: function()\n\t{\n\t\tthis.hostStudent.program = null;\n\n\t\tfor (var i = 0; i < this.students.length; ++i)\n\t\t\tthis.students[i].program = null;\n\t}\n});\n\npm.ControlledStudent = cc.Class.extend({\n\n\thost: 0,\n\tname: 0,\n\tclient: null,\n\n\tstate: -1,\n\n\tdiscoverDate: null,\n\tlastConnectPacketDate: null,\n\n\tprogram: null,\n\n\tctor: function(host, name, state)\n\t{\n\t\tthis.name = name;\n\t\tthis.host = host;\n\n\t\tthis.discoverDate = new Date();\n\n\t\tthis.state = state || pm.ControlledStudent.State.Disconnected;\n\t}\n\t//\n\t// isConnected: function()\n\t// {\n\t// return this.client !== null;\n\t// }\n\n});\n\npm.ControlledStudent.State = {\n\tDisconnected: -1,\n\tFree: 0,\n\tConnecting: 1,\n\tConnected: 2,\n\tConnectedToGame: 3,\n\tPendingReconnect: 4\n};\n\npm.TeacherServerImpl = pm.GameServer.extend({\n\n\tteams: [],\n\t_clients: [],\n\t_refreshCallback: null,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis._clients = [];\n\t\tthis.teams = [];\n\n\t\tthis.setEventCallback(this._eventCallback.bind(this));\n\t\tthis.setPacketCallback(this._packetCallback.bind(this));\n\t},\n\n\tsetRefreshCallback: function(callback)\n\t{\n\t\tthis._refreshCallback = callback;\n\t},\n\n\tstart: function(port)\n\t{\n\t\tpm.GameServer.prototype.start.call(this, port);\n\n\t\t// cc.director.getScheduler().schedule(this._requestClientsInfo, this, 1, cc.REPEAT_FOREVER, 0, false, \"clientsInfo\");\n\t},\n\n\t// _requestClientsInfo: function()\n\t// {\n\t// \tpm.networkUtils.log(\"Teacher server requesting info\");\n\t//\n\t// \tvar packet = {type: pm.TEACHER_SERVER_PACKET_TYPE.STATUS_REQUEST};\n\t//\n\t// \tthis.sendBroadcastPacket(JSON.stringify(packet));\n\t// },\n\n\t_sendStartServer: function(client, game, level, playerCount, programMap, robotIndexMap)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.START_SERVER,\n\t\t\tgame: game,\n\t\t\tlevel: level,\n\t\t\tlevelObject: world.games[game].levels[level],\n\t\t\tplayerCount: playerCount,\n\t\t\tprogramMap: programMap,\n\t\t\trobotIndexMap: robotIndexMap\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending start server packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\tsendStopGame: function(client)\n\t{\n\t\tvar packet = {type: pm.TEACHER_SERVER_PACKET_TYPE.STOP_GAME};\n\n\t\tpm.networkUtils.log(\"Sending stop game packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\t_sendBecomeServer: function(client, playerCount, robotIndexMap)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.BECOME_SERVER,\n\t\t\tplayerCount: playerCount,\n\t\t\trobotIndexMap: robotIndexMap\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending become server packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\tsendConnectToServer: function(client, host, game, level, programMap, robotIndexMap)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.CONNECT_TO_SERVER,\n\t\t\tgame: game,\n\t\t\tlevel: level,\n\t\t\tlevelObject: world.games[game].levels[level],\n\t\t\thost: host,\n\t\t\tprogramMap: programMap,\n\t\t\trobotIndexMap: robotIndexMap\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending connect to server packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\tsendChangeLevel: function(client, game, level)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.CHANGE_LEVEL,\n\t\t\tgame: game,\n\t\t\tlevel: level,\n\t\t\tlevelObject: world.games[game].levels[level]\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending change level packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\tsendTimeInfo: function(client, solvingTimes)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.TIME_INFO,\n\t\t\tsolvingTimes: solvingTimes\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending time info packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\t_sendReconnectToServer: function(client, host)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.TEACHER_SERVER_PACKET_TYPE.RECONNECT_TO_SERVER,\n\t\t\thost: host\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending reconnect to server packet to client with id: \"+client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, packet, client.getHost());\n\n\t\tthis.sendPacketToClient(client.getId(), JSON.stringify(packet));\n\t},\n\n\t_reselectTeamHost: function(team, newHostIndex)\n\t{\n\t\tvar newHost = team.students[newHostIndex];\n\t\tteam.students.splice(newHostIndex, 1);\n\n\t\tteam.students.push(team.hostStudent);\n\n\t\tpm.networkUtils.log(\"Reselecting team host from: \" + team.hostStudent.host + \" to: \" + newHost.host, pm.NetworkDebugSendTypes.TEACHER_SERVER, null, newHost.host);\n\n\t\tteam.hostStudent = newHost;\n\n\t\tif(team.robotIndexMap)\n\t\t{\n\t\t\tvar indexMap = cc.clone(team.robotIndexMap);\n\n\t\t\tindexMap[pm.LOCAL_ADDRESS] = indexMap[team.hostStudent.host];\n\t\t\tdelete indexMap[team.hostStudent.host];\n\n\t\t\tpm.networkUtils.log(\"Sending robot index map packet: \" + JSON.stringify(indexMap), pm.NetworkDebugSendTypes.TEACHER_SERVER, null, newHost.host);\n\n\t\t\tthis._sendBecomeServer(newHost.client, team.students.length + 1, indexMap);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._sendBecomeServer(newHost.client, team.students.length + 1);\n\t\t}\n\n\t\tfor (var s = 0; s < team.students.length; ++s)\n\t\t{\n\t\t\tif (team.students[s].client)\n\t\t\t{\n\t\t\t\tteam.students[s].state = pm.ControlledStudent.State.PendingReconnect;\n\t\t\t\tthis._sendReconnectToServer(team.students[s].client, team.hostStudent.host);\n\t\t\t}\n\t\t}\n\t},\n\n\t_eventCallback: function(event, client)\n\t{\n\t\tswitch(Number(event))\n\t\t{\n\t\t\tcase pm.GameServer.CLIENT_CONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Client connected to teacher server with id: \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, null, client.getHost());\n\n\t\t\t\tvar student = null;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tstudent = team.hostStudent;\n\n\t\t\t\t\tif(student.state === pm.ControlledStudent.State.Connecting && student.host === client.getHost())\n\t\t\t\t\t{\n\t\t\t\t\t\tteam.hostStudent.state = pm.ControlledStudent.State.Connected;\n\t\t\t\t\t\tteam.hostStudent.client = client;\n\n\t\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\t\tthis._refreshCallback(t);\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tstudent = team.students[s];\n\n\t\t\t\t\t\tif(student.state === pm.ControlledStudent.State.Connecting && student.host === client.getHost())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tteam.students[s].state = pm.ControlledStudent.State.Connected;\n\t\t\t\t\t\t\tteam.students[s].client = client;\n\n\t\t\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\t\t\tthis._refreshCallback(t);\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GameServer.CLIENT_DISCONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Client disconnected from teacher server with id: \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, null, client.getHost());\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tteam.hostStudent.state = pm.ControlledStudent.State.Disconnected;\n\t\t\t\t\t\tteam.hostStudent.client = null;\n\n\t\t\t\t\t\tif(!team.markDeleted)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (team.students[s].client)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis._reselectTeamHost(team, s);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\t\tthis._refreshCallback(t);\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tteam.students[s].state = pm.ControlledStudent.State.Disconnected;\n\t\t\t\t\t\t\tteam.students[s].client = null;\n\n\t\t\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\t\t\tthis._refreshCallback(t);\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tstop: function ()\n\t{\n\t\t// cc.director.getScheduler().unschedule(this, \"clientsInfo\");\n\t\tpm.GameServer.prototype.stop.call(this);\n\t},\n\n\t_packetCallback: function(client, packet)\n\t{\n\t\tvar parsedPacket = undefined;\n\n\t\ttry\n\t\t{\n\t\t\tparsedPacket = JSON.parse(packet);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from student: \" + client.getId() + \". Packet data: \\n\" + packet, pm.NetworkDebugSendTypes.TEACHER_SERVER, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tif(parsedPacket !== null && !parsedPacket.type)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from student(no type field): \" + client.getId() + \". Packet data: \\n\" + packet, pm.NetworkDebugSendTypes.TEACHER_SERVER, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch(parsedPacket.type)\n\t\t{\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.LEVEL_STATUS_UPDATED:\n\n\t\t\t\tpm.networkUtils.log(\"Received update status packet from student \" + client.getId(),pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar found = false;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tteam.statesMap[client.getId()] = parsedPacket.state;\n\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tteam.statesMap[client.getId()] = parsedPacket.state;\n\n\t\t\t\t\t\t\tfound = true;\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (found)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\t\tthis._refreshCallback(t);\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.STATUS:\n\n\t\t\t\tpm.networkUtils.log(\"Received status packet from student \" + client.getId() + \" is connected to game: \" + parsedPacket.connectedToGame, pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar foundTeam = null;\n\t\t\t\tvar foundTeamIndex = -1;\n\t\t\t\tvar foundStudent = null;\n\t\t\t\tvar isHost = false;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\tfoundTeamIndex = t;\n\t\t\t\t\t\tfoundStudent = team.hostStudent;\n\t\t\t\t\t\tisHost = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\t\tfoundTeamIndex = t;\n\t\t\t\t\t\t\tfoundStudent = team.students[s];\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(foundStudent)\n\t\t\t\t{\n\t\t\t\t\tvar disconnected = foundStudent.state === pm.ControlledStudent.State.ConnectedToGame && !parsedPacket.connectedToGame;\n\n\t\t\t\t\tif(parsedPacket.connectedToGame)\n\t\t\t\t\t\tfoundStudent.state = pm.ControlledStudent.State.ConnectedToGame;\n\t\t\t\t\telse if(foundStudent.state !== pm.ControlledStudent.State.PendingReconnect)\n\t\t\t\t\t\tfoundStudent.state = pm.ControlledStudent.State.Connected;\n\n\t\t\t\t\tif(foundStudent.state === pm.ControlledStudent.State.Connected)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar programMap = {};\n\n\t\t\t\t\t\tpm.networkUtils.log(\"found team host student host: \" + foundTeam.hostStudent.host, pm.NetworkDebugSendTypes.TEACHER_SERVER, null, foundTeam.hostStudent.host);\n\t\t\t\t\t\t// pm.networkUtils.log(\"found team host student program: \" + JSON.stringify(foundTeam.hostStudent.program), pm.NetworkDebugSendTypes.TEACHER_SERVER);\n\n\t\t\t\t\t\tprogramMap[foundTeam.hostStudent.host] = foundTeam.hostStudent.program;\n\n\t\t\t\t\t\tfor(var s = 0; s < foundTeam.students.length; ++s)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpm.networkUtils.log(\"found team student host: \"+foundTeam.students[s].host, pm.NetworkDebugSendTypes.TEACHER_SERVER, null, foundTeam.students[s].host);\n\t\t\t\t\t\t\t// pm.networkUtils.log(\"found team student program: \"+JSON.stringify(foundTeam.students[s].program), pm.NetworkDebugSendTypes.TEACHER_SERVER);\n\n\t\t\t\t\t\t\tprogramMap[foundTeam.students[s].host] = foundTeam.students[s].program;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpm.networkUtils.log(\"found team robot index map: \"+JSON.stringify(foundTeam.robotIndexMap), pm.NetworkDebugSendTypes.TEACHER_SERVER, null, foundTeam.hostStudent.host);\n\n\t\t\t\t\t\tvar indexMap = null;\n\t\t\t\t\t\tvar programMapCopy = null;\n\n\t\t\t\t\t\tif (foundTeam.robotIndexMap)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tindexMap = cc.clone(foundTeam.robotIndexMap);\n\t\t\t\t\t\t\tprogramMapCopy = cc.clone(programMap);\n\n\t\t\t\t\t\t\tindexMap[pm.LOCAL_ADDRESS] = indexMap[foundTeam.hostStudent.host];\n\t\t\t\t\t\t\tprogramMapCopy[pm.LOCAL_ADDRESS] = programMapCopy[foundTeam.hostStudent.host];\n\n\t\t\t\t\t\t\tdelete indexMap[foundTeam.hostStudent.host];\n\t\t\t\t\t\t\tdelete programMapCopy[foundTeam.hostStudent.host];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// pm.networkUtils.log(\"Program map: \" + JSON.stringify(programMap), pm.NetworkDebugSendTypes.TEACHER_SERVER);\n\n\t\t\t\t\t\tif(isHost)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._sendStartServer(client, foundTeam.game, foundTeam.level, foundTeam.students.length + 1, programMapCopy, indexMap);\n\n\t\t\t\t\t\t\tfor (var s = 0; s < foundTeam.students.length; ++s)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (foundTeam.students[s].state === pm.ControlledStudent.State.ConnectedToGame)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfoundTeam.students[s].state = pm.ControlledStudent.State.PendingReconnect;\n\t\t\t\t\t\t\t\t\tthis._sendReconnectToServer(foundTeam.students[s].client, foundTeam.hostStudent.host);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if(!disconnected)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.sendConnectToServer(client, foundTeam.hostStudent.host, foundTeam.game, foundTeam.level, programMapCopy, indexMap);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfoundStudent.state = pm.ControlledStudent.State.PendingReconnect;\n\t\t\t\t\t\t\tthis._sendReconnectToServer(client, foundTeam.hostStudent.host);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfoundTeam.state = parsedPacket.levelState;\n\n\t\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\t\tthis._refreshCallback(foundTeamIndex);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.ROBOT_INDEX_MAP:\n\t\t\t\tpm.networkUtils.log(\"Received robot index map packet from student \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar foundTeam = null;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundTeam = team;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(foundTeam)\n\t\t\t\t{\n\t\t\t\t\tvar indexMap = parsedPacket.robotIndexMap;\n\n\t\t\t\t\tindexMap[client.getHost()] = indexMap[pm.LOCAL_ADDRESS];\n\t\t\t\t\tdelete indexMap[pm.LOCAL_ADDRESS];\n\n\t\t\t\t\tpm.networkUtils.log(\"Received robot index map packet: \" + JSON.stringify(indexMap), pm.NetworkDebugSendTypes.TEACHER_SERVER, null, client.getHost());\n\n\t\t\t\t\tfoundTeam.robotIndexMap = indexMap;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.PROGRAM:\n\t\t\t\tpm.networkUtils.log(\"Received program packet from student \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar foundTeam = null;\n\t\t\t\tvar foundTeamIndex = -1;\n\t\t\t\tvar foundStudent = null;\n\t\t\t\tvar isHost = false;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\tfoundTeamIndex = t;\n\t\t\t\t\t\tfoundStudent = team.hostStudent;\n\t\t\t\t\t\tisHost = true;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\t\tfoundTeamIndex = t;\n\t\t\t\t\t\t\tfoundStudent = team.students[s];\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(foundStudent)\n\t\t\t\t{\n\t\t\t\t\tpm.networkUtils.log(\"Saving student program\", pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\t\tfoundStudent.program = parsedPacket.program;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.TIME_INFO:\n\t\t\t\tpm.networkUtils.log(\"Received time info packet from student \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar foundTeam = null;\n\t\t\t\tvar foundTeamIndex = -1;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\tfoundTeamIndex = t;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\t\tfoundTeamIndex = t;\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (foundTeam && parsedPacket.solvingTimes)\n\t\t\t\t\tfoundTeam.solvingTimes = parsedPacket.solvingTimes;\n\n\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\tthis._refreshCallback(foundTeamIndex);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.STUDENT_CLIENT_PACKET_TYPE.LEVEL_SCENE_ENTERED:\n\t\t\t\tpm.networkUtils.log(\"Received level scene entered packet from student \" + client.getId(), pm.NetworkDebugSendTypes.TEACHER_SERVER, parsedPacket, client.getHost());\n\n\t\t\t\tvar foundTeam = null;\n\t\t\t\tvar foundTeamIndex = -1;\n\n\t\t\t\tfor(var t = 0 ; t < this.teams.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tvar team = this.teams[t];\n\n\t\t\t\t\tif(team.markDeleted)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif(team.hostStudent.client && team.hostStudent.client.getId() === client.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\tfoundTeamIndex = t;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var s = 0; s < team.students.length; ++s)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(team.students[s].client && team.students[s].client.getId() === client.getId())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfoundTeam = team;\n\t\t\t\t\t\t\tfoundTeamIndex = t;\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (foundTeam)\n\t\t\t\t\tfoundTeam.transitionFinished = true;\n\n\t\t\t\tif(this._refreshCallback)\n\t\t\t\t\tthis._refreshCallback(foundTeamIndex);\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 13.03.18.\n */\n\npm.StudentClientImpl = pm.GameClient.extend({\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tsendCurrentLevelStatus: function(state)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.LEVEL_STATUS_UPDATED,\n\t\t\tstate: state\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending level status updated packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\tsendStatus: function(connectedToGame, levelState)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.STATUS,\n\t\t\tconnectedToGame: connectedToGame,\n\t\t\tlevelState: levelState\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending status packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\tsendRobotIndexMap: function(robotIndexMap)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.ROBOT_INDEX_MAP,\n\t\t\trobotIndexMap: robotIndexMap\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending robot index map packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\tsendProgram: function()\n\t{\n\t\tvar program;\n\n\t\tvar level = world.runningLevel;\n\t\tvar robot = level.getCurrentRobot();\n\n\t\tif (!level.programDataCache[robot.groupID])\n\t\t\tprogram = level.programData[robot.groupID];\n\t\telse\n\t\t\tprogram = level.programDataCache[robot.groupID];\n\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.PROGRAM,\n\t\t\tprogram: program\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending program packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\tsendTimeInfoToTeacher: function(solvingTimes)\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.TIME_INFO,\n\t\t\tsolvingTimes: solvingTimes\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending time info packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t},\n\n\tsendLevelSceneEntered: function()\n\t{\n\t\tvar packet = {\n\t\t\ttype: pm.STUDENT_CLIENT_PACKET_TYPE.LEVEL_SCENE_ENTERED\n\t\t};\n\n\t\tpm.networkUtils.log(\"Sending level scene entered packet\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\n\t\tthis.sendPacket(JSON.stringify(packet));\n\t}\n});\n\n","\npm.ControlledNetworkGame = cc.Class.extend({\n\t_pendingGameIndex: 0,\n\t_pendingLevelIndex: 0,\n\t_pendingLevelObject: 0,\n\t_pendingProgramMap: null,\n\t_robotIndexMap: null,\n\n\t_waitLayer: null,\n\n\t_gameClient: null,\n\t_studentClient: null,\n\t_gameServer: null,\n\n\t_teacherHost: 0,\n\t_connectedHost: 0,\n\n\t_reconnecting: false,\n\t_started: false,\n\t_inGame: false,\n\t_isServer: false,\n\n\t_stopCallback: null,\n\n\t_robotIndex: -1,\n\t_solvingTimes: null,\n\n\t_currentLevelState: null,\n\n\tctor: function(stopCallback)\n\t{\n\t\tthis._stopCallback = stopCallback;\n\n\t\tpm.registerCustomEventListener(pm.GAME_ON_HIDE_EVENT, this._gameOnHide.bind(this), 1);\n\t},\n\n\tstart: function(teacherHost)\n\t{\n\t\tthis._teacherHost = teacherHost;\n\n\t\tif(!this._inGame)\n\t\t{\n\t\t\tthis._waitLayer = new WaitNetworkGameLayer();\n\t\t\tthis._waitLayer.show();\n\n\t\t\tcc.director.getScheduler().schedule(this._cleanup, this, 0, 1, pm.ControlledNetworkGame.WAIT_TIMEOUT, false, \"stopWait\");\n\t\t}\n\n\t\tif(this._studentClient && this._studentClient.isConnected())\n\t\t{\n\t\t\tthis._studentClient.clearCallbacks();\n\t\t\tthis._studentClient.disconnect();\n\t\t}\n\n\t\tthis._studentClient = new pm.StudentClientImpl();\n\n\t\tthis._studentClient.setEventCallback(this._teacherEventCallback.bind(this));\n\t\tthis._studentClient.setPacketCallback(this._teacherPacketCallback.bind(this));\n\n\t\tthis._studentClient.connect(this._teacherHost, pm.TEACHER_SERVER_PORT);\n\t},\n\n\tsendReadyForNetworkGame: function(ready)\n\t{\n\t\tif(this._gameClient)\n\t\t\tthis._gameClient.sendReadyForNetworkGame(ready);\n\t},\n\n\t_gameOnHide: function()\n\t{\n\t\tpm.networkUtils.log(\"Received event for hide game. Stopping network activity\", pm.NetworkDebugSendTypes.OTHER);\n\n\t\tthis._cleanup();\n\t},\n\n\t_teacherEventCallback: function(event)\n\t{\n\t\tswitch(Number(event))\n\t\t{\n\t\t\tcase pm.GameClient.CONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Student client connected to server\", pm.NetworkDebugSendTypes.STUDENT_CLIENT);\n\n\t\t\t\tthis._studentClient.sendStatus(this._gameClient !== null && this._gameClient.isConnected(), this._currentLevelState);\n\n\t\t\t\tif (this._gameServer)\n\t\t\t\t\tthis._studentClient.sendRobotIndexMap(this._gameServer.getRobotIndexMap());\n\n\t\t\t\tif (world.runningLevel instanceof pm.AbstractLevel)\n\t\t\t\t\tthis._studentClient.sendProgram();\n\n\t\t\t\tif (this._solvingTimes)\n\t\t\t\t\tthis._studentClient.sendTimeInfoToTeacher(this._solvingTimes);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GameClient.DISCONNECTED_EVENT:\n\t\t\t\tpm.networkUtils.log(\"Student client disconnected from server\", pm.NetworkDebugSendTypes.STUDENT_CLIENT);\n\n\t\t\t\tif (world.runningLevel instanceof pm.AbstractLevel)\n\t\t\t\t\tthis._studentClient.sendProgram();\n\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_gameClientEventCallback: function(event)\n\t{\n\t\tswitch(Number(event))\n\t\t{\n\t\t\tcase pm.GameClient.CONNECTED_EVENT:\n\t\t\t\tthis._reconnecting = false;\n\n\t\t\t\tif(this._studentClient)\n\t\t\t\t{\n\t\t\t\t\tthis._studentClient.sendStatus(true, this._currentLevelState);\n\n\t\t\t\t\tif (world.runningLevel instanceof pm.AbstractLevel)\n\t\t\t\t\t\tthis._studentClient.sendProgram();\n\t\t\t\t}\n\n\t\t\t\tpm.networkUtils.log(\"Game client connected to server\", pm.NetworkDebugSendTypes.STUDENT_CLIENT);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.GameClient.DISCONNECTED_EVENT:\n\t\t\t\tif(!this._reconnecting && this._studentClient)\n\t\t\t\t{\n\t\t\t\t\tthis._studentClient.sendStatus(false, this._currentLevelState);\n\n\t\t\t\t\tif (world.runningLevel instanceof pm.AbstractLevel)\n\t\t\t\t\t\tthis._studentClient.sendProgram();\n\t\t\t\t}\n\n\t\t\t\tpm.networkUtils.log(\"Game client disconnected from server\", pm.NetworkDebugSendTypes.STUDENT_CLIENT);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_teacherPacketCallback: function(packet)\n\t{\n\t\tvar parsedPacket = undefined;\n\n\t\ttry\n\t\t{\n\t\t\tparsedPacket = JSON.parse(packet);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from teacher server: \" + packet, pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tif(parsedPacket !== null && !parsedPacket.type)\n\t\t{\n\t\t\tpm.networkUtils.log(\"Incorrect packet from teacher server(no type field): \" + packet, pm.NetworkDebugSendTypes.STUDENT_CLIENT, packet);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch(parsedPacket.type)\n\t\t{\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.START_SERVER:\n\t\t\t\tpm.networkUtils.log(\"Received start server packet from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tthis._isServer = true;\n\n\t\t\t\tthis._startGameAsServer(parsedPacket.game, parsedPacket.level, parsedPacket.levelObject, parsedPacket.playerCount, parsedPacket.programMap, parsedPacket.robotIndexMap);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.BECOME_SERVER:\n\t\t\t\tpm.networkUtils.log(\"Received become server packet from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tthis._isServer = true;\n\n\t\t\t\tthis._becomeServer(parsedPacket.playerCount, parsedPacket.robotIndexMap);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.CONNECT_TO_SERVER:\n\t\t\t\tpm.networkUtils.log(\"Received start client packet from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tthis._startGameAsClient(parsedPacket.host, parsedPacket.game, parsedPacket.level, parsedPacket.levelObject, parsedPacket.programMap, parsedPacket.robotIndexMap);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.CHANGE_LEVEL:\n\t\t\t\tpm.networkUtils.log(\"Received change level packet from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tif (this._gameServer)\n\t\t\t\t\tthis._gameServer.cleanReadyFlag();\n\n\t\t\t\tthis._changeLevel(parsedPacket.game, parsedPacket.level, parsedPacket.levelObject);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.RECONNECT_TO_SERVER:\n\t\t\t\tpm.networkUtils.log(\"Received reconnect packet from teacher to host: \" + parsedPacket.host, pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tthis._reconnectToNewServer(parsedPacket.host);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.STATUS_REQUEST:\n\t\t\t\tpm.networkUtils.log(\"Received request status packet from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.STOP_GAME:\n\t\t\t\tpm.networkUtils.log(\"Received stop game from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\t\t\t\tthis._cleanup();\n\n\t\t\t\tif(this._stopCallback)\n\t\t\t\t\tthis._stopCallback();\n\n\t\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\t\t\tcc.director.runScene(trans);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TEACHER_SERVER_PACKET_TYPE.TIME_INFO:\n\t\t\t\tpm.networkUtils.log(\"Received time info from teacher\", pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t\t\tif (parsedPacket.solvingTimes)\n\t\t\t\t\tthis._solvingTimes = parsedPacket.solvingTimes;\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpm.networkUtils.log(\"Unknown packet type: \" + parsedPacket.type, pm.NetworkDebugSendTypes.STUDENT_CLIENT, parsedPacket);\n\n\t\t}\n\t},\n\n\tisServer: function()\n\t{\n\t\treturn this._gameServer !== null;\n\t},\n\n\tisClient: function()\n\t{\n\t\treturn this._gameServer === null && this._gameClient !== null;\n\t},\n\n\tgetGameIndex: function()\n\t{\n\t\treturn this._pendingGameIndex;\n\t},\n\n\tgetLevelIndex: function()\n\t{\n\t\treturn this._pendingLevelIndex;\n\t},\n\n\tgetConnectedHost: function()\n\t{\n\t\treturn this._connectedHost;\n\t},\n\n\t_hideWaitLayer: function()\n\t{\n\t\tif(this._waitLayer)\n\t\t{\n\t\t\tthis._waitLayer.remove();\n\t\t\tthis._waitLayer = null;\n\t\t}\n\t},\n\n\t_showWaitLayer: function()\n\t{\n\t\tif(!this._waitLayer)\n\t\t{\n\t\t\tthis._waitLayer = new WaitNetworkGameLayer();\n\t\t\tthis._waitLayer.show();\n\t\t}\n\t},\n\n\t_cleanup: function ()\n\t{\n\t\tthis._stopGameClient();\n\t\tthis._stopGameServer();\n\t\tthis._stopStudentClient();\n\n\t\tthis._hideWaitLayer();\n\n\t\tthis._started = false;\n\t\tthis._isServer = false;\n\t\tthis._inGame = false;\n\t},\n\n\t_startGameAsServer: function(game, level, levelObject, playerCount, programMap, robotIndexMap)\n\t{\n\t\tif(this._gameServer)\n\t\t\treturn;\n\n\t\tthis._pendingGameIndex = game;\n\t\tthis._pendingLevelIndex = level;\n\t\tthis._pendingLevelObject = levelObject;\n\t\tthis._pendingProgramMap = programMap;\n\t\tthis._robotIndexMap = robotIndexMap;\n\n\t\tthis._showWaitLayer();\n\n\t\tthis._startGameServer(playerCount, robotIndexMap);\n\t\tthis._startGameClient(pm.LOCAL_ADDRESS, pm.GAME_SERVER_PORT);\n\t},\n\n\t_startGameAsClient: function(host, game, level, levelObject, programMap, robotIndexMap)\n\t{\n\t\tif(this._gameServer || this._gameClient)\n\t\t\treturn;\n\n\t\tthis._pendingGameIndex = game;\n\t\tthis._pendingLevelIndex = level;\n\t\tthis._pendingLevelObject = levelObject;\n\t\tthis._pendingProgramMap = programMap;\n\t\tthis._robotIndexMap = robotIndexMap;\n\n\t\tthis._showWaitLayer();\n\n\t\tthis._startGameClient(host, pm.GAME_SERVER_PORT);\n\t},\n\n\t_changeLevel: function(game, level, levelObject)\n\t{\n\t\tthis._pendingGameIndex = game;\n\t\tthis._pendingLevelIndex = level;\n\t\tthis._pendingLevelObject = null;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.Develop;\n\n\t\tvar o = new pm.Class();\n\n\t\tvar trans = new cc.TransitionFade(\n\t\t\t1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelScene(\n\t\t\t\tGameType.Net,\n\t\t\t\tthis._robotIndex,\n\t\t\t\tthis._pendingGameIndex,\n\t\t\t\tthis._pendingLevelIndex,\n\t\t\t\to.deserialize(levelObject, true)\n\t\t\t)\n\t\t);\n\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_becomeServer: function(playerCount, robotIndexMap)\n\t{\n\t\tthis._reconnecting = true;\n\t\tthis._showWaitLayer();\n\n\t\tthis._stopGameServer();\n\t\tthis._stopGameClient();\n\n\t\tthis._startGameServer(playerCount, robotIndexMap);\n\t\tthis._startGameClient(pm.LOCAL_ADDRESS, pm.GAME_SERVER_PORT);\n\t},\n\n\t_reconnectToNewServer: function(host)\n\t{\n\t\tthis._reconnecting = true;\n\t\tthis._showWaitLayer();\n\n\t\tif(this._gameClient && this._gameClient.isConnected())\n\t\t{\n\t\t\tthis._gameClient.clearCallbacks();\n\t\t\tthis._gameClient.disconnect();\n\t\t}\n\n\t\tthis._gameClient = null;\n\n\t\tthis._startGameClient(host, pm.GAME_SERVER_PORT);\n\t},\n\n\t_startGameServer: function(playerCount, robotIndexMap)\n\t{\n\t\tif(!this._gameServer)\n\t\t\tthis._gameServer = new pm.GameServerImpl();\n\n\t\tthis._gameServer.setPlayersConnectedCallback(this._serverClientsConnectedCallback.bind(this));\n\t\tthis._gameServer.setPlayersCount(playerCount);\n\n\t\tpm.networkUtils.log(\"Start robot index map: \" + JSON.stringify(robotIndexMap), pm.NetworkDebugSendTypes.GAME_SERVER);\n\n\t\tif (robotIndexMap)\n\t\t\tthis._gameServer.setRobotIndexMap(robotIndexMap);\n\n\t\tthis._gameServer.start(pm.GAME_SERVER_PORT);\n\t},\n\n\t_startGameClient: function(host, port)\n\t{\n\t\tif(!this._gameClient)\n\t\t\tthis._gameClient = new pm.GameClientImpl();\n\n\t\tthis._gameClient.setLoadLevelCallback(this._loadLevelCallback.bind(this));\n\t\tthis._gameClient.setEventCallback(this._gameClientEventCallback.bind(this));\n\n\t\tthis._gameClient.connect(host, port);\n\t\tthis._connectedHost = host;\n\t},\n\n\t_serverClientsConnectedCallback: function()\n\t{\n\t\tpm.networkUtils.log(\"All connected to server\", pm.NetworkDebugSendTypes.GAME_SERVER);\n\t},\n\n\t_loadLevelCallback: function(robotIndex)\n\t{\n\t\tpm.networkUtils.log(\"All connected to server\", pm.NetworkDebugSendTypes.GAME_CLIENT);\n\n\t\tthis._robotIndex = robotIndex;\n\n\t\tthis._hideWaitLayer();\n\n\t\tif (this._gameServer)\n\t\t\tthis._studentClient.sendRobotIndexMap(this._gameServer.getRobotIndexMap());\n\n\t\tif(!this._inGame && this._pendingLevelObject)\n\t\t{\n\t\t\t// pm.networkUtils.log(\"Program map: \"+JSON.stringify(this._pendingProgramMap), pm.NetworkDebugSendTypes.GAME_CLIENT);\n\t\t\tpm.networkUtils.log(\"Robot index map: \"+JSON.stringify(this._robotIndexMap), pm.NetworkDebugSendTypes.GAME_CLIENT);\n\n\t\t\tif (this._pendingProgramMap && this._robotIndexMap)\n\t\t\t{\n\t\t\t\tfor (var host in this._robotIndexMap)\n\t\t\t\t{\n\t\t\t\t\tif (this._pendingProgramMap[host])\n\t\t\t\t\t{\n\t\t\t\t\t\tvar data = pm.appUtils.generateProgramData(true);\n\t\t\t\t\t\tdata.deserialize(this._pendingProgramMap[host], false);\n\n\t\t\t\t\t\tthis._pendingLevelObject.programData[this._robotIndexMap[host]] = data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// pm.networkUtils.log(\"Level: \"+JSON.stringify(this._pendingLevelObject), pm.NetworkDebugSendTypes.GAME_CLIENT);\n\n\t\t\tcc.director.getScheduler().unschedule(\"stopWait\", this);\n\n\t\t\tvar o = new pm.Class();\n\n\t\t\tvar trans = new cc.TransitionFade(\n\t\t\t\t1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\t\tnew LevelScene(\n\t\t\t\t\tGameType.Net,\n\t\t\t\t\trobotIndex,\n\t\t\t\t\tthis._pendingGameIndex,\n\t\t\t\t\tthis._pendingLevelIndex,\n\t\t\t\t\to.deserialize(this._pendingLevelObject, true)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcc.director.runScene(trans);\n\n\t\t\tthis._pendingProgramMap = null;\n\t\t\tthis._robotIndexMap = null;\n\t\t\tthis._pendingLevelObject = null;\n\n\t\t\tpm.registerCustomEventListener(pm.ROBOT_WIN_EVENT_STR, this._onWin.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.ROBOT_LOOSE_EVENT_STR, this._onLoose.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.ROBOT_FAILURE_EVENT_STR, this._onFailure.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.PROGRAM_START_EVENT_STR, this._startLevel.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.USER_PROGRAM_UPDATED_STR, this._programChangedCallback.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.READY_TO_CHANGE_LEVEL_STR, this._onReadyToChangeLevel.bind(this), 10);\n\t\t\tpm.registerCustomEventListener(pm.LEVEL_SCENE_ENTERED, this._onLevelSceneEntered.bind(this), 10);\n\n\t\t\tthis._inGame = true;\n\t\t}\n\t},\n\n\t_startLevel: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.ProcessingLevel;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.ProcessingLevel);\n\t},\n\n\t_onWin: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.Win;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.Win);\n\t},\n\n\t_onFailure: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.Loose;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.Loose);\n\t},\n\n\t_onLoose: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.Broken;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.Broken);\n\t},\n\n\t_onReadyToChangeLevel: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.ReadyToChangeLevel);\n\t},\n\n\t_onLevelSceneEntered: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._studentClient.sendLevelSceneEntered();\n\t},\n\n\t_programChangedCallback: function()\n\t{\n\t\tif(!this._studentClient)\n\t\t\treturn;\n\n\t\tthis._currentLevelState = pm.NetworkGameState.Develop;\n\n\t\tthis._studentClient.sendCurrentLevelStatus(pm.NetworkGameState.Develop);\n\n if (world.runningLevel instanceof pm.AbstractLevel)\n this._studentClient.sendProgram();\n },\n\n\t_stopGameClient: function()\n\t{\n\t\tif(this._gameClient)\n\t\t{\n\t\t\tthis._gameClient.clearCallbacks();\n\t\t\tthis._gameClient.disconnect();\n\t\t\tthis._gameClient = null;\n\t\t}\n\t},\n\n\t_stopGameServer: function()\n\t{\n\t\tif(this._gameServer)\n\t\t{\n\t\t\tthis._gameServer.stop();\n\t\t\tthis._gameServer = null;\n\t\t}\n\t},\n\n\t_stopStudentClient: function()\n\t{\n\t\tif(this._studentClient)\n\t\t{\n\t\t\tthis._studentClient.clearCallbacks();\n\t\t\tthis._studentClient.disconnect();\n\t\t\tthis._studentClient = null;\n\t\t}\n\t}\n});\n\npm.ControlledNetworkGame.WAIT_TIMEOUT = 20;\n","/**\n * This namespace contains functions for work with tutorial.\n * @namespace\n *\n */\npm.tutorialUtils =\n{\n\t_tutorialObjects: {},\n\t_scenario: null,\n\t_processingTutorial: false,\n\t_overlay: null,\n\t_pointer: null,\n\t_currentStep: null,\n\t_currentWaitListener: null,\n\t_isEmulating: false,\n\t_emulateTouchTimer: null,\n _processStepTimer: null,\n\t_scene: null,\n\n\t_startPoint: null,\n\t_isTouchMoved: false,\n\n\t_emulatedTouch: null,\n\t_draggingObject: null,\n\n\t_showTutorial: false,\n\t_tutorialScale: 1,\n\n\tinit: function()\n\t{},\n\n\t/**\n * Registers tutorial button with name\n * @param {String} name\n * @param {pmui.Layout | pmui.Button} object\n * @param {Boolean} [isDraggable = false]\n * @param {Boolean} [isDroppable = false]\n */\n\tregisterTutorialObject: function(name, object, isDraggable, isDroppable)\n\t{\n\t\tif(object instanceof pmui.Layout || object instanceof pmui.Button)\n\t\t{\n\t\t\tthis._tutorialObjects[name] = {\n\t\t\t\tobject: object,\n\t\t\t\tisDraggable: isDraggable || false,\n\t\t\t\tisDroppable: isDroppable || false\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcc.warn(\"Can not register non-pmui tutorial object\");\n\t\t}\n\t},\n\n\t/**\n * Gets tutorial button by name\n * @param {String} name\n * @returns {?{object : cc.Node, isDraggable: Boolean, isDroppable: Boolean}}\n */\n\tgetTutorialObjectByName: function(name)\n\t{\n\t\treturn this._tutorialObjects[name];\n\t},\n\n\t/**\n * Gets tutorial button by point\n * @param {cc.Point} point\n * @returns {?{object: cc.Node, name: String, isDraggable: Boolean, isDroppable: Boolean}}\n */\n\tgetTutorialObjectByPoint: function(point)\n\t{\n\t\tfor(var objName in this._tutorialObjects)\n\t\t{\n\t\t\tif(!this._tutorialObjects[objName].object.isVisible())\n\t\t\t\tcontinue;\n\n\t\t\tvar rect = cc.rectApplyAffineTransform(\n\t\t\t\tthis._tutorialObjects[objName].object.getBoundingBox(),\n\t\t\t\tthis._tutorialObjects[objName].object.getParent().getNodeToWorldTransform()\n\t\t\t);\n\n\t\t\tif(cc.rectContainsPoint(rect, point))\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tobject: this._tutorialObjects[objName].object,\n\t\t\t\t\tname: objName,\n\t\t\t\t\tisDraggable: this._tutorialObjects[objName].isDraggable,\n\t\t\t\t\tisDroppable: this._tutorialObjects[objName].isDroppable\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n * Is in tutorial mode\n * @returns {Boolean}\n */\n\tisProcessingTutorial: function()\n\t{\n\t\treturn this._processingTutorial;\n\t},\n\n\t/**\n * Sets current tutorial scenario\n * @param {pm.data.TutorialScenario } scenario\n */\n\tsetTutorialScenario: function(scenario)\n\t{\n\t\tthis._scenario = scenario;\n\t},\n\n\t/**\n * Starts processing tutorial\n * @param {cc.Scene} scene A scene where show tutorial.\n * @param {Object} tutorialData\n */\n\tstartTutorial: function(scene, tutorialData)\n\t{\n if (tutorialData !== undefined)\n\t\t{\n\t\t\tthis._showTutorial = tutorialData.show;\n\t\t\tthis._tutorialScale = tutorialData.scale;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._showTutorial = false;\n\t\t\tthis._tutorialScale = 1;\n\t\t}\n\n\t\tthis._processingTutorial = true;\n\t\tthis._scenario.start();\n\n\t\tfor(var objectName in this._tutorialObjects)\n\t\t\tthis._tutorialObjects[objectName].object.lock();\n\n\t\tthis._overlay = new ccui.Layout();\n\t\tthis._overlay.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._pointer = pm.spriteUtils.getInterfaceElementSprite(\"hand\");\n\t\tthis._pointer.setAnchorPoint(0.2, 1);\n\t\tthis._pointer.setPosition(this._overlay.width / 2, this._overlay.height / 2);\n\n\t\tthis._overlay.addChild(this._pointer);\n\n\t\tpm.runningSceneUtils.addChildWithOverlayOrder(this._overlay);\n\n\t\tvar touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: false,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(touchListener, this._overlay);\n\n\t\tthis._overlay.setScale(this._tutorialScale);\n\t\tthis._overlay.setPosition(scene.getPosition());\n\t\tthis._scene = scene;\n\n\t\tthis._processNextStep();\n\t},\n\n\t/**\n * Starts editing of tutorial\n * @param {pm.data.TutorialScenario } scenario\n */\n\teditTutorial: function(scenario)\n\t{\n\t\tvar runningScene = cc.director.getRunningScene();\n\t\tvar editLayer = runningScene.getChildByTag(this.TUTORIAL_EDIT_LAYER_TAG);\n\n\t\tif (editLayer)\n\t\t\teditLayer.show();\n\t\telse\n\t\t\trunningScene.addChild(new TutorialEditLayer(scenario), 1000, this.TUTORIAL_EDIT_LAYER_TAG);\n\t},\n\n\t_dispatchTouchEvent: function(eventCode)\n\t{\n\t\tif(!cc.sys.isNative)\n\t\t{\n\t\t\tvar touchEvent = new cc.EventTouch([this._emulatedTouch]);\n\t\t\ttouchEvent._eventCode = eventCode;\n\t\t\tcc.eventManager.dispatchEvent(touchEvent);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.dispatchEventFromNativeTouch(eventCode);\n\t\t}\n\t},\n\n\t_createEmulatedTouch: function(id, x, y)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tvar realPoint = cc.director.convertToUI(cc.p(x, y));\n pm.createNativeTouch(1, realPoint.x + 0.00001, realPoint.y + 0.00001); //strange correction for work convert on native\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._emulatedTouch = new cc.Touch(x, y, id);\n\t\t}\n\t},\n\n\t_setEmulatedTouchLocation: function(x, y)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tvar realPoint = cc.director.convertToUI(cc.p(x, y));\n\t\t\tpm.setNativeTouchLocation(realPoint.x + 0.00001, realPoint.y + 0.00001); //strange correction for work convert on native\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._emulatedTouch.setTouchInfo(this._emulatedTouch.getID(), x, y);\n\t\t}\n\t},\n\n\t_emulateClick: function(pos, object)\n\t{\n\t\tif (this._overlay === null)\n\t\t\treturn;\n\n\t\tthis._isEmulating = true;\n\n\t\tthis._createEmulatedTouch(1, pos.x, pos.y);\n\n\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.BEGAN);\n\n\t\tthis._pointer.setSpriteFrame(pm.spriteUtils.getInterfaceElementFrame(\"handPress\"));\n\n\t\tthis._emulateTouchTimer = setTimeout(function ()\n\t\t{\n\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.ENDED);\n\n\t\t\tif(cc.sys.isNative)\n\t\t\t\tpm.destroyNativeTouch();\n\n\t\t\tif (this._pointer)\n\t\t\t\tthis._pointer.setSpriteFrame(pm.spriteUtils.getInterfaceElementFrame(\"hand\"));\n\n\t\t\tthis._isEmulating = false;\n\t\t}.bind(this), this.TUTORIAL_DELAY);\n\t},\n\n\t_emulateMove: function(fromPos, toPos)\n\t{\n\t\tif (this._overlay === null)\n\t\t\treturn;\n\n\t\tthis._isEmulating = true;\n\n\t\tthis._createEmulatedTouch(1, fromPos.x, fromPos.y);\n\n\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.BEGAN);\n\n\t\tthis._pointer.setSpriteFrame(pm.spriteUtils.getInterfaceElementFrame(\"handPress\"));\n\n\t\tvar totalTimeOutTime = 600;\n\t\tvar totalStepCount = 50;\n\n\t\tvar timePerMove = totalTimeOutTime / totalStepCount;\n\n\t\tvar dx = (toPos.x - fromPos.x) / totalStepCount;\n\t\tvar dy = (toPos.y - fromPos.y) / totalStepCount;\n\n\t\tvar pointerTransform = this._overlay.getWorldToNodeTransform();\n\t\tvar pointerFrom = cc.pointApplyAffineTransform(fromPos, pointerTransform);\n\t\tvar pointerTo = cc.pointApplyAffineTransform(toPos, pointerTransform);\n\n\t\tvar pdx = (pointerTo.x - pointerFrom.x) / totalStepCount;\n\t\tvar pdy = (pointerTo.y - pointerFrom.y) / totalStepCount;\n\n\t\tvar stepCount = 1;\n\n\t\tfunction moveEvent()\n\t\t{\n\t\t\tif(stepCount <= totalStepCount)\n\t\t\t{\n\t\t\t\tthis._setEmulatedTouchLocation(fromPos.x + stepCount * dx, fromPos.y + stepCount * dy);\n\t\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.MOVED);\n\n\t\t\t\tthis._pointer.setPosition(this._pointer.x + pdx, this._pointer.y + pdy);\n\t\t\t\t++stepCount;\n\n\t\t\t\tthis._emulateTouchTimer = setTimeout(moveEvent.bind(this), timePerMove);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._pointer.setPosition(this._pointer.x + pdx, this._pointer.y + pdy);\n\t\t\t\tthis._pointer.setSpriteFrame(pm.spriteUtils.getInterfaceElementFrame(\"hand\"));\n\n\t\t\t\tthis._setEmulatedTouchLocation(toPos.x, toPos.y);\n\t\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.ENDED);\n\n\t\t\t\tif(cc.sys.isNative)\n\t\t\t\t\tpm.destroyNativeTouch();\n\n\t\t\t\tthis._isEmulating = false;\n\t\t\t}\n\t\t}\n\n this._emulateTouchTimer = setTimeout(moveEvent.bind(this), timePerMove);\n\t},\n\n\trestart: function()\n\t{\n\t\tthis.stop();\n\n\t\tvar tutorialData = {\n\t\t\tshow: this._showTutorial,\n\t\t\tscale: this._tutorialScale\n\t\t};\n\n\t\tthis.startTutorial(this._scene, tutorialData);\n\t},\n\n\tstop: function()\n\t{\n\t\tif (this._emulateTouchTimer)\n\t\t\tclearTimeout(this._emulateTouchTimer);\n\n if (this._processStepTimer)\n clearTimeout(this._processStepTimer);\n\n\t\tif (this._isEmulating)\n\t\t{\n\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.CANCELLED);\n\n\t\t\tif (cc.sys.isNative)\n\t\t\t\tpm.destroyNativeTouch();\n\n\t\t\tthis._isEmulating = false;\n\t\t}\n\n\t\tif (this._pointer) {\n this._pointer.stopAllActions();\n this._pointer = null;\n }\n\n\t\tif (this._draggingObject)\n\t\t{\n\t\t\tthis._draggingObject.stopAllActions();\n\t\t\tthis._draggingObject.removeFromParent();\n this._draggingObject = null;\n\t\t}\n\t\tthis._clear();\n\t\tpm.runningSceneUtils.cleanup();\n\t},\n\n\t_generateMoveAndClickAnimation: function(pos, emulate)\n\t{\n\t\tvar func = cc.callFunc(function()\n\t\t{\n\t\t\tvar animationFrames = [];\n\t\t\tanimationFrames.push(pm.spriteUtils.getInterfaceElementFrame(\"handPress\"));\n\t\t\tanimationFrames.push(pm.spriteUtils.getInterfaceElementFrame(\"hand\"));\n\t\t\tvar animation = new cc.Animation(animationFrames, pm.SYSTEM_ANIMATION_DELAY * 2);\n\n\t\t\tthis.runAction(cc.repeatForever(cc.animate(animation)));\n\t\t}, this._pointer);\n\n\t\tif(this._scenario.getCurrentStepIndex() > 0)\n\t\t{\n\t\t\tvar move = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 1.5, pos.x, pos.y);\n\t\t\treturn (this._showTutorial || emulate) ? move : cc.sequence(move, func);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._pointer.setPosition(pos);\n\t\t\treturn (this._showTutorial || emulate) ? null : func;\n\t\t}\n\t},\n\n\t_generatePressAndMoveAnimation: function(fromPos, toPos, emulate)\n\t{\n\t\tvar moveTo = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 1.5, toPos);\n\n\t\tvar animationFrames = [];\n\t\tanimationFrames.push(pm.spriteUtils.getInterfaceElementFrame(\"hand\"));\n\t\tanimationFrames.push(pm.spriteUtils.getInterfaceElementFrame(\"handPress\"));\n\t\tvar animation = new cc.Animation(animationFrames, pm.SYSTEM_ANIMATION_DELAY * 2);\n\t\tvar press = cc.animate(animation);\n\t\tvar moveFrom = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 0.5, fromPos);\n\n\t\tif(this._scenario.getCurrentStepIndex() > 0)\n\t\t{\n\t\t\treturn (this._showTutorial || emulate) ?\n\t\t\t\tmoveFrom :\n\t\t\t\tcc.repeatForever(cc.sequence(moveFrom, press, moveTo, press.reverse()));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._pointer.setPosition(fromPos);\n\t\t\treturn (this._showTutorial || emulate) ?\n\t\t\t\tnull :\n\t\t\t\tcc.repeatForever(cc.sequence(press, moveTo, press.reverse(), moveFrom));\n\t\t}\n\t},\n\n _generateMoveAnimation: function(fromPos, toPos, emulate)\n {\n var moveTo = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 1.5, toPos);\n var moveFrom = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 0.5, fromPos);\n var delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY * 2);\n var hide = cc.fadeTo(0, 0);\n var show = cc.fadeTo(0, 255);\n\n if (this._scenario.getCurrentStepIndex() > 0)\n {\n return (this._showTutorial || emulate) ?\n\t\t\t\tnull :\n\t\t\t\tcc.repeatForever(cc.sequence(moveFrom, delay, show, delay, moveTo, delay, hide, delay));\n }\n else\n {\n if (this._draggingObject)\n this._draggingObject.setPosition(fromPos);\n\n return (this._showTutorial || emulate) ?\n\t\t\t\tnull :\n\t\t\t\tcc.repeatForever(cc.sequence(delay, delay, moveTo, delay, hide, delay, moveFrom, show));\n }\n },\n\n\tprocessCurrentStep: function()\n\t{\n\t\tif(!this._currentStep || !this._overlay)\n\t\t\treturn;\n\n\t\tif(this._pointer)\n\t\t\tthis._pointer.stopAllActions();\n\n\t\tif (this._draggingObject)\n\t\t{\n\t\t\tthis._draggingObject.stopAllActions();\n\t\t\tthis._draggingObject.removeFromParent();\n\t\t\tthis._draggingObject = null;\n\t\t}\n\n\t\tswitch (this._currentStep.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\tthis._processClickStep(true);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\tthis._processDragStep(true);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\tthis._processMoveToStep(true);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\tthis._processClickAreaStep(true);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\t//No need to do smth\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_handleProcessNextStep: function()\n\t{\n\t\tvar nextStepIndex = this._scenario.getCurrentStepIndex() + 1;\n var nextStep = this._scenario.steps[nextStepIndex];\n\n if(this._showTutorial && nextStep && nextStep.type !== pm.TutorialStepType.WAIT_EVENT)\n\t\t{\n\t\t\tthis._processStepTimer = setTimeout(function () {\n\t\t\t\tthis._processNextStep();\n\t\t\t}.bind(this), this.TUTORIAL_SHOW_DELAY);\n\t\t}\n\t\telse\n\t\t{\n this._processStepTimer = null;\n\t\t\tthis._processNextStep();\n\t\t}\n\t},\n\n\t_processNextStep: function()\n\t{\n\t\tif (!this._overlay)\n\t\t\treturn;\n\n\t\tif(this._pointer)\n\t\t\tthis._pointer.stopAllActions();\n\n\t\tif (this._draggingObject)\n\t\t{\n\t\t\tthis._draggingObject.stopAllActions();\n\t\t\tthis._draggingObject.removeFromParent();\n\t\t\tthis._draggingObject = null;\n\t\t}\n\n\t\tthis._currentStep = this._scenario.getNextStep();\n\n\t\tif(this._currentStep)\n\t\t{\n switch (this._currentStep.type)\n\t\t\t{\n\t\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\t\tthis._processClickStep();\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\t\tthis._processDragStep();\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\t\tthis._processMoveToStep();\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\t\tthis._processClickAreaStep();\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\t\tthis._pointer.setOpacity(0);\n\t\t\t\t\tthis._currentWaitListener = pm.registerCustomEventListener(\n\t\t\t\t\t\tthis._currentStep.data,\n\t\t\t\t\t\tthis._processWaitEvent.bind(this),\n\t\t\t\t\t\t1\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._clear();\n\t\t\tpm.sendCustomEvent(pm.TUTORIAL_ENDED);\n\t\t}\n\t},\n\n\t_processClickStep: function(emulate)\n\t{\n\t\tif (emulate === undefined)\n\t\t\temulate = false;\n\n\t\tvar clickObject = this._tutorialObjects[this._currentStep.data].object;\n\n\t\tif (clickObject)\n\t\t{\n\t\t\tclickObject.unlock();\n\t\t\tvar transform = clickObject.getParent().getNodeToWorldTransform();\n\t\t\tvar pointerTransform = this._overlay.getWorldToNodeTransform();\n\n\t\t\tvar objRect = cc.rectApplyAffineTransform(clickObject.getBoundingBox(), transform);\n\t\t\tvar pointerRect = cc.rectApplyAffineTransform(objRect, pointerTransform);\n\n\t\t\tvar action = this._generateMoveAndClickAnimation(\n\t\t\t\tcc.p(pointerRect.x + pointerRect.width / 2,\n\t\t\t\tpointerRect.y + pointerRect.height / 2),\n\t\t\t\temulate\n\t\t\t);\n\n\t\t\tif (this._showTutorial || emulate)\n\t\t\t{\n\t\t\t\tvar emulateFn = function() {\n this._emulateClick(cc.p(objRect.x + objRect.width / 2, objRect.y + objRect.height / 2), clickObject);\n };\n\n\t\t\t\tif (action !== null)\n \tthis._pointer.runAction(cc.sequence(action, cc.callFunc(emulateFn, this)));\n\t\t\t\telse\n emulateFn.call(this);\n }\n else if (action !== null)\n {\n this._pointer.runAction(action);\n }\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleProcessNextStep();\n\t\t}\n\t},\n\n\t_processDragStep: function(emulate)\n\t{\n\t\tif (emulate === undefined)\n\t\t\temulate = false;\n\n\t\tvar fromObject = this._tutorialObjects[this._currentStep.data.from].object;\n\t\tvar toObject = this._tutorialObjects[this._currentStep.data.to].object;\n\n\t\tif(fromObject && toObject)\n\t\t{\n\t\t\tfromObject.unlock();\n\n\t\t\tvar pointerTransform = this._overlay.getWorldToNodeTransform();\n\t\t\tvar fromTransform = fromObject.getParent().getNodeToWorldTransform();\n\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromTransform);\n\t\t\tvar pointerFromRect = cc.rectApplyAffineTransform(fromRect, pointerTransform);\n\n\t\t\tvar toTransform = toObject.getParent().getNodeToWorldTransform();\n\t\t\tvar toRect = cc.rectApplyAffineTransform(toObject.getBoundingBox(), toTransform);\n\t\t\tvar pointerToRect = cc.rectApplyAffineTransform(toRect, pointerTransform);\n\n\t\t\tvar action = this._generatePressAndMoveAnimation(\n\t\t\t\tcc.p(pointerFromRect.x + pointerFromRect.width / 2, pointerFromRect.y + pointerFromRect.height / 2),\n\t\t\t\tcc.p(pointerToRect.x + pointerToRect.width / 2, pointerToRect.y + pointerToRect.height / 2),\n\t\t\t\temulate\n\t\t\t);\n\n if (this._showTutorial || emulate)\n {\n var emulateFn = function() {\n this._emulateMove(\n cc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n cc.p(toRect.x + toRect.width / 2, toRect.y + toRect.height / 2)\n );\n };\n\n if (action !== null)\n this._pointer.runAction(cc.sequence(action, cc.callFunc(emulateFn, this)));\n else\n emulateFn.call(this);\n }\n else if (action !== null)\n {\n var draggingObjectAction = this._generateMoveAnimation(\n \tcc.p(fromRect.x, fromRect.y),\n\t\t\t\t\tcc.p(toRect.x, toRect.y),\n\t\t\t\t\temulate\n\t\t\t\t);\n\n if (draggingObjectAction !== null)\n {\n this._draggingObject = fromObject.cloneImage();\n this._draggingObject.setAnchorPoint(cc.p(0, 0));\n this._draggingObject.setPosition(fromRect.x, fromRect.y);\n this._overlay.addChild(this._draggingObject, -1);\n\n this._draggingObject.runAction(draggingObjectAction);\n }\n\n this._pointer.runAction(action);\n }\n\t\t}\n\t\telse\n\t\t{\n this._handleProcessNextStep();\n\t\t}\n\t},\n\n\t_processMoveToStep: function(emulate)\n\t{\n\t\tif (emulate === undefined)\n\t\t\temulate = false;\n\n\t\tvar fromObject = this._tutorialObjects[this._currentStep.data.object].object;\n\n\t\tif(fromObject)\n\t\t{\n\t\t\tfromObject.unlock();\n\n\t\t\tvar pointerTransform = this._overlay.getWorldToNodeTransform();\n\t\t\tvar fromTransform = fromObject.getParent().getNodeToWorldTransform();\n\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromTransform);\n\t\t\tvar pointerFromRect = cc.rectApplyAffineTransform(fromRect, pointerTransform);\n\n\t\t\tvar fromPos = cc.p(fromRect.x, fromRect.y);\n\t\t\tvar toPos = cc.pAdd(fromPos, this._currentStep.data.delta);\n\n\t\t\tvar action = this._generatePressAndMoveAnimation(\n\t\t\t\tcc.p(pointerFromRect.x + pointerFromRect.width / 2, pointerFromRect.y + pointerFromRect.height / 2),\n\t\t\t\tcc.p(toPos.x - this._pointer.width / 2, toPos.y - this._pointer.height / 2),\n\t\t\t\temulate\n\t\t\t);\n\n if (this._showTutorial || emulate)\n {\n var emulateFn = function() {\n this._emulateMove(\n cc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n cc.p(toPos.x - this._pointer.width / 2, toPos.y - this._pointer.height / 2)\n );\n };\n\n if (action !== null)\n this._pointer.runAction(cc.sequence(action, cc.callFunc(emulateFn, this)));\n else\n emulateFn.call(this);\n }\n else if (action !== null)\n {\n var draggingObjectAction = this._generateMoveAnimation(\n \tfromPos,\n cc.p(\n \ttoPos.x - (this._pointer.width + fromRect.width) / 2,\n\t\t\t\t\t\ttoPos.y - (this._pointer.height + fromRect.height) / 2\n\t\t\t\t\t),\n\t\t\t\t\temulate\n\t\t\t\t);\n\n if (draggingObjectAction !== null)\n {\n this._draggingObject = fromObject.cloneImage();\n this._draggingObject.setAnchorPoint(cc.p(0, 0));\n this._draggingObject.setPosition(fromRect.x, fromRect.y);\n this._overlay.addChild(this._draggingObject, -1);\n\n this._draggingObject.runAction(draggingObjectAction);\n }\n\n this._pointer.runAction(action);\n }\n\t\t}\n\t\telse\n\t\t{\n this._handleProcessNextStep();\n\t\t}\n\t},\n\n\t_processClickAreaStep: function(emulate)\n\t{\n\t\tif (emulate === undefined)\n\t\t\temulate = false;\n\n\t\tvar object = this._tutorialObjects[this._currentStep.data.object].object;\n\n\t\tif(object)\n\t\t{\n\t\t\tobject.unlock();\n\n\t\t\tvar destRect = cc.rectApplyAffineTransform(this._currentStep.data.rect, object.getNodeToWorldTransform());\n\t\t\tvar pos = cc.p(destRect.x + destRect.width / 2, destRect.y + destRect.height / 2);\n\n\t\t\tvar action = this._generateMoveAndClickAnimation(pos);\n\n if (this._showTutorial || emulate)\n {\n var emulateFn = function() {\n this._emulateClick(cc.p(pos.x - this._pointer.width / 2, pos.y - this._pointer.height / 2), object);\n };\n\n if (action !== null)\n this._pointer.runAction(cc.sequence(action, cc.callFunc(emulateFn, this)));\n else\n emulateFn.call(this);\n }\n else if (action !== null)\n {\n this._pointer.runAction(action);\n }\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._handleProcessNextStep();\n\t\t}\n\t},\n\n\t_processWaitEvent: function(event)\n\t{\n\t\tif(this._currentStep && this._currentStep.type === pm.TutorialStepType.WAIT_EVENT)\n\t\t{\n\t\t\tcc.eventManager.removeListener(this._currentWaitListener);\n\t\t\tthis._pointer.setOpacity(255);\n\t\t\tthis._processNextStep();\n\t\t}\n\t},\n\n\t/**\n * Called from game layers to indicate drop object.\n * @param {String} dropObjectName\n * @returns {Boolean}\n */\n\tonDropToObject: function(dropObjectName)\n\t{\n\t\tif(!this._processingTutorial)\n\t\t\treturn true;\n\n\t\tif(this._currentStep.type === pm.TutorialStepType.DRAG_OBJECT)\n\t\t{\n\t\t\tif(dropObjectName === this._currentStep.data.to)\n\t\t\t{\n\t\t\t\tthis._tutorialObjects[this._currentStep.data.from].object.unlock();\n\n\t\t\t\tthis._handleProcessNextStep();\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n * Called from game layers to indicate drag cancelled.\n * @param {cc.Touch} cancelTouch\n * @returns {Boolean}\n */\n\tonDragCancelled: function(cancelTouch)\n\t{\n\t\tif(!this._processingTutorial)\n\t\t\treturn true;\n\n\t\tif(this._currentStep.type === pm.TutorialStepType.MOVE_TO)\n\t\t{\n\t\t\tvar fromObject = this._tutorialObjects[this._currentStep.data.object].object;\n\t\t\tvar fromPos = fromObject.convertToWorldSpace(cc.p(0, 0));\n\t\t\tvar toPos = cc.pAdd(fromPos, this._currentStep.data.delta);\n\t\t\tvar radius = this._currentStep.data.radius;\n\n\t\t\tif(cc.pDistance(toPos, this._overlay.convertTouchToNodeSpace(cancelTouch)) < radius)\n\t\t\t{\n\t\t\t\tfromObject.lock();\n\t\t\t\tthis._handleProcessNextStep();\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tclearTutorialObjects: function()\n\t{\n\t\tthis._tutorialObjects = {};\n\t},\n\n\treset: function()\n\t{\n\t\tthis._clear();\n\t\tthis._scenario = null;\n\t\tthis._pointer = null;\n\t\tthis._tutorialObjects = {};\n\t},\n\n\t_clear: function()\n\t{\n\t\tthis._currentStep = null;\n\t\tthis._processingTutorial = false;\n\n\t\tif(this._overlay && this._overlay.getParent())\n\t\t\tpm.runningSceneUtils.removeChild(this._overlay);\n\n\t\tthis._overlay = null;\n\n\t\tfor(var objectName in this._tutorialObjects)\n\t\t\tthis._tutorialObjects[objectName].object.unlock();\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\tif (this._showTutorial)\n\t\t\treturn true;\n\n\t\tthis._startPoint = this._overlay.convertTouchToNodeSpace(touch);\n\t\tthis._isTouchMoved = false;\n\n\t\tswitch(this._currentStep.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\tvar object = this._tutorialObjects[this._currentStep.data].object;\n\t\t\t\tvar touchPoint = object.getParent().convertTouchToNodeSpace(touch);\n\t\t\t\tvar contains = cc.rectContainsPoint(object.getBoundingBox(), touchPoint);\n\n\t\t\t\treturn contains;\n\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\tvar object = this._tutorialObjects[this._currentStep.data.from].object;\n\t\t\t\treturn cc.rectContainsPoint(object.getBoundingBox(), object.getParent().convertTouchToNodeSpace(touch));\n\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\tvar object = this._tutorialObjects[this._currentStep.data.object].object;\n\t\t\t\treturn cc.rectContainsPoint(object.getBoundingBox(), object.getParent().convertTouchToNodeSpace(touch));\n\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\tvar object = this._tutorialObjects[this._currentStep.data.object].object;\n\t\t\t\tvar touchPoint = object.convertTouchToNodeSpace(touch);\n\t\t\t\tvar contains = cc.rectContainsPoint(this._currentStep.data.rect, touchPoint);\n\n\t\t\t\treturn contains;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_touchMoved: function(touch)\n\t{\n\t\tif (this._showTutorial)\n\t\t\treturn;\n\n\t\tvar touchPoint = this._overlay.convertTouchToNodeSpace(touch);\n\n\t\tthis._isTouchMoved = cc.pDistance(this._startPoint, touchPoint) > 5;\n\t},\n\n\t_touchEnded: function(touch)\n\t{\n\t\t// if (this._showTutorial)\n\t\t// \treturn;\n\n\t\tswitch(this._currentStep.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\n\t\t\t\tvar object = this._tutorialObjects[this._currentStep.data].object;\n\t\t\t\tvar touchPoint = object.getParent().convertTouchToNodeSpace(touch);\n\t\t\t\tvar isComplete = cc.rectContainsPoint(object.getBoundingBox(), touchPoint);\n\n\t\t\t\tif(isComplete)\n\t\t\t\t{\n\t\t\t\t\tobject.lock();\n\t\t\t\t\tthis._handleProcessNextStep();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n var object = this._tutorialObjects[this._currentStep.data.object].object;\n var touchPoint = object.convertTouchToNodeSpace(touch);\n var isComplete = cc.rectContainsPoint(this._currentStep.data.rect, touchPoint);\n\n if(isComplete)\n {\n object.lock();\n this._handleProcessNextStep();\n }\n break;\n\t\t}\n\t},\n\n\t/**\n * Enum for button names which can participate in tutorials\n * @enum {String}\n */\n\tOBJECT_NAMES: {\n\t\tSTART_PROGRAM: \"start_pr\",\n\t\tMAKE_STEP: \"make_step\",\n\t\tRESTART_PROGRAM: \"restart_pr\",\n\t\tSTART_ALL_PROGRAM: \"start_al_pr\",\n\t\tPREV_LEVEL: \"prev_level\",\n\t\tNEXT_LEVEL: \"next_level\",\n\t\tCHANGE_SPEED: \"change_speed\",\n\t\tMAX_SPEED: \"max_speed\",\n\t\tSETTINGS: \"settings\",\n\t\tBACK: \"back\",\n\t\tGLOBAL_HINT: \"glob_hint\",\n\t\tSHOW_MSL: \"show_msl\",\n\t\tHIDE_MSL: \"hide_msl\",\n\t\tCLEAR_MSL: \"clear_msl\",\n\t\tDRAG_STACK: \"drag_stack\",\n\t\tCOUNTER_SHOW: \"counter_show\",\n\t\tCOUNTER_HIDE: \"counter_hide\",\n\t\tGREEN_FLAG_SHOW_HIDE: \"green_flag_show_hide\",\n\t\tORANGE_FLAG_SHOW_HIDE: \"orange_flag_show_hide\"\n\t},\n\n\t/**\n * Enum for button name patterns(multiple same buttons) which can participate in tutorials\n * @enum {String}\n */\n\tOBJECT_NAME_PATTERNS: {\n\t\tSTAR: \"star:{0}\",\n\t\tSELECT: \"select:{0}\",\n\t\tREPEATER: \"repeater:{0}_{1}\",\n\t\tCONDITION: \"condition:{0}_{1}\",\n\t\tMETHOD: \"method:{0}_{1}\",\n\t\tRESIZE_BLOCK: \"res_block:{0}\"\n\t},\n\n\t/**\n * Tag of tutorial edit layer\n * @type {Number}\n */\n\tTUTORIAL_EDIT_LAYER_TAG: 1001,\n\tTUTORIAL_SHOW_DELAY: 1000,\n\tTUTORIAL_DELAY: 500\n};\n","/**\n * Created by Nikita Besshaposhnikov on 06.06.16.\n */\n\n/**\n * Enum for tutorial step type\n * @enum {Number}\n */\npm.TutorialStepType = {\n\tCLICK_OBJECT: 0,\n\tDRAG_OBJECT: 1,\n\tMOVE_TO: 2,\n\tSHOW_PICTURES: 3,\n\tCLICK_AREA: 4,\n\tWAIT_EVENT: 5\n};\n\n/**\n * @class This a class which contains data of a {@link pm.data.TutorialScenario} step.\n * @extends pm.Class\n */\npm.data.TutorialStep = pm.Class.extend(/** @lends pm.data.TutorialStep# */{\n\n\ttypeName: \"tutorial_step\",\n\n\t/**\n * Type of step\n * @type {pm.TutorialStepType}\n */\n\ttype: pm.TutorialStepType.CLICK_OBJECT,\n\n\t/**\n * Data of step.
\n * String for {@link pm.TutorialStepType.CLICK_OBJECT} or {@link pm.TutorialStepType.WAIT_EVENT}
\n * Object {from:String,to:String} for {@link pm.TutorialStepType.DRAG_OBJECT}
\n * Array of strings for {@link pm.TutorialStepType.SHOW_PICTURES}\n * Object {object:String, delta:cc.Point, radius: Number} {@link pm.TutorialStepType.MOVE_TO}\n * Object {object:String, rect: cc.Rect} for {@link pm.TutorialStepType.CLICK_AREA}\n * @type {String|{from:String,to:String}|{object:String,delta:cc.Point, radius: Number}|Array|{object:String, rect: cc.Rect}}\n */\n\tdata: \"\"\n});\n\n/**\n * @class This a class which contains data for tutorial steps.\n * @extends pm.Class\n * @constructor\n */\npm.data.TutorialScenario = pm.Class.extend(/** @lends pm.data.TutorialScenario# */{\n\n\ttypeName: \"tutorial\",\n\t/**\n * Steps of scenario\n * @type {Array.}\n */\n\tsteps: [],\n\t_currentStep: -1,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_currentStep\");\n\t\tthis._super();\n\t},\n\n\t/**\n * Starts tutorial.\n */\n\tstart: function()\n\t{\n\t\tthis._currentStep = 0;\n\t},\n\n\t/**\n * Returns next step of scenario\n * @returns {pm.data.TutorialStep}\n */\n\tgetNextStep: function()\n\t{\n\t\tif(this._currentStep >= this.steps.length)\n\t\t\treturn null;\n\n\t\treturn this.steps[ this._currentStep++ ];\n\t},\n\n\t/**\n * Returns current step index of scenario\n * @returns {Number}\n */\n\tgetCurrentStepIndex: function()\n\t{\n\t\treturn this._currentStep - 1;\n\t},\n\n\t/**\n * Returns previous step of scenario\n * @returns {pm.data.TutorialStep}\n */\n\tgetPrevStep: function()\n\t{\n\t\tif(this._currentStep === 0)\n\t\t\treturn null;\n\n\t\treturn this.steps[ this._currentStep-- ];\n\t},\n\n\t/**\n * Is tutorial empty\n * @returns {Boolean}\n */\n\tempty: function()\n\t{\n\t\treturn this.steps.length === 0;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * @class Common interface for hints.\n * @interface\n * @extends pm.Class\n */\npm.Hint = pm.Class.extend(/** @lends pm.Hint#*/{\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\t/**\n * Returns true if hint is empty.\n * @function\n * @name pm.Hint#empty\n * @returns {Boolean}\n */\n\tempty: function()\n\t{\n\t\treturn false;\n\t}\n});\n\n/**\n * @class pm.Hint for functions.
\n * Contains text part and some function part.\n * @implements pm.Hint\n */\npm.data.FunctionHint = pm.Hint.extend(/** @lends pm.data.FunctionHint# */{\n\ttypeName: \"FunctionHint\",\n\n\t/**\n * Text part of hint.\n * @type {String}\n */\n\ttext: \"\",\n\t/**\n * Function part of hint.\n * @type {Array>}\n */\n\tfuncBlockHints: [],\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.funcBlockHints = [];\n\t},\n\n\tempty: function()\n\t{\n\t\tvar emptyBlockHints = true;\n\n\t\tfor(var i = 0 ; i < this.funcBlockHints.length; ++i)\n\t\t{\n\t\t\tif(this.funcBlockHints[i].length !== 0)\n\t\t\t\temptyBlockHints = false;\n\t\t}\n\n\t\treturn this.text.length === 0 && emptyBlockHints;\n\t}\n});\n\n/**\n * @class pm.Hint for whole level.
\n * Contains only text part.\n * @implements pm.Hint\n */\npm.data.GlobalHint = pm.Hint.extend(/** @lends pm.data.GlobalHint# */{\n\ttypeName: \"GlobalHint\",\n\n\t/**\n * Text part of hint\n * @type {String}\n */\n\ttext: \"\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tempty: function()\n\t{\n\t\treturn this.text.length === 0;\n\t}\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 19.12.14.\n */\n\n/**\n * @class This is an common interface for all objects.\n * @interface\n * @extends pm.Class\n */\npm.Object = pm.Class.extend(/** @lends pm.Object# */{\n\t/**\n * Unique id of object.\n * @type {Number}\n */\n\tid: 0,\n\n\t/**\n * Map which contains this object.\n * @type {pm.AbstractMap}\n */\n\tparentMap: {},\n\n\t/**\n * Current object position.\n * @type {cc.Point}\n */\n\tposition: cc.p(),\n\t/**\n * Start object position.\n * @type {cc.Point}\n */\n\tstartPosition: cc.p(),\n\n\t/**\n * Sprite object representing this object.\n * @type {pm.ObjectSprite}\n */\n\tsprite: {},\n\n\t_isPlayingAnimation: false,\n\n\tvisualId: 0,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"sprite\", \"position\", \"parentMap\", \"_isPlayingAnimation\");\n\n\t\tthis._isPlayingAnimation = false;\n\n\t\tthis._super();\n\t},\n\n\t/**\n * Return type of object.\n * @function\n * @name pm.Object#getType\n */\n\tgetType: function() { return 0; },\n\n\tisPlayingAnimation: function ()\n\t{\n\t\tvar physicalConnector = this._getPhysicalConnector();\n\n\t\treturn this._isPlayingAnimation || physicalConnector && physicalConnector.isBusy();\n\t},\n\n\t/**\n * Plays animation of object\n * @param animation\n * @param animationCallback\n * @param args\n * @param forced\n */\n\tplayAnimation: function(animation, animationCallback, args, forced)\n\t{\n\t\tthis._isPlayingAnimation = true;\n\n\t\tif(!CORE_BUILD && (!pm.settings.isAnimationDisabled() || forced))\n\t\t\tthis.sprite.playAnimation(animationCallback, this, animation, args);\n\t\telse if(animationCallback)\n\t\t\tsetTimeout(animationCallback.bind(this), 0);\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tvar physicalConnector = this._getPhysicalConnector();\n\n\t\t\tif(physicalConnector)\n\t\t\t\tphysicalConnector.playObjectAnimation(this.id, animation);\n\t\t}\n\t},\n\n\tgetAnimation: function(animation, animationCallback, args, forced)\n\t{\n\t\tthis._isPlayingAnimation = true;\n\n\t\tif(!CORE_BUILD && (!pm.settings.isAnimationDisabled() || forced))\n\t\t\treturn this.sprite.getAnimation(animationCallback, this, animation, args);\n\t\telse if(CORE_BUILD)\n\t\t\tanimationCallback.call(this);\n\t\telse if(animationCallback)\n\t\t\tsetTimeout(animationCallback.bind(this), 0);\n\t},\n\n\t/**\n * Stop animation of object\n */\n\tstopAnimation: function()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t\tif(!CORE_BUILD)\n\t\t\tthis.sprite.stopAnimation();\n\t},\n\n\t_endAnimation: function ()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t},\n\n\t/**\n * Updates sprite of object\n */\n\tupdateSprite: function() {},\n\n\treset: function () {},\n\n\t/**\n * Generates sprite for this object.\n * @function\n * @name pm.Object#generateSprite\n * @returns {pm.ObjectSprite}\n */\n\tgenerateSprite: function(previewDraw) {},\n\n\tgetState: function () {},\n\n\tsetState: function (state) {},\n\n\tupdateNumberSprite: function(){},\n\n\t/**\n\t * Get parent level physical connector\n\t * @returns {?pm.PhysicalConnector}\n\t * @private\n\t */\n\t_getPhysicalConnector: function()\n\t{\n\t\tif(this.parentMap && this.parentMap.parentLevel)\n\t\t{\n\t\t\tvar level = this.parentMap.parentLevel;\n\n\t\t\tif(level.hasPhysicalConnector())\n\t\t\t\treturn level.getPhysicalConnector();\n\t\t}\n\n\t\treturn null;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 11.11.14.\n */\n\n/**\n * @class This class is a container for all tasks for one robot.\n * @extends pm.Class\n */\npm.data.TaskList = pm.Class.extend(/** @lends pm.data.TaskList# */{\n\ttypeName: \"TaskList\",\n\n\t/**\n * Map \"task_type-task\" container for tasks.\n * @type {pm.data.MapClass}\n */\n\ttasks: {},\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis.tasks = new pm.data.MapClass();\n\t},\n\n\t/**\n * Inits container with robots.\n * @param {pm.AbstractRobot} robot\n */\n\tinitWithLevel: function(level)\n\t{\n\t\tfor(var i in this.tasks)\n\t\t{\n\t\t\tif(!(this.tasks[i] instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tthis.tasks[i].setLevel(level);\n\t\t}\n\t},\n\n\t/**\n * Returns number of available tasks.\n * @returns {number}\n */\n\tgetTaskCount: function()\n\t{\n\t\t//except typename & others\n\t\treturn Object.keys(this.tasks).length - 2;\n\t},\n\n\taddTask: function(type, task)\n\t{\n\t\tif(this.tasks[type] !== undefined)\n\t\t\treturn false;\n\n\t\tthis.tasks[type] = task;\n\t\treturn true;\n\t},\n\n\tdeleteTask: function(type)\n\t{\n\t\tdelete this.tasks[type];\n\t},\n\n\tgetTask: function(type)\n\t{\n\t\tif(this.tasks[type] === undefined)\n\t\t\treturn null;\n\n\t\treturn this.tasks[type];\n\t},\n\n\t/**\n * Check if task are completed.
\n * @param {Number} mapIndex\n * @returns {Array}\n */\n\tgetNotCompletedObjects: function(mapIndex)\n\t{\n\t\tvar retArray = [];\n\n\t\tif(this.getTaskCount() < 0)\n\t\t\treturn retArray;\n\n\t\tfor(var i in this.tasks)\n\t\t{\n\t\t\tif(!(this.tasks[i] instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tretArray = retArray.concat(this.tasks[i].getNotCompletedObjects(mapIndex));\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\t/**\n * Returns true if there are no tasks available.\n * @returns {Boolean}\n */\n\tempty: function()\n\t{\n\t\treturn this.getTaskCount() === 0;\n\t}\n\n});\n","/**\n * Created by Nikita Besshaposhnikov on 11.11.14.\n */\n\n/**\n * Enum for all task types.\n * @readonly\n * @see pm.data.TaskList\n * @see pm.Task\n * @enum {Number}\n */\npm.GlobalTaskType = {\n\tExCounterMemory: \"ex_counter_memory\",\n\tPosition4: \"position4\",\n\tOutputValue: \"output_val\"\n};\n\n/**\n * @class This is a common interface for all Tasks.\n * @constructor\n * @param {pm.AbstractLevel} [level]\n * @interface\n */\npm.Task = pm.Class.extend(/** @lends pm.Task# */{\n\t_level: {},\n\n\t/**\n * Map \"map_index-task_value\" container.\n * @type {pm.data.MapClass}\n */\n\tdata: {},\n\n\tctor: function(level)\n\t{\n\t\tthis._addNonEnumerableProps(\"_level\");\n\n\t\tthis._super();\n\n\t\tif(level !== undefined)\n\t\t\tthis._level = level;\n\t},\n\n\t/**\n * Sets level of task.\n * @param {pm.AbstractLevel} level\n */\n\tsetLevel: function(level)\n\t{\n\t\tthis._level = level;\n\t},\n\n\t/**\n * Returns array of not completed objects\n * @function\n * @name pm.Task#getNotCompletedObjects\n * @param {Number} mapIndex\n * @return {Array}\n */\n\tgetNotCompletedObjects: function(mapIndex) {},\n\n\t/**\n * Fills data of task with initial data\n * @name pm.Task#fillWithInitialData\n * @param {Number} mapIndex\n * @param {*} [data]\n */\n\tfillWithInitialData: function(mapIndex, data) {},\n\n\tmoveDown: function(mapIndex) {},\n\n\tmoveUp: function(mapIndex) {},\n\n\tmoveLeft: function(mapIndex) {},\n\n\tmoveRight: function(mapIndex) {}\n});\n","/**\n * Created by Kirill Mashchenko on 23.04.20.\n */\n\npm.appUtils = {\n\n\t_modules: {},\n\n\tload: function()\n\t{\n\t\tpm.robotManager = pm.appUtils.generateRobotManager();\n\n\t\tFunctionButton.Type = pm.appUtils.getButtonTypes();\n\t\tFunctionButton.deselect = pm.appUtils.getDeselectFunction();\n\n\t\tvar availableRobotList = pm.appUtils.getAvailableRobots();\n\n\t\tfor (var i = 0; i < availableRobotList.length; ++i)\n\t\t\tpm.moduleUtils.register(availableRobotList[i]);\n\t},\n\n\tregister: function(module, type)\n\t{\n\t\tthis._modules[type] = module;\n\t},\n\n\tgetProgramLayerWidth: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getProgramLayerWidth();\n\t},\n\n\tcompileRobotProgram: function(robot, level)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].compileRobotProgram(robot, level);\n\t},\n\n\tgenerateProgramLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generateProgramLayer(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateProgramEditorLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generateProgramEditorLayer(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateRobotManager: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generateRobotManager();\n\t},\n\n\tgenerateProgramData: function(isFilled)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generateProgramData(isFilled);\n\t},\n\n\tgetButtonTypes: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getButtonTypes();\n\t},\n\n\tgetDeselectFunction: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getDeselectFunction();\n\t},\n\n\tgetFunctionButtonPrototype: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getFunctionButtonPrototype();\n\t},\n\n\tgetProgramLayerPrototype: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getProgramLayerPrototype();\n\t},\n\n\tgenerateFunctionButton: function(type, value, drawBackground)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generateFunctionButton(type, value, drawBackground);\n\t},\n\n\tcreateMethodListButton: function(value)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].createMethodListButton(value);\n\t},\n\n\tgeneratePlayerRobotInterfaceLayer: function (robot)\n\t{\n\t\treturn this._modules[pm.appConfig.appType].generatePlayerRobotInterfaceLayer(robot);\n\t},\n\n\tgetAvailableGlobalRobots: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getAvailableGlobalRobots();\n\t},\n\n\tgetAvailableRobots: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getAvailableRobots();\n\t},\n\n\tuseExtraMethodsInKumirRobot: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].useExtraMethodsInKumirRobot();\n\t},\n\n\tgetAppVersion: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getAppVersion();\n\t},\n\n\tgetSupportedLevelFormatVersion: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getSupportedLevelFormatVersion();\n\t},\n\n\tgetWorldConvertFunctions: function()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getWorldConvertFunctions();\n\t},\n\n\tgetAquariusTankScale: function ()\n\t{\n\t\treturn this._modules[pm.appConfig.appType].getAquariusTankScale();\n\t}\n\n};\n","/**\n * Created by Kirill Mashchenko on 23.04.20.\n */\n\npm.KModule = {\n\n\tgetProgramLayerWidth: function()\n\t{\n\t\treturn 500;\n\t},\n\n\tcompileRobotProgram: function(robot, level)\n\t{\n\t\treturn pm.programUtilsK.compileRobotProgram(robot, level);\n\t},\n\n\tgenerateProgramLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn new ProgramLayerK(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateProgramEditorLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn new ProgramEditorLayerK(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateRobotManager: function()\n\t{\n\t\treturn new pm.RobotManagerK();\n\t},\n\n\tgenerateProgramData: function(isFilled)\n\t{\n\t\treturn new pm.data.ProgramDataK(isFilled);\n\t},\n\n\tgetButtonTypes: function()\n\t{\n\t\treturn {\n\t\t\tEmpty: -1,\n\t\t\tRepeater: 0,\n\t\t\tCondition: 1,\n\t\t\tCondRepeater: 2,\n\t\t\tMethod: 3,\n\t\t\tMethodList: 4,\n\t\t\tRecognizeResult: 5,\n\t\t\tIfStatement: 6,\n\t\t\tLogicExpression: 7,\n\t\t\tAlloc: 8,\n\t\t\tVariable: 9,\n\t\t\tStatement: 10,\n\t\t\tNumber: 11,\n\t\t\tExpression: 12,\n\t\t\tFunction: 13,\n\t\t\tConstant: 14,\n\t\t\tHorizontalBar: 15,\n\t\t\tIntMethod: 16,\n\t\t\tBool: 17,\n\t\t\tElseBlock: 18\n\t\t}\n\t},\n\n\tgetDeselectFunction: function()\n\t{\n\t\treturn function()\n\t\t{\n\t\t\tpm.sendCustomEvent(pm.DESELECT_FUNCTIONBUTTON);\n\t\t\tFunctionButton.selectedButton = null;\n\t\t};\n\t},\n\n\tgetFunctionButtonPrototype: function()\n\t{\n\t\treturn FunctionButtonK.prototype;\n\t},\n\n\tgetProgramLayerPrototype: function()\n\t{\n\t\treturn ProgramLayerK.prototype;\n\t},\n\n\tgenerateFunctionButton: function(type, value)\n\t{\n\t\treturn new FunctionButtonK(type, value);\n\t},\n\n\tcreateMethodListButton: function(value)\n\t{\n\t\treturn new MethodListButtonK(value);\n\t},\n\n\tgeneratePlayerRobotInterfaceLayer: function (robot)\n\t{\n\t\treturn new PlayerRobotInterfaceLayerK(robot);\n\t},\n\n\tgetAvailableGlobalRobots: function()\n\t{\n\t\treturn {\n\t\t\tlabels: [\n\t\t\t\tLocalizedString(\"AddOutput\")\n\t\t\t],\n\t\t\tglobalRobots: [\n\t\t\t\tpm.GlobalRobotType.Output\n\t\t\t]\n\t\t};\n\t},\n\n\tgetAvailableRobots: function()\n\t{\n\t\treturn [\n\t\t\tnew pm.KumirLevelModule,\n\t\t\tnew pm.AquariusLevelModule,\n\t\t\tnew pm.GrasshopperLevelModule,\n\t\t\tnew pm.RepairLevelModule,\n\t\t\tnew pm.PushLevelModule,\n\t\t\tnew pm.TrainLevelModule,\n\t\t\tnew pm.DraftsmanLevelModule,\n\t\t\tnew pm.TurtleLevelModule,\n\t\t\tnew pm.PhysicalRobotLevelModule,\n\t\t\tnew pm.LightLevelModule\n\t\t]\n\t},\n\n\tuseExtraMethodsInKumirRobot: function()\n\t{\n\t\treturn true;\n\t},\n\n\tgetAppVersion: function()\n\t{\n\t\treturn pmkVersion + '.' + build;\n\t},\n\n\tgetSupportedLevelFormatVersion: function()\n\t{\n\t\treturn PMK_SUPPORTED_LEVEL_FORMAT_VERSION;\n\t},\n\n\tgetWorldConvertFunctions: function()\n\t{\n\t\treturn pm.worldConvertFunctionsK;\n\t},\n\n\tgetAquariusTankScale: function ()\n\t{\n\t\treturn pm.settings.getScreenSize().width/1450;\n\t}\n};\n\npm.appUtils.register(pm.KModule, \"pm-k\");\n\n","/**\n * Created by Kirill Mashchenko on 23.04.20.\n */\n\npm.PModule = {\n\n\tgetProgramLayerWidth: function()\n\t{\n\t\treturn 355;\n\t},\n\n\tcompileRobotProgram: function(robot, level)\n\t{\n\t\treturn pm.programUtilsP.compileRobotProgram(robot, level);\n\t},\n\n\tgenerateProgramLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn new ProgramLayerP(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateProgramEditorLayer: function(gameType, useMethodStack, robot, level)\n\t{\n\t\treturn new ProgramEditorLayerP(gameType, useMethodStack, robot, level);\n\t},\n\n\tgenerateRobotManager: function()\n\t{\n\t\treturn new pm.RobotManagerP();\n\t},\n\n\tgenerateProgramData: function(isFilled)\n\t{\n\t\treturn new pm.data.ProgramDataP(isFilled);\n\t},\n\n\tgetButtonTypes: function()\n\t{\n\t\treturn {\n\t\t\tEmpty: -1,\n\t\t\tRepeater: 0,\n\t\t\tCondition: 1,\n\t\t\tCondRepeater: 2,\n\t\t\tMethod: 3,\n\t\t\tMethodList: 4,\n\t\t\tRecognizeResult: 5\n\t\t}\n\t},\n\n\tgetDeselectFunction: function()\n\t{\n\t\treturn function()\n\t\t{\n\t\t\tif(FunctionButton.selectedButton)\n\t\t\t{\n\t\t\t\tFunctionButton.selectedButton.stopAnimation();\n\t\t\t\tFunctionButton.selectedButton = null;\n\t\t\t}\n\t\t};\n\t},\n\n\tgetFunctionButtonPrototype: function()\n\t{\n\t\treturn FunctionButtonP.prototype;\n\t},\n\n\tgetProgramLayerPrototype: function()\n\t{\n\t\treturn ProgramLayerP.prototype;\n\t},\n\n\tgenerateFunctionButton: function(type, value, drawBackground)\n\t{\n\t\treturn new FunctionButtonP(type, value, drawBackground);\n\t},\n\n\tcreateMethodListButton: function(value)\n\t{\n\t\treturn new MethodListButtonP(value);\n\t},\n\n\tgeneratePlayerRobotInterfaceLayer: function (robot)\n\t{\n\t\treturn new PlayerRobotInterfaceLayerP(robot);\n\t},\n\n\tgetAvailableGlobalRobots: function()\n\t{\n\t\treturn {\n\t\t\tlabels: [\n\t\t\t\tLocalizedString(\"AddSimpleCounter\"),\n\t\t\t\tLocalizedString(\"AddDoubleCounter\"),\n\t\t\t\tLocalizedString(\"AddGreenFlag\"),\n\t\t\t\tLocalizedString(\"AddOrangeFlag\")\n\t\t\t],\n\t\t\tglobalRobots: [\n\t\t\t\tpm.GlobalRobotType.Counter,\n\t\t\t\tpm.GlobalRobotType.ExtendedCounter,\n\t\t\t\tpm.GlobalRobotType.GreenFlag,\n\t\t\t\tpm.GlobalRobotType.OrangeFlag\n\t\t\t]\n\t\t};\n\t},\n\n\tgetAvailableRobots: function()\n\t{\n\t\treturn [\n\t\t\tnew pm.RepairLevelModule,\n\t\t\tnew pm.PushLevelModule,\n\t\t\tnew pm.TrainLevelModule,\n\t\t\tnew pm.PhysicalRobotLevelModule,\n\t\t\tnew pm.KumirLevelModule,\n\t\t\tnew pm.AquariusLevelModule,\n\t\t\tnew pm.GrasshopperLevelModule,\n\t\t\tnew pm.LightLevelModule\n\t\t]\n\t},\n\n\tuseExtraMethodsInKumirRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\tgetAppVersion: function()\n\t{\n\t\treturn pmVersion + '.' + build;\n\t},\n\n\tgetSupportedLevelFormatVersion: function()\n\t{\n\t\treturn PM_SUPPORTED_LEVEL_FORMAT_VERSION;\n\t},\n\n\tgetWorldConvertFunctions: function()\n\t{\n\t\treturn pm.worldConvertFunctionsP;\n\t},\n\n\tgetAquariusTankScale: function ()\n\t{\n\t\treturn 1;\n\t}\n};\n\npm.appUtils.register(pm.PModule, \"pm\");\n","/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents node of syntax tree\n */\npm.data.Node = pm.Class.extend(/** @lends pm.data.Node#*/{\n\ttypeName: 'Node',\n\ttype: null,\n\tvalue: null,\n\tchildren: [],\n\tparentNode: null,\n\tid: null,\n\t_isEditable: true,\n\n\t_nodeView: null,\n\t_nodeName: null,\n\n\tctor: function (type, val, parent)\n\t{\n\t\tthis._addNonEnumerableProps(\"_nodeView\", \"parentNode\");\n\n\t\tthis._super();\n\n\t\tif (type !== undefined && val !== undefined)\n\t\t{\n\t\t\tthis.type = type;\n\t\t\tthis.value = val;\n\t\t\tthis.children = [];\n\t\t}\n\t\tif(parent !== undefined)\n\t\t\tthis.parentNode = parent;\n\t},\n\n\tsetNodeView: function (nodeView)\n\t{\n\t\tthis._nodeView = nodeView;\n\t},\n\n\tgetNodeView: function ()\n\t{\n\t\treturn this._nodeView;\n\t},\n\n\tgetTagName: function ()\n\t{\n\t\treturn this._nodeName;\n\t},\n\n\tsetTagName: function (name)\n\t{\n\t\tthis._nodeName = name;\n\t},\n\n\tgetChildren: function ()\n\t{\n\t\treturn this.children;\n\t},\n\n\tremoveChild: function (child)\n\t{\n\t\tfor (var i = 0; i < this.children.length; i++)\n\t\t{\n\t\t\tif (this.children[i] === child)\n\t\t\t{\n\t\t\t\tthis.children.splice(i, 1);\n\t\t\t}\n\t\t}\n\t},\n\n\tisMain: function ()\n\t{\n\t\treturn this.value === pm.data.Node.MAIN;\n\t},\n\n\tsetNonEditable: function ()\n\t{\n\t\tthis._isEditable = !this._isEditable;\n\t},\n\n\tisEditable: function ()\n\t{\n\t\treturn this._isEditable;\n\t},\n\n\tclone: function ()\n\t{\n\t\tif(this.type === pm.data.Node.Type.Alloc || this.type === pm.data.Node.Type.Func)\n\t\t\treturn null;\n\t\tvar newNode = new pm.data.Node(this.type, this.value, this.parentNode);\n\t\tfor(var i = 0;i < this.children.length;i++)\n\t\t{\n\t\t\tvar childClone = this.children[i].clone();\n\t\t\tif(childClone)\n\t\t\t{\n\t\t\t\tnewNode.children.push(childClone);\n\t\t\t\tif (this.children[i]._nodeName)\n\t\t\t\t\tnewNode.children[i].setTagName(this.children[i]._nodeName);\n\t\t\t}\n\t\t}\n\t\treturn newNode;\n\t},\n\n\tgetUsedMethodsCount: function ()\n\t{\n\t\tif(this.type === pm.data.Node.Type.Action)\n\t\t\treturn 1;\n\t\tvar methodsCount = 0;\n\t\tfor(var i = 0;i < this.children.length;i++)\n\t\t{\n\t\t\tmethodsCount += this.children[i].getUsedMethodsCount();\n\t\t}\n\t\treturn methodsCount;\n\t}\n});\n\n/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents program by syntax tree\n */\npm.data.SyntaxTree = pm.Class.extend(/** @lends pm.data.SyntaxTree#*/{\n\ttypeName: 'SyntaxTree',\n\t/**\n\t * Type of tree node.
\n\t * @type {Object}\n\t */\n\thead: null,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t},\n\n\tcreateMainAlg: function ()\n\t{\n\t\tvar main = new pm.data.Node(pm.data.Node.Type.MainAlg, \"main\");\n\t\tthis.head.children.push(main);\n\t\treturn main;\n\t},\n\n\tcreateGlobals: function ()\n\t{\n\t\tvar body = new pm.data.Node(pm.data.Node.Type.Globals, \"\");\n\t\tthis.head.children.push(body);\n\t\treturn body;\n\t},\n\n\tgetUsedMethodsCount: function () {\n\t\treturn this.head.getUsedMethodsCount();\n\t}\n});\npm.data.SyntaxTree.moveNode = function(parent, node, index)\n{\n\tvar place = pm.data.SyntaxTree._getChildPlace(parent, index);\n\tparent.children.splice(place + 1, 0, node);\n};\n\npm.data.SyntaxTree._getChildPlace =\tfunction(parent, index)\n{\n\tif (index === pm.BodyFirstChildTag)\n\t\treturn -1;\n\tvar place = parent.children.length - 1;\n\tif (index !== undefined && index !== null)//\n\t{\n\t\tplace = parent.children.indexOf(index);\n\t}\n\treturn place;\n};\n\npm.data.SyntaxTree.createNode = function(parent, type, value, index)\n{\n\tvar body = new pm.data.Node(type, value, parent);\n\tvar place = pm.data.SyntaxTree._getChildPlace(parent, index);\n\n\tparent.children.splice(place + 1, 0, body);\n\treturn body;\n};\n\n\npm.data.Node.MAIN = \"main\";\npm.data.Node.Type = {\n\tProg: 'prog',\n\tMainAlg: 'main',\n\tGlobals: 'global variables',\n\tFunc: 'function',\n\tBody: 'algorithm',\n\tStatement: 'statement',\n\tIfStatement: 'if',\n\tLoop: 'loop',\n\tType: 'type',\n\tIdentifier: 'id',\n\tNumber: 'number',\n\tBool: 'bool',\n\tExpression: \"expression\",\n\tCondition: 'condition',\n\tLogicExpression: \"logic_expr\",\n\tAction: \"action\",\n\tAlloc: \"alloc\",\n\tEmpty: 'empty',\n\tHorizontalBar: 'horizontal bar'\n};\npm.LoopVals = {\n\tnTimes: 'nTimes',\n\tfor: 'for',\n\twhileC: 'while'\n\t//until:'until'\n};\npm.ArythmMethods = {\n\tDivision: \"devide\",\n\tAddition: \"add\",\n\tSubstraction: \"sub\",\n\tMultiplication: \"mult\"\n};\npm.ArythmConditions = {\n\tLeftLRight: \"llr\",\n\tRightLLeft: \"rll\",\n\tEqual: \"equal\",\n\tNotEqual: \"not-equal\",\n\tLeftEqual: \"llr-equal\",\n\tRightEqual: \"rll-equal\"\n};\npm.NTimesNumTag = \"number\";\npm.StatementVarTag = \"var\";\npm.StatementValueTag = \"value\";\npm.BodyFirstChildTag = \"first\";\npm.StatementVarTag = \"var\";\npm.StatementValueTag = \"value\";\npm.BoolTrue = \"yes\";\npm.BoolFalse = \"no\";\npm.CommanParamTag = \"param\";\npm.ExpressionLeftTag = \"left\";\npm.ExpressionRightTag = \"right\";\npm.ForIteratorTag = \"iter\";\npm.ForBegTag = \"begVal\";\npm.ForEndTag = \"endVal\";\npm.ForStepTag = \"step\";\npm.FuncParamTag = \"param\";\npm.IFThenTag = \"then\";\npm.IFElseTag = \"else\";\npm.BodyTag = \"bodyTag\";\npm.IFCondTag = \"condition\";\npm.WhileCondTag = \"condition\";\npm.ArythmConditionsButtons = [];\npm.ArythmMethodsButtons = [];\npm.AllocVals = {\n\tINT : \"int\",\n\tBOOL : \"bool\"\n};\npm.IfVals = {\n\tIF_ST : \"if\",\n\tIF_ELSE : \"if-else\"\n};\npm.Constants = {\n\tOne: 1,\n\tTwo: 2,\n\tThree: 3,\n\tFour: 4,\n\tFive: 5,\n\tSix: 6\n};\npm.loops = [\n\tpm.LoopVals.for, pm.LoopVals.nTimes, pm.LoopVals.whileC//, pm.LoopVals.until\n];\npm.funcs = [\n\tpm.CMD_A,\n\tpm.CMD_B,\n\tpm.CMD_C,\n\tpm.CMD_D,\n\tpm.CMD_E\n];\npm.conds = [\n];\npm.expressions = [\n\tpm.ArythmMethods.Division,\n\tpm.ArythmMethods.Addition,\n\tpm.ArythmMethods.Substraction,\n\tpm.ArythmMethods.Multiplication\n];\npm.logicOperatorsLessGreater= [\n\n];\npm.logicOperatorsEquals= [\n\n];\npm.alloc = [\n\tpm.AllocVals.INT,\n\tpm.AllocVals.BOOL\n];\npm.ifConstructions = [\n\tpm.IfVals.IF_ST,\n\tpm.IfVals.IF_ELSE\n];\nvar MapClass = cc.Class.extend({\n\t_values: [],\n\tctor: function ()\n\t{\n\t\tthis._values = [];\n\t},\n\tset: function (key, val)\n\t{\n\t\tif(!this.has(key))\n\t\t\tthis._values.push({key: key, val: val});\n\t},\n\n\tget: function (key)\n\t{\n\t\tvar node = null;\n\t\tthis._values.forEach(function (elem){\n\t\t\tif(elem.key === key)\n\t\t\t{\n\t\t\t\tnode = elem.val;\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\treturn node;\n\t},\n\thas: function (key)\n\t{\n\t\treturn this._values.some(function (elem){\n\t\t\treturn elem.key === key ? true : false;\n\t\t});\n\t},\n\tvalues: function ()\n\t{\n\t\treturn this._values.map(function(elem) {\n\t\t\t\treturn elem.val;\n\t\t\t\t});\n\t},\n\tkeys: function ()\n\t{\n\t\treturn this._values.map(function(elem) {\n\t\t\treturn elem.key;\n\t\t});\n\t},\n\tdelete: function (key)\n\t{\n\t\tif(!this.has(key))\n\t\t\treturn;\n\t\tvar deleteIndex = -1;\n\t\tthis._values.forEach(function (elem, index){\n\t\t\tif(elem.key === key)\n\t\t\t{\n\t\t\t\tdeleteIndex = index;\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t\tthis._values.splice(deleteIndex, 1);\n\t},\n\tsize: function ()\n\t{\n\t\treturn this._values.length;\n\t},\n\tclear: function ()\n\t{\n\t\tthis._values = [];\n\t}\n\n});\nvar SetClass = cc.Class.extend({\n\t_values: [],\n\tctor: function (init)\n\t{\n\t\tthis._values = init;\n\t},\n\tadd: function (key)\n\t{\n\t\tif(!this.has(key))\n\t\t\tthis._values.push(key);\n\t},\n\thas: function (key)\n\t{\n\t\treturn this._values.indexOf(key) === -1 ? false : true;\n\t},\n\tdelete: function (key)\n\t{\n\t\tif(!this.has(key))\n\t\t\treturn;\n\t\tvar deleteIndex = this._values.indexOf(key);\n\t\tthis._values.splice(deleteIndex, 1);\n\t},\n\tsize: function ()\n\t{\n\t\treturn this._values.length;\n\t},\n\tclear: function ()\n\t{\n\t\tthis._values = [];\n\t},\n\tvalues: function ()\n\t{\n\t\treturn this._values;\n\t}\n});\n","/**\n * @class This class represents native function of robot which is used in {@link pm.RobotManager}.\n * @extends cc.Class\n * @constructor\n * @param {pm.AbstractRobot} robot Which robot function is.\n * @param {Function} func Native function of robot.\n */\npm.NativeFunction = cc.Class.extend(/** @lends pm.NativeFunction# */{\n\t/**\n * Which robot function is.\n * @type {pm.AbstractRobot}\n */\n\trobot: null,\n\t/**\n * Reference to method which will be called on {@link pm.NativeFunction#execute} method.\n * @private\n */\n\t_paramsNumber: 0,\n\t_nativeMethod: null,\n\t_returnArgsNumber: 0,\n\n\tctor: function(robot, func, paramsNumber, returnArgsNumber)\n\t{\n\t\tthis.robot = robot;\n\t\tthis._nativeMethod = func;\n\n\t\tif(paramsNumber)\n\t\t\tthis._paramsNumber = paramsNumber;\n\n\t\tif(returnArgsNumber)\n\t\t\tthis._returnArgsNumber = returnArgsNumber;\n\t},\n\n\t/**\n * Executes native function.\n\t * @param {...*} [args] Arguments passed to native function call.\n */\n\texecute: function(args)\n\t{\n\t\tvar res = this._nativeMethod.apply(this.robot, args);\n\n\t\tif(this._returnArgsNumber)\n\t\t\treturn res;\n\t\telse\n\t\t\treturn null;\n\t},\n\n\tgetParamsNumber: function()\n\t{\n\t\treturn this._paramsNumber;\n\t},\n\n\treturnArgs: function()\n\t{\n\t\treturn this._returnArgsNumber;\n\t}\n});\n\n/**\n * Constant for empty robot method.\n * @const\n * @default\n * @type {string}\n */\npm.EMPTY_METHOD = \"empty\";\n/**\n * Constant for main robot function.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_MAIN = \"main\";\n/**\n * Constant for global variables allocation and initialisation function.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_GLOBALS = \"global\";\n/**\n * Constant for \"A\" robot function.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_A = \"A\";\n/**\n * Constant for \"B\" robot function.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_B = \"B\";\n/**\n * Constant for \"C\" robot function.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_C = \"C\";\n/**\n * Constant for an indicate robot method.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_D = \"D\";\n/**\n * Constant for an indicate robot method.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_E = \"E\";\n/**\n * Constant for an indicate robot method.\n * @const\n * @default\n * @type {string}\n */\npm.CMD_INDICATE = \"indicate\";\n\n/**\n * Constant for an empty function condition.\n * @const\n * @default\n * @type {string}\n */\npm.CONDITION_EMPTY = \"empty\";\n/**\n * Constant for an disabled function condition.\n * @const\n * @default\n * @type {string}\n */\npm.CONDITION_DISABLE = \"disable\";\n\n/**\n * Max repeater value.\n * @const\n * @default\n * @type {Number}\n */\npm.MAX_REPEATER = 1000;\n\n/**\n * Constant for an empty function repeater.\n * @const\n * @default\n * @type {Number}\n */\npm.REPEATER_EMPTY = 1;\n/**\n * Constant for disabled function repeater.\n * @const\n * @default\n * @type {Number}\n */\npm.REPEATER_DISABLE = -2;\n/**\n * Maximum function count.\n * @const\n * @type {Number}\n * @default\n */\npm.MAX_FUNCTION_COUNT = 6;\n/**\n * Maximum function block width.\n * @const\n * @type {Number}\n * @default\n */\npm.MAX_PROGRAM_WIDTH = 6;\n\n/**\n * Enum for block type.\n * @see pm.data.Method\n * @readonly\n * @enum {Number}\n */\npm.SymbolType = {\n\tEmpty: -1,\n\tMethod: 0,\n\tCondition: 1,\n\tRepeater: 2,\n\tCondRepeater: 3,\n\tFunction: 4\n};\n\npm.data.Symbol = pm.Class.extend(/** @lends pm.data.Symbol# */{\n\n\ttype: pm.SymbolType.Method,\n\tvalue: pm.EMPTY_METHOD\n});\n\npm.data.ProgramDataK = pm.Class.extend(/** @lends pm.data.ProgramData# */{\n\ttypeName: \"ProgramData\",\n\t/**\n\t * Flag for edit program sizes possibility.\n\t * @type {Boolean}\n\t */\n\tcanEditProgramPattern: false,\n\t/**\n\t * tree of program\n\t * @type {pm.data.SyntaxTree}\n\t */\n\tprogramTree: null,\n\n\tloops: [],\n\texpressions: [],\n\tlogicOperatorsLessGreater: [],\n\tlogicOperatorsEquals: [],\n\talloc: [],\n\tifConstructions: [],\n\tfuncs: [],\n\tconds: [],\n\tcondsOpp: [],\n\tconstants: [],\n\tintMethods: [],\n\tmaxMethodCount: 10000,\n\tusedMethodsCount: 0,\n\tuseGroupButtons: true,\n\tfuncsMap: {},\n\tuseCustomFuncs: false,\n\n\tctor: function (isFilled)\n\t{\n\t\tif(isFilled)\n\t\t\treturn;\n\n\t\tthis.funcsMap = {};\n\t\tthis.loops = [];\n\t\tthis.expressions = [];\n\t\tthis.logicOperatorsLessGreater = [];\n\t\tthis.logicOperatorsEquals = [];\n\t\tthis.alloc = [];\n\t\tthis.ifConstructions = [];\n\t\tthis.funcs = [];\n\t\tthis.conds = [];\n\t\tthis.condsOpp = [];\n\t\tthis.constants = [];\n\t\tthis.intMethods = [];\n\t\tthis.maxMethodCount = 10000;\n\t\tthis.usedMethodsCount = 0;\n\t\tthis.useGroupButtons = true;\n\t\tthis.useCustomFuncs = true;\n\n\t\tthis.programTree = new pm.data.SyntaxTree();\n\t\tthis.programTree.head = new pm.data.Node(pm.data.Node.Type.Prog, \"all\", null);\n\t\tthis.programTree.createGlobals();\n\n\t\tvar main = this.programTree.createMainAlg();\n\t\tpm.data.SyntaxTree.createNode(main, pm.data.Node.Type.Body, \"\");\n\t}\n\n});\n\npm.data.ProgramDataP = pm.Class.extend(/** @lends pm.data.ProgramData# */{\n\ttypeName: \"ProgramData\",\n\n\t/**\n\t * Flag for edit program sizes possibility.\n\t * @type {Boolean}\n\t */\n\tcanEditProgramPattern: false,\n\n\twidth: 0,\n\theight: 0,\n\n\tmaxFunctionCount: 0,\n\tmaxMethodCount: 0,\n\tmaxRepeaterCount: 0,\n\tmaxConditionCount: 0,\n\tmaxCondRepeaterCount: 0,\n\n\tsymbols: [],\n\n\tctor: function (isFilled)\n\t{\n\t\tif (isFilled)\n\t\t\treturn;\n\n\t\tthis.symbols = [];\n\n\t\tthis.width = 6;\n\t\tthis.height = 100;\n\n\t\tthis.maxFunctionCount = 0;\n\t\tthis.maxMethodCount = 0;\n\t\tthis.maxRepeaterCount = 0;\n\t\tthis.maxConditionCount = 0;\n\t\tthis.maxCondRepeaterCount = 0;\n\n\t\tthis.canEditProgramPattern = false;\n\n\t\tfor (var i = 0; i < this.height; ++i)\n\t\t{\n\t\t\tvar symbolString = [];\n\t\t\tfor (var j = 0; j < this.width; ++j)\n\t\t\t{\n\t\t\t\tif (i === 0 && j === 0)\n\t\t\t\t{\n\t\t\t\t\tsymbolString.push(new pm.data.Symbol());\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar symbol = new pm.data.Symbol();\n\t\t\t\t\tsymbol.type = pm.SymbolType.Empty;\n\t\t\t\t\tsymbol.value = -1;\n\n\t\t\t\t\tsymbolString.push(symbol);\n\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.symbols.push(symbolString);\n\t\t}\n\t}\n});\n\n/**\n * @class This a data container for program data.\n * @extends pm.Class\n * @see pm.AbstractRobot\n */\npm.data.ProgramInfo = pm.Class.extend(/** @lends pm.data.ProgramInfo# */{\n\ttypeName: \"ProgramInfo\",\n\n\tcurrentIndex: 0,\n\n\tprogramDataArray: [],\n\n\tgetCurrentProgramData: function()\n\t{\n\t\treturn this.programDataArray[this.currentIndex];\n\t},\n\n\tgetProgramDataByIndex: function(index)\n\t{\n\t\treturn this.programDataArray[index];\n\t}\n});\n","/**\n * This enum contains all available states of robot.\n * @see {pm.AbstractRobot#_state}\n * @readonly\n * @enum {Number}\n */\npm.RobotState = {\n\tNoState: 0,\n\tEndedWork: 1,\n\tPlayingAnimation: 2,\n\tBroken: 3\n};\n\n/**\n * @class This is a common interface for all robots.\n * @interface\n * @extends pm.Class\n */\npm.AbstractRobot = pm.Class.extend( /** @lends pm.AbstractRobot# */{\n\t/**\n\t * Parent level of robot.\n\t * @type {pm.AbstractLevel}\n\t */\n\tparentLevel: {},\n\t/**\n\t * Unique id of robot.\n\t * @type {Number}\n\t */\n\tid: -1,\n\t/**\n\t * Step count made by robot.\n\t * @type {Number}\n\t */\n\tstepCount: 0,\n\n\t/**\n\t * Current state of robot\n\t * @type {Number}\n\t * @private\n\t */\n\t_state: 0,\n\n\t/**\n * Clone group id of robot.\n * @type {Number}\n */\n\tgroupID: -1,\n\n\t/**\n\t * Parent robot reference.\n\t * @type {pm.AbstractRobot}\n\t */\n\tparentRobot: {},\n\t/**\n\t * ID of child robot.
\n\t * Robot can execute methods of child robot.\n\t * @type {Number}\n\t */\n\tchildRobotID: -1,\n\t/**\n\t * Child robot reference.\n\t * @see {pm.AbstractRobot#childRobotID}\n\t * @type {pm.AbstractRobot}\n\t */\n\tchildRobot: {},\n\t/**\n\t * Array of function ID's which robot can execute.\n\t * @type {Array}\n\t */\n\tnativeFunctions: [],\n\t/**\n\t * Map of native functionID-NativeMethod\n\t * @type {Object}\n\t */\n\tnativeFunctionMap: {},\n\t/**\n\t * Array of repeater represented by robot.\n\t * @type {Array}\n\t */\n\trepeaters: [],\n\t/**\n\t * Array of conditions represented by robot.\n\t * @type {Array}\n\t */\n\tconditions: [],\n\t/**\n * Array of condition opposites represented by robot.\n * @type {Array}\n */\n\tconditionOpposites: [],\n\n\t_lastAnimation: null,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"parentLevel\", \"stepCount\", \"_state\", \"parentRobot\",\n\t\t\t\"childRobot\", \"nativeFunctions\", \"nativeFunctionMap\",\n\t\t\t\"repeaters\", \"conditions\", \"conditionOpposites\", \"programDataCache\", \"_lastAnimation\");\n\t\tthis._lastAnimation = null;\n\t\tthis._super();\n\t},\n\n\t/**\n\t * Returns program data of robot.\n\t * @returns {?pm.data.ProgramData}\n */\n\tgetProgramData: function()\n\t{\n\t\tif(!this.parentLevel)\n\t\t\treturn null;\n\n\t\tif(CORE_BUILD)\n\t\t{\n\t\t\tif(!this.parentLevel.programDataCache[this.groupID])\n\t\t\t\treturn this.parentLevel.programData[this.groupID].getCurrentProgramData();\n\n\t\t\treturn this.parentLevel.programDataCache[this.groupID].getCurrentProgramData();\n\t\t}\n\t\telse if (!pm.settings.isEditorMode)\n\t\t{\n\t\t\tif (!this.parentLevel.programDataCache[this.groupID] ||\n\t\t\t\t!(this.parentLevel.programDataCache[this.groupID] instanceof pm.data.ProgramInfo))\n\t\t\t{\n\t\t\t\tvar originalProgram = this.parentLevel.programData[this.groupID];\n\t\t\t\tvar newCache = new pm.data.ProgramInfo();\n\n\t\t\t\tnewCache.currentIndex = originalProgram.currentIndex;\n\t\t\t\tnewCache.programDataArray = cc.clone(originalProgram.programDataArray);\n\n\t\t\t\tthis.parentLevel.programDataCache[this.groupID] = newCache;\n\t\t\t}\n\n\t\t\treturn this.parentLevel.programDataCache[this.groupID].getCurrentProgramData();\n\t\t}\n\n\t\treturn this.parentLevel.programData[this.groupID].getCurrentProgramData();\n\t},\n\n\t/**\n\t * Returns if symbol in program data can be edited\n\t * @returns {Boolean}\n */\n\tcanEditProgramSymbol: function(pos)\n\t{\n\t\tif (this.parentLevel.isProgramDataEditable)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar currentIndex;\n\n\t\t\tif (this.parentLevel.programDataCache[this.groupID])\n\t\t\t\tcurrentIndex = this.parentLevel.programDataCache[this.groupID].currentIndex;\n\t\t\telse\n\t\t\t\tcurrentIndex = this.parentLevel.programData[this.groupID].currentIndex;\n\n\t\t\tif (pos !== null)\n\t\t\t\tvar symbol = this.parentLevel.programData[this.groupID].getProgramDataByIndex(currentIndex).symbols[pos.x][pos.y];\n\n\t\t\treturn pm.settings.isEditorMode || pos !== null &&\n\t\t\t\t(symbol.type === pm.SymbolType.Function\n\t\t\t\t|| symbol.type === pm.SymbolType.Method && symbol.value === pm.EMPTY_METHOD\n\t\t\t\t|| symbol.type === pm.SymbolType.Condition && symbol.value === pm.CONDITION_EMPTY\n\t\t\t\t|| symbol.type === pm.SymbolType.Repeater && symbol.value === pm.REPEATER_EMPTY\n\t\t\t\t|| symbol.type === pm.SymbolType.CondRepeater && symbol.value === pm.CONDITION_EMPTY);\n\t\t}\n\t},\n\n\t/**\n * Sets program data of robot.\n * @param {pm.data.ProgramData} programData\n */\n\tsetProgramData: function(programData, index)\n\t{\n\t\tif(!CORE_BUILD && !pm.settings.isEditorMode)\n\t\t{\n\t\t\tif (!this.parentLevel.programDataCache[this.groupID])\n\t\t\t\tthis.parentLevel.programDataCache[this.groupID] = new pm.data.ProgramInfo();\n\n\t\t\tthis.parentLevel.programDataCache[this.groupID].currentIndex = index;\n\t\t\tthis.parentLevel.programDataCache[this.groupID].programDataArray[index] = programData;\n\t\t}\n\t},\n\n\t/**\n\t * Sets state flag.\n\t * @param {pm.RobotState} flag\n\t */\n\tsetStateFlag: function(flag)\n\t{\n\t\tthis._state |= 1 << flag;\n\t},\n\n\t/**\n\t * Clears state flag.\n\t * @param {pm.RobotState} flag\n\t */\n\tclearStateFlag: function(flag)\n\t{\n\t\tthis._state &= ~(1 << flag);\n\t},\n\n\t/**\n\t * Checks if robot state is equal to {@link pm.RobotState.EndedWork}.\n\t * @returns {Number}\n\t */\n\tisEndedWork: function()\n\t{\n\t\treturn this._state & (1 << pm.RobotState.EndedWork);\n\t},\n\n\t/**\n\t * Checks if robot state is equal to {@link pm.RobotState.PlayingAnimation}.\n\t * @returns {Number}\n\t */\n\tisPlayingAnimation: function()\n\t{\n\t\tvar physicalConnector = this._getPhysicalConnector();\n\t\treturn this._state & (1 << pm.RobotState.PlayingAnimation) ||\n\t\t\tphysicalConnector && physicalConnector.isBusy();\n\t},\n\t/**\n\t * Checks if robot state is equal to {@link pm.RobotState.Broken}.\n\t * @returns {Number}\n\t */\n\tisBroken: function()\n\t{\n\t\treturn this._state & (1 << pm.RobotState.Broken);\n\t},\n\n\t/**\n\t * Clears all state flags.\n\t */\n\tclearAllStateFlags: function()\n\t{\n\t\tthis._state = 0;\n\t},\n\n\t/**\n * Returns true if robot has native function with id.\n * @param {String} functionID\n * @returns {Boolean}\n */\n\thasNativeFunction: function(functionID)\n\t{\n\t\treturn !!this.nativeFunctionMap[functionID];\n\t},\n\n\t/**\n * Returns robot's or native function with id.
\n * If no function returns null.\n * @param {String} functionID\n * @returns {pm.NativeFunction}\n */\n\tfindNativeFunction: function(functionID)\n\t{\n\t\tif(this.nativeFunctionMap[functionID])\n\t\t\treturn this.nativeFunctionMap[functionID];\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Executes native function by function ID.\n\t * @param {String} functionID\n\t * @param {*} [args] Additional arguments of executed function.\n\t */\n\texecuteNativeFunction: function(functionID, args)\n\t{\n\t\tif(this.nativeFunctionMap[functionID])\n\t\t{\n\t\t\tvar res ;\n\t\t\tvar pConnectorState = this._getPhysicalConnectorState();\n\n\t\t\tthis.incStepCount();\n\t\t\tres = this.nativeFunctionMap[functionID].execute(args);\n\n\t\t\tif(this.isBroken())\n\t\t\t\treturn;\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t{\n\t\t\t\tvar physicalConnector = this._getPhysicalConnector();\n\n\t\t\t\tif (physicalConnector && physicalConnector.isConnected())\n\t\t\t\t\tphysicalConnector.executeRobotCommand(this.id, functionID, pConnectorState);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t},\n\n\t/**\n\t * Returns list of native function of child robot. If no child return null.\n\t * @returns {?Array}\n\t */\n\tgetChildFunctions: function()\n\t{\n\t\tif(this.childRobot instanceof pm.AbstractRobot)\n\t\t\treturn this.childRobot.nativeFunctions;\n\t\telse\n\t\t\treturn null;\n\t},\n\t/**\n\t * Returns list of repeaters of child robot. If no child return null.\n\t * @returns {?Array}\n\t */\n\tgetChildRepeaters: function()\n\t{\n\t\tif(this.childRobot instanceof pm.AbstractRobot)\n\t\t\treturn this.childRobot.repeaters;\n\t\telse\n\t\t\treturn null;\n\t},\n\t/**\n\t * Returns list of conditions of child robot. If no child return null.\n\t * @returns {?Array}\n\t */\n\tgetChildConditions: function()\n\t{\n\t\tif(this.childRobot instanceof pm.AbstractRobot)\n\t\t\treturn this.childRobot.conditions;\n\t\telse\n\t\t\treturn null;\n\t},\n\t/**\n * Returns list of condition opposites of child robot. If no child return null.\n * @returns {?Array}\n */\n\tgetChildConditionOpposites: function()\n\t{\n\t\tif(this.childRobot instanceof pm.AbstractRobot)\n\t\t\treturn this.childRobot.conditionOpposites;\n\t\telse\n\t\t\treturn null;\n\t},\n\t/**\n\t * Returns map where robot is placed.\n\t * @returns {pm.AbstractMap}\n\t */\n\tgetMap: function()\n\t{\n\t\treturn this.parentLevel.activeMap;\n\t},\n\n\t/**\n\t * Increments stepCount and calls stepCallback.\n\t */\n\tincStepCount: function()\n\t{\n\t\t++this.stepCount;\n\n\t\tif(!CORE_BUILD)\n\t\t\tpm.sendCustomEvent(pm.ROBOT_STEP_COUNT_EVENT_STR, this.stepCount);\n\t},\n\n\t/**\n\t * Sets step count.\n\t * @param {Number} stepCount\n\t */\n\tsetStepCount: function(stepCount)\n\t{\n\t\tthis.stepCount = stepCount;\n\n\t\tif(!CORE_BUILD)\n\t\t\tpm.sendCustomEvent(pm.ROBOT_STEP_COUNT_EVENT_STR, this.stepCount);\n\t},\n\n\t/**\n\t * Checks condition for this robot.\n\t * @param {String} condition\n\t * @param {*} [args] Additional arguments of checking condition.\n\t * @returns {Boolean}\n\t */\n\tcheckCondition: function(condition, args)\n\t{\n\t\tif(this.conditions.indexOf(condition) !== -1 || this.conditionOpposites.indexOf(condition) !== -1)\n\t\t{\n\t\t\tthis.incStepCount();\n\t\t\treturn this._checkConditionInternal(condition, args);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t},\n\n\t/**\n * Internal checking of condition. Implement ind end-point class.\n * @private\n\t * @param {String} condition\n\t * @param {*} [args] Additional arguments of checking condition.\n * @returns {Boolean}\n */\n\t_checkConditionInternal: function(condition, args) { return false; },\n\n\t/**\n * Return repeater value from this of child robot if repeater not a number.\n * @param {String} repeater\n\t * @param {*} [args] Additional arguments of getting repeater.\n\t * @returns {Number}\n */\n\tgetRepeaterValue: function(repeater, args)\n\t{\n\t\tif(this.repeaters.indexOf(repeater) !== -1)\n\t\t\treturn this._getRepeaterValueInternal(repeater, args);\n\t\telse\n\t\t\treturn 0;\n\t},\n\n\t/**\n * @param {String} repeater\n\t * @param {*} [args] Additional arguments of getting repeater.\n * @returns {Number}\n * @private\n */\n\t_getRepeaterValueInternal: function(repeater, args) { return 0; },\n\n\t/**\n * Actions when robot win.\n * @function\n * @name pm.AbstractRobot#win\n */\n\twin: function() {},\n\t/**\n * Actions when robot loose.\n * @function\n * @name pm.AbstractRobot#destroy\n */\n\tdestroy: function() {},\n\t/**\n * Interact function between robots.\n * @function\n * @name pm.AbstractRobot#interact\n */\n\tinteract: function(robot, callback) {},\n\t/**\n * Return true if robots are interactable.\n * @function\n * @name pm.AbstractRobot#interactable\n * @return {Boolean}\n */\n\tinteractable: function() { return false; },\n\t/**\n * Return true if robots can move on eac other..\n * @function\n * @name pm.AbstractRobot#canMoveOn\n * @return {Boolean}\n */\n\tcanMoveOn: function() { return false; },\n\t/**\n * Resets robot to original state.\n * @function\n * @name pm.AbstractRobot#reset\n */\n\treset: function()\n\t{\n\t\tthis.setStepCount(0);\n\t\tthis.clearAllStateFlags();\n\t},\n\t/**\n * Returns type of robot.\n * @function\n * @name pm.AbstractRobot#getType\n * @returns {*}\n */\n\tgetType: function() { return \"abstract_robot\"; },\n\n\t/**\n * Return number of conditions.\n * @returns {Number}\n */\n\tgetConditionCount: function() { return this.conditions.length; },\n\t/**\n * Return number of repeaters.\n * @returns {Number}\n */\n\tgetRepeaterCount: function() { return this.repeaters.length; },\n\t/**\n\t * Callback for state changes of physical robot\n\t * @param {pm.PhysicalConnector.STATE} state\n\t * @private\n\t */\n\t_physicalStateChanged: function(state) {},\n\n\tgetState: function () {},\n\n\tsetState: function (state) {},\n\n\t/**\n\t * Get parent level physical connector\n\t * @returns {?pm.PhysicalConnector}\n\t * @private\n\t */\n\t_getPhysicalConnector: function()\n\t{\n\t\tif(this.parentLevel && this.parentLevel.hasPhysicalConnector())\n\t\t\treturn this.parentLevel.getPhysicalConnector();\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Get state of robot for physical connector\n\t * @returns {Object}\n\t * @private\n\t */\n\t_getPhysicalConnectorState: function() { return {}; },\n\n\tgetLastAnimation: function ()\n\t{\n\t\treturn this._lastAnimation;\n\t},\n\n\tgetRobotMethodName: function (methodName)\n\t{\n\t\treturn LocalizedString(methodName);\n\t}\n});\n","pm.AnimationTransaction = cc.Class.extend({\n sequence: [],\n spawn: [],\n\n ctor: function () {\n this.sequence = [];\n this.spawn = [];\n },\n\n addPart: function () {\n if(this.spawn.length > 0)\n this.sequence.push(cc.spawn(this.spawn));\n\n this.spawn = [];\n },\n\n addAnimationToPart: function (target, animation, animationCallback, args) {\n var sequenceAnimation = target.getAnimation(animation, animationCallback, args);\n if (sequenceAnimation)\n this.spawn.push(cc.targetedAction(target.sprite.getSprite(), sequenceAnimation));\n },\n});","\n/**\n * This enum contains all types of player robots.\n * @readonly\n * @enum {String}\n */\npm.PlayerRobotType = {\n\tRepairRobot: \"repair_robot\",\n\tPushRobot: \"push_robot\",\n\tPhysicalRobot: \"lego_robot\",\n\tBLERobot: \"ble_robot\",\n\tLightRobot: \"light_robot\"\n};\n\n/**\n * @class Interface for all robots controlled by player.\n * @interface\n * @extends pm.AbstractRobot\n */\n\npm.PlayerRobot = pm.AbstractRobot.extend(/** @lends pm.PlayerRobot#*/{\n\t/**\n\t * Sprite of robot.\n\t * @type {pm.ObjectSprite}\n\t */\n\tsprite: {},\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"sprite\");\n\t\tthis._super();\n\t},\n\n\t/**\n\t * Plays animation of robot\n\t * @param animation\n\t * @param animationCallback\n\t * @param args\n\t * @param forced\n\t */\n\tplayAnimation: function(animation, animationCallback, args, forced)\n\t{\n\t\tthis._lastAnimation = animation;\n\n\t\tif (animationCallback)\n \tthis.setStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\tif(!CORE_BUILD && (this.needToPlayAnimation() || forced))\n\t\t\tthis.sprite.playAnimation(animationCallback, this, animation, args);\n\t\telse if(CORE_BUILD)\n\t\t\tanimationCallback.call(this);\n\t\telse if(animationCallback)\n\t\t\tsetTimeout(animationCallback.bind(this), 0);\n\t},\n\n\tgetAnimation: function(animation, animationCallback, args, forced)\n\t{\n\t\tthis._lastAnimation = animation;\n\n\t\tif (animationCallback)\n\t\t\tthis.setStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\tif(!CORE_BUILD && (this.needToPlayAnimation() || forced))\n\t\t\treturn this.sprite.getAnimation(animationCallback, this, animation, args);\n\t\telse if(CORE_BUILD)\n\t\t\tanimationCallback.call(this);\n\t\telse if(animationCallback)\n\t\t\tsetTimeout(animationCallback.bind(this), 0);\n\t},\n\n\tneedToPlayAnimation: function()\n\t{\n\t\treturn !pm.settings.isAnimationDisabled()\n\t},\n\n\t/**\n * Updates sprite of robot\n */\n\tupdateSprite: function() {},\n\n\t/**\n\t * Generates robot sprite\n\t * @function\n\t * @name pm.PlayerRobot#generateRobotSprite\n\t * @returns {pm.ObjectSprite}\n\t */\n\tgenerateRobotSprite: function() {},\n\n\t/**\n * Updates robot conditions\n */\n\tupdateConditions: function() {},\n\n\t/**\n\t * Returns if robot has changeable conditions in editor\n * @returns {boolean}\n */\n\thasChangeableConditions: function() { return false; }\n});\n","/**\n * This namespace contains functions used by {@link pm.RobotManager} to store variables.\n * @namespace\n */\n\npm.variableList = {\n\n\t_variables: [],\n\t_reservedTagsNum: 0,\n\n\t/**\n * Adds variable to namespace. Returns tag of variable.\n * @param {Boolean} reserved Is variable reserved by robot.\n * @returns {Number}\n */\n\taddVariable: function (reserved)\n\t{\n\t\tthis._variables.push(0);\n\n\t\tif (reserved)\n\t\t\t++this._reservedTagsNum;\n\n\t\treturn this._variables.length - 1;\n\t},\n\n\t/**\n * Sets variable value by tag.\n * @param {Number} tag\n * @param {*} value\n */\n\tsetValue: function (tag, value)\n\t{\n\t\tthis._variables[tag] = value;\n\t},\n\n\t/**\n * Returns variable value by tag.\n * @param {Number} tag\n * @returns {*}\n */\n\tgetValue: function (tag)\n\t{\n\t\treturn this._variables[tag];\n\t},\n\n\t/**\n * Clears all list of variables.\n */\n\tclearList: function ()\n\t{\n\t\tthis._reservedTagsNum = 0;\n\t\tthis._variables = [];\n\t},\n\n\t/**\n * Clears only reserved variables.\n */\n\tclearNotReservedList: function ()\n\t{\n\t\tfor (var i = this._reservedTagsNum; i < this._variables.length; ++i)\n\t\t\tthis._variables.pop();\n\t}\n};\n","/**\n * Created by Kirill Mashchenko on 12.07.2018.\n */\n\n/**\n * @class This is wrapper for one method in format for {@link pm.RobotManager}.
\n * @extends cc.Class\n * @constructor\n * @param {Number} command\n * @param {Object} [data]\n */\npm.Instruction = cc.Class.extend(/** @lends pm.Instruction#*/{\n\t/**\n * Type of instruction.
\n * @type {Number}\n */\n\tcommand: 0,\n\t/**\n * Data of instruction.\n * @type {Object}\n */\n\tdata: {},\n\n\tctor: function(command, data)\n\t{\n\t\tif(command !== undefined)\n\t\t\tthis.command = command;\n\n\t\tif(data !== undefined)\n\t\t\tthis.data = data;\n\t\telse\n\t\t\tthis.data = {};\n\t}\n});\n\n/**\n * ID of execute instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.EXECUTE = 0;\n/**\n * ID of check condition instruction.\n * @see pm.Instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.CHECK_CONDITION = 1;\n/**\n * ID of start loop instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.START_LOOP = 2;\n/**\n * ID of end loop instruction.\n * @see pm.Instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.END_LOOP = 3;\n/**\n * ID of return instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.RETURN = 4;\n\n/**\n * ID of conditional jump instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.JUMP_IF = 5;\n\n/**\n * ID of conditional jump instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.JUMP_NIF = 6;\n/**\n * ID of conditional jump instruction.\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.JUMP = 7;\n\n\n/**\n * ID of allocate memory for variables instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.ALLOC = 8;\n/**\n * ID of put the value of variable into stack instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.FETCH = 9;\n/**\n * ID of push the value into stack instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.PUSH = 10;\n/**\n * ID of save the value from stack into variable instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.STORE = 11;\n/**\n * ID of pop the top value from stack instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.POP = 12;\n/**\n * ID of calculate action between two top value from stack and push the result into stack instruction\n * @const\n * @default\n * @type {number}\n */\npm.Instruction.CALC = 13;\n\n\n/**\n * @class This is wrapper for one function in format for {@link pm.RobotManager}.
\n * @extends cc.Class\n */\npm.RobotProgram = cc.Class.extend({\n\tinstructions: [],\n\tlabels: {},\n\tstack: [],\n\n\tinstrPosition: 0,\n\tended: false,\n\tpaused: false,\n\n\tctor: function()\n\t{\n\t\tthis.instructions = [];\n\t\tthis.labels = {};\n\t\tthis.stack = [];\n\n\t\tthis.instrPosition= 0;\n\t\tthis.ended= false;\n\t},\n\n\tsetForceInstruction: function (methodId) {}\n});\n\npm.RobotProgram.LABEL_PATTERN = \"LB_{0}\";\n\npm.programUtils = {\n\n\ttotalLabelCount: 0,\n\n\tcompileRobotProgram: function(robot, level)\n\t{\n\t\treturn pm.appUtils.compileRobotProgram(robot, level);\n\t},\n\n\tsearchNativeRobotFunction: function(robot, functionID)\n\t{\n\t\tvar searchRobot = robot;\n\n\t\twhile(searchRobot instanceof pm.AbstractRobot)\n\t\t{\n\t\t\tvar func = searchRobot.findNativeFunction(functionID);\n\n\t\t\tif (func)\n\t\t\t\treturn func;\n\t\t\telse\n\t\t\t\tsearchRobot = searchRobot.childRobot;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tsearchGlobalNativeFunction: function(level, functionID)\n\t{\n\t\tfor(var i = 0 ; i < level.globalRobots.length; ++i)\n\t\t{\n\t\t\tvar func = level.globalRobots[i].findNativeFunction(functionID);\n\n\t\t\tif (func)\n\t\t\t\treturn func;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetLabel: function()\n\t{\n\t\tvar label = pm.RobotProgram.LABEL_PATTERN.format(this.totalLabelCount);\n\t\t++this.totalLabelCount;\n\n\t\treturn label;\n\t},\n\n\tsearchRobotForCondition: function(robot, condition)\n\t{\n\t\tvar searchRobot = robot;\n\n\t\twhile(searchRobot instanceof pm.AbstractRobot)\n\t\t{\n\t\t\tif (searchRobot.conditions.indexOf(condition) !== -1 || searchRobot.conditionOpposites.indexOf(condition) !== -1)\n\t\t\t\treturn searchRobot;\n\t\t\telse\n\t\t\t\tsearchRobot = searchRobot.childRobot;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tsearchGlobalRobotForCondition: function(level, condition)\n\t{\n\t\tfor(var i = 0 ; i < level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif (level.globalRobots[i].conditions.indexOf(condition) !== -1 || level.globalRobots[i].conditionOpposites.indexOf(condition) !== -1)\n\t\t\t\treturn level.globalRobots[i];\n\t\t}\n\n\t\treturn null;\n\t}\n};\n\n","/**\n * Created by ADB\n */\n\n/**\n * @class This is wrapper for one function in format for {@link pm.RobotManager}.
\n * @extends cc.Class\n */\npm.RobotProgramK = pm.RobotProgram.extend({\n\n\t/*\n\tmemory to store begining of block in stack\n\t */\n\tregister: [],\n\t/*\n\tassociative array of global variables\n\t */\n\tmemory: {},\n\t/*\n\tregister to store function arguments\n\t */\n\targRegister: [],\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis.register = [];\n\t\tthis.argRegister = [];\n\t\tthis.memory = {};\n\n\t},\n\n\tsetForceInstruction: function (methodId)\n\t{\n\t\tthis.ended = false;\n\t\tthis.instrPosition = this.labels[methodId];\n\t\tthis.stack.push(this.instrPosition + 1);\n\t\tthis.register.push(this.stack.length);\n\t}\n});\n\npm.programUtilsK = {\n\n\t_level: null,\n\n\tcompileRobotProgram: function (robot, level)\n\t{\n\t\tvar program = new pm.RobotProgramK();\n\t\tvar programTree = robot.getProgramData();\n\t\tpm.programUtils.totalLabelCount = 0;\n\t\tthis._level = level;\n\n\t\tthis.parseProgram(program, programTree.programTree, robot);\n\n\t\tprogram.ended = false;\n\n\t\tif (program.labels[pm.CMD_GLOBALS] !== undefined)\n\t\t{\n\t\t\tprogram.instrPosition = program.labels[pm.CMD_GLOBALS];\n\t\t}\n\t\telse if (program.labels[pm.CMD_MAIN] !== undefined)\n\t\t{\n\t\t\tprogram.instrPosition = program.labels[pm.CMD_MAIN];\n\t\t}\n\n\t\tpm.programUtils.totalLabelCount = 0;\n\t\tthis._level = null;\n\n\t\treturn program;\n\t},\n\n\tparseProgram: function (program, programTree, robot)\n\t{\n\t\tthis.parseTree(programTree.head, robot, program);\n\t},\n\n\tparseTree: function (node, robot, program)\n\t{\n\t\tvar instrList = program.instructions;\n\t\tswitch (node.type)\n\t\t{\n\t\t\tcase pm.data.Node.Type.Prog:\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tthis.parseTree(node.children[i], robot, program);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.MainAlg:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tprogram.labels[pm.CMD_MAIN] = program.instructions.length;\n\n\t\t\t\tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\t\t\t\tinstr.data.paramQuantity = 0;\n\t\t\t\tinstr.data.isNative = false;\n\t\t\t\tinstr.data.methodID = pm.CMD_MAIN;\n\t\t\t\tinstr.data.nodeView = node.getNodeView();\n\t\t\t\tprogram.instructions.push(instr);\n\t\t\t\tinstLength++;\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t{\n\t\t\t\t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar retInstr = new pm.Instruction(pm.Instruction.RETURN);\n\t\t\t\tretInstr.data.paramQuantity = 0;\n\t\t\t\tinstrList.push(retInstr);\n\t\t\t\tinstLength++;\n\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.Globals:\n\t\t\t\tvar blockLength = 0;\n\t\t\t\tprogram.labels[pm.CMD_GLOBALS] = program.instructions.length;\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tthis.parseTree(node.children[i], robot, program);\n\t\t\t\t}\n\t\t\t\tvar jmpInstr = new pm.Instruction(pm.Instruction.JUMP);\n\n\t\t\t\tjmpInstr.data.jumpLabel = pm.CMD_MAIN;\n\t\t\t\tprogram.instructions.push(jmpInstr);\n\t\t\t\t++blockLength;\n\n\t\t\t\treturn blockLength;\n\n\t\t\tcase pm.data.Node.Type.Func:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tvar body = null;\n\t\t\t\tvar argNum = 0;\n\t\t\t\tprogram.labels[node.value] = instrList.length;\n\n\t\t\t\tfor (var i = node.children.length - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t\tbody = node.children[i];\n\t\t\t\t\telse if(node.children[i].type === pm.data.Node.Type.Alloc)\n\t\t\t\t\t\tinstLength += this.compileArg(node.children[i],robot, program);\n\t\t\t\t}\n\t\t\t\tinstLength += this.parseTree(body, robot, program);\n\t\t\t\tvar retInstr = new pm.Instruction(pm.Instruction.RETURN);\n\t\t\t\tretInstr.data.paramQuantity = argNum;\n\t\t\t\tinstrList.push(retInstr);\n\t\t\t\tinstLength++;\n\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.Body:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t\t}\n\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.Alloc:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tvar varName;\n\t\t\t\tvar varType;\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Identifier)\n\t\t\t\t\t\tvarName = node.children[i].value;\n\t\t\t\t\telse if (node.children[i].type === pm.data.Node.Type.Type)\n\t\t\t\t\t\tvarType = node.children[i].value;\n\t\t\t\t}\n\t\t\t\tthis.allocateInstr(varType, varName, 0, program, node.getNodeView());\n\t\t\t\tinstLength++;\n\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.Statement:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tvar varName = null;\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].getTagName() === pm.StatementVarTag)\n\t\t\t\t\t\tvarName = node.children[i];\n\t\t\t\t\telse if(node.children[i].getTagName() === pm.StatementValueTag)\n\t\t\t\t\t{\n\t\t\t\t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.storeInstr(varName.value, false, program, node.getNodeView());\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.Identifier:\n\t\t\t\tinstr = new pm.Instruction(pm.Instruction.FETCH);\n\t\t\t\tinstr.data.varName = node.value;\n\t\t\t\tinstrList.push(instr);\n\t\t\t\treturn 1;\n\n\t\t\tcase pm.data.Node.Type.Bool:\n\t\t\tcase pm.data.Node.Type.Number:\n\t\t\t\tinstr = new pm.Instruction(pm.Instruction.PUSH);\n\t\t\t\tinstr.data.value = node.value;\n\t\t\t\tinstrList.push(instr);\n\t\t\t\treturn 1;\n\n\t\t\tcase pm.data.Node.Type.LogicExpression:\n\t\t\tcase pm.data.Node.Type.Expression:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tvar instr = new pm.Instruction(pm.Instruction.CALC);\n\t\t\t\tinstr.data.operation = node.value;\n\t\t\t\tinstr.data.nodeView = node.getNodeView();\n\t\t\t\tvar leftOp;\n\t\t\t\tvar rightOp;\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].getTagName() === pm.ExpressionLeftTag)\n\t\t\t\t\t\tleftOp = node.children[i];\n\t\t\t\t\tif (node.children[i].getTagName() === pm.ExpressionRightTag)\n\t\t\t\t\t\trightOp = node.children[i];\n\t\t\t\t}\n\t\t\t\tif (rightOp !== null)\n\t\t\t\t\tblockLength += this.parseTree(rightOp, robot, program);\n\t\t\t\tblockLength += this.parseTree(leftOp, robot, program);\n\n\t\t\t\tinstrList.push(instr);\n\t\t\t\tinstLength++;\n\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.IfStatement:\n\t\t\t\treturn this.compileIFStatement(node, robot, program);\n\n\t\t\tcase pm.data.Node.Type.Condition:\n\t\t\t\treturn this.compileSimpleCondition(node, robot, program);\n\n\t\t\tcase pm.data.Node.Type.Loop:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tswitch (node.value)\n\t\t\t\t{\n\t\t\t\t\tcase pm.LoopVals.nTimes:\n\t\t\t\t\tcase pm.LoopVals.for:\n\t\t\t\t\t\tinstLength += this.compileSimpleLoop(node, robot, program);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.whileC:\n\t\t\t\t\t\tinstLength += this._compileWhileBlock(node, robot, program);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.until:\n\t\t\t\t\t\tinstLength += this._compileUntilBlock(node, robot, program);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn instLength;\n\n\t\t\tcase pm.data.Node.Type.HorizontalBar:\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tvar tag = pmui.HorizontalBarNode.CHILD_TAG.format(i);\n\t\t\t\t\tfor (var j = 0; j < node.children.length; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (node.children[j].getTagName() === tag)\n\t\t\t\t\t\t\tthis.parseTree(node.children[j], robot, program);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t// compileFunctionCall: function (node, robot, program)\n\t\t\t// {\n\t\t\t// \tvar instLength = 0;\n\t\t\t// \tvar res = null;\n\t\t\t// \tvar argres = null;\n\t\t\t// \tvar paramsNum = 0;\n\t\t\t// \tfor (var i = 0; i < node.children.length; i++)\n\t\t\t// \t{\n\t\t\t// \t\tif (node.children[i].value === pm.data.Node.Type.Arg)\n\t\t\t// \t\t{\n\t\t\t// \t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t// \t\t\tparamsNum += node.children[i].children.length;\n\t\t\t// \t\t}\n\t\t\t// \t\telse if (node.children[i].value === pm.data.Node.Type.Res)\n\t\t\t// \t\t{\n\t\t\t// \t\t\tres = node.children[i];\n\t\t\t// \t\t}\n\t\t\t// \t\telse if (node.children[i].value === pm.data.Node.Type.ArgRes)\n\t\t\t// \t\t{\n\t\t\t// \t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t// \t\t\tparamsNum += node.children[i].children.length;\n\t\t\t// \t\t\targres = node.children[i];\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t//\n\t\t\t// \tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\t\t\t// \tinstr.data.paramQuantity = paramsNum;\n\t\t\t// \tinstr.data.isNative = false;\n\t\t\t// \tinstr.data.methodID = node.value;\n\t\t\t// \tinstr.data.nodeView = node.getNodeView();\n\t\t\t//\n\t\t\t// \tprogram.instructions.push(instr);\n\t\t\t// \tinstLength++;\n\t\t\t// \tif (res)\n\t\t\t// \t\tinstLength += this.parseTree(res, robot, program);\n\t\t\t//\n\t\t\t// \tif (argres)\n\t\t\t// \t{\n\t\t\t// \t\targres.value = \"CallRes\";\n\t\t\t// \t\tinstLength += this.parseTree(argres, robot, program);\n\t\t\t// \t}\n\t\t\t//\n\t\t\t// \treturn instLength;\n\t\t\t// },\n\t\t\tcase pm.data.Node.Type.Action:\n\t\t\t\tvar instLength = 0;\n\t\t\t\tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\t\t\t\tvar paramCount = 0;\n\t\t\t\tvar nativeFunc = pm.programUtils.searchNativeRobotFunction(robot, node.value);\n\n\t\t\t\tinstr.data.isNative = false;\n\n\t\t\t\tif (nativeFunc)\n\t\t\t\t{\n\t\t\t\t\tinstr.data.robot = nativeFunc.robot;\n\t\t\t\t\tinstr.data.isNative = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnativeFunc = pm.programUtils.searchGlobalNativeFunction(this._level, node.value);\n\t\t\t\t\tif (nativeFunc)\n\t\t\t\t\t{\n\t\t\t\t\t\tinstr.data.robot = nativeFunc.robot;\n\t\t\t\t\t\tinstr.data.isNative = true;\n\t\t\t\t\t\tinstr.data.funcArgs = robot.id;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tinstr.data.isNative = false;\n\t\t\t\t\t\tinstr.data.methodID = node.value;\n\t\t\t\t\t\tinstr.data.nodeView = node.getNodeView();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar params = [];\n\t\t\t\tfor (var i = node.children.length - 1; i >= 0; i--)\n\t\t\t\t{\n\t\t\t\t\tvar tag = pm.CommanParamTag + i;\n\t\t\t\t\tfor (var j = 0; j < node.children.length; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (node.children[j].getTagName() === tag)\n\t\t\t\t\t\t\tparamCount += this.parseTree(node.children[j], robot, program);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinstr.data.methodID = node.value;\n\t\t\t\tinstr.data.paramCount = paramCount;\n\t\t\t\tinstr.data.nodeView = node.getNodeView();\n\t\t\t\tprogram.instructions.push(instr);\n\t\t\t\tinstLength++;\n\t\t\t\tinstLength += paramCount;\n\t\t\t\treturn instLength;\n\t\t}\n\t},\n\n\tallocateInstr: function (varType, varName, value, program, nodeView)\n\t{\n\t\tvar instr = new pm.Instruction(pm.Instruction.ALLOC);\n\t\tinstr.data.varType = varType;\n\t\tinstr.data.varName = varName;\n\t\tinstr.data.value = value;\n\t\tinstr.data.nodeView = nodeView;\n\t\tprogram.instructions.push(instr);\n\t},\n\n\tstoreInstr: function (varName, fromReg, program, nodeView)\n\t{\n\t\tvar instr = new pm.Instruction(pm.Instruction.STORE);\n\t\tinstr.data.varName = varName;\n\t\tinstr.data.fromReg = fromReg;\n\t\tinstr.data.nodeView = nodeView;\n\t\tprogram.instructions.push(instr);\n\t},\n\n\tcompileArg: function(node, robot, program)\n\t{\n\t\tvar instLength = 0;\n\t\tvar varName;\n\t\tvar varType;\n\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t{\n\t\t\tif (node.children[i].type === pm.data.Node.Type.Identifier)\n\t\t\t\tvarName = node.children[i].value;\n\t\t\telse if (node.children[i].type === pm.data.Node.Type.Type)\n\t\t\t\tvarType = node.children[i].value;\n\t\t}\n\t\tthis.allocateInstr(varType, varName, 0, program, node.getNodeView());\n\t\tinstLength++;\n\t\tthis.storeInstr(varName, true, program, node.getNodeView());\n\t\tinstLength++;\n\t\treturn instLength;\n\n\t},\n\n\t_compileUntilBlock: function (node, robot, program)\n\t{\n\t\tvar blockLength = 0;\n\t\tvar condition = node.children[0];\n\t\tvar body = node.children[1];\n\t\tvar blockStartInstr = program.instructions.length;\n\n\t\tblockLength += this.parseTree(body, robot, program);\n\n\t\tblockLength += this.parseTree(condition, robot, program);\n\t\tvar NIFInstr = program.instructions[program.instructions.length - 1];\n\n\t\tif (condition.value !== pm.CONDITION_EMPTY)\n\t\t\tprogram.labels[NIFInstr.data.jumpLabel] = blockStartInstr;\n\n\t\treturn blockLength;\n\t},\n\n\t_compileWhileBlock: function (node, robot, program)\n\t{\n\t\tvar blockLength = 0;\n\t\tif (node.children[0].getTagName() === pm.WhileCondTag)\n\t\t{\n\t\t\tvar condition = node.children[0];\n\t\t\tvar body = node.children[1];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar condition = node.children[1];\n\t\t\tvar body = node.children[0];\n\t\t}\n\t\tvar blockStartLabel = pm.programUtils.getLabel();\n\t\tvar condEndLabel = pm.programUtils.getLabel();\n\n\t\tprogram.labels[blockStartLabel] = program.instructions.length;\n\n\t\tblockLength += this.parseTree(condition, robot, program);\n\n\t\tvar instr = new pm.Instruction(pm.Instruction.JUMP_NIF);\n\t\tinstr.data.jumpLabel = condEndLabel;\n\t\tprogram.instructions.push(instr);\n\t\t++blockLength;\n\n\t\tvar popInstr = new pm.Instruction(pm.Instruction.POP);\n\t\tblockLength += program.instructions.push(popInstr);\n\n\t\tblockLength += this.parseTree(body, robot, program);\n\n\t\tvar jmpInstr = new pm.Instruction(pm.Instruction.JUMP);\n\n\t\tjmpInstr.data.jumpLabel = blockStartLabel;\n\t\tprogram.instructions.push(jmpInstr);\n\t\t++blockLength;\n\n\t\tprogram.labels[instr.data.jumpLabel] = program.instructions.length;\n\n\t\treturn blockLength;\n\t},\n\n\tcompileSimpleLoop: function (node, robot, program)\n\t{\n\t\tvar blockLength = 0;\n\t\tvar repInstr;\n\n\t\tvar loopBodyStartLabel = pm.programUtils.getLabel();\n\t\tvar blockEndLabel = pm.programUtils.getLabel();\n\t\tvar repIndex = null;\n\t\tvar repBeg = null;\n\t\tvar repVal = null;\n\t\tvar repStep = null;\n\t\tvar repBody = null;\n\n\t\tif (node.value === pm.LoopVals.nTimes)\n\t\t{\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t{\n\t\t\t\tif (node.children[i].getTagName() === pm.NTimesNumTag)\n\t\t\t\t{\n\t\t\t\t\trepVal = node.children[i];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\trepBody = node.children[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar instr = new pm.Instruction(pm.Instruction.PUSH);\n\t\t\tinstr.data.value = 1;\n\t\t\tprogram.instructions.push(instr);\n\t\t\tthis.parseTree(repVal, robot, program);\n\t\t}\n\t\telse if (node.value === pm.LoopVals.for)\n\t\t{\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t{\n\t\t\t\tif (node.children[i].getTagName() === pm.ForIteratorTag)\n\t\t\t\t{\n\t\t\t\t\trepIndex = node.children[i];\n\t\t\t\t}\n\t\t\t\telse if (node.children[i].getTagName() === pm.ForBegTag)\n\t\t\t\t{\n\t\t\t\t\trepBeg = node.children[i];\n\t\t\t\t}\n\t\t\t\telse if (node.children[i].getTagName() === pm.ForEndTag)\n\t\t\t\t{\n\t\t\t\t\trepVal = node.children[i];\n\t\t\t\t}\n\t\t\t\telse if (node.children[i].getTagName() === pmui.ForRepeaterNode.STEP_TAG)\n\t\t\t\t{\n\t\t\t\t\trepStep = node.children[i];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\trepBody = node.children[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (repStep !== null)\n\t\t\t{\n\t\t\t\tthis.parseTree(repStep, robot, program);\n\t\t\t}\n\t\t\tthis.parseTree(repBeg, robot, program);\n\t\t\tthis.parseTree(repVal, robot, program);\n\t\t}\n\n\t\trepInstr = new pm.Instruction(pm.Instruction.START_LOOP);\n\n\t\tif (repStep !== null)\n\t\t{\n\t\t\trepInstr.data.stepTag = pm.variableList.addVariable(false);\n\t\t}\n\t\trepInstr.data.repType = node.value;\n\t\trepInstr.data.blockEndLabel = blockEndLabel;\n\t\trepInstr.data.repeaterTag = pm.variableList.addVariable(false);\n\t\trepInstr.data.iteratorTag = pm.variableList.addVariable(false);\n\t\trepInstr.data.repPlace = cc.p(node._lineUp, node._lineDown);\n\t\trepInstr.data.nodeView = node.getNodeView();\n\t\trepInstr.data.robot = robot;\n\t\tprogram.instructions.push(repInstr);\n\t\tprogram.labels[loopBodyStartLabel] = program.instructions.length;\n\n\t\tif (repIndex)\n\t\t{\n\t\t\tthis.storeInstr(repIndex.value, false, program);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar popInstr = new pm.Instruction(pm.Instruction.POP);\n\t\t\tprogram.instructions.push(popInstr);\n\t\t}\n\t\tblockLength += this.parseTree(repBody, robot, program);\n\n\t\tvar endInstr = new pm.Instruction(pm.Instruction.END_LOOP);\n\t\tif (repInstr.data.robot)\n\t\t\tendInstr.data.robot = repInstr.data.robot;\n\n\t\tif (repInstr.data.repArgs !== undefined)\n\t\t\tendInstr.data.repArgs = repInstr.data.repArgs;\n\n\t\tendInstr.data.jumpLabel = loopBodyStartLabel;\n\t\tendInstr.data.iteratorTag = repInstr.data.iteratorTag;\n\t\tendInstr.data.repeaterTag = repInstr.data.repeaterTag;\n\t\tendInstr.data.repPlace = repInstr.data.repPlace;\n\t\tendInstr.data.nodeView = node.getNodeView();\n\n\t\tif (repStep !== null)\n\t\t{\n\t\t\tendInstr.data.stepTag = repInstr.data.stepTag;\n\t\t}\n\t\tprogram.instructions.push(endInstr);\n\t\t++blockLength;\n\n\t\tprogram.labels[blockEndLabel] = program.instructions.length;\n\n\t\treturn blockLength;\n\t},\n\n\tcompileIFStatement: function (node, robot, program)\n\t{\n\t\tvar instLength = 0;\n\t\tvar condition = null;\n\t\tvar elseBlock = null;\n\t\tvar thenBlock = null;\n\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t{\n\t\t\tif (node.children[i].value === pm.IFThenTag)\n\t\t\t\tthenBlock = node.children[i];\n\t\t\telse if (node.children[i].value === pm.IFElseTag)\n\t\t\t\telseBlock = node.children[i];\n\t\t\telse if (node.children[i].getTagName() === pm.IFCondTag)\n\t\t\t\tcondition = node.children[i];\n\t\t}\n\n\t\tvar condEndLabel = pm.programUtils.getLabel();\n\t\tinstLength += this.parseTree(condition, robot, program);\n\n\t\tvar instr = new pm.Instruction(pm.Instruction.JUMP_NIF);\n\t\tinstr.data.jumpLabel = condEndLabel;\n\t\tprogram.instructions.push(instr);\n\t\t++instLength;\n\n\t\tinstLength += this.parseTree(thenBlock, robot, program);\n\t\tprogram.labels[instr.data.jumpLabel] = program.instructions.length;\n\n\t\tif (node.children.length === 3)\n\t\t{\n\t\t\tvar instr = new pm.Instruction(pm.Instruction.JUMP_IF);\n\t\t\tvar elseLabel = pm.programUtils.getLabel();\n\n\t\t\tinstr.data.jumpLabel = elseLabel;\n\n\t\t\tprogram.instructions.push(instr);\n\t\t\t++instLength;\n\n\t\t\tinstLength += this.parseTree(elseBlock, robot, program);\n\n\t\t\tprogram.labels[elseLabel] = program.instructions.length;\n\t\t}\n\t\tvar popInstr = new pm.Instruction(pm.Instruction.POP);\n\t\tprogram.instructions.push(popInstr);\n\n\t\treturn instLength;\n\t},\n\n\tcompileSimpleCondition: function (node, robot, program)\n\t{\n\t\tvar blockLength = 0;\n\t\tvar condInstr = new pm.Instruction(pm.Instruction.CHECK_CONDITION);\n\n\t\tcondInstr.data.condition = node.value;\n\t\tcondInstr.data.nodeView = node.getNodeView();\n\t\tcondInstr.data.isNative = true;\n\t\tvar condRobot = pm.programUtils.searchRobotForCondition(robot, condInstr.data.condition);\n\n\t\tif (!condRobot)\n\t\t{\n\t\t\tcondRobot = pm.programUtils.searchGlobalRobotForCondition(this._level, condInstr.data.condition);\n\t\t\tcondInstr.data.condArgs = robot.id;\n\t\t}\n\t\tcondInstr.data.robot = condRobot;\n\t\tprogram.instructions.push(condInstr);\n\t\tblockLength++;\n\t\treturn blockLength;\n\t},\n\n\tcompileFunctionCall: function (node, robot, program)\n\t{\n\t\tvar instLength = 0;\n\t\tvar res = null;\n\t\tvar argres = null;\n\t\tvar paramsNum = 0;\n\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t{\n\t\t\tif (node.children[i].value === pm.data.Node.Type.Arg)\n\t\t\t{\n\t\t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t\tparamsNum += node.children[i].children.length;\n\t\t\t}\n\t\t\telse if (node.children[i].value === pm.data.Node.Type.Res)\n\t\t\t{\n\t\t\t\tres = node.children[i];\n\t\t\t}\n\t\t\telse if (node.children[i].value === pm.data.Node.Type.ArgRes)\n\t\t\t{\n\t\t\t\tinstLength += this.parseTree(node.children[i], robot, program);\n\t\t\t\tparamsNum += node.children[i].children.length;\n\t\t\t\targres = node.children[i];\n\t\t\t}\n\t\t}\n\n\t\tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\t\tinstr.data.paramQuantity = paramsNum;\n\t\tinstr.data.isNative = false;\n\t\tinstr.data.methodID = node.value;\n\t\tinstr.data.nodeView = node.getNodeView();\n\n\t\tprogram.instructions.push(instr);\n\t\tinstLength++;\n\t\tif (res)\n\t\t\tinstLength += this.parseTree(res, robot, program);\n\n\t\tif (argres)\n\t\t{\n\t\t\targres.value = \"CallRes\";\n\t\t\tinstLength += this.parseTree(argres, robot, program);\n\t\t}\n\n\t\treturn instLength;\n\t}\n\n};\n\n","/**\n * Created by Kirill Mashchenko on 12.07.2018.\n */\n\npm.RobotProgramP = pm.RobotProgram.extend({\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tsetForceInstruction: function (methodId)\n\t{\n\t\tthis.ended = false;\n\t\tthis.instrPosition = this.labels[methodId];\n\t}\n});\n\npm.programUtilsP = {\n\n\t_level: null,\n\n\tcompileRobotProgram: function(robot, level)\n\t{\n\t\tvar program = new pm.RobotProgramP();\n\t\tpm.programUtils.totalLabelCount = 0;\n\t\tthis._level = level;\n\n\t\tvar parsedProgram = this.parseProgram(robot.getProgramData());\n\n\t\tthis._compileFunctionBlocks(program, parsedProgram, robot);\n\n\t\tprogram.ended = false;\n\n\t\tif (program.labels[pm.CMD_MAIN] !== undefined)\n\t\t\tprogram.instrPosition = program.labels[pm.CMD_MAIN];\n\n\t\tpm.programUtils.totalLabelCount = 0;\n\t\tthis._level = null;\n\n\t\treturn program;\n\t},\n\n\tparseProgram: function(program)\n\t{\n\t\tvar parsedProgram = {type: pm.FunctionBlockType.Root, children: []};\n\t\tvar currentDepth = 0;\n\t\tvar currentMaxLength = 0;\n\n\t\tvar parseFunction = {\n\t\t\ttype: pm.FunctionBlockType.Function,\n\t\t\tvalue: pm.CMD_MAIN,\n\t\t\tleftUp: cc.p(0, 0),\n\t\t\trightDown: cc.p(),\n\t\t\tparent: parsedProgram,\n\t\t\tchildren: [],\n\t\t\tdepth: 0,\n\t\t\tmaxLength: 0\n\t\t};\n\n\t\tvar currentParent = parseFunction;\n\n\t\tvar lastNotEmptyString = -1;\n\t\tvar isMethodBlock = false;\n\n\t\tvar methodBlock = {};\n\n\t\tfor (var i = 0; i < program.height; ++i)\n\t\t{\n\t\t\tvar isEmptyRow = true;\n\n\t\t\tfor (var t = 0; t < currentDepth; ++t)\n\t\t\t{\n\t\t\t\tvar empSymbol = program.symbols[i][t];\n\n\t\t\t\tif (empSymbol.type !== pm.SymbolType.Empty)\n\t\t\t\t{\n\t\t\t\t\tfor (var e = 0; e < currentDepth-t; ++e)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentParent.rightDown = cc.p(lastNotEmptyString, currentParent.leftUp.y + currentParent.maxLength);\n\t\t\t\t\t\tcurrentParent = currentParent.parent;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepth = t;\n\t\t\t\t\tisMethodBlock = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < program.width; ++j)\n\t\t\t{\n\t\t\t\tvar symbol = program.symbols[i][j];\n\n\t\t\t\tswitch (symbol.type)\n\t\t\t\t{\n\t\t\t\t\tcase pm.SymbolType.Empty:\n\t\t\t\t\tcase pm.SymbolType.Method:\n\t\t\t\t\t\tif (j === currentDepth)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(!isMethodBlock)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmethodBlock = {\n\t\t\t\t\t\t\t\t\ttype: pm.FunctionBlockType.Simple,\n\t\t\t\t\t\t\t\t\tvalue: -1,\n\t\t\t\t\t\t\t\t\tleftUp: cc.p(i, j),\n\t\t\t\t\t\t\t\t\trightDown: cc.p(i, program.width - 1),\n\t\t\t\t\t\t\t\t\tparent: currentParent,\n\t\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\t\t\tdepth: currentDepth,\n\t\t\t\t\t\t\t\t\tmaxLength: 0\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tcurrentParent.children.push(methodBlock);\n\n\t\t\t\t\t\t\t\tisMethodBlock = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmethodBlock.rightDown = cc.p(i, program.width - 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (symbol.type === pm.SymbolType.Method)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisEmptyRow = false;\n\t\t\t\t\t\t\tlastNotEmptyString = i;\n\n\t\t\t\t\t\t\tif (currentMaxLength + currentDepth < j)\n\t\t\t\t\t\t\t\tcurrentMaxLength = j - currentDepth;\n\n\t\t\t\t\t\t\tif (currentParent.maxLength < currentMaxLength)\n\t\t\t\t\t\t\t\tcurrentParent.maxLength = currentMaxLength;\n\n\t\t\t\t\t\t\tvar tempCurrentParent = currentParent;\n\n\t\t\t\t\t\t\tfor (var e = 1; e <= currentDepth; ++e)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttempCurrentParent = tempCurrentParent.parent;\n\n\t\t\t\t\t\t\t\tif (tempCurrentParent.maxLength < currentParent.maxLength + e)\n\t\t\t\t\t\t\t\t\ttempCurrentParent.maxLength = currentParent.maxLength + e;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase pm.SymbolType.Condition:\n\t\t\t\t\tcase pm.SymbolType.CondRepeater:\n\t\t\t\t\tcase pm.SymbolType.Repeater:\n\t\t\t\t\t\tisEmptyRow = false;\n\t\t\t\t\t\tisMethodBlock = false;\n\t\t\t\t\t\tlastNotEmptyString = i;\n\t\t\t\t\t\t++currentDepth;\n\n\t\t\t\t\t\tvar currentBlock = {\n\t\t\t\t\t\t\ttype: this._getComplexBlockType(symbol.type),\n\t\t\t\t\t\t\tvalue: symbol.value,\n\t\t\t\t\t\t\tleftUp: cc.p(i, j+1),\n\t\t\t\t\t\t\trightDown: cc.p(),\n\t\t\t\t\t\t\tparent: currentParent,\n\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\tdepth: currentDepth,\n\t\t\t\t\t\t\tmaxLength: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcurrentParent.children.push(currentBlock);\n\t\t\t\t\t\tcurrentParent = currentBlock;\n\n\t\t\t\t\t\tcurrentMaxLength = 0;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase pm.SymbolType.Function:\n\t\t\t\t\t\tisEmptyRow = false;\n\t\t\t\t\t\tisMethodBlock = false;\n\t\t\t\t\t\tlastNotEmptyString = i;\n\n\t\t\t\t\t\tparseFunction = {\n\t\t\t\t\t\t\ttype: pm.FunctionBlockType.Function,\n\t\t\t\t\t\t\tvalue: symbol.value,\n\t\t\t\t\t\t\tleftUp: cc.p(i+1, 0),\n\t\t\t\t\t\t\trightDown: cc.p(),\n\t\t\t\t\t\t\tparent: {},\n\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\t\tmaxLength: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcurrentParent = parseFunction;\n\t\t\t\t\t\tcurrentMaxLength = 0;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isEmptyRow && i < program.height-1 && program.symbols[i+1][0].type === pm.SymbolType.Function\n || i === program.height-1)\n\t\t\t{\n\t\t\t\tfor (var t = 0; t <= currentDepth; ++t)\n\t\t\t\t{\n\t\t\t\t\tcurrentParent.rightDown = cc.p(lastNotEmptyString, currentParent.leftUp.y + currentParent.maxLength);\n\t\t\t\t\tcurrentParent = currentParent.parent;\n\t\t\t\t}\n\n\t\t\t\tparsedProgram.children.push(parseFunction);\n\n\t\t\t\tcurrentDepth = 0;\n\t\t\t\tparseFunction = {};\n\t\t\t}\n\t\t}\n\n\t\treturn parsedProgram;\n\t},\n\n\t_getComplexBlockType: function(symbolType)\n\t{\n\t\tswitch(symbolType)\n\t\t{\n\t\t\tcase pm.SymbolType.Repeater:\n\t\t\t\treturn pm.FunctionBlockType.Repeater;\n\t\t\tcase pm.SymbolType.Condition:\n\t\t\t\treturn pm.FunctionBlockType.Condition;\n\t\t\tcase pm.SymbolType.CondRepeater:\n\t\t\t\treturn pm.FunctionBlockType.CondRepeater;\n\t\t}\n\t},\n\n\t_compileFunctionBlocks: function(program, currentBlock, robot)\n\t{\n\t\tif (currentBlock.type !== pm.FunctionBlockType.Root)\n\t\t\treturn;\n\n\t\tfor (var i = 0; i < currentBlock.children.length; ++i)\n\t\t\tthis._compileFunction(program, currentBlock.children[i], robot);\n\t},\n\n\t_compileFunction: function(program, currentFunction, robot)\n\t{\n\t\tvar instrList = program.instructions;\n\n\t\tvar instLength = 0;\n\n\t\tprogram.labels[currentFunction.value] = instrList.length;\n\n\t\tfor (var i = 0; i < currentFunction.children.length; ++i)\n\t\t\tinstLength += this._compileBlock(program, currentFunction.children[i], robot, 0);\n\n\t\tvar retInstr = new pm.Instruction(pm.Instruction.RETURN);\n\n\t\tinstrList.push(retInstr);\n\t\tinstLength++;\n\n\t\treturn instLength;\n\t},\n\n\t_compileBlock: function(program, currentBlock, robot)\n\t{\n\t\tswitch (currentBlock.type)\n\t\t{\n\t\t\tcase pm.FunctionBlockType.Simple:\n\t\t\t\treturn this._compileSimpleBlock(program, currentBlock, robot);\n\t\t\tcase pm.FunctionBlockType.Repeater:\n\t\t\t\treturn this._compileRepeaterBlock(program, currentBlock, robot);\n\t\t\tcase pm.FunctionBlockType.Condition:\n\t\t\t\treturn this._compileConditionBlock(program, currentBlock, robot);\n\t\t\tcase pm.FunctionBlockType.CondRepeater:\n\t\t\t\treturn this._compileCondRepeaterBlock(program, currentBlock, robot);\n\t\t\tdefault:\n\n\t\t}\n\t},\n\n\t_compileSimpleBlock: function(program, currentBlock, robot)\n\t{\n\t\tvar length = 0;\n\n\t\tfor (var h = currentBlock.leftUp.x; h <= currentBlock.rightDown.x; ++h)\n\t\t{\n\t\t\tfor(var w = currentBlock.leftUp.y; w <= currentBlock.rightDown.y; ++w)\n\t\t\t{\n\t\t\t\tvar symbol = robot.getProgramData().symbols[h][w];\n\n\t\t\t\tif (symbol.type !== pm.SymbolType.Empty && symbol.value !== pm.EMPTY_METHOD)\n\t\t\t\t{\n\t\t\t\t\tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\n\t\t\t\t\tvar nativeFunc = pm.programUtils.searchNativeRobotFunction(robot, symbol.value);\n\n\t\t\t\t\tinstr.data.isNative = false;\n\n\t\t\t\t\tif(nativeFunc)\n\t\t\t\t\t{\n\t\t\t\t\t\tinstr.data.robot = nativeFunc.robot;\n\t\t\t\t\t\tinstr.data.isNative = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnativeFunc = pm.programUtils.searchGlobalNativeFunction(this._level, symbol.value);\n\n\t\t\t\t\t\tif(nativeFunc)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinstr.data.robot = nativeFunc.robot;\n\t\t\t\t\t\t\tinstr.data.isNative = true;\n\t\t\t\t\t\t\tinstr.data.funcArgs = robot.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (symbol.value >= pm.CMD_A && symbol.value <= pm.CMD_E)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar functionExist = false;\n\n\t\t\t\t\t\tfor (var i = 0; i < robot.getProgramData().height; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (var j = 0; j < robot.getProgramData().width; ++j)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (robot.getProgramData().symbols[i][j].value === symbol.value\n\t\t\t\t\t\t\t\t\t&& robot.getProgramData().symbols[i][j].type === pm.SymbolType.Function\n\t\t\t\t\t\t\t\t\t&& !(i === h && j === w))\n\t\t\t\t\t\t\t\t\tfunctionExist = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!functionExist)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tinstr.data.methodID = symbol.value;\n\t\t\t\t\tinstr.data.methodPlace = cc.p(h, w);\n\n\t\t\t\t\tprogram.instructions.push(instr);\n\t\t\t\t\tlength++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\treturn length;\n\t},\n\n\t_compileRepeaterBlock: function(program, currentBlock, robot)\n\t{\n\t\tvar blockLength = 0;\n\t\tvar repInstr;\n\n\t\tvar loopBodyStartLabel = \"\";\n\t\tvar blockEndLabel = \"\";\n\n\t\tloopBodyStartLabel = pm.programUtils.getLabel();\n\t\tblockEndLabel = pm.programUtils.getLabel();\n\n\t\trepInstr = new pm.Instruction(pm.Instruction.START_LOOP);\n\n\t\tif(!cc.isNumber(currentBlock.value))\n\t\t{\n\t\t\tvar repeaterRobot = this._searchRobotForRepeater(robot, currentBlock.value);\n\n\t\t\tif (!repeaterRobot)\n\t\t\t{\n\t\t\t\trepeaterRobot = this._searchGlobalRobotForRepeater(currentBlock.value);\n\t\t\t\trepInstr.data.repArgs = robot.id;\n\t\t\t}\n\n\t\t\trepInstr.data.robot = repeaterRobot;\n\t\t}\n\n\t\trepInstr.data.repeater = currentBlock.value;\n\t\trepInstr.data.blockEndLabel = blockEndLabel;\n\t\trepInstr.data.iteratorTag = pm.variableList.addVariable(false);\n\t\trepInstr.data.repPlace = cc.p(currentBlock.leftUp.x , currentBlock.leftUp.y - 1);\n\n\t\tprogram.instructions.push(repInstr);\n\t\tprogram.labels[loopBodyStartLabel] = program.instructions.length;\n\n\t\tfor (var i = 0; i < currentBlock.children.length; ++i)\n\t\t\tblockLength += this._compileBlock(program, currentBlock.children[i], robot);\n\n\t\tvar endInstr = new pm.Instruction(pm.Instruction.END_LOOP);\n\n\t\tendInstr.data.repeater = currentBlock.value;\n\n\t\tif(repInstr.data.robot)\n\t\t\tendInstr.data.robot = repInstr.data.robot;\n\n\t\tif(repInstr.data.repArgs !== undefined)\n\t\t\tendInstr.data.repArgs = repInstr.data.repArgs;\n\n\t\tendInstr.data.jumpLabel = loopBodyStartLabel;\n\t\tendInstr.data.iteratorTag = repInstr.data.iteratorTag;\n\t\tendInstr.data.repPlace = repInstr.data.repPlace;\n\n\t\tprogram.instructions.push(endInstr);\n\t\t++blockLength;\n\n\t\tprogram.labels[blockEndLabel] = program.instructions.length;\n\n\t\treturn blockLength;\n\t},\n\n\t_compileConditionBlock: function(program, currentBlock, robot)\n\t{\n\t\tvar blockLength = 0;\n\n\t\tvar condEndLabel = \"\";\n\n\t\tif(currentBlock.value !== pm.CONDITION_EMPTY)\n\t\t{\n\t\t\tcondEndLabel = pm.programUtils.getLabel();\n\n\t\t\tvar condInstr = new pm.Instruction(pm.Instruction.CHECK_CONDITION);\n\n\t\t\tcondInstr.data.condition = currentBlock.value;\n\n\t\t\tvar condRobot = pm.programUtils.searchRobotForCondition(robot, condInstr.data.condition);\n\n\t\t\tif(!condRobot)\n\t\t\t{\n\t\t\t\tcondRobot = pm.programUtils.searchGlobalRobotForCondition(this._level, condInstr.data.condition);\n\t\t\t\tcondInstr.data.condArgs = robot.id;\n\t\t\t}\n\n\t\t\tcondInstr.data.robot = condRobot;\n\t\t\tcondInstr.data.valueTag = pm.variableList.addVariable(false);\n\t\t\tcondInstr.data.conditionPlace = cc.p(currentBlock.leftUp.x, currentBlock.leftUp.y - 1);\n\n\t\t\tprogram.instructions.push(condInstr);\n\t\t\tblockLength++;\n\n\t\t\tvar instr = new pm.Instruction(pm.Instruction.JUMP_NIF);\n\n\t\t\tinstr.data.conditionTag = condInstr.data.valueTag;\n\t\t\tinstr.data.jumpLabel = condEndLabel;\n\n\t\t\tprogram.instructions.push(instr);\n\t\t\t++blockLength;\n\t\t}\n\n\t\tfor (var i = 0; i < currentBlock.children.length; ++i)\n\t\t\tblockLength += this._compileBlock(program, currentBlock.children[i], robot);\n\n\t\tif(currentBlock.value !== pm.CONDITION_EMPTY)\n\t\t\tprogram.labels[condEndLabel] = program.instructions.length;\n\n\t\treturn blockLength;\n\t},\n\n\t_compileCondRepeaterBlock: function(program, currentBlock, robot)\n\t{\n\t\tvar blockLength = 0;\n\n\t\tvar blockStartLabel = pm.programUtils.getLabel();\n\t\tprogram.labels[blockStartLabel] = program.instructions.length;\n\n\t\tif(currentBlock.value !== pm.CONDITION_EMPTY)\n\t\t{\n\t\t\tvar blockEndLabel = pm.programUtils.getLabel();\n\n\t\t\tvar condInstr = new pm.Instruction(pm.Instruction.CHECK_CONDITION);\n\n\t\t\tcondInstr.data.condition = currentBlock.value;\n\n\t\t\tvar condRobot = pm.programUtils.searchRobotForCondition(robot, condInstr.data.condition);\n\n\t\t\tif (!condRobot)\n\t\t\t{\n\t\t\t\tcondRobot = pm.programUtils.searchGlobalRobotForCondition(this._level, condInstr.data.condition);\n\t\t\t\tcondInstr.data.condArgs = robot.id;\n\t\t\t}\n\n\t\t\tcondInstr.data.robot = condRobot;\n\t\t\tcondInstr.data.valueTag = pm.variableList.addVariable(false);\n\t\t\tcondInstr.data.conditionPlace= cc.p(currentBlock.leftUp.x, currentBlock.leftUp.y - 1);\n\n\t\t\tprogram.instructions.push(condInstr);\n\t\t\tblockLength++;\n\n\t\t\tvar instr = new pm.Instruction(pm.Instruction.JUMP_NIF);\n\n\t\t\tinstr.data.conditionTag = condInstr.data.valueTag;\n\t\t\tinstr.data.jumpLabel = blockEndLabel;\n\n\t\t\tprogram.instructions.push(instr);\n\t\t\t++blockLength;\n\t\t}\n\n\t\tfor (var i = 0; i < currentBlock.children.length; ++i)\n\t\t\tblockLength += this._compileBlock(program, currentBlock.children[i], robot);\n\n\t\tvar jmpInstr = new pm.Instruction(pm.Instruction.JUMP);\n\n\t\tjmpInstr.data.jumpLabel = blockStartLabel;\n\t\tprogram.instructions.push(jmpInstr);\n\t\t++blockLength;\n\n\t\tif(currentBlock.value !== pm.CONDITION_EMPTY)\n\t\t\tprogram.labels[blockEndLabel] = program.instructions.length;\n\n\t\treturn blockLength;\n\t},\n\n\t_searchRobotForRepeater: function(robot, repeater)\n\t{\n\t\tvar searchRobot = robot;\n\n\t\twhile(searchRobot instanceof pm.AbstractRobot)\n\t\t{\n\t\t\tif (searchRobot.repeaters.indexOf(repeater) !== -1)\n\t\t\t\treturn searchRobot;\n\t\t\telse\n\t\t\t\tsearchRobot = searchRobot.childRobot;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_searchGlobalRobotForRepeater: function(repeater)\n\t{\n\t\tfor(var i = 0 ; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif (this._level.globalRobots[i].repeaters.indexOf(repeater) !== -1)\n\t\t\t\treturn this._level.globalRobots[i];\n\t\t}\n\n\t\treturn null;\n\t}\n\n};\n\npm.FunctionBlockType = {\n\tRoot: -1,\n\tSimple: 0,\n\tRepeater: 1,\n\tCondition: 2,\n\tCondRepeater: 3,\n\tFunction: 4\n};\n","/**\n * @class This class processes and executes functions for robots.\n * @extends cc.Class\n * @property {pm.RobotManager.State} state\n */\npm.RobotManager = cc.Class.extend(/** @lends pm.RobotManager# */{\n\n\t_level: null,\n\t/**\n * State of robot manager.\n * @type {pm.RobotManager.State|Number}\n */\n\t_state: 0,\n\t/**\n * If manager controlled by {@link MethodStackLayer}\n * @type {Boolean}\n */\n\t_controlled: false,\n\n\t_testAllLevelMaps: false,\n\t_testCurrentRobot: false,\n\t_startMapIndex: -1,\n\t_currentMapIndex: -1,\n\n\t_programs: {},\n\n\t_forcedList: [],\n\t_executedStepForceInstrCount: [],\n\n\tstates: [],\n\n\t_revertCount: 0,\n\n\t_loopCount: 0,\n\n\tctor: function()\n\t{\n\t\tthis._programs = {};\n\t\tthis._forcedList = [];\n\t\tthis._controlled = false;\n\n\t\tthis.states = [];\n\n\t\tthis._revertCount = 0;\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tpm.registerCustomEventListener(pm.PROGRAM_RESTART_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tthis._controlled = false;\n\n\t\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\t\tthis.clear();\n\t\t\t}.bind(this), 1);\n\n\t\t\tpm.registerCustomEventListener(pm.RESET_LEVEL_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tthis._controlled = false;\n\n\t\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\t\tthis.clear();\n\t\t\t}.bind(this), 1);\n\n\t\t\tpm.registerCustomEventListener(pm.PROGRAM_START_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tif (this.state !== pm.RobotManager.State.PausedByStep && this.state !== pm.RobotManager.State.SteppedWorking)\n\t\t\t\t{\n\t\t\t\t\tif (!this._level)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tthis._controlled = false;\n\n\t\t\t\t\tthis._currentMapIndex = this._level.getActiveMapIndex();\n\t\t\t\t\tthis.clear();\n\t\t\t\t\tthis._compilePrograms();\n\t\t\t\t}\n\n\t\t\t\tthis.state = pm.RobotManager.State.Working;\n\t\t\t}.bind(this), 1);\n\n\t\t\tpm.registerCustomEventListener(pm.PROGRAM_MAKE_STEP_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tswitch(this._state)\n\t\t\t\t{\n\t\t\t\t\tcase pm.RobotManager.State.Paused:\n\t\t\t\t\t\tif (!this._level)\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\tthis._controlled = false;\n\n\t\t\t\t\t\tthis._currentMapIndex = this._level.getActiveMapIndex();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\tthis._compilePrograms();\n\t\t\t\t\t\tthis.state = pm.RobotManager.State.SteppedWorking;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.RobotManager.State.PausedByStep:\n\t\t\t\t\tcase pm.RobotManager.State.Working:\n\t\t\t\t\t\tthis.state = pm.RobotManager.State.RequestSteppedWorking;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}.bind(this), 1);\n\n\t\t\tpm.registerCustomEventListener(pm.PROGRAM_TESL_ALL_MAPS_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tif (this.state === pm.RobotManager.State.Paused)\n\t\t\t\t{\n\t\t\t\t\tif (!this._level)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tthis._controlled = false;\n\n\t\t\t\t\tthis.clear();\n\t\t\t\t\tthis._compilePrograms();\n\n\t\t\t\t\tthis._testAllLevelMaps = true;\n\t\t\t\t\tthis._startMapIndex = this._level.maps.indexOf(this._level.activeMap);\n\t\t\t\t\tthis._currentMapIndex = this._startMapIndex;\n\n\t\t\t\t\tthis.state = pm.RobotManager.State.Working;\n\t\t\t\t}\n\n\t\t\t}.bind(this), 1);\n\n\t\t\tpm.registerCustomEventListener(pm.TEST_CURRENT_ROBOT_EVENT_STR, function ()\n\t\t\t{\n\t\t\t\tif (this.state !== pm.RobotManager.State.PausedByStep && this.state !== pm.RobotManager.State.SteppedWorking)\n\t\t\t\t{\n\t\t\t\t\tif (!this._level)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tthis.clear();\n\t\t\t\t\tthis._compilePrograms();\n\n\t\t\t\t\tthis._testCurrentRobot = true;\n\t\t\t\t\tthis._currentMapIndex = this._level.getActiveMapIndex();\n\t\t\t\t}\n\n\t\t\t\tthis.state = pm.RobotManager.State.Working;\n\t\t\t}.bind(this), 1);\n\t\t}\n\t},\n\t/**\n\t * Inits robot manager.\n\t */\n\tinit: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tcc.director.getScheduler().scheduleCallbackForTarget(this, this._loop, 0.001, cc.REPEAT_FOREVER, 0, true);\n\t},\n\n\t/**\n\t * Sets state of pm.RobotManager\n\t * @param {pm.RobotManager.State} state\n\t */\n\tsetState: function(state)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (state === pm.RobotManager.State.Paused)\n\t\t\t\tcc.director.getScheduler().pauseTarget(this);\n\t\t\telse if (this._state === pm.RobotManager.State.Paused)\n\t\t\t\tcc.director.getScheduler().resumeTarget(this);\n\t\t}\n\n\t\tthis._state = state;\n\t},\n\n\t/**\n\t * Returns state of robot manager\n\t * @returns {pm.RobotManager.State}\n\t */\n\tgetState: function()\n\t{\n\t\treturn this._state;\n\t},\n\n\t/**\n\t * Tests all maps in syc call\n\t */\n\ttestAllMapsSync: function()\n\t{\n\t\tif(!this._level)\n\t\t\treturn;\n\n\t\tthis.clear();\n\t\tthis._compilePrograms();\n\n\t\tthis._testAllLevelMaps = true;\n\t\tthis._startMapIndex = this._level.maps.indexOf(this._level.activeMap);\n\t\tthis._currentMapIndex = this._startMapIndex;\n\n\t\tthis._state = pm.RobotManager.State.Working;\n\n\t\tthis._loopCount = 0;\n\n\t\twhile(this._state !== pm.RobotManager.State.Paused)\n\t\t{\n\t\t\t++this._loopCount;\n\n\t\t\tif(this._loopCount > pm.RobotManager.MAX_SYNC_LOOP_COUNT)\n\t\t\t\tbreak;\n\n\t\t\tthis._loop();\n\t\t}\n\t},\n\n\t/**\n\t * Tests all maps in asyc call\n\t */\n\ttestAllMaps: function()\n\t{\n\t\tif(!this._level)\n\t\t\treturn;\n\n\t\tthis.clear();\n\t\tthis._compilePrograms();\n\n\t\tthis._testAllLevelMaps = true;\n\t\tthis._startMapIndex = this._level.maps.indexOf(this._level.activeMap);\n\t\tthis._currentMapIndex = this._startMapIndex;\n\n\t\tthis.state = pm.RobotManager.State.Working;\n\t},\n\n\t_updateVisualState: function()\n\t{\n\t\tif(CORE_BUILD)\n\t\t\treturn;\n\n\t\tif(pm.settings.isAnimationDisabled())\n\t\t{\n\t\t\tvar isBrokenRobot = false;\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (this._level.robots[i].isBroken())\n\t\t\t\t{\n\t\t\t\t\tisBrokenRobot = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpm.sendCustomEvent(pm.MAP_CHANGED_EVENT_STR, {\n\t\t\t\tindex: this._level.getActiveMapIndex(),\n\t\t\t\tsendEvent: true,\n\t\t\t\trebaseRobots: false\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tvar map = this._level.maps[i];\n\n\t\t\t\tfor (var j = 0; j < map.objects.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar object = map.objects[j];\n\n\t\t\t\t\tif (object instanceof pm.Object)\n\t\t\t\t\t\tobject.updateSprite(isBrokenRobot);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = this._level.robots[i];\n\t\t\t\tif (robot instanceof pm.PlayerRobot)\n\t\t\t\t\trobot.updateSprite(isBrokenRobot);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this._level.globalRobots.length; ++i)\n\t\t\t\tthis._level.globalRobots[i].updateSprite();\n\t\t}\n\t},\n\n\t/**\n * Loop of robot manager. Processes 1 command per loop for each robot.\n */\n\t_loop: function()\n\t{\n\t\tif(this.state === pm.RobotManager.State.Paused || this.state === pm.RobotManager.State.PausedByStep)\n\t\t\treturn;\n\n\t\tvar baseRobot = this._level.getCurrentRobot();\n\n\t\tif(!this._controlled && this._level.robotsEndedWork())\n\t\t{\n\t\t\tvar completeInfo = this._level.getTaskCompleteInfoForMap(this._currentMapIndex);\n\n\t\t\tif(completeInfo.completed)\n\t\t\t{\n\t\t\t\tvar isWin = true;\n\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.userCache.setScore(this._level, this._currentMapIndex, this._level.getCurrentRobot().stepCount);\n\t\t\t\t\tpm.sendCustomEvent(pm.MAP_COMPLETED_STR);\n\t\t\t\t}\n\n\t\t\t\tif (this._testAllLevelMaps)\n\t\t\t\t{\n\t\t\t\t\t++this._currentMapIndex;\n\t\t\t\t\tthis._currentMapIndex = this._currentMapIndex % this._level.maps.length;\n\n\t\t\t\t\tif (this._currentMapIndex !== this._startMapIndex)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i in this._programs)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._programs[i].instrPosition = this._programs[i].labels[pm.CMD_MAIN];\n\t\t\t\t\t\t\tthis._programs[i].ended = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t\t\t\t\tthis._level.robots[i].reset();\n\n\t\t\t\t\t\tfor (var i = 0; i < this._level.globalRobots.length; ++i)\n\t\t\t\t\t\t\tthis._level.globalRobots[i].reset();\n\n\t\t\t\t\t\tif (!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpm.sendCustomEvent(pm.MAP_CHANGED_EVENT_STR, {\n\t\t\t\t\t\t\t\tindex: this._currentMapIndex,\n\t\t\t\t\t\t\t\tsendEvent: true,\n\t\t\t\t\t\t\t\trebaseRobots: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._level.setActiveMap(this._level.maps[this._currentMapIndex]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tisWin = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isWin)\n\t\t\t\t{\n\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t\tthis._level.getCurrentRobot().win();\n\n\t\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.ROBOT_WIN_EVENT_STR);\n\t\t\t\t\t\tpm.networkUtils.isRobotWin = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{ this.isWin = true; }\n\n\t\t\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar notCompletedObjects = completeInfo.notCompletedObjects;\n\n\t\t\t\tfor (var i = 0; i < notCompletedObjects.length; ++i)\n\t\t\t\t\tnotCompletedObjects[i].setNotCompleted(true);\n\n\t\t\t\tthis._updateVisualState();\n\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.ROBOT_FAILURE_EVENT_STR);\n\t\t\t\t\tpm.networkUtils.isRobotWin = false;\n\t\t\t\t}\n\n\t\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif(this._testCurrentRobot && this._level.getCurrentRobot().isEndedWork())\n\t\t{\n\t\t\tif(!CORE_BUILD)\n \tpm.sendCustomEvent(pm.CURRENT_ROBOT_TESTED_EVENT_STR);\n\n\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this._controlled)\n\t\t{\n\t\t\tvar programPaused = true;\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar program = this._programs[this._level.robots[i].id];\n\n\t\t\t\tif (!program.ended && !program.paused)\n\t\t\t\t{\n\t\t\t\t\tprogramPaused = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (programPaused)\n\t\t\t{\n\t\t\t\tif(!this._level.robotsPlayingAnimation() && !this._level.objectsPlayingAnimation())\n\t\t\t\t{\n\t\t\t\t\tif(this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._state = pm.RobotManager.State.PausedByStep;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(this._state === pm.RobotManager.State.RequestSteppedWorking)\n\t\t\t\t\t\tthis._state = pm.RobotManager.State.SteppedWorking;\n\n\t\t\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t\t\t\tthis._programs[this._level.robots[i].id].paused = false;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = this._level.robots[i];\n\n\t\t\t\tif(this._testCurrentRobot && robot.id !== this._level.getCurrentRobot().id)\n \tcontinue;\n\n\t\t\t\tif (this._programs[robot.id])\n\t\t\t\t{\n\t\t\t\t\tif (!this._programs[robot.id].paused)\n\t\t\t\t\t\tthis._processRobotProgram(robot, this._programs[robot.id]);\n\n\t\t\t\t\tif (!robot.isEndedWork() && this._programs[robot.id].ended)\n\t\t\t\t\t{\n\t\t\t\t\t\trobot.setStateFlag(pm.RobotState.EndedWork);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\tif (!baseRobot.isPlayingAnimation() && !this._level.objectsPlayingAnimation())\n\t\t{\n\t\t\tif(this._state !== pm.RobotManager.State.RevertingForceInstructions)\n\t\t\t{\n\t\t\t\tthis._processForceCommands(baseRobot, this._programs[baseRobot.id]);\n\n\t\t\t\tif (this._state === pm.RobotManager.State.ProcessingForceFunction)\n\t\t\t\t\tthis._processRobotProgram(baseRobot, this._programs[baseRobot.id]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(this._revertCount === 0)\n\t\t\t\t{\n\t\t\t\t\tthis._state = pm.RobotManager.State.Paused;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.states.length > 0)\n\t\t\t\t{\n\t\t\t\t\tthis._level.setState(this.states[this.states.length-1]);\n\t\t\t\t\tthis.states.pop();\n\t\t\t\t}\n\n\t\t\t\t--this._revertCount;\n\t\t\t}\n\t\t}\n\n\t\tif(this._state !== pm.RobotManager.State.RevertingForceInstructions && this._level.robotsLoose())\n\t\t{\n\t\t\tthis._updateVisualState();\n\n\t\t\tfor (var r = 0; r < this._level.robots.length; ++r)\n\t\t\t{\n\t\t\t\tvar curRobot = this._level.robots[r];\n\n\t\t\t\tif (curRobot.isBroken())\n\t\t\t\t{\n\t\t\t\t\tfor (var u = 0; u < this._level.robots.length; ++u)\n\t\t\t\t\t\tthis._level.robots[u].destroy();\n\n\t\t\t\t\tfor (var u = 0; u < this._level.activeMap.objects.length; ++u)\n\t\t\t\t\t\tthis._level.activeMap.objects[u].stopAnimation();\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t{\n\t\t\t\tif(!this._controlled)\n\t\t\t\t\tpm.sendCustomEvent(pm.ROBOT_LOOSE_EVENT_STR);\n\t\t\t}\n\n\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t}\n\t},\n\n\t_processForceCommands: function(baseRobot, program)\n\t{\n\t\tif(this._state === pm.RobotManager.State.ProcessingForceFunction)\n\t\t{\n\t\t\tif(!program.ended)\n\t\t\t\treturn;\n\t\t\telse\n\t\t\t\tthis.state = pm.RobotManager.State.Working;\n\t\t}\n\n\t\tif(this._forcedList.length === 0)\n\t\t{\n\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t\tpm.sendCustomEvent(pm.FORCED_COMMANDS_ENDED_EVENTS_STR);\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar forcedInstr = this._forcedList[0];\n\n\t\tif(forcedInstr.command !== pm.Instruction.EXECUTE)\n\t\t{\n\t\t\tthis._forcedList.shift();\n\t\t\treturn;\n\t\t}\n\n\t\tif(!forcedInstr.data.isNative)\n\t\t{\n\t\t\tprogram.setForceInstruction(forcedInstr.data.methodID);\n\t\t\tthis.state = pm.RobotManager.State.ProcessingForceFunction;\n\n\t\t\tthis._executedStepForceInstrCount.push(0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(this._level.robotsPlayingAnimation())\n\t\t\t\treturn;\n\n\t\t\tthis.states.push(this._level.getState());\n\n\t\t\tforcedInstr.data.robot.executeNativeFunction(forcedInstr.data.methodID, forcedInstr.data.funcArgs);\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = this._level.robots[i];\n\t\t\t\tthis.states[this.states.length - 1].robotStates[i].animation = robot.getLastAnimation();\n\t\t\t}\n\n\t\t\tthis._executedStepForceInstrCount.push(1);\n\t\t}\n\n\t\tthis._forcedList.shift();\n\t},\n\n\t_compilePrograms: function()\n\t{\n\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = this._level.robots[i];\n\n\t\t\tthis._programs[robot.id] = pm.programUtils.compileRobotProgram(robot, this._level);\n\t\t}\n\t},\n\n\t/**\n\t * Sets level of robot manager\n\t * @param {pm.AbstractLevel} level\n\t */\n\tsetLevel: function(level)\n\t{\n\t\tthis._level = level;\n\n\t\tif (!this._level)\n\t\t\treturn;\n\n\t\tthis._programs = {};\n\t\tthis._forcedList.length = 0;\n\t\tthis._executedStepForceInstrCount.length = 0;\n\n\t\tthis.state = pm.RobotManager.State.Paused;\n\t},\n\n\t/**\n * Add method to be forced processed by base robot of level.\n * @param {String} methodID Method id to be executed.\n * @param {Boolean} ignoreRobotState Ignore robot broken state for processing.Robot state will be changed to normal.\n * @param {Number} [n=1] Number of method executing.\n */\n\taddForceCommand: function(methodID, n)\n\t{\n\t\tif(!this.canAddForceCommand())\n\t\t\treturn;\n\n\t\t//this._level.getCurrentRobot().clearStateFlag(pm.RobotState.Broken);\n\n\t\tif(n === undefined)\n\t\t\tn = 1;\n\n\t\tvar isGlobal = false;\n\n\t\tvar nativeFunc = pm.programUtils.searchNativeRobotFunction(this._level.getCurrentRobot(), methodID);\n\n\t\tif(!nativeFunc)\n\t\t{\n\t\t\tnativeFunc = pm.programUtils.searchGlobalNativeFunction(this._level, methodID);\n\t\t\tisGlobal = true;\n\t\t}\n\n\t\tfor(var i = 0; i < n; ++i)\n\t\t{\n\t\t\tvar instr = new pm.Instruction(pm.Instruction.EXECUTE);\n\n\t\t\tinstr.data.isNative = false;\n\n\t\t\tif(nativeFunc)\n\t\t\t{\n\t\t\t\tinstr.data.robot = nativeFunc.robot;\n\t\t\t\tinstr.data.isNative = true;\n\n\t\t\t\tif(isGlobal)\n\t\t\t\t\tinstr.data.funcArgs = this._level.getCurrentRobot().id;\n\t\t\t}\n\n\t\t\tinstr.data.methodID = methodID;\n\t\t\tthis._forcedList.push(instr);\n\t\t}\n\n\t\tif(n > 0 && this.state !== pm.RobotManager.State.ProcessingForceFunction)\n\t\t\tthis.state = pm.RobotManager.State.Working;\n\t},\n\n\t/**\n\t * Reverts last n executed instructions.
If something is executing then nothing happens.\n\t * @param {String} [preMethodID] Method to be executed before revert\n\t * @param {Number} [n=1] Number of instructions to revert\n */\n\trevertForceCommands: function(preMethodID, n)\n\t{\n\t\tif (this._state !== pm.RobotManager.State.Paused || this._revertCount > 0)\n\t\t\treturn;\n\n\t\tif (n === undefined)\n\t\t\tn = 1;\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tvar preMethod = pm.programUtils.searchNativeRobotFunction(this._level.robots[i], preMethodID);\n\n\t\t\tif (preMethod)\n\t\t\t{\n\t\t\t\tvar preInstr = new pm.Instruction(pm.Instruction.EXECUTE);\n\n\t\t\t\tpreInstr.data.robot = preMethod.robot;\n\t\t\t\tpreInstr.data.isNative = true;\n\n\t\t\t\tpreInstr.data.methodID = preMethodID;\n\t\t\t\tpreInstr.data.robot.executeNativeFunction(preInstr.data.methodID, preInstr.data.funcArgs);\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0 ; i < n; ++i)\n\t\t{\n\t\t\tthis._revertCount += this._executedStepForceInstrCount[this._executedStepForceInstrCount.length - 1];\n\t\t\tthis._executedStepForceInstrCount.pop();\n\t\t}\n\n\t\tvar baseRobot = this._level.getCurrentRobot();\n\n\t\tif (this._programs[baseRobot.id].stack.length !== 0)\n\t\t\tthis._programs[baseRobot.id].stack = [];\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: baseRobot.id});\n\t\t\tpm.sendCustomEvent(pm.RELOAD_REPEATERS_EVENT_STR, {robotIndex: baseRobot.id});\n\t\t}\n\n\t\tthis.state = pm.RobotManager.State.RevertingForceInstructions;\n\t},\n\n\t/**\n * Sets controlled mode of manager.\n * @param {Boolean} flag\n */\n\tsetControlledMode: function(flag)\n\t{\n\t\tif(flag)\n\t\t{\n\t\t\tvar robot = this._level.getCurrentRobot();\n\t\t\tthis._programs[robot.id] = pm.programUtils.compileRobotProgram(robot, this._level);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.state = pm.RobotManager.State.Paused;\n\t\t}\n\n\t\tthis._controlled = flag;\n\t},\n\n\t/**\n * Returns 1 if manager can process force program.\n * @returns {Boolean}\n */\n\tcanAddForceCommand: function()\n\t{\n\t\treturn this._controlled && !this._level.getCurrentRobot().isBroken();\n\t},\n\n\t/**\n * Clears internal data of robot manager.\n */\n\tclear: function()\n\t{\n\t\tpm.variableList.clearList();\n\t\tthis._forcedList.length = 0;\n\t\tthis.length = 0;\n\t\tthis._testAllLevelMaps = false;\n\t\tthis._testCurrentRobot = false;\n\n\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = this._level.robots[i];\n\t\t\trobot.reset();\n\t\t}\n\n\t\tfor(var i = 0; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tvar robot = this._level.globalRobots[i];\n\t\t\trobot.reset();\n\t\t}\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tif (this._programs[this._level.robots[i].id])\n\t\t\t{\n\t\t\t\tthis._programs[this._level.robots[i].id].paused = false;\n\t\t\t\tthis._programs[this._level.robots[i].id].ended = false;\n\t\t\t}\n\t\t}\n\n\t\tthis.states = [];\n\t\tthis._revertCount = 0;\n\t},\n\n\tclearPausedFlags: function ()\n\t{\n\t\tvar programPaused = true;\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tvar program = this._programs[this._level.robots[i].id];\n\n\t\t\tif (!program.ended && !program.paused)\n\t\t\t{\n\t\t\t\tprogramPaused = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (programPaused)\n\t\t{\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (this._programs[this._level.robots[i].id])\n\t\t\t\t\tthis._programs[this._level.robots[i].id].paused = false;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar _p = pm.RobotManager.prototype;\n\n/** @expose */\n_p.state;\ncc.defineGetterSetter(_p, \"state\", _p.getState, _p.setState);\n\n/**\n * Maximum loop count in sync working\n * @type {number}\n */\npm.RobotManager.MAX_SYNC_LOOP_COUNT = 1000;\n\n/**\n * States of {@link pm.RobotManager}.\n * @readonly\n * @enum {Number}\n */\npm.RobotManager.State = {\n\tPaused: 0,\n\tProcessingForceFunction: 1,\n\tRevertingForceInstructions: 2,\n\tRequestSteppedWorking: 3,\n\tSteppedWorking: 4,\n\tPausedByStep: 5,\n\tWorking: 6\n};\n","/**\n * @class This class processes and executes functions for robots in Piktomir.\n * @extends cc.Class\n * @property {pm.RobotManager.State} state\n */\npm.RobotManagerP = pm.RobotManager.extend(/** @lends pm.RobotManagerP# */{\n\n\tctor:function ()\n\t{\n\t\tthis._super();\n\t},\n\n\t_processRobotProgram: function(robot, program)\n\t{\n\t\tif (program.instructions.length === 0)\n\t\t\treturn;\n\n\t\tvar instr = program.instructions[program.instrPosition];\n\n\t\tswitch(instr.command)\n\t\t{\n\t\t\tcase pm.Instruction.EXECUTE:\n\t\t\t{\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\tvar highlightEvent = pm.HIGHLIGHT_METHOD_EVENT_STR;\n\n\t\t\t\tif(instr.data.isNative)\n\t\t\t\t{\n\t\t\t\t\tif (this._state === pm.RobotManager.State.ProcessingForceFunction)\n\t\t\t\t\t\tthis.states.push(this._level.getState());\n\n\t\t\t\t\tinstr.data.robot.executeNativeFunction(instr.data.methodID, instr.data.funcArgs);\n\n\t\t\t\t\t++program.instrPosition;\n\n\t\t\t\t\tif(robot.isBroken())\n\t\t\t\t\t\thighlightEvent = pm.HIGHLIGHT_BROKEN_METHOD_EVENT_STR;\n\n\t\t\t\t\tprogram.paused = true;\n\n\t\t\t\t\tif(this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t\tthis._updateVisualState();\n\n\t\t\t\t\tif (this.state === pm.RobotManager.State.ProcessingForceFunction) {\n\t\t\t\t\t\t++this._executedStepForceInstrCount[this._executedStepForceInstrCount.length - 1];\n\n\t\t\t\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar robot = this._level.robots[i];\n\n\t\t\t\t\t\t\tthis.states[this.states.length - 1].robotStates[i].animation = robot.getLastAnimation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif(program.labels[instr.data.methodID])\n\t\t\t\t\t{\n\t\t\t\t\t\tprogram.stack.push(program.instrPosition + 1);\n\t\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.methodID];\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\t\tmethodPlace: instr.data.methodPlace,\n\t\t\t\t\t\t\trobotIndex: robot.id\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(highlightEvent, {\n\t\t\t\t\t\tmethodPlace: instr.data.methodPlace,\n\t\t\t\t\t\trobotIndex: robot.id\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tcase pm.Instruction.START_LOOP:\n\t\t\t{\n\t\t\t\tvar repeater = instr.data.repeater;\n\n\t\t\t\tif(instr.data.robot)\n\t\t\t\t{\n\t\t\t\t\trepeater = instr.data.robot.getRepeaterValue(instr.data.repeater, instr.data.repArgs);\n\n\t\t\t\t\tif(repeater === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.blockEndLabel];\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpm.variableList.setValue(instr.data.iteratorTag, 0);\n\n\t\t\t\t++program.instrPosition;\n\n\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\titerNum: 1,\n\t\t\t\t\trepPlace: instr.data.repPlace,\n\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\trep: repeater\n\t\t\t\t});\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.END_LOOP:\n\t\t\t{\n\t\t\t\tvar iterator = pm.variableList.getValue(instr.data.iteratorTag) + 1;\n\n\t\t\t\tif(iterator === pm.MAX_REPEATER)\n\t\t\t\t{\n\t\t\t\t\trobot.setStateFlag(pm.RobotState.EndedWork);\n\t\t\t\t\tprogram.ended = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar repeater = 0;\n\n\t\t\t\tif(instr.data.robot)\n\t\t\t\t\trepeater = instr.data.robot.getRepeaterValue(instr.data.repeater, instr.data.repArgs);\n\t\t\t\telse\n\t\t\t\t\trepeater = instr.data.repeater;\n\n\t\t\t\tif(iterator < repeater)\n\t\t\t\t{\n\t\t\t\t\tpm.variableList.setValue(instr.data.iteratorTag, iterator);\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\t\titerNum: iterator + 1,\n\t\t\t\t\t\trepPlace: instr.data.repPlace,\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\trep: repeater\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\t\titerNum: iterator + 1,\n\t\t\t\t\t\trepPlace: instr.data.repPlace,\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\trep: repeater\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.CHECK_CONDITION:\n\t\t\t{\n\t\t\t\tpm.variableList.setValue(instr.data.valueTag,\n\t\t\t\t\tinstr.data.robot.checkCondition(instr.data.condition, instr.data.condArgs));\n\t\t\t\t++program.instrPosition;\n\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\tmethodPlace: instr.data.conditionPlace,\n\t\t\t\t\t\trobotIndex: robot.id\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tprogram.paused = true;\n\n\t\t\t\tif(this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\tthis._updateVisualState();\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP_IF:\n\t\t\t{\n\t\t\t\tif(pm.variableList.getValue(instr.data.conditionTag))\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\telse\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP_NIF:\n\t\t\t{\n\t\t\t\tif(!pm.variableList.getValue(instr.data.conditionTag))\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\telse\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP:\n\t\t\t{\n\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.RETURN:\n\t\t\t{\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\tif(program.stack.length === 0)\n\t\t\t\t{\n\t\t\t\t\tprogram.ended = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tprogram.instrPosition = program.stack.pop();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * @class This class processes and executes functions for robots in Piktomir-K.\n * @extends cc.Class\n * @property {pm.RobotManager.State} state\n */\npm.RobotManagerK = pm.RobotManager.extend(/** @lends pm.RobotManagerK# */{\n\n\tctor:function ()\n\t{\n\t\tthis._super();\n\t},\n\n\t_processRobotProgram: function(robot, program)\n\t{\n\t\tif (program.instructions.length === 0)\n\t\t\treturn;\n\n\t\tvar instr = program.instructions[program.instrPosition];\n\n\t\tswitch (instr.command)\n\t\t{\n\t\t\tcase pm.Instruction.EXECUTE:\n\t\t\t{\n\t\t\t\tvar highlightEvent = pm.HIGHLIGHT_METHOD_EVENT_STR;\n\t\t\t\tif (this._state === pm.RobotManager.State.ProcessingForceFunction)\n\t\t\t\t\tthis.states.push(this._level.getState());\n\n\t\t\t\tif (instr.data.isNative)\n\t\t\t\t{\n\t\t\t\t\tvar params = [];\n\t\t\t\t\tfor (var i = 0; i < instr.data.paramCount; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tparams.push(program.stack.pop());\n\t\t\t\t\t}\n\t\t\t\t\tvar res = instr.data.robot.executeNativeFunction(instr.data.methodID, params);\n\n\t\t\t\t\tif (res !== null && res !== undefined)\n\t\t\t\t\t\tprogram.stack.push(res);\n\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\t\tif (robot.isBroken())\n\t\t\t\t\t\thighlightEvent = pm.HIGHLIGHT_BROKEN_METHOD_EVENT_STR;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (program.labels[instr.data.methodID] !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar params = [];\n\t\t\t\t\t\tfor (var i = 0; i < instr.data.paramCount; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparams.push(program.stack.pop());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogram.stack.push(program.instrPosition + 1);\n\t\t\t\t\t\tprogram.register.push(program.stack.length);\n\n\t\t\t\t\t\tfor (var i = 0; i < instr.data.paramCount; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprogram.argRegister.push(params[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.methodID];\n\t\t\t\t\t\tif (instr.data.methodID === pm.CMD_MAIN)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t++program.instrPosition;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.state === pm.RobotManager.State.ProcessingForceFunction)\n\t\t\t\t{\n\t\t\t\t\t++this._executedStepForceInstrCount[this._executedStepForceInstrCount.length - 1];\n\t\t\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar robot = this._level.robots[i];\n\t\t\t\t\t\tthis.states[this.states.length - 1].robotStates[i].animation = robot.getLastAnimation();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tif(instr.data.methodID !== pm.CMD_MAIN) {\n\t\t\t\t\t\tprogram.paused = true;\n\t\t\t\t\t\tif (this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\t\t\t\t\t\tpm.sendCustomEvent(highlightEvent, {\n\t\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\t\tnodeView: instr.data.nodeView\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.START_LOOP:\n\t\t\t{\n\t\t\t\tvar repeater = program.stack.pop();\n\t\t\t\tvar iterator = program.stack.pop();\n\t\t\t\tpm.variableList.setValue(instr.data.repeaterTag, repeater);\n\t\t\t\tpm.variableList.setValue(instr.data.iteratorTag, iterator);\n\n\t\t\t\tif (instr.data.stepTag !== undefined)\n\t\t\t\t\tpm.variableList.setValue(instr.data.stepTag, program.stack.pop());\n\n\t\t\t\tif (instr.data.robot)\n\t\t\t\t{\n\t\t\t\t\tif (repeater === 0 || iterator\n\t\t\t\t\t\t> repeater)\n\t\t\t\t\t{\n\t\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.blockEndLabel];\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprogram.stack.push(iterator);\n\t\t\t\tprogram.stack.push(repeater);\n\t\t\t\tprogram.stack.push(iterator);\n\t\t\t\t++program.instrPosition;\n\n\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\t\titerNum: iterator,\n\t\t\t\t\t\tnodeView: instr.data.nodeView,\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\trep: repeater\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.END_LOOP:\n\t\t\t{\n\t\t\t\tvar step = 1;\n\t\t\t\tif (instr.data.stepTag !== undefined)\n\t\t\t\t\tstep = pm.variableList.getValue(instr.data.stepTag);\n\t\t\t\tvar repeater = program.stack.pop();\n\t\t\t\tvar iterator = program.stack.pop() + step;\n\n\t\t\t\tif (iterator === pm.MAX_REPEATER)\n\t\t\t\t{\n\t\t\t\t\trobot.setStateFlag(pm.RobotState.EndedWork);\n\t\t\t\t\tprogram.ended = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif (iterator <= repeater)\n\t\t\t\t{\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\t\tprogram.stack.push(iterator);\n\t\t\t\t\tprogram.stack.push(repeater);\n\t\t\t\t\tprogram.stack.push(iterator);\n\t\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\t\t\titerNum: iterator,\n\t\t\t\t\t\t\tnodeView: instr.data.nodeView,\n\t\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\t\trep: repeater\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif(!CORE_BUILD)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_POINT_IN_REP_EVENT, {\n\t\t\t\t\t\t\titerNum: iterator,\n\t\t\t\t\t\t\tnodeView: instr.data.nodeView,\n\t\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\t\trep: repeater\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.CHECK_CONDITION:\n\t\t\t{\n\t\t\t\tif (instr.data.isNative)\n\t\t\t\t{\n\t\t\t\t\tprogram.stack.push(instr.data.robot.checkCondition(instr.data.condition, instr.data.condArgs));\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\t}\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\tnodeView: instr.data.nodeView\n\t\t\t\t\t});\n\t\t\t\t\tprogram.paused = true;\n\n\t\t\t\t\tif (this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP_IF:\n\t\t\t{\n\t\t\t\tif (program.stack[program.stack.length-1])\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\telse\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP_NIF:\n\t\t\t{\n\t\t\t\tif (!program.stack[program.stack.length-1])\n\t\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\telse\n\t\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.Instruction.JUMP:\n\t\t\t{\n\t\t\t\tprogram.instrPosition = program.labels[instr.data.jumpLabel];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/**\n\t\t\t * instr.data.paramQuantity - number of return vals\n\t\t\t */\n\t\t\tcase pm.Instruction.RETURN:\n\t\t\t{\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\tvar res = [];\n\t\t\t\tfor (var i = 0; i < instr.data.paramQuantity; i++)\n\t\t\t\t{\n\t\t\t\t\tres.push(program.stack.pop());\n\t\t\t\t}\n\t\t\t\twhile (program.stack.length > program.register[program.register.length - 1])\n\t\t\t\t{\n\t\t\t\t\tprogram.stack.pop();\n\t\t\t\t}\n\t\t\t\tprogram.instrPosition = program.stack.pop();\n\t\t\t\tprogram.register.pop();\n\t\t\t\tfor (var i = 0; i < instr.data.paramQuantity; i++)\n\t\t\t\t{\n\t\t\t\t\tprogram.argRegister.push(res[i]);\n\t\t\t\t}\n\n\t\t\t\tif (program.register.length === 0)\n\t\t\t\t{\n\t\t\t\t\tprogram.ended = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * instr.data.varName - name of allocated variable\n\t\t\t * instr.data.varType - type of variable\n\t\t\t * instr.data.value - value of variable\n\t\t\t */\n\t\t\tcase pm.Instruction.ALLOC:\n\t\t\t{\n\t\t\t\tprogram.paused = true;\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\tnodeView: instr.data.nodeView\n\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\tthis._updateVisualState();\n\t\t\t\tif (program.register.length === 0)\n\t\t\t\t{\n\t\t\t\t\tprogram.memory[instr.data.varName] = {\n\t\t\t\t\t\ttype: instr.data.varType,\n\t\t\t\t\t\tval: instr.data.value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tprogram.stack.push({\n\t\t\t\t\t\ttype: instr.data.varType,\n\t\t\t\t\t\tname: instr.data.varName,\n\t\t\t\t\t\tval: instr.data.value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/**\n\t\t\t * instr.data.varName - name of allocated variable\n\t\t\t * instr.data.fromReg - save values from register\n\t\t\t */\n\t\t\tcase pm.Instruction.STORE:\n\t\t\t{\n\t\t\t\tvar val = null;\n\t\t\t\tvar saved = false;\n\n\t\t\t\tif (instr.data.fromReg)\n\t\t\t\t{\n\t\t\t\t\tval = program.argRegister.pop();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tval = program.stack.pop();\n\t\t\t\t}\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tif (instr.data.nodeView)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\t\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\t\tnodeView: instr.data.nodeView\n\n\t\t\t\t\t\t});\n\t\t\t\t\t\tprogram.paused = true;\n\n\t\t\t\t\t\tif (this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t\t\tthis._updateVisualState();\n\n\t\t\t\t\t\tpm.sendCustomEvent(pm.VARIABLE_VALUE_CHANGED, {name: instr.data.varName, val: val});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tif (program.register.length > 0)\n\t\t\t\t\tfor (var i = program.register[program.register.length - 1]; i < program.stack.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (program.stack[i].name !== undefined && program.stack[i].name === instr.data.varName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprogram.stack[i].val = val;\n\t\t\t\t\t\t\tsaved = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tif (!saved)\n\t\t\t\t{\n\t\t\t\t\tprogram.memory[instr.data.varName].val = val;\n\t\t\t\t}\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/**\n\t\t\t * instr.data.value - value to push\n\t\t\t */\n\n\t\t\tcase pm.Instruction.PUSH:\n\t\t\t{\n\t\t\t\tprogram.stack.push(instr.data.value);\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase pm.Instruction.POP:\n\t\t\t{\n\t\t\t\tprogram.stack.pop();\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/**\n\t\t\t * instr.data.varName - name of variable\n\t\t\t */\n\t\t\tcase pm.Instruction.FETCH:\n\t\t\t{\n\t\t\t\tvar got = false;\n\t\t\t\tif (program.memory[instr.data.varName])\n\t\t\t\t{\n\t\t\t\t\tprogram.stack.push(program.memory[instr.data.varName].val);\n\t\t\t\t\tgot = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfor (var i = program.register[program.register.length - 1]; i < program.stack.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (program.stack[i].name === instr.data.varName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprogram.stack.push(program.stack[i].val);\n\t\t\t\t\t\t\tgot = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/**\n\t\t\t * instr.data.operation - name of operation\n\t\t\t */\n\t\t\tcase pm.Instruction.CALC:\n\t\t\t{\n\t\t\t\tvar res = 0;\n\n\t\t\t\tif (!CORE_BUILD)\n\t\t\t\t{\n\t\t\t\t\tprogram.paused = true;\n\t\t\t\t\tpm.sendCustomEvent(pm.REM_LAST_HIGHLIGHT_EVENT_STR, {robotIndex: robot.id});\n\t\t\t\t\tpm.sendCustomEvent(pm.HIGHLIGHT_METHOD_EVENT_STR, {\n\t\t\t\t\t\trobotIndex: robot.id,\n\t\t\t\t\t\tnodeView: instr.data.nodeView\n\n\t\t\t\t\t});\n\t\t\t\t\tif (this._state === pm.RobotManager.State.SteppedWorking)\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tswitch (instr.data.operation)\n\t\t\t\t{\n\t\t\t\t\tcase \"sqrt\":\n\t\t\t\t\t\tres = Math.sqrt(program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"abs\":\n\t\t\t\t\t\tres = Math.abs(program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"sign\":\n\t\t\t\t\t\tres = Math.sign(program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"random\":\n\t\t\t\t\t\tres = Math.random(program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"min\":\n\t\t\t\t\t\tres = Math.min(program.stack.pop(), program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"max\":\n\t\t\t\t\t\tres = Math.max(program.stack.pop(), program.stack.pop());\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmMethods.Addition:\n\t\t\t\t\t\tres = program.stack.pop() + program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmMethods.Substraction:\n\t\t\t\t\t\tres = program.stack.pop() - program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmMethods.Multiplication:\n\t\t\t\t\t\tres = program.stack.pop() * program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmMethods.Division:\n\t\t\t\t\t\tvar op2 = program.stack.pop()\n\t\t\t\t\t\tres = op2 / program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.LeftLRight:\n\t\t\t\t\t\tres = program.stack.pop() < program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.RightLLeft:\n\t\t\t\t\t\tres = program.stack.pop() > program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.Equal:\n\t\t\t\t\t\tres = program.stack.pop() === program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.NotEqual:\n\t\t\t\t\t\tres = program.stack.pop() !== program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.RightEqual:\n\t\t\t\t\t\tres = program.stack.pop() >= program.stack.pop();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.ArythmConditions.LeftEqual:\n\t\t\t\t\t\tres = program.stack.pop() <= program.stack.pop();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tprogram.stack.push(res);\n\t\t\t\t++program.instrPosition;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * @class This is a common interface for all maps.\n * @interface\n * @extends pm.Class\n */\npm.AbstractMap = pm.Class.extend(/** @lends pm.AbstractMap#*/{\n\n\t/**\n * Tileset is set of images which represents displayed part of Map\n * @see pm.AbstractMap#mapLayer\n * @type {Number}\n */\n\ttileset: 0,\n\n\t/**\n * Parent level for map.\n * @type {pm.AbstractLevel}\n */\n\tparentLevel: {},\n\t/**\n * Array of MapElements\n * @type {Array>}\n */\n\tmapElements: [],\n\t/**\n * Array of objects\n * @type {Array}\n */\n\tobjects: [],\n\t/**\n * Displayed part of map.\n * @type {pm.MapLayer}\n */\n\tmapLayer: {},\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"parentLevel\", \"mapLayer\");\n\n\t\tthis._super();\n\t},\n\n\t/**\n * Load initial data of level\n * @name pm.AbstractMap#load\n */\n\tload: function() {},\n\t/**\n * Cleans up level\n * @name pm.AbstractMap#clean\n */\n\tclean: function()\n\t{\n\t\tfor(var j = 0; j < this.objects.length; ++j)\n\t\t{\n\t\t\tvar object = this.objects[j];\n\t\t\tobject.reset();\n\t\t}\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.mapLayer instanceof pm.MapLayer)\n\t\t\t\tthis.mapLayer.clean();\n\t\t}\n\t},\n\n\t/**\n * Place robots on map layer.\n * @name pm.AbstractMap#placeRobots\n */\n\tspawnObjects: function()\n\t{\n\t\tfor(var j = 0; j < this.objects.length; ++j)\n\t\t{\n\t\t\tvar object = this.objects[j];\n\n\t\t\tobject.parentMap = this;\n\t\t\tobject.setPosition(object.startPosition);\n\t\t}\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.mapLayer instanceof pm.MapLayer)\n\t\t\t\tthis.mapLayer.spawnObjects();\n\n\t\t\tfor(var j = 0; j < this.objects.length; ++j)\n\t\t\t{\n\t\t\t\tvar object = this.objects[j];\n\t\t\t\tobject.reset();\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n * Place robots on map layer.\n * @param {Boolean} firstPlace Is it a first placing of robots on map layer.\n * @name pm.AbstractMap#placeRobots\n */\n\tplaceRobots: function(firstPlace)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.mapLayer instanceof pm.MapLayer)\n\t\t\t\tthis.mapLayer.placeRobots(firstPlace);\n\t\t}\n\t},\n\n\t/**\n * Removes robots from map.\n * @function\n * @name pm.AbstractMap#removeRobots\n */\n\tremoveRobots: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.mapLayer instanceof pm.MapLayer)\n\t\t\t\tthis.mapLayer.removeRobots();\n\t\t}\n\t},\n\n\t/**\n * Function for generating of mapLayer.\n * @function\n * @name pm.AbstractMap#generateMapLayer\n * @param {Boolean} previewDraw Is a preview draw of map.\n * @returns {?pm.MapLayer}\n */\n\tgenerateMapLayer: function(previewDraw){ return null; },\n\n\t/**\n * Return type of map.\n * @see pm.MapType\n * @function\n * @name pm.AbstractMap#getType\n * @returns {pm.MapType}\n */\n\tgetType: function() { return 0; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 07.11.14.\n */\n\n/**\n * @class This a interface for all map elements.\n * @see pm.AbstractMap#mapElements\n * @interface\n * @extends pm.Class\n */\npm.MapElement = pm.Class.extend(/** @lends pm.MapElement#*/{\n\t/**\n * Current type of map element\n * @private\n * @type {Number | String}\n */\n\t_type: -1,\n\t/**\n * Original type of map element\n * @type {Number | String}\n */\n\toriginalType: -1,\n\n\t/**\n * \"Map\" robot.id-robot of all robots that are in this element.\n * @protected\n * @type {Object}\n */\n\t_robotsHere: {},\n\t/**\n * \"Map\" object.id-object of all objects that are in this element.\n * @protected\n * @type {Object}\n */\n\t_objectsHere: {},\n\n\t/**\n * Robot id for which this is a start element.
\n * If this element is not start for robot then value is {@link pm.MapElement.START_FOR_NO_ROBOT}\n * @default\n * @type {Number}\n */\n\tstartForRobot: -1,\n\t/**\n * Free-form data for robot positioning, if this element is start for robot.\n * @see pm.MapElement#startForRobot\n * @type {Object}\n */\n\tstartRobotData: {},\n\n\tsprite: null,\n\n\t_notCompletedSprite: null,\n\n\t/**\n * Generates Terrain sprite\n * @returns {TerrainSprite}\n */\n\tgenerateTerrainSprite: function() {},\n\n\t/**\n * Sets Type\n * @param {String} type Type\n */\n\tsetType: function (type){},\n\n\t/**\n * Gets Type\n */\n\tgetType: function (){},\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_type\", \"_robotsHere\", \"_objectsHere\", \"sprite\", \"_notCompletedSprite\");\n\n\t\tthis._super();\n\t\tthis._type = this.originalType;\n\t},\n\n\t/**\n * Inits element with type.
Sets type and originalType.\n */\n\tinitElement: function()\n\t{\n\t\tthis._type = this.originalType;\n\t},\n\n\t/**\n * Sets type to original.Also removes robots from this element.\n */\n\trestore: function()\n\t{\n\t\tthis._robotsHere = {};\n\t\tthis.setType(this.originalType);\n\t},\n\n\t/**\n * Adds robot here.\n * @param {pm.AbstractRobot} robot\n */\n\taddRobot: function(robot)\n\t{\n\t\tthis._robotsHere[robot.id] = robot;\n\t},\n\t/**\n * Removes robot here.\n * @param {pm.AbstractRobot} robot\n */\n\tremoveRobot: function(robot)\n\t{\n\t\tdelete this._robotsHere[robot.id];\n\t},\n\n\t/**\n * Removes all robots here.\n */\n\tremoveAllRobots: function()\n\t{\n\t\tthis._robotsHere = {};\n\t},\n\n\t/**\n * Checks if element has a robot.\n * @param {pm.AbstractRobot} robot\n * @returns {boolean}\n */\n\tcontainsRobot: function(robot)\n\t{\n\t\treturn this._robotsHere.hasOwnProperty(robot.id);\n\t},\n\n\t/**\n * Checks if element has a robot id.\n * @param {Number|String} id\n * @returns {boolean}\n */\n\tcontainsRobotID: function(id)\n\t{\n\t\treturn this._robotsHere.hasOwnProperty(id);\n\t},\n\n\t/**\n * Adds object here.\n * @param {pm.Object} object\n */\n\taddObject: function(object)\n\t{\n\t\tthis._objectsHere[object.id] = object;\n\t},\n\n\t/**\n * Removes object here.\n * @param {pm.Object} object\n */\n\tremoveObject: function(object)\n\t{\n\t\tdelete this._objectsHere[object.id];\n\t},\n\n\t/**\n * Returns object count here.\n */\n\tgetObjectCount: function()\n\t{\n\t\treturn Object.keys(this._objectsHere).length;\n\t},\n\n\t/**\n * Returns robot count here.\n */\n\tgetRobotsCount: function()\n\t{\n\t\treturn Object.keys(this._robotsHere).length;\n\t},\n\n\t/**\n * Removes all objects here.\n */\n\tremoveAllObjects: function()\n\t{\n\t\tthis._objectsHere = {};\n\t},\n\n\t/**\n * Returns object by index in containing array.\n * @param {Number} index Array index.\n * @returns {pm.Object}\n */\n\tgetObjectByKeyIndex: function(index)\n\t{\n\t\treturn this._objectsHere[Object.keys(this._objectsHere)[index]];\n\t},\n\n\t/**\n * Checks if element has an objects.\n * @param {pm.Object} object\n * @returns {boolean}\n */\n\tcontainsObject: function(object)\n\t{\n\t\treturn this._objectsHere.hasOwnProperty(object.id);\n\t},\n\n\tgetState: function () {},\n\n\tsetState: function () {},\n\n\tsetNotCompleted: function(flag)\n\t{\n\t\tif (this._notCompletedSprite)\n\t\t{\n\t\t\tthis._notCompletedSprite.setVisible(flag);\n\n\t\t\tif (flag)\n\t\t\t{\n\t\t\t\tthis._notCompletedSprite.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\t\tcc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.9), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.8 * 255)),\n\t\t\t\t\tcc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, 1), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t\t)));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._notCompletedSprite.stopAllActions();\n\t\t\t}\n\t\t}\n\t}\n\n});\n\n/**\n * This constant is used when pm.MapElement is not a start for robot.\n * @const\n * @default\n * @see pm.MapElement\n * @type {Number}\n */\npm.MapElement.START_FOR_NO_ROBOT = -1;\n","/**\n * Created by Nikita Besshaposhnikov on 27.02.15.\n */\n\n/**\n * @class This class provides a container for map layers.
\n * Maps are placed on line by {@link pm.MapsContainerLayer.LAYER_POSITION_ANGLE} to\n * X-axis with {@link pm.MapsContainerLayer.LAYER_POSITION_X_DELTA} delta.
\n * Maps can be dragged, if one of maps contains touch point, or scrolled in line described above.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level Level which maps will be represented.\n * @param {Boolean} previewDraw Preview draw of maps.\n */\npm.MapsContainerLayer = ccui.Layout.extend(/** @lends pm.MapsContainerLayer# */{\n\t_level: null,\n\t/**\n * Index of map tha is selected by player.\n * @type {Number}\n */\n\tactiveMapIndex: -1,\n\t/**\n * @private\n * @type {cc.Node}\n */\n\t_parallax: null,\n\t/**\n * @private\n * @type {cc.Node}\n */\n\t_background: null,\n\t/**\n * @private\n * @type {Boolean}\n */\n\t_canScrollLayers: true,\n\t/**\n * @private\n * @type {Boolean}\n */\n\t_previewDraw: false,\n\t/**\n * @private\n * @type {Boolean}\n */\n\t_tutorialDraw: false,\n\t/**\n * @private\n * @type {cc.Point}\n */\n\t_mapScrollVector: cc.p(0, 0),\n\t/**\n * @private\n * @type {cc.Point}\n */\n\t_startPoint: cc.p(0, 0),\n\t/**\n * @private\n * @type {pm.MapsContainerLayer.TouchType| Number}\n */\n\t_touchType: 0,\n\n\t_touchCount: 0,\n\n\t_scale: 1.0,\n\n\t_centerPoint: cc.p(0, 0),\n\n\t_parallaxDelta: cc.p(0, 0),\n\n\t_enableScroll: false,\n\n\t_parallaxArray: [],\n\n\t_enableMoving: true,\n\n\tctor: function(level, previewDraw, tutorialDraw)\n\t{\n\t\tthis._super();\n\n\t\tthis._parallaxArray = [];\n\n\t\tthis._level = level;\n\t\tthis.activeMapIndex = this._level.startMapIndex;\n\t\tthis._previewDraw = previewDraw;\n\t\tthis._tutorialDraw = tutorialDraw;\n\n\t\tthis._touchType = pm.MapsContainerLayer.TouchType.None;\n\n\t\tthis._enableScroll = true;\n\n\t\tthis._enableMoving = true;\n\n\t\tvar mapSize = pm.settings.getMapSize();\n\n\t\tvar size = this._previewDraw ? mapSize : cc.size(pm.settings.getScreenSize().width - pm.appUtils.getProgramLayerWidth() + ProgramLayer.METHOD_STACK_WIDTH,\n\t\tpm.settings.getScreenSize().height);\n\n\t\tthis.setContentSize(size);\n\n\t\tthis._centerPoint = cc.p(mapSize.width / 2, mapSize.height / 2);\n\n\t\tthis._parallax = new cc.Node();\n\n\t\tif(!previewDraw)\n\t\t{\n\t\t\tif (level.isTutorial && tutorialDraw)\n\t\t\t{\n\t\t\t\tthis.setClippingEnabled(true);\n\n\t\t\t\tthis._background = pm.backgroundUtils.generateLevelBackground(level.getType(), cc.size(size.width, size.height));\n\t\t\t\tthis._parallax.addChild(this._background, -100);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar scaledMapSize = cc.size(size.width * pm.MapsContainerLayer.BACKGROUND_SCALE,\n\t\t\t\t\tsize.height * pm.MapsContainerLayer.BACKGROUND_SCALE);\n\n\t\t\t\tthis._background = pm.backgroundUtils.generateLevelBackground(level.getType(), scaledMapSize);\n\n\t\t\t\tthis._background.setPosition(\n\t\t\t\t\t(size.width - scaledMapSize.width) / 2,\n\t\t\t\t\t(size.height - scaledMapSize.height) / 2\n\t\t\t\t);\n\n\t\t\t\tthis._parallax.addChild(this._background, -100);\n\t\t\t}\n\t\t}\n\n\t\tthis.addChild(this._parallax);\n\n\t\tthis.drawMapLayers();\n\n\t\tthis._touches = [];\n\n\t\tif(!this._previewDraw && !this._tutorialDraw)\n\t\t{\n\t\t\tvar listener = cc.EventListener.create({\n\t\t\t\tevent: cc.EventListener.TOUCH_ALL_AT_ONCE,\n\t\t\t\tonTouchesBegan: this._touchBegan.bind(this),\n\t\t\t\tonTouchesMoved: this._touchMoved.bind(this),\n\t\t\t\tonTouchesEnded: this._touchEnded.bind(this)\n\t\t\t});\n\n\t\t\tcc.eventManager.addListener(listener, this);\n\n\t\t\tpm.registerCustomEventListener(pm.MAP_CHANGED_EVENT_STR, this._mapChangedEventCallback.bind(this), this);\n\n\t\t\tpm.registerCustomEventListener(pm.LAYER_ZOOM_IN_EVENT, this._zoomIn.bind(this), this);\n\t\t\tpm.registerCustomEventListener(pm.LAYER_ZOOM_OUT_EVENT, this._zoomOut.bind(this), this);\n\n\t\t\tpm.registerCustomEventListener(pm.FOCUS_TO_ROBOT_IN_MAP, this._focusToRobot.bind(this), this);\n\t\t}\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tthis._enableMoving = false ;\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tthis._enableMoving = true;\n\n\t\t}.bind(this), this);\n\t},\n\n\t_mapChangedEventCallback: function(event)\n\t{\n\t\tthis.changeActiveMap(event.getUserData().index, event.getUserData().sendEvent, event.getUserData().rebaseRobots);\n\t},\n\n\t_focusToRobot: function(event)\n\t{\n\t\tvar delta = event.getUserData();\n\n\t\tif(delta && delta.x !== undefined && delta.y !== undefined)\n\t\t\tthis._moveParallaxLayerByDelta(delta, true, pm.settings.getAnimationSpeed());\n\t},\n\n\t/**\n * Cleans active map layer and moves layer to original position.\n */\n\tclean: function()\n\t{\n\t\tif(!this._previewDraw)\n\t\t\tthis._level.maps[this.activeMapIndex].mapLayer.centerMap();\n\n\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\tthis._level.maps[i].clean();\n\t},\n\n\t/**\n * Change displayed map by index.\n * @param {Number} newActiveMapIndex\n * @param {Boolean} [sendEvent = true] Send change Event\n * @param {Boolean} [rebaseRobots] rebase Robots\n\n */\n\tchangeActiveMap: function(newActiveMapIndex, sendEvent, rebaseRobots)\n\t{\n\t\tif(sendEvent === undefined)\n\t\t\tsendEvent = true;\n\n\t\tvar prevActiveMapIndex = this.activeMapIndex;\n\n\t\tif(prevActiveMapIndex !== newActiveMapIndex)\n\t\t{\n\t\t\tthis.activeMapIndex = newActiveMapIndex;\n\n\t\t\tthis._level.maps[prevActiveMapIndex].mapLayer.removeFocus();\n\t\t\tthis._level.maps[newActiveMapIndex].mapLayer.focus();\n\n\t\t\tthis._parallaxArray[prevActiveMapIndex] = this._getMapLayerRatio(prevActiveMapIndex);\n\t\t\tthis._parallaxArray[newActiveMapIndex] = this._getMapLayerRatio(newActiveMapIndex);\n\n\t\t\tif(rebaseRobots)\n\t\t\t\tthis._rebaseRobots(prevActiveMapIndex, newActiveMapIndex);\n\n\t\t\tif(sendEvent)\n\t\t\t\tpm.sendCustomEvent(pm.MAP_DRAGGED_EVENT_STR, {index: newActiveMapIndex});\n\n\t\t\tthis._recalculateMapLayersZOrder();\n\t\t}\n\n\t\tthis._correctMaps();\n\t},\n\n\t_recalculateMapLayersZOrder: function()\n\t{\n\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tvar depth = this.activeMapIndex - i;\n\n\t\t\tif (depth > 0)\n\t\t\t\tdepth = -depth;\n\n\t\t\tthis._level.maps[i].mapLayer.setLocalZOrder(depth);\n\t\t}\n\t},\n\n\t/**\n * Returns displayed map layer count\n * @returns {Number}\n */\n\tgetMapCount: function()\n\t{\n\t\treturn this._level.maps.length;\n\t},\n\n\t_getMapLayerRatio: function(index)\n\t{\n\t\treturn index === this.activeMapIndex ?\n\t\t\tpm.MapsContainerLayer.ACTIVE_MAP_RATIO:\n\t\t\tpm.MapsContainerLayer.BACKGROUND_RATIO;\n\t},\n\n\t/**\n * Returns map layer position without parallax shift\n * @param {Number} i Index of map\n * @returns {cc.Point}\n * @private\n */\n\t_getOriginalMapLayerPos: function(i)\n\t{\n\t\tvar ratio = this._parallaxArray[i];\n\n\t\treturn cc.p(\n\t\t\tthis._level.maps[i].mapLayer.x - ratio.x * this._parallaxDelta.x,\n\t\t\tthis._level.maps[i].mapLayer.y - ratio.y * this._parallaxDelta.y\n\t\t);\n\t},\n\n\t/**\n * Draws all map layer in this container\n * @param {Boolean} [generateLayers=false] Generate layers by maps.\n */\n\tdrawMapLayers: function(generateLayers)\n\t{\n\t\tif(generateLayers === undefined)\n\t\t\tgenerateLayers = true;\n\n\t\tif (!this._previewDraw)\n\t\t{\n\t\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tif (generateLayers)\n\t\t\t\t\tthis._level.maps[i].generateMapLayer(this._previewDraw);\n\n\t\t\t\tvar depth = this.activeMapIndex - i;\n\n\t\t\t\tif (depth>0)\n\t\t\t\t\tdepth = -depth;\n\n\t\t\t\tthis._parallax.addChild(this._level.maps[i].mapLayer, depth);\n\t\t\t\tthis._parallaxArray.push(this._getMapLayerRatio(i));\n\n\t\t\t\tif (i !== this.activeMapIndex)\n\t\t\t\t\tthis._level.maps[i].mapLayer.removeFocus();\n\t\t\t\telse if (!this._previewDraw)\n\t\t\t\t\tthis._level.maps[i].mapLayer.focus();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (generateLayers)\n\t\t\t\tthis._level.maps[this.activeMapIndex].generateMapLayer(this._previewDraw);\n\n\t\t\tthis._parallax.addChild(this._level.maps[this.activeMapIndex].mapLayer, this.activeMapIndex);\n\t\t\tthis._parallaxArray.push(this._getMapLayerRatio(this.activeMapIndex));\n\t\t}\n\n\t\tif(!this._previewDraw && generateLayers)\n\t\t{\n\t\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tif(i === this.activeMapIndex)\n\t\t\t\t\tthis._level.maps[i].placeRobots(true);\n\t\t\t}\n\t\t}\n\n\t\tthis._updateLayers();\n\n\t\tif(!this._previewDraw)\n\t\t{\n\t\t\tif(this._level.maps.length > 1)\n\t\t\t\tthis._mapScrollVector = cc.pSub(this._level.maps[1].mapLayer.getPosition(), this._level.maps[0].mapLayer.getPosition());\n\n\t\t\tthis._level.maps[this.activeMapIndex].mapLayer.centerMap();\n\t\t}\n\t},\n\n\t_updateLayers: function()\n\t{\n\t\tif (!this._previewDraw)\n\t\t{\n\t\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tvar layer = this._level.maps[i].mapLayer;\n\t\t\t\tvar pos = this._layerPositionByIndex(i - this.activeMapIndex);\n\t\t\t\tvar scale = this._getScaleByX(pos.x);\n\t\t\t\tvar opacity = this._layerOpacityByX(pos.x);\n\n\t\t\t\t//dirty hack to make cc.Layer use anchor point for position.\n\t\t\t\tlayer.ignoreAnchorPointForPosition(false);\n\n\t\t\t\tlayer.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\t\tlayer.setScale(scale);\n\t\t\t\tlayer.setOpacity(opacity);\n\t\t\t\tlayer.setPosition(cc.pAdd(pos, this._centerPoint));\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar layer = this._level.maps[this.activeMapIndex].mapLayer;\n\t\t\tvar pos = this._layerPositionByIndex(0);\n\t\t\tvar scale = this._getScaleByX(pos.x);\n\t\t\tvar opacity = this._layerOpacityByX(pos.x);\n\n\t\t\t//dirty hack to make cc.Layer use anchor point for position.\n\t\t\tlayer.ignoreAnchorPointForPosition(false);\n\n\t\t\tlayer.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tlayer.setScale(scale);\n\t\t\tlayer.setOpacity(opacity);\n\t\t\tlayer.setPosition(cc.pAdd(pos, this._centerPoint));\n\t\t}\n\t},\n\n\t_isTouchMoved: function(touch)\n\t{\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\t\treturn cc.pLength(cc.pSub(this._startPoint, touchPoint)) > pm.MapsContainerLayer.TOUCH_CRITICAL_DISTANCE;\n\t},\n\n\t_touchBegan: function(touches, pEvent)\n\t{\n\t\tif(!this.enabled)\n\t\t\treturn;\n\n\t\tvar activeMapLayer = this._level.activeMap.mapLayer;\n\n\t\tvar foundFlag = false;\n\n\t\tfor (var i = 0 ; i < touches.length; ++i)\n\t\t\tif (!activeMapLayer.containsPoint(touches[0]))\n\t\t\t\tfoundFlag = true;\n\n\t\tif (this._touchCount > 0 && foundFlag)\n\t\t\treturn;\n\n\t\tthis._touchCount = 0;\n\t\tthis._touchType = pm.MapsContainerLayer.TouchType.None;\n\n\t\tthis._startPoint = this.convertTouchToNodeSpace(touches[0]);\n\n\t\tvar mapSize = pm.settings.getMapSize();\n\n\t\tif(this._startPoint.x > mapSize.width || this._startPoint.y > mapSize.height)\n\t\t\treturn;\n\n\t\tif (activeMapLayer.containsPoint(touches[0]))\n\t\t{\n\t\t\t++this._touchCount;\n\n\t\t\tif(this._touchCount === 2)\n\t\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.ScaleActiveMap;\n\t\t\telse\n\t\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.TouchActiveMap;\n\t\t}\n\t\telse if(this._level.maps.length > 1)\n\t\t{\n\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.Touch;\n\t\t}\n\t},\n\n\t_touchMoved: function(touches, pEvent)\n\t{\n\t\tif(!this.enabled)\n\t\t\treturn;\n\n\t\tif (this._touchCount === 1 && touches.length === 2)\n\t\t{\n\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.ScaleActiveMap;\n\t\t\tthis._touchCount = 2;\n\t\t}\n\n\t\tswitch (this._touchType)\n\t\t{\n\t\t\tcase pm.MapsContainerLayer.TouchType.Touch:\n\t\t\t{\n\t\t\t\tif(this._isTouchMoved(touches[0]) && this._enableScroll && this._enableMoving)\n\t\t\t\t{ this._touchType = pm.MapsContainerLayer.TouchType.ScrollMaps; }\n\t\t\t\telse\n\t\t\t\tif (!this._enableMoving)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.ANIMATE_HIDE_BUTTON);\n\t\t\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.None;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase pm.MapsContainerLayer.TouchType.TouchActiveMap:\n\t\t\t{\n\t\t\t\tif(this._isTouchMoved(touches[0]) && this._enableMoving)\n\t\t\t\t{ this._touchType = pm.MapsContainerLayer.TouchType.DragActiveMap; }\n\t\t\t\telse\n\t\t\t\tif (!this._enableMoving)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.ANIMATE_HIDE_BUTTON);\n\t\t\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.None;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase pm.MapsContainerLayer.TouchType.DragActiveMap:\n\t\t\t{\n\t\t\t\tvar diff = touches[0].getDelta();\n\n\t\t\t\tthis._moveParallaxLayerByDelta(diff);\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase pm.MapsContainerLayer.TouchType.ScaleActiveMap:\n\t\t\t{\n\t\t\t\tif(touches.length === 2)\n\t\t\t\t{\n\t\t\t\t\tvar layer = this._level.activeMap.mapLayer;\n\n\t\t\t\t\tvar diff1 = touches[0].getDelta();\n\t\t\t\t\tvar diff2 = touches[1].getDelta();\n\n\t\t\t\t\tvar loc1 = touches[0].getLocation();\n\t\t\t\t\tvar loc2 = touches[1].getLocation();\n\n\t\t\t\t\tvar dist = cc.pDistance(loc1, loc2);\n\n\t\t\t\t\tvar oldDist = cc.pDistance(\n\t\t\t\t\t\tcc.pSub(loc1, diff1),\n\t\t\t\t\t\tcc.pSub(loc2, diff2)\n\t\t\t\t\t);\n\n\t\t\t\t\tvar ratio = dist / oldDist;\n\t\t\t\t\tvar newScale = this._scale - (1 - ratio) * pm.MapsContainerLayer.SCALE_VELOCITY;\n\n\t\t\t\t\tif (dist > oldDist || layer.getScale() > 1.0 ||\n ((dist < oldDist) && (layer.width * newScale > pm.settings.getMapSize().width))\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._scale = newScale;\n\n\t\t\t\t\t\tthis._setMapsScale(this._scale);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase pm.MapsContainerLayer.TouchType.ScrollMaps:\n\t\t\t{\n\t\t\t\tvar diff = touches[0].getDelta();\n\n\t\t\t\tvar angleCos = cc.pDot(cc.pNormalize(diff), cc.pNormalize(this._mapScrollVector));\n\t\t\t\tvar delta = cc.pLength(diff) * angleCos;\n\n\t\t\t\tthis._scrollMaps(delta);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t},\n\n\t_touchEnded: function(touches, pEvent)\n\t{\n\t\tthis._touchCount -= touches.length;\n\n\t\tif(this._touchCount > 0)\n\t\t{\n\t\t\tthis._touchType = pm.MapsContainerLayer.TouchType.DragActiveMap;\n\t\t\treturn;\n\t\t}\n\n\t\tswitch(this._touchType)\n\t\t{\n\t\t\tcase pm.MapsContainerLayer.TouchType.ScrollMaps:\n\t\t\t\tvar min = pm.settings.getMapSize().width;\n\n\t\t\t\tvar newActiveMapIndex = this.activeMapIndex;\n\n\t\t\t\tvar activeLayerPos = this._layerPositionByIndex(0);\n\n\t\t\t\t//Find closest map layer to become active\n\t\t\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tthis._parallaxArray[i] = this._getMapLayerRatio(i);\n\n\t\t\t\t\tvar mapPosX = this._level.maps[i].mapLayer.x;\n\n\t\t\t\t\tvar shiftedX = Math.abs(mapPosX - this._centerPoint.x - activeLayerPos.x);\n\n\t\t\t\t\tif (shiftedX < min)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewActiveMapIndex = i;\n\t\t\t\t\t\tmin = shiftedX;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t\t\t\tthis.changeActiveMap(newActiveMapIndex, true, true);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.MapsContainerLayer.TouchType.ScaleActiveMap:\n\t\t\tcase pm.MapsContainerLayer.TouchType.DragActiveMap:\n\t\t\t\tthis._centerCurrentMap();\n\t\t\t\tbreak;\n\n\t\t\tcase pm.MapsContainerLayer.TouchType.TouchActiveMap:\n\t\t\t\tthis._level.activeMap.mapLayer.handleTouch(touches[0]);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._touchType = pm.MapsContainerLayer.TouchType.None;\n\t},\n\n\t_setMapsScale: function (scale)\n\t{\n\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\tthis._level.maps[i].mapLayer.setScale(scale * this._getScaleByIndex(Math.abs(this.activeMapIndex - i)));\n\t},\n\n\t_zoomIn: function ()\n\t{\n\t\tthis._scale += pm.MapsContainerLayer.ZOOM_SPEED;\n\t\tthis._setMapsScale(this._scale);\n\t},\n\n\t_zoomOut: function ()\n\t{\n\t\tvar layer = this._level.activeMap.mapLayer;\n\t\tvar newScale = this._scale - pm.MapsContainerLayer.ZOOM_SPEED;\n\n\t\tif (layer.width * newScale < pm.settings.getMapSize().width && layer.getScale() <= 1.0)\n\t\t\treturn;\n\n\t\tthis._scale = newScale;\n\n\t\tthis._setMapsScale(this._scale);\n\n\t\tthis._centerCurrentMap();\n\t},\n\n\t_moveParallaxLayerByDelta: function(delta, animated, speed)\n\t{\n\t\t//Optimization: do no move on zero delta\n\t\tif(delta.x === 0 && delta.y === 0)\n\t\t{\n\t\t\tthis._endMove();\n\t\t\treturn;\n\t\t}\n\n\t\tif(speed === undefined)\n\t\t\tspeed = pm.SYSTEM_ANIMATION_DELAY / 2;\n\n\t\tif(animated === undefined)\n\t\t\tanimated = false;\n\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tvar ratio = this._parallaxArray[i];\n\t\t\tvar layer = this._level.maps[i].mapLayer;\n\t\t\tvar targetPos = cc.pAdd(layer.getPosition(), cc.p(ratio.x * delta.x, ratio.y * delta.y));\n\n\t\t\tif(!animated)\n\t\t\t\tlayer.setPosition(targetPos);\n\t\t\telse\n\n\t\t\t\tlayer.runAction(cc.moveTo(speed, targetPos));\n\n\t\t}\n\n\t\tvar backRatio = pm.MapsContainerLayer.BACKGROUND_RATIO;\n\t\tvar backgroundTargetPos = cc.pAdd(this._background.getPosition(), cc.p(backRatio.x * delta.x, backRatio.y * delta.y));\n\n\t\tif(!animated)\n\t\t{ this._background.setPosition(backgroundTargetPos); }\n\t\telse\n\t\t{\n\t\t\tvar moveEnd = cc.callFunc(this._endMove, this);\n\n\t\t\tthis._background.runAction(cc.sequence(cc.moveTo(speed, backgroundTargetPos), moveEnd));\n\t\t}\n\n\t\tthis._parallaxDelta = cc.pAdd(this._parallaxDelta, delta);\n\t},\n\n\t_endMove: function ()\n\t{\n\t\tthis._level.activeMap.mapLayer.enabled = true;\n\t},\n\n\t_centerCurrentMap: function ()\n\t{\n\t\tvar activeLayer = this._level.activeMap.mapLayer;\n\t\tvar moveDelta = cc.p(0, 0);\n\n\t\tvar mapBB = cc.rectApplyAffineTransform(activeLayer.getBoundingBox(), activeLayer.getParent().getNodeToWorldTransform());\n\n\t\tvar minX = mapBB.x;\n\t\tvar maxX = mapBB.x + mapBB.width;\n\n\t\tvar minY = mapBB.y;\n\t\tvar maxY = mapBB.y + mapBB.height;\n\n\t\tvar activeMapPos = cc.pAdd(this._layerPositionByIndex(0), this._centerPoint);\n\n\t\tif (mapBB.width > pm.settings.getMapSize().width)\n\t\t{\n\t\t\tif (minX > 0)\n\t\t\t\tmoveDelta.x = -minX;\n\t\t\telse if (maxX < pm.settings.getMapSize().width)\n\t\t\t\tmoveDelta.x = pm.settings.getMapSize().width - maxX;\n\t\t}\n\t\telse\n\t\t{ moveDelta.x = activeMapPos.x - activeLayer.x; }\n\n\t\tif (mapBB.height > pm.settings.getMapSize().height)\n\t\t{\n\t\t\tif (minY > 0)\n\t\t\t\tmoveDelta.y = -minY;\n\t\t\telse if (maxY < pm.settings.getMapSize().height)\n\t\t\t\tmoveDelta.y = pm.settings.getMapSize().height - maxY;\n\t\t}\n\t\telse\n\t\t{ moveDelta.y = activeMapPos.y - activeLayer.y; }\n\n\t\tthis._moveParallaxLayerByDelta(moveDelta, true);\n\t},\n\n\t_rebaseRobots: function(from, to)\n\t{\n\t\tif(from === to)\n\t\t\treturn;\n\n\t\tthis._level.setActiveMap(this._level.maps[to]);\n\t},\n\n\t_scrollMaps: function(delta)\n\t{\n\t\tvar activeMapPos = cc.pAdd(this._layerPositionByIndex(0), this._centerPoint);\n\t\tvar mapCount = this._level.maps.length;\n\n\t\tvar lastMapPos = this._getOriginalMapLayerPos(mapCount - 1);\n\t\tvar firstMapPos = this._getOriginalMapLayerPos(0);\n\n\t\tif((delta < 0 && lastMapPos.x <= activeMapPos.x) || (delta > 0 && firstMapPos.x >= activeMapPos.x))\n\t\t\treturn;\n\n\t\t//Determine if active map need to be changed\n\t\tvar newActiveMapIndex = this.activeMapIndex;\n\n\t\tfor(var i = 0; i < mapCount; ++i)\n\t\t{\n\t\t\tvar distanceToActiveMap = cc.pDistance(this._getOriginalMapLayerPos(i), activeMapPos);\n\n\t\t\tif(distanceToActiveMap <= Math.abs(delta))\n\t\t\t{\n\t\t\t\tif(this.activeMapIndex !== i)\n\t\t\t\t\tnewActiveMapIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0; i < mapCount; ++i)\n\t\t{\n\t\t\tvar mapLayer = this._level.maps[i].mapLayer;\n\t\t\tvar realMapPos = mapLayer.getPosition();\n\t\t\tvar realMapPosWithoutParallax = this._getOriginalMapLayerPos(i);\n\n\t\t\tvar curMapIndex = i - this.activeMapIndex;\n\n\t\t\t//Find previous and next map theoretical pos on maps line (don't considering the moving direction)\n\t\t\tvar prevMapPosIndex = null;\n\t\t\tvar nextMapPosIndex = null;\n\t\t\tvar nextMapPos = null;\n\t\t\tvar prevMapPos = null;\n\n\t\t\tfor(var j = curMapIndex - 2; j <= curMapIndex + 2; ++j)\n\t\t\t{\n\t\t\t\tvar pos = this._layerPositionByIndex(j);\n\n\t\t\t\tif(pos.x + this._centerPoint.x < realMapPosWithoutParallax.x)\n\t\t\t\t{\n\t\t\t\t\tprevMapPosIndex = j;\n\t\t\t\t\tprevMapPos = pos;\n\t\t\t\t}\n\n\t\t\t\tif(pos.x + this._centerPoint.x > realMapPosWithoutParallax.x)\n\t\t\t\t{\n\t\t\t\t\tnextMapPosIndex = j;\n\t\t\t\t\tnextMapPos = pos;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!prevMapPos || !nextMapPos)\n\t\t\t\treturn;\n\n\t\t\t//Find current and target map pos (considering the moving direction)\n\t\t\tvar curMapPos = null;\n\t\t\tvar targetMapPos = null;\n\n\t\t\tif(delta > 0)\n\t\t\t{\n\t\t\t\ttargetMapPos = nextMapPos;\n\t\t\t\tcurMapPos = this._layerPositionByIndex(nextMapPosIndex - 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttargetMapPos = prevMapPos;\n\t\t\t\tcurMapPos = this._layerPositionByIndex(prevMapPosIndex + 1);\n\t\t\t}\n\n\t\t\tvar distanceToTargetMap = cc.pDistance(realMapPosWithoutParallax, targetMapPos);\n\t\t\tvar mapDelta = delta * Math.abs(curMapPos.x - targetMapPos.x) / pm.MapsContainerLayer.LAYER_POSITION_X_DELTA;\n\n\t\t\tif(distanceToTargetMap <= Math.abs(mapDelta))\n\t\t\t\tmapDelta = mapDelta < 0 ? -distanceToTargetMap : distanceToTargetMap;\n\n\t\t\t//Shift current map real position by delta\n\t\t\tvar newMapPos = this._shiftPointByDelta(realMapPos, mapDelta);\n\n\t\t\t//Shift current map theoretical(without parallax effect) position by delta\n\t\t\tvar shiftedPoint = this._shiftPointByDelta(realMapPosWithoutParallax, mapDelta);\n\n\t\t\t//Get scale && opacity by coordinates of maps line\n\t\t\tvar scale = this._getScaleByX(shiftedPoint.x - this._centerPoint.x) * this._scale;\n\t\t\tvar opacity = this._layerOpacityByX(shiftedPoint.x - this._centerPoint.x);\n\n\t\t\tif(opacity > 255)\n\t\t\t\topacity = 255;\n\n\t\t\tmapLayer.setPosition(newMapPos);\n\n\t\t\tmapLayer.setOpacity(opacity);\n\t\t\tmapLayer.setScale(scale);\n\t\t}\n\n\t\tif(this.activeMapIndex !== newActiveMapIndex)\n\t\t{\n\t\t\tthis._level.activeMap.clean();\n\n\t\t\tthis._rebaseRobots(this.activeMapIndex, newActiveMapIndex);\n\n\t\t\tpm.sendCustomEvent(pm.MAP_DRAGGED_EVENT_STR, {index: newActiveMapIndex} );\n\n\t\t\tthis.activeMapIndex = newActiveMapIndex;\n\n\t\t\tthis._recalculateMapLayersZOrder();\n\t\t}\n\t},\n\n\t_correctMaps: function()\n\t{\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tvar pos = this._layerPositionByIndex(i - this.activeMapIndex);\n\t\t\tvar scale = this._getScaleByX(pos.x) * this._scale;\n\t\t\tvar opacity = this._layerOpacityByX(pos.x);\n\n\t\t\tvar moveLayer = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY / 2, cc.pAdd(pos, this._centerPoint));\n\t\t\tvar scaleLayer = cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY / 2, scale);\n\t\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY / 2, opacity);\n\n\t\t\tthis._level.maps[i].mapLayer.stopAllActions();\n\t\t\tthis._level.maps[i].mapLayer.runAction(cc.spawn(scaleLayer, moveLayer, fadeLayer));\n\t\t}\n\n\t\t//return parallax delta to zero, because all maps will be on it's theoretical pos.\n\t\tthis._parallaxDelta = cc.p(0, 0);\n\t},\n\n\t/**\n * Returns index of map layer by X coordinate in MapContainerLayer\n * @private\n * @param {Number} x\n * @returns {Number}\n */\n\t_getIndexByX: function(x)\n\t{\n\t\treturn x * x / (pm.MapsContainerLayer.LAYER_POSITION_X_DELTA * pm.MapsContainerLayer.LAYER_POSITION_X_DELTA);\n\t},\n\n\t/**\n * Returns map layer opacity by X coordinate in MapContainerLayer\n * @private\n * @param {Number} x\n * @returns {Number}\n */\n\t_layerOpacityByX: function(x)\n\t{\n\t\treturn ((Math.abs(x) < 0.00000001) ? 255 : Math.atan(1.0/1.2)/Math.atan(this._getIndexByX(x)/1.2) * 150.0);\n\t},\n\n\t/**\n * Returns X position of map layer by it's index.\n * @private\n * @param {Number} i\n * @returns {cc.Point}\n */\n\t_layerPositionByIndex: function(i)\n\t{\n\t\tvar sign = i < 0 ? -1 : 1;\n\t\tvar x = sign * pm.MapsContainerLayer.LAYER_POSITION_X_DELTA * Math.sqrt(sign * i);\n\n\t\treturn cc.p(x, x * Math.tan(pm.MapsContainerLayer.LAYER_POSITION_ANGLE));\n\t},\n\t/**\n * Shifts point by a number in layers line direction\n * @private\n * @param {cc.Point} p Original point\n * @param {Number} v Shift number\n * @returns {cc.Point}\n */\n\t_shiftPointByDelta: function(p, v)\n\t{\n\t\treturn cc.p(p.x + Math.cos(pm.MapsContainerLayer.LAYER_POSITION_ANGLE) * v,\n\t\t\tp.y + Math.sin(pm.MapsContainerLayer.LAYER_POSITION_ANGLE) * v);\n\t},\n\t/**\n * Returns scale of map layer by X coordinate in MapContainerLayer\n * @private\n * @param {Number} x\n * @returns {Number}\n */\n\t_getScaleByX: function(x) { return this._getScaleByIndex(this._getIndexByX(x)); },\n\n\t/**\n * Returns scale of map layer by index in MapContainerLayer\n * @private\n * @param {Number} index\n * @returns {Number}\n */\n\t_getScaleByIndex: function (index){ return 1.0 - Math.atan(index/1.2)/Math.atan(1.0/1.2) * 0.35; }\n});\n\n/**\n * Enum for touch type in pm.MapsContainerLayer\n * @readonly\n * @enum {Number}\n * @protected\n */\npm.MapsContainerLayer.TouchType = {\n\tNone: 0,\n\tTouchActiveMap: 1,\n\tTouch: 2,\n\tDragActiveMap: 3,\n\tScrollMaps: 4,\n\tScaleActiveMap: 5\n};\n\n/**\n * Scale of background layer to screen size\n * @const\n * @default\n * @type {number}\n */\npm.MapsContainerLayer.BACKGROUND_SCALE = 3;\n\n/**\n * Active layer scale rate\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {number}\n */\npm.MapsContainerLayer.SCALE_VELOCITY = 0.75;\n\n/**\n * Delta detection of moving layers\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {number}\n */\npm.MapsContainerLayer.TOUCH_CRITICAL_DISTANCE = 2;\n/**\n * X-Delta between two layers\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {number}\n */\npm.MapsContainerLayer.LAYER_POSITION_X_DELTA = 250.0;\n/**\n * Angle to X axis of line of layer.\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {number}\n */\npm.MapsContainerLayer.LAYER_POSITION_ANGLE = Math.PI / 4.0;\n\n/**\n * Ratio of background layer in parallax array.\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {cc.Point}\n */\npm.MapsContainerLayer.BACKGROUND_RATIO = cc.p(0.4, 0.5);\n\n/**\n * Ratio of active map layer in parallax array.\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {cc.Point}\n */\npm.MapsContainerLayer.ACTIVE_MAP_RATIO = cc.p(1.0, 1.0);\n\n/**\n * Step of zooming map layers by event.\n * @const\n * @default\n * @see pm.MapsContainerLayer\n * @type {Number}\n */\npm.MapsContainerLayer.ZOOM_SPEED = 0.1;\n","/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n\n/**\n * @class This an interface for all map layers.
Map creates it.\n * @interface\n */\npm.MapLayer = cc.Layer.extend(/** @lends pm.MapLayer# */{\n\t/**\n * @type {pm.AbstractMap}\n * @protected\n */\n\t_map: null,\n\n\t_enabled: true,\n\n\t_clicksEnabled: true,\n\n\tctor: function(map)\n\t{\n\t\tthis._super();\n\n\t\tthis._map = map;\n\n\t\tthis.setPosition(0, 0);\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\t},\n\n\tsetEnabled: function(flag)\n\t{\n\t\tthis._enabled = flag;\n\t},\n\n\tisEnabled: function()\n\t{\n\t\treturn this._enabled;\n\t},\n\n\tenableClicks: function(flag)\n\t{\n\t\tthis._clicksEnabled = flag;\n\t},\n\n\t/**\n * Adds Terrain Object to the map\n * @param {Object} child\n * @param {Number} zOrder\n * @param {Number} tag\n */\n\taddObject: function(child, zOrder, tag) {},\n\n\t/**\n * Removes Terrain Object to the map\n * @param {cc.Node} child\n * @param {Boolean} cleanup\n */\n\tremoveObject: function(child, cleanup) {},\n\n\t/**\n * Checks for position tasks\n * @function\n * @name pm.MapLayer#checkPositionTasks\n */\n\tcheckPositionTasks: function() {},\n\n\t/**\n * Removes all marks for position tasks\n * @function\n * @name pm.MapLayer#removePositionMarks\n */\n\tremovePositionMarks: function() {},\n\n\t/**\n * Draws robot start position marks\n * @function\n * @name pm.MapLayer#drawRobotStartPositionMarks\n * @param {Number} robotID Id of robot\n * @param {cc.Point} markPosition It's position\n */\n\tdrawRobotStartPositionMark: function(robotID, markPosition) {},\n\n\t/**\n * Draws map layer.\n * @function\n * @name pm.MapLayer#drawMap\n * @param {Boolean} previewDraw Draw in preview mode?\n */\n\tdrawMap: function(previewDraw) {},\n\n\t/**\n * Updates map layer.\n * @function\n * @name pm.MapLayer#update\n */\n\tupdate: function() {},\n\n\t/**\n * Restores map layer to original state.\n * @function\n * @name pm.MapLayer#clean\n */\n\tclean: function() {},\n\n\t/**\n * Centers map by robots positions.\n * @function\n * @name pm.MapLayer#centerMap\n */\n\tcenterMap: function() {},\n\n\t/**\n * Returns position in pixels by element position.\n * @function\n * @name pm.MapLayer#realPosition\n * @param {cc.Point} position in element position.\n * @param {Number} delta to all to real position\n */\n\trealPosition: function(position, delta) {},\n\n\t/**\n * Returns element position by real position.\n * @param {cc.Point}position in real position.\n */\n\tpositionFromReal: function(position) {},\n\n\t/**\n * Restores element original type by element position.\n * @function\n * @name pm.MapLayer#restoreElement\n * @param {cc.Point} position in element position.\n */\n\trestoreElement: function(position) {},\n\n\t/**\n * Spawns objects on map.\n * @function\n * @name pm.MapLayer#spawnObjects11111\n */\n\tspawnObjects: function() {},\n\n\t/**\n * Checks if point is in layer.\n * @function\n * @name pm.MapLayer#containsPoint\n * @param {cc.Point} point A point to check\n * @returns {boolean}\n */\n\tcontainsPoint: function(point) { return false; },\n\t/**\n * Returns minimum point of map in world space\n * @function\n * @name MapLayer#getWorldMinimumPoint\n * @returns {cc.Point}\n */\n\tgetWorldMinimumPoint: function() { return cc.p(); },\n\n\t/**\n * Draws robot sprites on layer.\n * @function\n * @name pm.MapLayer#placeRobots\n * @param {Boolean} firstPlace Is it a first place of robots on layer.\n */\n\tplaceRobots: function(firstPlace) {},\n\t/**\n * Removes robot sprites from layer.\n * @function\n * @name pm.MapLayer#removeRobots\n */\n\tremoveRobots: function() {},\n\n\t/**\n * Handles touch and returns true if it is handled.\n * @function\n * @name pm.MapLayer#handleTouch\n * @param {cc.Touch} touch A touch to handle.\n * @returns {boolean}\n */\n\thandleTouch: function(touch) { return false; },\n\n\tfocus: function ()\n\t{\n\t\tthis.scheduleUpdate();\n\t},\n\n\tremoveFocus: function ()\n\t{\n\t\tthis.unscheduleUpdate();\n\t}\n});\n\nvar _p = pm.MapLayer.prototype;\n\ncc.defineGetterSetter(_p, \"enabled\", _p.isEnabled, _p.setEnabled);\n","/**\n * @class This a common interface for all levels.\n * @interface\n * @extends pm.Class\n */\npm.AbstractLevel = pm.Class.extend(/** @lends pm.AbstractLevel#*/{\n\t/**\n * id of level.\n * @type {String}\n */\n\tid: \"\",\n\t/**\n * Version format level.\n * @type {Number}\n */\n\tversion: -1,\n\t/**\n * Revision of level.\n * @type {Number}\n */\n\trevision: -1,\n\t/**\n * Order of level.\n * @type {Number}\n */\n\torder: 0,\n\t/**\n * Displayed name of level.\n * @type {String}\n */\n\tname: \"\",\n\t/**\n\t * Is level a tutorial.\n\t * @type {Boolean}\n\t */\n\tisTutorial: false,\n\t/**\n\t * Scenario of a tutorial in level. If level is not a tutorial it is an empty object.\n\t * @type {pm.data.TutorialScenario|{}}\n\t */\n\ttutorialScenario: {},\n\t/**\n * Index of start robot in robots array.
\n * @see pm.AbstractLevel#robots\n * @type {Number}\n */\n\tstartRobotIndex: 0,\n\n\t/**\n * Current robot for which player is writing program.\n * @private\n * @type {pm.AbstractRobot}\n */\n\t_currentRobot: {},\n\n\t/**\n * Array of robots.\n * @type {Array}\n */\n\trobots: [],\n\n\t/**\n\t * Map of original program data to robot's groups.
\n\t * Contains groupID -> pm.data.ProgramData\n\t * @see pm.data.ProgramData\n\t * @type {pm.data.MapClass}\n */\n\tprogramData: new pm.data.MapClass(),\n\n\t/**\n * Map of program data cache to robot's groups.
\n * Contains groupID -> pm.data.ProgramData\n * @see pm.data.ProgramData\n * @type {pm.data.MapClass}\n */\n\tprogramDataCache: new pm.data.MapClass(),\n\n\t/**\n\t * Data of global robots.\n\t * @type {pm.data.MapClass}\n\t */\n\tglobalRobotConfig: new pm.data.MapClass(),\n\n\t/**\n\t * Array of global robots.\n\t * @type {Array}\n\t */\n\tglobalRobots: [],\n\n\t/**\n * Array of maps.\n * @type {Array}\n */\n\tmaps: [],\n\t/**\n * Index of map which will be first displayed for player.\n * @type {Number}\n */\n\tstartMapIndex: 0,\n\t/**\n * Map object which is now selected by player.\n * @type {pm.AbstractMap}\n */\n\tactiveMap: {},\n\t/**\n\t * Map index is selected.\n\t * @private\n\t * @type {Number}\n\t */\n\t_activeMapIndex: 0,\n\t/**\n\t * Task list of level\n\t * @type {pm.data.TaskList}\n\t */\n\ttaskList: {},\n\t/**\n * Global hint for a level.\n * @type {pm.data.GlobalHint}\n */\n\thint: null,\n\t/**\n * Using of method stack interface for this level.\n * @type {Boolean}\n */\n\tuseMethodStack: true,\n\t/**\n * Using program recognizer for this level.\n * @type {Boolean}\n */\n\tuseProgramRecognizer: true,\n\t/**\n * Program data can be edited.\n * @type {Boolean}\n */\n\tisProgramDataEditable: true,\n\t/**\n\t * Physical robot\n\t * @type {pm.PhysicalConnector}\n\t * @private\n\t */\n\t_physicalConnector: null,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"activeMap\");\n\t\tthis._addNonEnumerableProps(\"globalRobots\");\n\t\tthis._addNonEnumerableProps(\"_currentRobot\");\n\t\tthis._addNonEnumerableProps(\"_activeMapIndex\");\n\t\tthis._addNonEnumerableProps(\"programDataCache\");\n\t\tthis._addNonEnumerableProps(\"_physicalConnector\");\n\n\t\tthis._super();\n\t},\n\n\t/**\n * Loads level temporary data.\n * @function\n * @param {Boolean} preview Load maps of level in preview mode\n * @param {Number} [robotIndex] Index of robot for override base robot index.\n */\n\tload: function(preview, robotIndex)\n\t{\n\t\tif(robotIndex === undefined || robotIndex === null)\n\t\t\trobotIndex = this.startRobotIndex;\n\n\t\tthis._currentRobot = this.robots[robotIndex];\n\n\t\tif(!CORE_BUILD)\n\t\t\tpm.spriteUtils.clear();\n\n\t\tfor(var i = 0; i < this.maps.length; ++i)\n\t\t{\n\t\t\tthis.maps[i].mapLayer = null;\n\t\t\tthis.maps[i].parentLevel = this;\n\t\t\tthis.maps[i].load();\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tpm.spriteUtils.initMapTexture(this.getType(), this.maps[i].tileset);\n\t\t}\n\n\t\tthis._activeMapIndex = this.startMapIndex;\n\t\tthis.activeMap = this.maps[this.startMapIndex];\n\n\t\tif (!preview)\n\t\t{\n\t\t\tthis.taskList.initWithLevel(this);\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tpm.robotManager.setLevel(this);\n\n\t\t\tfor (var i = 0; i < this.robots.length; ++i)\n\t\t\t{\n\t\t\t\tthis.robots[i].parentLevel = this;\n\t\t\t\tthis.robots[i].reset();\n\n\t\t\t\tif (this.robots[i].childRobotID !== -1)\n\t\t\t\t{\n\t\t\t\t\tthis.robots[i].childRobot = this.robots[this.robots[i].childRobotID];\n\t\t\t\t\tthis.robots[this.robots[i].childRobotID].parentRobot = this.robots[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var gRobot in this.globalRobotConfig)\n\t\t\t{\n\t\t\t\tif (this.globalRobotConfig[gRobot] && cc.isObject(this.globalRobotConfig[gRobot]))\n\t\t\t\t{\n\t\t\t\t\tvar robot = pm.globalRobotHelper.createRobot(\n\t\t\t\t\t\tgRobot,\n\t\t\t\t\t\tthis.globalRobotConfig[gRobot]\n\t\t\t\t\t);\n\n\t\t\t\t\tthis.globalRobots.push(robot);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tpm.spriteUtils.initLevelRobotsTextures(this);\n\n\t\t\tfor(var i = 0; i < this.globalRobots.length; ++i)\n\t\t\t{\n\t\t\t\tthis.globalRobots[i].parentLevel = this;\n\t\t\t\tthis.globalRobots[i].reset();\n\t\t\t}\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tif(!pm.settings.isEditorMode && this.hasPhysicalConnector())\n\t\t\t\t\tthis.connectToPhysicalEnvironment();\n\t\t}\n\t},\n\n\t/**\n * Removes temporary data of level.\n * @function\n */\n\tdestroy: function()\n\t{\n\t\tfor(var i = 0; i < this.maps.length; ++i)\n\t\t\tthis.maps[i].mapLayer = null;\n\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tif(this.robots[i] instanceof pm.PlayerRobot)\n\t\t\t\tthis.robots[i].sprite = null;\n\n\t\t\tif(this.isTutorial)\n\t\t\t\tthis.programDataCache[this.robots[i].groupID] = null;\n\t\t}\n\n\t\tthis.globalRobots = [];\n\n\t\tif(!pm.settings.isEditorMode && this.hasPhysicalConnector())\n\t\t\tthis.disconnectFromPhysicalEnvironment();\n\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tpm.spriteUtils.clear();\n\t\t\tcc.sys.garbageCollect();\n\t\t}\n\t},\n\n\t/**\n * Returns number of robots in level.\n * @returns {Number}\n */\n\tgetRobotCount: function()\n\t{\n\t\treturn this.robots.length;\n\t},\n\n\t/**\n * Returns current robot object.\n * @returns {pm.AbstractRobot}\n */\n\tgetCurrentRobot: function()\n\t{\n\t\treturn this._currentRobot;\n\t},\n\n\t/**\n * Sets current robot object.\n * @param {pm.AbstractRobot} robot\n */\n\tsetCurrentRobot: function(robot)\n\t{\n\t\tthis._currentRobot = robot;\n\t},\n\n\t/**\n\t * Sets active map\n\t * @param {pm.AbstractMap} activeMap\n */\n\tsetActiveMap: function(activeMap)\n\t{\n\t\tthis._activeMapIndex = this.maps.indexOf(activeMap);\n\n\t\tthis.activeMap.removeRobots();\n\t\tthis.activeMap = activeMap;\n\t\tactiveMap.placeRobots(false);\n\t},\n\n\t/**\n\t * Sets active map index\n\t * @param {Number} index\n */\n\tsetActiveMapIndex: function(index)\n\t{\n\t\tthis._activeMapIndex = index;\n\n\t\tfor(var i =0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = this.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\trobot.sprite.getSprite().retain();\n\t\t}\n\n\t\tthis.activeMap.removeRobots();\n\t\tthis.activeMap = this.maps[index];\n\t\tthis.activeMap.placeRobots();\n\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = this.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\trobot.sprite.getSprite().release();\n\t\t}\n\t},\n\n\tgetActiveMapIndex: function()\n\t{\n\t\treturn this._activeMapIndex;\n\t},\n\t/**\n * Returns type of level.\n * @function\n * @name pm.AbstractLevel#getType\n */\n\tgetType: function()\n\t{\n\t},\n\n\tgetTaskCompleteInfoForMap: function(mapIndex)\n\t{\n\t\tvar notCompletedObjects = this.taskList.getNotCompletedObjects(mapIndex);\n\n\t\treturn {\n\t\t\tcompleted: notCompletedObjects.length === 0,\n\t\t\tnotCompletedObjects: notCompletedObjects\n\t\t};\n\t},\n\n\t/**\n * Returns true if one of robots is broken.\n * @returns {boolean}\n */\n\trobotsLoose: function()\n\t{\n\t\tvar flag = false;\n\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tif(this.robots[i].isBroken())\n\t\t\t\tflag = true;\n\t\t}\n\n\t\treturn flag;\n\t},\n\n\t/**\n * Returns true if all robots ended work.\n * @returns {boolean}\n */\n\trobotsEndedWork: function()\n\t{\n\t\tvar flag = true;\n\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tif(!this.robots[i].isEndedWork())\n\t\t\t\tflag = false;\n\t\t}\n\n\t\treturn flag;\n\t},\n\n\t/**\n * Returns true if all robots except \"exceptRobot\" are playing animation.\n * @param {pm.AbstractRobot} [exceptRobot] A robot to except\n * @returns {boolean}\n */\n\trobotsPlayingAnimation: function(exceptRobot)\n\t{\n\t\tfor (var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tif (this.robots[i] !== exceptRobot && this.robots[i].isPlayingAnimation())\n\t\t\t\treturn true;\n\t\t}\n\n\t\tfor (var i = 0; i < this.globalRobots.length; ++i)\n\t\t{\n\t\t\tif (this.globalRobots[i].isPlayingAnimation())\n\t\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tobjectsPlayingAnimation: function ()\n\t{\n\t\tfor (var i = 0; i < this.activeMap.objects.length; ++i)\n\t\t{\n\t\t\tvar object = this.activeMap.objects[i];\n\n\t\t\tif (object.isPlayingAnimation())\n\t\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Clears robot's program data cache\n\t */\n\tclearCache: function()\n\t{\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t\tthis.programDataCache[this.robots[i].groupID] = null;\n\t},\n\n\t/**\n * Returns state of whole level (maps, objects and robots) for reverting in MethodStack\n */\n\tgetState: function ()\n\t{\n\t\tvar state = {\n\t\t\tmapStates: {},\n\t\t\trobotStates: {},\n\t\t\tglobalRobotsStates: {}\n\t\t};\n\n\t\tfor (var i = 0; i < this.maps.length; ++i)\n\t\t{\n\t\t\tvar map = this.maps[i];\n\n\t\t\tstate.mapStates[i] = map.getState();\n\t\t}\n\n\t\tfor (var i = 0; i < this.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = this.robots[i];\n\n\t\t\tstate.robotStates[i] = robot.getState();\n\t\t}\n\n\t\tfor (var i = 0; i < this.globalRobots.length; ++i)\n\t\t{\n\t\t\tvar globalRobot = this.globalRobots[i];\n\n\t\t\tstate.globalRobotsStates[i] = globalRobot.getState();\n\t\t}\n\n\t\treturn state;\n\t},\n\n\t/**\n * Sets state of level (maps, objects and robots) while reverting in MethodStack\n\t * Plays animation of reverting\n */\n\tsetState: function (state)\n\t{\n\t\tfor (var i = 0; i < this.maps.length; ++i)\n\n\t\t\tthis.maps[i].setState(state.mapStates[i]);\n\n\t\tfor (var i = 0; i < this.robots.length; ++i)\n\n\t\t\tthis.robots[i].setState(state.robotStates[i]);\n\n\t\tfor (var i = 0; i < this.globalRobots.length; ++i)\n\n\t\t\tthis.globalRobots[i].setState(state.globalRobotsStates[i]);\n\t},\n\n\t/**\n\t * Returns if robot has physical device.\n\t * @returns {Boolean}\n\t */\n\thasPhysicalConnector: function() { return false; },\n\t/**\n\t * Callback for state changes of physical robot\n\t * @param {pm.PhysicalConnector.STATE} state\n\t * @private\n\t */\n\t_physicalStateChanged: function(state) {},\n\t/**\n\t * Connects to physical device.\n\t */\n\tconnectToPhysicalEnvironment: function()\n\t{\n\t\tvar type = pm.settings.getPhysicalConnectorType();\n\n\t\tif(this._supportsPhysicalConnector(type))\n\t\t{\n\t\t\tthis._physicalConnector = pm.PhysicalConnector.getConnectorForType(type, this);\n\n\t\t\tif (this._physicalConnector)\n\t\t\t{\n\t\t\t\tthis._physicalConnector.setStateCallback(this._physicalStateChanged.bind(this));\n\t\t\t\tthis._physicalConnector.connect();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Disconnects from physical device.\n\t */\n\tdisconnectFromPhysicalEnvironment: function()\n\t{\n\t\tif(!this._physicalConnector)\n\t\t\treturn;\n\n\t\tthis._physicalConnector.setStateCallback(null);\n\t\tthis._physicalConnector.disconnect();\n\t\tthis._physicalConnector = null;\n\t},\n\n\t/**\n\t * Gets physical connector\n\t * @returns {pm.PhysicalConnector}\n\t */\n\tgetPhysicalConnector: function ()\n\t{\n\t\treturn this._physicalConnector;\n\t},\n\n\t/**\n\t * Get if support physical connector\n\t * @param {pm.PhysicalConnectorType} type\n\t * @returns {Boolean}\n\t * @private\n\t */\n\t_supportsPhysicalConnector: function(type) { return false; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 12.11.15.\n */\n\n/**\n * @class Common interface for 2D map layers.\n * @interface\n * @extends pm.MapLayer\n */\npm.MapLayer2D = pm.MapLayer.extend(/** @lends pm.MapLayer2D# */{\n\n\t/**\n * Size of map element.\n * @type {cc.Size}\n * @protected\n */\n\t_mapElementSize: cc.size(0, 0),\n\n\t/**\n * Layer which contains grass tiles\n * @type {cc.Layer}\n */\n\tterrainLayer: null,\n\n\t/**\n * Layer which contains robot, flag, walls, objects, etc.\n * @type {cc.Layer}\n */\n\tobjectLayer: null,\n\n\tdepthLayer: null,\n\n\tcontainer: null,\n\n\t_previewDraw: false,\n\n\t/**\n * @private\n * @type pm.MapLayer2D.Orientation\n */\n\t_orientation: 0,\n\n\t/**\n * Shift of layers after transformation\n */\n\t_containerShift: cc.p(0, 0),\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t},\n\n\t/**\n * Return map element size.\n * @returns {cc.Size}\n */\n\tgetMapElementSize: function()\n\t{\n\t\treturn this._mapElementSize;\n\t},\n\n\t/**\n * Returns height in pixels.\n * @returns {Number}\n */\n\tgetRealHeight: function()\n\t{\n\t\treturn this.getMapElementSize().height * this._map.height;\n\t},\n\n\t/**\n * Returns width in pixels.\n * @returns {Number}\n */\n\tgetRealWidth: function()\n\t{\n\t\treturn this.getMapElementSize().width * this._map.width;\n\t},\n\n\t/**\n * Adds Terrain Object to the map\n * @param {pm.TerrainSprite} child\n * @param {Number} zOrder\n */\n\taddTerrainObject: function(child, zOrder)\n\t{\n\t\tif(!child || !(child instanceof pm.TerrainSprite))\n\t\t\treturn;\n\n\t\tthis.terrainLayer.addChild(child.getSprite(), zOrder);\n\t},\n\n\t/**\n * Removes Terrain Object to the map\n * @param {pm.TerrainSprite} child\n * @param {Boolean} cleanup\n */\n\tremoveTerrainObject: function(child, cleanup)\n\t{\n\t\tif(!child || !(child instanceof pm.TerrainSprite))\n\t\t\treturn;\n\n\t\tthis.terrainLayer.removeChild(child.getSprite(), cleanup);\n\t},\n\n\taddObject: function(child, zOrder, tag)\n\t{\n\t\tswitch(this._orientation)\n\t\t{\n\t\t\tcase pm.MapLayer2D.Orientation.Iso: this.objectLayer.addObject(child, zOrder, tag); break;\n\t\t\tcase pm.MapLayer2D.Orientation.Ortho: this.objectLayer.addChild(child.getSprite(), zOrder, tag); break;\n\t\t\tdefault:\n\t\t}\n\t},\n\n\tremoveObject: function(child, cleanup)\n\t{\n\t\tswitch(this._orientation)\n\t\t{\n\t\t\tcase pm.MapLayer2D.Orientation.Iso: this.objectLayer.removeObject(child, cleanup); break;\n\t\t\tcase pm.MapLayer2D.Orientation.Ortho: this.objectLayer.removeChild(child.getSprite(), cleanup); break;\n\t\t\tdefault:\n\t\t}\n\t},\n\n\tdrawMap: function(previewDraw)\n\t{\n\t\tthis._previewDraw = previewDraw;\n\n\t\tswitch(this._orientation)\n\t\t{\n\t\t\tcase pm.MapLayer2D.Orientation.Iso: this._drawIsoLayers(); break;\n\t\t\tcase pm.MapLayer2D.Orientation.Ortho: this._drawOrthoLayers(); break;\n\t\t\tdefault: return;\n\t\t}\n\n\t\tthis._drawMapElements();\n\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\tthis._drawDepthLines();\n\n\t\tthis._map.spawnObjects();\n\n\t\tif(previewDraw)\n\t\t\tthis.bake();\n\n\t\tthis.checkPositionTasks();\n\n\t\tif(!previewDraw && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\tthis.objectLayer.createOrderGraph();\n\t},\n\n\t/**\n * Sets orientation of layer. Set before draw of layer.\n * @param {pm.MapLayer2D.Orientation} orientation\n */\n\tsetOrientation: function(orientation)\n\t{\n\t\tthis._orientation = orientation;\n\t},\n\t/**\n * Return orientation of layer\n * @returns {pm.MapLayer2D.Orientation}\n */\n\tgetOrientation: function()\n\t{\n\t\treturn this._orientation;\n\t},\n\n\t_drawOrthoLayers: function(previewDraw)\n\t{\n\t\tthis.terrainLayer = new cc.Layer();\n\t\tthis.objectLayer = new cc.Layer();\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.terrainLayer.setCascadeOpacityEnabled(true);\n\t\tthis.objectLayer.setCascadeOpacityEnabled(true);\n\n\t\tthis.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.terrainLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.objectLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\n\t\tthis.addChild(this.terrainLayer, 0);\n\t\tthis.addChild(this.objectLayer, 1);\n\n\t\tthis._containerShift = cc.p(this.getMapElementSize().width / 2, -this.getMapElementSize().height / 2);\n\n\t\tthis.terrainLayer.setPosition(this._containerShift);\n\t\tthis.objectLayer.setPosition(this._containerShift);\n\t},\n\n\t_drawIsoLayers: function(previewDraw)\n\t{\n\t\tthis.terrainLayer = new cc.Layer();\n\t\tthis.objectLayer = previewDraw ? new cc.Layer() : new pm.TopologicalSortLayer();\n\t\tthis.depthLayer = new cc.Layer();\n\n\t\tthis.container = new cc.Layer();\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.container.setCascadeOpacityEnabled(true);\n\t\tthis.terrainLayer.setCascadeOpacityEnabled(true);\n\t\tthis.objectLayer.setCascadeOpacityEnabled(true);\n\t\tthis.depthLayer.setCascadeOpacityEnabled(true);\n\n\t\tthis.container.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.terrainLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.objectLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.depthLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\n\t\tthis.terrainLayer.setRotation(45.0);\n\t\tthis.objectLayer.setRotation(45.0);\n\t\tthis.container.setScaleY(0.5);\n\n\t\tthis.container.addChild(this.terrainLayer, 0);\n\t\tthis.container.addChild(this.objectLayer, 1);\n\n\t\tthis.addChild(this.depthLayer);\n\t\tthis.addChild(this.container);\n\n\t\tvar rect = this.terrainLayer.getBoundingBox();\n\t\tthis.setContentSize(rect.width, rect.height / 2);\n\n\t\tvar elementRect = cc.rect(0, 0, this.getMapElementSize().width, this.getMapElementSize().height);\n\t\telementRect = cc.rectApplyAffineTransform(elementRect, this.terrainLayer.getNodeToParentTransform());\n\n\t\tthis._containerShift = cc.p((this.width - this.container.width) / 2,\n\t\t\t(this.height - this.container.height) / 2 - elementRect.height / 4);\n\n\t\tthis.container.setPosition(this._containerShift);\n\t\tthis.depthLayer.setPosition(this._containerShift.x, this._containerShift.y + elementRect.height / 4 + 1);\n\t},\n\n\t_drawDepthLines: function()\n\t{\n\t\tvar depthSprite = pm.moduleUtils.getDepthLineSprites(this._map.parentLevel.getType());\n\n\t\tif(depthSprite)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar depthHorizontal = new cc.Sprite(depthSprite.horizontal);\n\n\t\t\t\tvar pos = cc.p(this.getMapElementSize().width * i - this.getMapElementSize().width * this._map.width/2 + 1.5,\n\t\t\t\t\t-this.getMapElementSize().height * this._map.height/2 - 1.5);\n\t\t\t\tpos = cc.pointApplyAffineTransform(pos, pm.MapLayer2D.ISO_TRANSFORM);\n\n\t\t\t\tpos.x += this.getMapElementSize().width * this._map.width/2;\n\t\t\t\tpos.y += this.getMapElementSize().height * this._map.height/2 + 1;\n\n\t\t\t\tdepthHorizontal.setAnchorPoint(cc.p(0, 1));\n\t\t\t\tdepthHorizontal.setPosition(pos);\n\n\t\t\t\tthis.depthLayer.addChild(depthHorizontal);\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar depthVertical = new cc.Sprite(depthSprite.vertical);\n\n\t\t\t\tvar pos = cc.p(this.getMapElementSize().width * this._map.width - this.getMapElementSize().width * this._map.width/2,\n\t\t\t\t\tthis.getMapElementSize().height * (j + 1) - this.getMapElementSize().height * this._map.height/2);\n\t\t\t\tpos = cc.pointApplyAffineTransform(pos, pm.MapLayer2D.ISO_TRANSFORM);\n\n\t\t\t\tpos.x += this.getMapElementSize().width * this._map.width/2 + 1;\n\t\t\t\tpos.y += this.getMapElementSize().height * this._map.height/2;\n\n\t\t\t\tdepthVertical.setAnchorPoint(cc.p(1, 1));\n\t\t\t\tdepthVertical.setPosition(pos);\n\n\t\t\t\tthis.depthLayer.addChild(depthVertical);\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveRobots: function()\n\t{\n\t\tvar level = this._map.parentLevel;\n\n\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\trobot.sprite.getSprite().retain();\n\t\t}\n\n\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\tthis.removeObject(robot.sprite, false);\n\t\t}\n\t},\n\n\tcenterMap: function()\n\t{\n\t\tvar robot = this._map.parentLevel.getCurrentRobot();\n\n\t\tif(robot.sprite === null)\n\t\t\treturn;\n\n\t\tif (!robot.isPlayingAnimation())\n\t\t\treturn;\n\n\t\tvar robotSprite = robot.sprite.getSprite();\n\n\t\tvar robotPosition = this.objectLayer.convertToWorldSpace(robotSprite.getPosition());\n\n\t\tvar centerX = pm.settings.getMapSize().width/2;\n\t\tvar centerY = pm.settings.getMapSize().height/2;\n\n\t\tif((robotPosition.x < pm.MapLayer2D.DETECTING_ROBOT_AREA ||\n robotPosition.x > pm.settings.getMapSize().width - pm.MapLayer2D.DETECTING_ROBOT_AREA ||\n robotPosition.y < pm.MapLayer2D.DETECTING_ROBOT_AREA ||\n robotPosition.y > pm.settings.getMapSize().height - pm.MapLayer2D.DETECTING_ROBOT_AREA)\n && this.enabled)\n\t\t{\n\t\t\tvar moveVector = cc.p(centerX - robotPosition.x, centerY - robotPosition.y);\n\n\t\t\tvar moveDelta = cc.p(0, 0);\n\n\t\t\tvar mapBB = cc.rectApplyAffineTransform(this.getBoundingBox(), this.getParent().getNodeToWorldTransform());\n\n\t\t\tvar minX = mapBB.x + moveVector.x;\n\t\t\tvar maxX = mapBB.x + mapBB.width + moveVector.x;\n\n\t\t\tvar minY = mapBB.y + moveVector.y;\n\t\t\tvar maxY = mapBB.y + mapBB.height + moveVector.y;\n\n\t\t\tif (mapBB.width > pm.settings.getMapSize().width)\n\t\t\t{\n\t\t\t\tif (minX > 0)\n\t\t\t\t\tmoveDelta.x = -minX;\n\t\t\t\telse if (maxX < pm.settings.getMapSize().width)\n\t\t\t\t\tmoveDelta.x = pm.settings.getMapSize().width - maxX;\n\t\t\t}\n\t\t\telse\n\t\t\t{ moveVector.x = 0; }\n\n\t\t\tif (mapBB.height > pm.settings.getMapSize().height)\n\t\t\t{\n\t\t\t\tif (minY > 0)\n\t\t\t\t\tmoveDelta.y = -minY;\n\t\t\t\telse if (maxY < pm.settings.getMapSize().height)\n\t\t\t\t\tmoveDelta.y = pm.settings.getMapSize().height - maxY;\n\t\t\t}\n\t\t\telse\n\t\t\t{ moveVector.y = 0; }\n\n\t\t\tmoveVector.x += moveDelta.x;\n\t\t\tmoveVector.y += moveDelta.y;\n\n\t\t\tthis.enabled = false;\n\t\t\tpm.sendCustomEvent(pm.FOCUS_TO_ROBOT_IN_MAP, moveVector);\n\t\t}\n\t},\n\n\tupdate: function (dt)\n\t{\n\t\tif(!pm.settings.isAnimationDisabled())\n\t\t\tthis.centerMap();\n\t},\n\n\thandleTouch: function(touch)\n\t{\n\t\tif (!this._clicksEnabled)\n\t\t\treturn false;\n\n\t\tvar level = this._map.parentLevel;\n\n\t\tvar handles = false;\n\n\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\tif (robot.sprite.containsPoint(touch))\n\t\t\t{\n\t\t\t\tvar currentRobot = level.getCurrentRobot();\n\n\t\t\t\tif (currentRobot && robot && currentRobot != robot)\n\t\t\t\t{\n\t\t\t\t\tif (pm.settings.isEditorMode)\n\t\t\t\t\t\tthis._activeRobot = robot;\n\n\t\t\t\t\tfor (var i = 0; i < this._map.parentLevel.robots.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar rob = this._map.parentLevel.robots[i];\n\n\t\t\t\t\t\tif (rob.groupID === robot.groupID)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trob.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t\t\t\t\t\t\trob.sprite.setActive(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trob.sprite.setActive(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar startMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(currentRobot.id);\n\t\t\t\t\tvar startMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\t\t\t\tif(startMarkSprite)\n\t\t\t\t\t\tstartMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\t\t\tstartMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(robot.id);\n\t\t\t\t\tstartMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\t\t\t\tif(startMarkSprite)\n\t\t\t\t\t\tstartMarkSprite.setOpacity(255);\n\n\t\t\t\t\tvar posMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(currentRobot.id);\n\t\t\t\t\tvar posMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\t\t\t\tif(posMarkSprite)\n\t\t\t\t\t\tposMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\t\t\tposMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robot.id);\n\t\t\t\t\tposMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\t\t\t\tif(posMarkSprite)\n\t\t\t\t\t\tposMarkSprite.setOpacity(255);\n\t\t\t\t}\n\n\t\t\t\tpm.sendCustomEvent(pm.ROBOT_TOUCH_EVENT_STR, robot);\n\n\t\t\t\thandles = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn handles;\n\t},\n\n\tcontainsPoint: function(point)\n\t{\n\t\tvar mapPoint = this.terrainLayer.convertTouchToNodeSpace(point);\n\t\tvar mapSize = this.terrainLayer.getContentSize();\n\n\t\treturn (mapPoint.x >= -this.getMapElementSize().width / 2 && mapPoint.x <= mapSize.width &&\n mapPoint.y >= 0 && mapPoint.y <= mapSize.height + this.getMapElementSize().height / 2);\n\t},\n\n\tcheckPositionTasks: function()\n\t{\n\t\tvar level = this._map.parentLevel;\n\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\tvar mapIndex = level.maps.indexOf(this._map);\n\n\t\tif(task)\n\t\t{\n\t\t\tfor(var id in task.data[mapIndex])\n\t\t\t\tthis._drawPositionMark(Number(id), task.data[mapIndex][id]);\n\t\t}\n\t},\n\n\tremovePositionMarks: function()\n\t{\n\t\tvar level = this._map.parentLevel;\n\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\tvar mapIndex = level.maps.indexOf(this._map);\n\n\t\tif(task)\n\t\t{\n\t\t\tfor(var id in task.data[mapIndex])\n\t\t\t\tthis._removePositionMark(Number(id));\n\t\t}\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor(var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite();\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\t\tif(this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n * Spawns objects on map.\n */\n\tspawnObjects: function()\n\t{\n\t\tfor(var i = 0; i < this._map.objects.length; ++i)\n\t\t{\n\t\t\tvar object = this._map.objects[i];\n\n\t\t\tobject.generateSprite(this._previewDraw);\n\n\t\t\tif (!(object.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\tobject.sprite.setOrientation(this._orientation);\n\t\t\tobject.sprite.mapLayer = this;\n\n\t\t\tthis.addObject(object.sprite, object.position.x + object.position.y - 1);\n\n\t\t\tobject.sprite.setRealPosition(object.startPosition);\n\t\t}\n\t},\n\n\tplaceRobots: function(firstPlace)\n\t{\n\t\tvar level = this._map.parentLevel;\n\n\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\tif (firstPlace)\n\t\t\t\trobot.generateRobotSprite();\n\n\t\t\trobot.sprite.mapLayer = this;\n\t\t\trobot.sprite.setOrientation(this._orientation);\n\t\t\trobot.sprite.setDirection(robot.direction);\n\n\t\t\tthis.addObject(robot.sprite, robot.position.x + robot.position.y - 1);\n\n\t\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\n\t\t\tif(level.robots.length > 1 && robot.groupID === level.getCurrentRobot().groupID)\n\t\t\t\trobot.sprite.setActive(true);\n\t\t}\n\n\t\tif(!firstPlace)\n\t\t{\n\t\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = level.robots[i];\n\n\t\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\t\tcontinue;\n\n\t\t\t\trobot.sprite.getSprite().release();\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawRobotStartPositionMark: function(robotID, markPosition)\n\t{\n\t\tvar markSprite = pm.spriteUtils.getMapTile(\"startElement\");\n\t\tmarkSprite.setName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(robotID));\n\n\t\tmarkSprite.setPosition(this.realPosition(markPosition, cc.p(0, 0)));\n\n\t\tif(robotID !== this._map.parentLevel.getCurrentRobot().id)\n\t\t\tmarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\tthis.terrainLayer.addChild(markSprite, 10);\n\t},\n\n\t_setRobotStartPositionMarkPosition: function(robotID, markPosition)\n\t{\n\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(robotID));\n\n\t\tif(markSprite)\n\t\t\tmarkSprite.setPosition(this.realPosition(markPosition, cc.p(0, 0)));\n\t},\n\n\t_removeRobotStartPositionMark: function(robotID)\n\t{\n\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(robotID));\n\n\t\tif(markSprite)\n\t\t\tmarkSprite.removeFromParent();\n\t},\n\n\t_drawPositionMark: function(robotID, point)\n\t{\n\t\tvar markName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robotID);\n\t\tvar markSprite = this.terrainLayer.getChildByName(markName);\n\n\t\tif(!markSprite)\n\t\t{\n\t\t\tmarkSprite = pm.spriteUtils.getMapTile(\"targetElement\");\n\t\t\tmarkSprite.setName(markName);\n\n\t\t\tif(robotID !== this._map.parentLevel.getCurrentRobot().id)\n\t\t\t\tmarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\tthis.terrainLayer.addChild(markSprite, 10);\n\t\t}\n\n\t\tthis._setMarkPosition(robotID, point);\n\t},\n\n\t_setMarkPosition: function(robotID, point)\n\t{\n\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robotID));\n\n\t\tif(markSprite)\n\t\t\tmarkSprite.setPosition(this.realPosition(point, cc.p(0, 0)));\n\t},\n\n\t_removePositionMark: function(robotID)\n\t{\n\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robotID));\n\n\t\tif(markSprite)\n\t\t\tmarkSprite.removeFromParent();\n\t},\n\n\tclean: function()\n\t{\n\t\tvar level = this._map.parentLevel;\n\n\t\tif(this._map === level.activeMap)\n\t\t{\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = level.robots[i];\n\n\t\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\t\tcontinue;\n\n\t\t\t\trobot.sprite.getSprite().stopAllActions();\n\t\t\t\trobot.sprite.setRealPosition(robot.position);\n\t\t\t\trobot.sprite.setDirection(robot.direction);\n\t\t\t\trobot.sprite.showCommands(false);\n\t\t\t}\n\t\t}\n\n\t\tfor(var j = 0; j < this._map.objects.length; ++j)\n\t\t{\n\t\t\tvar object = this._map.objects[j];\n\n\t\t\tif (!(object.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\tobject.sprite.getSprite().stopAllActions();\n\t\t\tobject.sprite.setRealPosition(object.startPosition);\n\t\t}\n\t},\n\n\tgetWorldMinimumPoint: function(point)\n\t{\n\t\treturn this.terrainLayer.convertToWorldSpace(cc.p());\n\t},\n\n\tgetRobotIndex: function(id)\n\t{\n\t\tvar index, robotIndex = 0;\n\t\tvar robots = this._map.parentLevel.robots;\n\t\tvar firstRobots = [];\n\n\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t{\n\t\t\tif (robots[i].groupID === id)\n\t\t\t{\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tfirstRobots[i] = robots[i].groupID;\n\t\t}\n\n\t\tif (index > 0)\n\t\t\trobotIndex = 1;\n\n\t\tfirstRobots.sort();\n\n\t\tfor (var i = 1; i < index; ++i)\n\t\t{\n\t\t\tif (firstRobots[i] !== firstRobots[i-1])\n\t\t\t\t++robotIndex;\n\t\t}\n\n\t\treturn robotIndex;\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn true;\n\t},\n\n\tneedToDrawOrientationOption: function()\n\t{\n\t\treturn false;\n\t}\n});\n\n/**\n * Opacity of robots tha ane not current (active)\n * @default\n * @const\n * @type {Number}\n */\npm.MapLayer2D.INACTIVE_ROBOT_OPACITY = 255 * 0.5;\n/**\n * Enum for map orientation types.\n * @enum {Number}\n */\npm.MapLayer2D.Orientation = {\n\tOrtho: 0,\n\tIso: 1\n};\n/**\n * Name pattern for start robot position.\n * @default\n * @const\n * @type {String}\n */\npm.MapLayer2D.START_MARK_NAME_PATTERN = \"sm_{0}\";\n/**\n * Name pattern for robot target position.\n * @default\n * @const\n * @type {String}\n */\npm.MapLayer2D.POSITION_MARK_NAME_PATTERN = \"pm_{0}\";\n\n//debug\npm.MapLayer2D.ENABLE_DEBUG_DRAW_BB = false;\n\npm.MapLayer2D.ISO_TRANSFORM_INV = cc.affineTransformScale\n(\n\tcc.affineTransformRotate(cc.affineTransformMakeIdentity(), cc.degreesToRadians(45)),\n\t1, 2\n);\n\npm.MapLayer2D.ISO_TRANSFORM = cc.affineTransformInvert(pm.MapLayer2D.ISO_TRANSFORM_INV);\n\npm.MapLayer2D.DETECTING_ROBOT_AREA = 100;\n","/**\n * Created by Kirill Mashchenko on 13.07.17.\n */\n\n/**\n * @class Common interface for all 2D Maps.\n * @interface\n * @extends pm.AbstractMap\n */\nvar Map2D = pm.AbstractMap.extend(/** @lends Map2D#*/{\n\n\t/**\n\t * Width of map in elements\n\t * @see pm.MapElement\n\t * @type {Number}\n\t */\n\twidth: 0,\n\t/**\n\t * Height of map in elements\n\t * @see pm.MapElement\n\t * @type {Number}\n\t */\n\theight: 0,\n\n\t/**\n * Return if level needs to draw wall\n * @returns {Boolean}\n */\n\thasWalls: function() {},\n\n\t/**\n * Sets size of map.\n * @param {Number} width\n * @param {Number} height\n */\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.MapElement(4));\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\t/**\n * Returns map element\n * @param {Number} position\n * @returns {pm.MapElement}\n */\n\telement: function(pos) {},\n\n\tload: function()\n\t{\n\t\tfor(var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this.height; ++y)\n\t\t\t\tthis.element(cc.p(x, y)).initElement();\n\t\t}\n\t},\n\n\t/**\n * Returns element by cc.Point coordinate\n * @param {cc.Point} p Point\n * @returns {pm.MapElement}\n */\n\telementFromPoint: function(p)\n\t{\n\t\treturn this.element(p);\n\t},\n\n\t/**\n\t * Gets next dicrectional element position in map coordinates\n\t * @param {cc.Point} pos\n\t * @param {Number} direction\n\t * @returns {cc.Point}\n\t */\n\tgetNextDirectionalElementPosition: function(pos, direction) { return pos; },\n\n\t/**\n\t * Gets prev dicrectional element position in map coordinates\n\t * @param {cc.Point} pos\n\t * @param {Number} direction\n\t * @returns {cc.Point}\n\t */\n\tgetPrevDirectionalElementPosition: function(pos, direction) { return pos; },\n\n\t/**\n * Restores element type\n * @param {Number} position\n */\n\trestoreElement: function(pos)\n\t{\n\t\tthis.element(pos).restore();\n\t},\n\n\tremoveRobots: function()\n\t{\n\t\tfor(var x = 0; x < this.width; ++x)\n\t\t\tfor(var y = 0; y < this.height; ++y)\n\t\t\t\tthis.element(cc.p(x, y)).removeAllRobots();\n\n\t\tpm.AbstractMap.prototype.removeRobots.call(this);\n\t},\n\n\tplaceRobots: function(firstPlace)\n\t{\n\t\tvar level = this.parentLevel;\n\n\t\tfor (var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this.height; ++y)\n\t\t\t{\n\t\t\t\tvar startForRobot = this.element(cc.p(x, y)).startForRobot;\n\n\t\t\t\tif (startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tlevel.robots[startForRobot].setPosition(cc.p(x, y), this.element(cc.p(x, y)).startRobotData.direction);\n\t\t\t}\n\t\t}\n\n\t\tpm.AbstractMap.prototype.placeRobots.call(this, firstPlace);\n\t},\n\n\tclean: function()\n\t{\n\t\tvar level = this.parentLevel;\n\n\t\tfor(var i = 0; i < this.height; ++i)\n\t\t{\n\t\t\tfor(var j = 0; j < this.width; ++j)\n\t\t\t{\n\t\t\t\tthis.restoreElement(cc.p(j, i));\n\t\t\t\tthis.element(cc.p(j, i)).setNotCompleted(false);\n\n\t\t\t\tif(this === level.activeMap)\n\t\t\t\t{\n\t\t\t\t\tvar startForRobot = this.element(cc.p(j, i)).startForRobot;\n\n\t\t\t\t\tif (startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\t\tlevel.robots[startForRobot].setPosition(cc.p(j, i), this.element(cc.p(j, i)).startRobotData.direction);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpm.AbstractMap.prototype.clean.call(this);\n\t},\n\n\tgetState: function ()\n\t{\n\t\tvar state = {\n\t\t\tmapElementsStates: {},\n\t\t\tobjectsStates: {}\n\t\t};\n\n\t\tvar max = Math.max(this.width, this.height);\n\n\t\tfor (var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this.height; ++y)\n\t\t\t{\n\t\t\t\tvar element = this.element(cc.p(x, y));\n\t\t\t\tstate.mapElementsStates[x * max + y] = element.getState();\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < this.objects.length; ++i)\n\t\t\tstate.objectsStates[i] = this.objects[i].getState();\n\n\t\treturn state;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tvar max = Math.max(this.width, this.height);\n\n\t\tfor (var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this.height; ++y)\n\t\t\t{\n\t\t\t\tvar element = this.element(cc.p(x, y));\n\t\t\t\telement.setState(state.mapElementsStates[x * max + y]);\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < this.objects.length; ++i)\n\t\t\tthis.objects[i].setState(state.objectsStates[i]);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 26.06.2017.\n */\n\n/**\n * @class Common interface for object sprites.\n * @interface\n * @extends cc.Class\n */\npm.ObjectSprite2D = cc.Class.extend(/** @lends pm.ObjectSprite2D#*/{\n\t_orientation: pm.MapLayer2D.Orientation.Ortho,\n\n\t/**\n * Minimum projection point of sprite in sprites coordinates.\n * @type {cc.Point}\n * @protected\n */\n\t_minPoint: cc.p(),\n\t/**\n * Maximum projection point of sprite in sprites coordinates.\n * @type {cc.Point}\n * @protected\n */\n\t_maxPoint: cc.p(),\n\n\t_needToUpdateZOrder: false,\n\t_needClearUpdateZOrder: false,\n\n\tsprite: null,\n\n\tmapLayer: null,\n\n\tctor: function(frame)\n\t{\n\t\tthis.sprite = new cc.Sprite(frame);\n\t},\n\n\t/**\n * Set orientation of sprite\n * @param {pm.MapLayer2D.Orientation | Number} orientation\n */\n\tsetOrientation: function(orientation)\n\t{\n\t\tthis._orientation = orientation;\n\t\tthis.sprite.setRotation(0);\n\t\tthis.sprite.setScale(1);\n\n\t\tif(this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tthis.sprite.setRotation(-45);\n\t\t\tthis.sprite.setScaleY(2);\n\t\t}\n\n\t\tif(pm.MapLayer2D.ENABLE_DEBUG_DRAW_BB)\n\t\t\tthis._debugDrawBB();\n\t},\n\n\t/**\n * Return orientation\n * @returns {pm.MapLayer2D.Orientation}\n */\n\tgetOrientation: function()\n\t{\n\t\treturn this._orientation;\n\t},\n\n\t/**\n * Return Sprite of this object\n * @returns {cc.Node}\n */\n\tgetSprite: function ()\n\t{\n\t\treturn this.sprite;\n\t},\n\t/**\n * Returns minimum projection point of sprite in layer coordinates.\n * @returns {cc.Point}\n */\n\tgetMinPoint: function()\n\t{\n\t\treturn cc.pointApplyAffineTransform(this._minPoint, this.sprite.getNodeToParentTransform());\n\t},\n\t/**\n * Returns maximum projection point of sprite in layer coordinates.\n * @returns {cc.Point}\n */\n\tgetMaxPoint: function()\n\t{\n\t\treturn cc.pointApplyAffineTransform(this._maxPoint, this.sprite.getNodeToParentTransform());\n\t},\n\n\t/**\n * Returns true if zorder of sprite must be changed.\n * @returns {Boolean}\n */\n\tneedToUpdateZOrder: function() { return this._needToUpdateZOrder; },\n\n\t/**\n * Clears flags of updating zorder.\n */\n\tclearUpdateZOrderFlags: function()\n\t{\n\t\tthis._needToUpdateZOrder = false;\n\t\tthis._needClearUpdateZOrder = false;\n\t},\n\n\t/**\n * Returns true if update zOrder flag of sprite must be cleared after updating of zOrder.\n * @returns {Boolean}\n */\n\tneedClearUpdateZOrderFlag: function() { return this._needClearUpdateZOrder; },\n\n\t/**\n * Set AABB point in sprite local coordinates.\n * @param minPoint\n * @param maxPoint\n */\n\tsetLocalAABBPoints: function(minPoint, maxPoint)\n\t{\n\t\tthis._minPoint = minPoint;\n\t\tthis._maxPoint = maxPoint;\n\n\t\tif(pm.MapLayer2D.ENABLE_DEBUG_DRAW_BB)\n\t\t\tthis._debugDrawBB();\n\t},\n\t/**\n * Sets position on map layer of sprite.\n * @function\n * @name pm.ObjectSprite#setRealPosition\n * @param {cc.Point} position\n * @param {cc.Point} delta\n\n */\n\tsetRealPosition: function(pos, delta)\n\t{\n\t\tthis._needToUpdateZOrder = true;\n\t\tthis._needClearUpdateZOrder = true;\n\n\t\tthis.sprite.setPosition(this.getRealPosition(pos, delta));\n\t},\n\n\t/**\n * Returns real position of sprites by element-position.\n * @function\n * @name ObjectSprite2D#getRealPosition\n * @param {cc.Point} pos X pos or point\n * @param {cc.Point} [delta]\n * @returns {cc.Point}\n */\n\tgetRealPosition: function(pos, delta)\n\t{\n\t\tif(delta === undefined)\n\t\t\tdelta = cc.p(0, 0);\n\n\t\tvar centerPoint = cc.p(this.sprite.width / 2, this.sprite.height / 2);\n\t\tvar bbCenterPoint = cc.p(this._maxPoint.x + (this._minPoint.x - this._maxPoint.x) / 2,\n\t\t\tthis._maxPoint.y + (this._minPoint.y - this._maxPoint.y) / 2);\n\n\t\tif(this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tcenterPoint = cc.pointApplyAffineTransform(centerPoint, pm.MapLayer2D.ISO_TRANSFORM_INV);\n\t\t\tbbCenterPoint = cc.pointApplyAffineTransform(bbCenterPoint, pm.MapLayer2D.ISO_TRANSFORM_INV);\n\t\t}\n\n\t\treturn this.mapLayer.realPosition(pos, cc.pAdd(delta, cc.p(centerPoint.x - bbCenterPoint.x, centerPoint.y - bbCenterPoint.y)));\n\t},\n\n\t/**\n * Returns if touch hitting BB of robot.\n * @function\n * @name ObjectSprite2D#containsPoint\n * @param {cc.Touch} touch Touch point to check\n= * @returns {Boolean}\n */\n\tcontainsPoint: function(touch)\n\t{\n\t\tvar rect = this.getSprite().getContentSize();\n\t\tvar point = this.getSprite().convertTouchToNodeSpace(touch);\n\n\t\treturn point.x > 0 && point.y > 0 && point.x < rect.width && point.y < rect.height;\n\t},\n\n\t_debugDrawBB: function()\n\t{\n\t\tthis.getSprite().setOpacity(200);\n\n\t\tthis.getSprite().removeAllChildren(true);\n\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tvar bottomDraw = new cc.DrawNode();\n\t\t\tvar topDraw = new cc.DrawNode();\n\n\t\t\tvar height = 3 * this.height / 5;\n\t\t\tvar bottomPoints = [];\n\t\t\tvar leftPoints = [];\n\t\t\tvar topPoints = [];\n\t\t\tvar rightPoints = [];\n\n\t\t\tvar transform = pm.MapLayer2D.ISO_TRANSFORM_INV;\n\n\t\t\tvar invTransform = pm.MapLayer2D.ISO_TRANSFORM;\n\n\t\t\tvar minPoint = cc.pointApplyAffineTransform(this._minPoint, transform);\n\t\t\tvar maxPoint = cc.pointApplyAffineTransform(this._maxPoint, transform);\n\n\t\t\tvar rightPoint = cc.pointApplyAffineTransform(cc.p(minPoint.x, maxPoint.y), invTransform);\n\t\t\tvar leftPoint = cc.pointApplyAffineTransform(cc.p(maxPoint.x, minPoint.y), invTransform);\n\n\t\t\tbottomPoints.push(this._minPoint);\n\t\t\tbottomPoints.push(rightPoint);\n\t\t\tbottomPoints.push(this._maxPoint);\n\t\t\tbottomPoints.push(leftPoint);\n\n\t\t\tleftPoints.push(this._maxPoint);\n\t\t\tleftPoints.push(leftPoint);\n\t\t\tleftPoints.push(cc.p(leftPoint.x, leftPoint.y + height));\n\t\t\tleftPoints.push(cc.p(this._maxPoint.x, this._maxPoint.y + height));\n\n\t\t\ttopPoints.push(cc.p(this._minPoint.x, this._minPoint.y + height));\n\t\t\ttopPoints.push(cc.p(rightPoint.x, rightPoint.y + height));\n\t\t\ttopPoints.push(cc.p(this._maxPoint.x, this._maxPoint.y + height));\n\t\t\ttopPoints.push(cc.p(leftPoint.x, leftPoint.y + height));\n\n\t\t\trightPoints.push(this._minPoint);\n\t\t\trightPoints.push(rightPoint);\n\t\t\trightPoints.push(cc.p(rightPoint.x, rightPoint.y + height));\n\t\t\trightPoints.push(cc.p(this._minPoint.x, this._minPoint.y + height));\n\n\t\t\tbottomDraw.drawPoly(bottomPoints, cc.color(255, 0, 0, 50), 1, cc.color.RED);\n\t\t\tbottomDraw.drawPoly(rightPoints, cc.color(255, 0, 0, 50), 1, cc.color.RED);\n\n\t\t\ttopDraw.drawPoly(topPoints, cc.color(255, 0, 0, 50), 1, cc.color.RED);\n\t\t\ttopDraw.drawPoly(leftPoints, cc.color(255, 0, 0, 50), 1, cc.color.RED);\n\n\t\t\tthis.getSprite().addChild(bottomDraw, -1);\n\t\t\tthis.getSprite().addChild(topDraw, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar draw = new cc.DrawNode();\n\n\t\t\tvar points = [];\n\t\t\t//top\n\t\t\tpoints.push(this._minPoint);\n\t\t\t//right\n\t\t\tpoints.push(cc.p(this._minPoint.x, this._maxPoint.y));\n\t\t\t//bottom\n\t\t\tpoints.push(this._maxPoint);\n\t\t\t//left\n\t\t\tpoints.push(cc.p(this._maxPoint.x, this._minPoint.y));\n\t\t\tdraw.drawPoly(points, null, 1, cc.color.RED);\n\n\t\t\tthis.getSprite().addChild(draw, -2);\n\t\t}\n\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class Common interface for dynamic sprites.\n * @interface\n * @extends pm.ObjectSprite2D\n */\npm.DynamicSprite = pm.ObjectSprite2D.extend(/** @lends pm.DynamicSprite# */{\n\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\t},\n\n\t/**\n * Plays animation by type\n * @function\n * @name pm.DynamicSprite#playAnimation\n * @param {function} endCallBack Callback called on end of animation.\n * @param {Object} target A target for end animation callback\n * @param {Number| String} type Type of animation.\n * @param {*} [args] Arguments for animation\n */\n\tplayAnimation: function(endCallBack, target, type, args) {},\n\t/**\n * Stops animation\n * @function\n * @name pm.DynamicSprite#stopAnimation\n */\n\tstopAnimation: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.sprite.stopAllActions();\n\t},\n\t/**\n * Sets direction on map layer of sprite.\n * @function\n * @name pm.DynamicSprite#setDirection\n * @param {Number} direction\n */\n\tsetDirection: function(direction){}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 13.06.15.\n */\n\n/**\n * @class Layer which provides correct sorting of sprites on it by \"see-distance\".
\n * Uses topological sorting.\n * @extends cc.Layer\n */\npm.TopologicalSortLayer = cc.Layer.extend(/** @lends pm.TopologicalSortLayer#*/{\n\n\t_objects: [],\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis._objects = [];\n\n\t\tthis.scheduleUpdate();\n\t},\n\n\taddObject: function(child, zOrder, tag)\n\t{\n\t\tif(!child || !(child instanceof pm.ObjectSprite2D))\n\t\t\treturn;\n\n\t\tthis._objects.push(child);\n\n\t\tthis.addChild(child.getSprite(), zOrder, tag);\n\t},\n\n\tremoveObject: function(child, cleanup)\n\t{\n\t\tif(!child || !(child instanceof pm.ObjectSprite2D))\n\t\t\treturn;\n\n\t\tthis._objects.splice(this._objects.indexOf(child), 1);\n\t\tthis.removeChild(child.getSprite(), cleanup);\n\t},\n\n\t_sprOrder: 0,\n\t_graphCreated: false,\n\t_forceUpdate: false,\n\n\t/**\n * Creates initial order graph for {@link pm.StaticSprite} elements.\n */\n\tcreateOrderGraph: function()\n\t{\n\t\tvar childCount = this._objects.length;\n\t\tvar children = this._objects;\n\n\t\tfor(var i = 0; i < childCount; ++i)\n\t\t{\n\t\t\tif(children[i] instanceof pm.StaticSprite)\n\t\t\t{\n\t\t\t\tvar a_max = children[i].getMaxPoint();\n\n\t\t\t\tif(children[i][\"spritesBehind\"] === undefined)\n\t\t\t\t\tchildren[i][\"spritesBehind\"] = new Array(childCount);\n\t\t\t\telse\n\t\t\t\t\tchildren[i][\"spritesBehind\"].length = childCount;\n\n\t\t\t\tvar behindCount = 0;\n\n\t\t\t\tfor(var j=0; j < childCount; ++j)\n\t\t\t\t{\n\t\t\t\t\tif(i!=j && children[j] instanceof pm.StaticSprite)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar b_min = children[j].getMinPoint();\n\t\t\t\t\t\tif(b_min.x < a_max.x && b_min.y > a_max.y)\n\t\t\t\t\t\t\tchildren[i].spritesBehind[behindCount++] = children[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchildren[i].behindCount = behindCount;\n\t\t\t\tchildren[i].visited = false;\n\t\t\t}\n\t\t}\n\n\t\tthis._graphCreated = true;\n\t},\n\n\t/**\n * Updates order graph for {@link pm.StaticSprite} elements.\n */\n\tupdateOrderGraph: function()\n\t{\n\t\tthis._graphCreated = false;\n\n\t\tthis.createOrderGraph();\n\n\t\tthis._forceUpdate = true;\n\t},\n\n\t/**\n * Force updates z order of all elements.\n */\n\tforceUpdate: function()\n\t{\n\t\tthis._forceUpdate = true;\n\t},\n\n\tupdate: function(dt)\n\t{\n\t\tif(!this._graphCreated)\n\t\t\treturn;\n\n\t\tvar children = this._objects;\n\t\tvar childCount = this._objects.length;\n\n\t\tif(!this._forceUpdate)\n\t\t{\n\t\t\tvar needToUpdate = false;\n\n\t\t\tfor (var i = 0; i < childCount; ++i)\n\t\t\t{\n\t\t\t\tif (children[i].needToUpdateZOrder())\n\t\t\t\t{\n\t\t\t\t\tneedToUpdate = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!needToUpdate)\n\t\t\t\treturn;\n\t\t}\n\t\tthis._sprOrder = 0;\n\n\t\tfor(var i=0; i < childCount; ++i)\n\t\t{\n\t\t\tvar a_max = children[i].getMaxPoint();\n\n\t\t\tif(children[i] instanceof pm.StaticSprite)\n\t\t\t{\n\t\t\t\tfor(var j=0; j < childCount; ++j)\n\t\t\t\t{\n\t\t\t\t\tif(i!=j && !(children[j] instanceof pm.StaticSprite))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar b_min = children[j].getMinPoint();\n\t\t\t\t\t\tif(b_min.x < a_max.x && b_min.y > a_max.y)\n\t\t\t\t\t\t\tchildren[i].spritesBehind[children[i].behindCount++] = children[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(!children[i].hasOwnProperty(\"spritesBehind\"))\n\t\t\t\t{\n\t\t\t\t\tchildren[i][\"spritesBehind\"] = new Array(childCount);\n\t\t\t\t\tchildren[i].behindCount = 0;\n\t\t\t\t\tchildren[i].visited = false;\n\t\t\t\t}\n\n\t\t\t\tfor(var j=0; j < childCount; ++j)\n\t\t\t\t{\n\t\t\t\t\tif(i!=j)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar b_min = children[j].getMinPoint();\n\t\t\t\t\t\tif(b_min.x < a_max.x && b_min.y > a_max.y)\n\t\t\t\t\t\t\tchildren[i].spritesBehind[children[i].behindCount++] = children[j];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(var i=0; i < childCount; ++i)\n\n\t\t\tthis._visitSprite(children[i]);\n\n\t\tfor(var i=0; i < childCount; ++i)\n\n\t\t\tchildren[i].visited = false;\n\n\t\tthis._forceUpdate = false;\n\t},\n\n\t_visitSprite: function(spr)\n\t{\n\t\tif(!spr.visited)\n\t\t{\n\t\t\tspr.visited = true;\n\n\t\t\tvar behindCount = spr.behindCount;\n\n\t\t\tfor(var i=0; i < behindCount; ++i)\n\t\t\t{\n\t\t\t\tif(!spr.spritesBehind[i])\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._visitSprite(spr.spritesBehind[i]);\n\n\t\t\t\t\tif(!(spr instanceof pm.StaticSprite))\n\t\t\t\t\t{\n\t\t\t\t\t\t--spr.behindCount;\n\t\t\t\t\t\tspr.spritesBehind[i] = null;\n\t\t\t\t\t}\n\t\t\t\t\telse if(!(spr.spritesBehind[i] instanceof pm.StaticSprite))\n\t\t\t\t\t{\n\t\t\t\t\t\tspr.spritesBehind[i] = null;\n\t\t\t\t\t\t--spr.behindCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(spr.needClearUpdateZOrderFlag())\n\t\t\t\tspr.clearUpdateZOrderFlags();\n\n\t\t\tspr.getSprite().setLocalZOrder(this._sprOrder++);\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 27.06.17.\n */\n\n/**\n * @class Common interface for terrain sprites.\n * @interface\n * @extends cc.Class\n */\npm.TerrainSprite = cc.Class.extend(/** @lends pm.TerrainSprite#*/{\n\n\tsprite: null,\n\n\tctor: function(frame)\n\t{\n\t\tthis.sprite = new cc.Sprite(frame);\n\t},\n\n\t/**\n * Return Sprite of this object\n * @returns {cc.Node}\n */\n\tgetSprite: function ()\n\t{\n\t\treturn this.sprite;\n\t}\n});\n\n","/**\n * Created by Kirill Mashchenko on 28.06.17.\n */\n\n/**\n * @class This a interface for 2D map elements.\n * @interface\n * @extends pm.MapElement\n */\npm.MapElement2D = pm.MapElement.extend(/** @lends pm.MapElement2D#*/{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgenerateTerrainSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(this._type));\n\n\t\t\tthis._notCompletedSprite = new cc.Sprite(\"MapsPics/mapElement_error_selection.png\");\n\n\t\t\tthis._notCompletedSprite.setPosition(cc.p(this.sprite.getSprite().getContentSize().width/2, this.sprite.getSprite().getContentSize().height/2));\n\t\t\tthis._notCompletedSprite.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tthis._notCompletedSprite.setVisible(false);\n\n\t\t\tthis.sprite.getSprite().addChild(this._notCompletedSprite, 10);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tsetType: function (type)\n\t{\n\t\tthis._type = type;\n\n\t\tif(this.sprite && this.sprite.getSprite())\n\t\t\tthis.sprite.getSprite().setSpriteFrame(pm.spriteUtils.getMapGrassTileFrame(type));\n\t},\n\n\tgetType: function ()\n\t{\n\t\treturn this._type;\n\t}\n});\n","/**\n * @class Interface for all 2D robots controlled by player.\n * @interface\n * @extends pm.PlayerRobot\n */\n\npm.PlayerRobot2D = pm.PlayerRobot.extend(/** @lends pm.PlayerRobot2D#*/{\n\n\t_oldPosition: cc.p(),\n\n\t/**\n\t * Current position of robot\n\t * @type {cc.Point}\n\t */\n\tposition: cc.p(0, 0),\n\t/**\n\t * Current direction of robot\n\t * @type {Number}\n\t */\n\tdirection: 0,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"position\", \"direction\", \"_oldPosition\");\n\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.CMD_INDICATE] = new pm.NativeFunction(this, this._indicate);\n\t},\n\n\t/**\n\t * Checks condition for this robot.\n\t * @param {String} condition\n\t * @param {*} [args] Additional arguments of checking condition.\n\t * @returns {Boolean}\n\t */\n\tcheckCondition: function(condition, args)\n\t{\n\t\tthis.playAnimation(RobotAnimation2D.Indicate, this._endIndicate, this.direction);\n\n\t\treturn pm.AbstractRobot.prototype.checkCondition.call(this, condition, args);\n\t},\n\n\tgetDirectionCount: function() {},\n\n\t_removeFromOldPosition: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif(this._oldPosition.x < map.width && this._oldPosition.y < map.height)\n\t\t{\n\t\t\tif(map.element(this._oldPosition).containsRobot(this))\n\t\t\t\tmap.element(this._oldPosition).removeRobot(this);\n\t\t}\n\t},\n\n\t_removeFromCurrentPosition: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif(this.position.x < map.width && this.position.y < map.height)\n\t\t{\n\t\t\tif(map.element(this.position).containsRobot(this))\n\t\t\t\tmap.element(this.position).removeRobot(this);\n\t\t}\n\t},\n\n\t/**\n * Sets robot position and direction.\n * @param {cc.Point} point Position in element points.\n * @param {Number} direction\n */\n\tsetPosition: function(point, direction)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tthis._removeFromCurrentPosition();\n\n\t\tthis._oldPosition = point;\n\t\tthis.position = point;\n\t\tthis.direction = direction;\n\n\t\tmap.element(point).addRobot(this);\n\t},\n\n\t_turnLeft: function()\n\t{\n\t\tvar newDirection = (this.direction + 1) % this.getDirectionCount();\n\n\t\tthis.playAnimation(RobotAnimation2D.Turn, this._endTurn, [this.direction, newDirection]);\n\n\t\tthis.direction = newDirection;\n\t},\n\n\t_turnRight: function()\n\t{\n\t\tvar newDirection = (this.direction + this.getDirectionCount() - 1) % this.getDirectionCount();\n\n\t\tthis.playAnimation(RobotAnimation2D.Turn, this._endTurn, [this.direction, newDirection]);\n\n\t\tthis.direction = newDirection;\n\t},\n\n\t_indicate: function()\n\t{\n\t\tthis.playAnimation(RobotAnimation2D.Indicate, this._endIndicate, this.direction);\n\t},\n\n\tdestroy: function()\n\t{\n\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\tif(!CORE_BUILD)\n\t\t\tthis.sprite.stopAnimation();\n\t\tthis.playAnimation(RobotAnimation2D.Destroy, this._endIndicate, this.direction, true);\n\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\treturn true;\n\t},\n\n\t_moveTo: function(target, reverse, initialDirection, skipAnimation)\n\t{\n\t\tif(this.isBroken())\n\t\t{\n\t\t\tif(reverse)\n\t\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tthis.updateSprite();\n\t\t\treturn;\n\t\t}\n\n\t\tvar map = this.getMap();\n\n\t\tvar move = true;\n\n\t\tif(!target)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\tfor(var i in map.element(target)._robotsHere)\n\t\t{\n\t\t\tvar r = map.element(target)._robotsHere[i];\n\n\t\t\tif(!(r instanceof pm.AbstractRobot))\n\t\t\t\tcontinue;\n\n\t\t\tif(!r.canMoveOn())\n\t\t\t{\n\t\t\t\tif(!r.interactable())\n\t\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\tmove = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(move)\n\t\t{\n\t\t\tif (initialDirection === undefined)\n\t\t\t\tinitialDirection = this.direction;\n\n\t\t\tvar direction = reverse ? (initialDirection + this.getDirectionCount()/2) % this.getDirectionCount() : initialDirection;\n\n\t\t\tif(!this._canMoveTo(target, direction) && !reverse)\n\t\t\t{\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._oldPosition = this.position;\n\t\t\tthis.position = target;\n\n\t\t\tmap.element(this.position).addRobot(this);\n\n\t\t\tif(!this.isBroken() && !skipAnimation)\n\t\t\t\tthis.playAnimation(RobotAnimation2D.Move, this._endMove, this.position);\n\t\t}\n\t\telse if(!this.isBroken())\n\t\t{\n\t\t\tfor(var i in map.element(target)._robotsHere)\n\t\t\t{\n\t\t\t\tvar r = map.element(target)._robotsHere[i];\n\n\t\t\t\tif(!(r instanceof pm.AbstractRobot))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tr.interact(this, this._endInteract);\n\t\t\t}\n\t\t}\n\t},\n\n\t_endMove: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tfor(var i in map.element(this.position)._robotsHere)\n\t\t{\n\t\t\tvar r = map.element(this.position)._robotsHere[i];\n\n\t\t\tif(!(r instanceof pm.AbstractRobot))\n\t\t\t\tcontinue;\n\n\t\t\tr.interact(this, this._endInteract);\n\t\t}\n\n\t\tthis._removeFromOldPosition();\n\n\t\tthis._oldPosition = this.position;\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endTurn: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endInteract: function(robot)\n\t{\n\t},\n\n\t_endIndicate: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_move: function()\n\t{\n\t\tvar nextPos = this.getMap().getNextDirectionalElementPosition(this.position, this.direction);\n\t\tthis._moveTo(nextPos, false);\n\t},\n\n\t_moveReverse: function()\n\t{\n\t\tvar prevPos = this.getMap().getPrevDirectionalElementPosition(this.position, this.direction);\n\t\tthis._moveTo(prevPos, true);\n\t},\n\n\n\tupdateSprite: function(isBroken)\n\t{\n\t\tif (isBroken === undefined)\n\t\t\tisBroken = false;\n\n\t\tif(!CORE_BUILD)\n\t\t\tif (this.sprite instanceof pm.ObjectSprite2D)\n\t\t\t{\n\t\t\t\tif (!isBroken)\n\t\t\t\t\tthis.sprite.setRealPosition(this.position);\n\t\t\t\telse\n\t\t\t\t\tthis.sprite.setRealPosition(this._oldPosition);\n\n\t\t\t\tthis.sprite.setDirection(this.direction);\n\t\t\t}\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tdirection: this.direction,\n\t\t\tposition: this.position,\n\t\t\tanimation: this.getLastAnimation()\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 13.06.15.\n */\n\n/**\n * @class Sprite wrapper for static sprites for {@link pm.TopologicalSortLayer}.\n * @extends pm.ObjectSprite2D\n * @constructor\n * @param {cc.SpriteFrame} frame\n * @param {Boolean} [isIsometric = false] is sprite drawn in isometric style.\n */\npm.StaticSprite = pm.ObjectSprite2D.extend(/** @lends pm.StaticSprite#*/{\n\n\t_realMinPoint: cc.p(),\n\t_realMaxPoint: cc.p(),\n\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\t},\n\n\tgetMinPoint: function()\n\t{\n\t\treturn this._realMinPoint;\n\t},\n\n\tgetMaxPoint: function()\n\t{\n\t\treturn this._realMaxPoint;\n\t},\n\n\t_calculateRealBBPoints: function()\n\t{\n\t\tthis._realMaxPoint = cc.pointApplyAffineTransform(this._maxPoint, this.sprite.getNodeToParentTransform());\n\t\tthis._realMinPoint = cc.pointApplyAffineTransform(this._minPoint, this.sprite.getNodeToParentTransform());\n\t},\n\n\tsetRealPosition: function(pos, delta)\n\t{\n\t\tpm.ObjectSprite2D.prototype.setRealPosition.call(this, pos, delta);\n\t\tthis._calculateRealBBPoints();\n\t},\n\n\t/**\n * Stops animation\n * @function\n * @name pm.DynamicSprite#stopAnimation\n */\n\tstopAnimation: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.sprite.stopAllActions();\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * Common animations of 2D robots.\n * @readonly\n * @enum {String}\n */\nvar RobotAnimation2D = {\n\tTurn: \"turn\",\n\tMove: \"move\",\n\tDestroy: \"destroy\",\n\tIndicate: \"indicate\"\n};\n\n/**\n * Enum for colors\n * @enum {String}\n */\nvar RobotColorList2D = {\n\tGreen: cc.color(142, 241, 60),\n\tOrange: cc.color(255, 183, 98),\n\tBlue: cc.color(98, 255, 255),\n\tPink: cc.color(255, 98, 255),\n\tLength: 4\n};\n\n/**\n * @class Common interface for 2D robot sprites.
\n * Provides move animations.\n * @interface\n * @extends pm.DynamicSprite\n */\npm.RobotSprite2D = pm.DynamicSprite.extend(/** @lends pm.RobotSprite2D#*/{\n\n\t_activeSprite: null,\n\t_activeCircleSprite: null,\n\t_commandsSprite: null,\n\t_commandsCount: null,\n\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\n\t\tthis._activeSprite = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(\"activeRobotArrow\"));\n\n\t\tthis._activeSprite.setPosition(this._getActiveSpritePosition());\n\t\tthis._activeSprite.setVisible(false);\n\n\t\tthis.sprite.addChild(this._activeSprite);\n\n\t\tthis._activeCircleSprite = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(\"activeRobotCircle\"));\n\n\t\tthis._activeCircleSprite.setPosition(cc.p(this._getActiveSpritePosition().x,\n\t\t\tthis._getActiveSpritePosition().y + (this._activeSprite.height + this._activeCircleSprite.height) / 2));\n\t\tthis._activeCircleSprite.setVisible(false);\n\n\t\tthis.sprite.addChild(this._activeCircleSprite);\n\n\t\tthis._commandsSprite = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(\"commandsNumber\"));\n\n\t\tthis._commandsSprite.setPosition(this._getCommandsSpritePosition());\n\t\tthis._commandsSprite.setVisible(false);\n\n\t\tthis.sprite.addChild(this._commandsSprite);\n\n\t\tthis._commandsCount = new ccui.Text(\"\", pm.settings.fontBoldName, pm.settings.fontSize);\n\t\tthis._commandsCount.setColor(cc.color(1, 1, 180));\n\t\tthis._commandsCount.setAnchorPoint(cc.p(0.5, 0.5));\n\n\t\tif (cc.sys.isNative)\n\t\t\tthis._commandsCount.setNormalizedPosition(cc.p(0.5, 0.5));\n\t\telse\n\t\t\tthis._commandsCount.setNormalizedPosition(cc.p(0.5, 0.42));\n\n\t\tthis._commandsCount.setNormalizedPosition(cc.p(0.5, 0.46));\n\t\tthis._commandsSprite.addChild(this._commandsCount);\n\t},\n\n\t_getFrameName: function(direction) { return \"\"; },\n\n\t_getDestroyAnimationName: function(direction) { return \"\"; },\n\n\t_getIndicateAnimationName: function(direction) { return \"\"; },\n\n\tsetDirection: function(direction) {},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(0, 0);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(0, 0);\n\t},\n\n\tsetActive: function(flag)\n\t{\n\t\tif (!this._commandsSprite.isVisible())\n\t\t\tthis._activeCircleSprite.setVisible(flag);\n\n\t\tthis._activeSprite.setVisible(flag);\n\t},\n\n\tshowCommands: function(flag, count)\n\t{\n\t\tif (flag && MethodStackLayer.opened)\n\t\t\treturn;\n\n\t\tif (flag)\n\t\t\tthis._commandsCount.setString(count);\n\n\t\tthis._commandsSprite.setVisible(flag);\n\n\t\tif (this._activeCircleSprite.isVisible() && flag === true)\n\t\t\tthis._activeCircleSprite.setVisible(false);\n\n\t\tif (!this._activeCircleSprite.isVisible() && flag === false && this._activeSprite.isVisible())\n\t\t\tthis._activeCircleSprite.setVisible(true);\n\t},\n\n\tindicateCommands: function(stepCount)\n\t{\n\t\tthis.showCommands(true, stepCount);\n\n\t\tsetTimeout(this.showCommands.bind(this), pm.RobotSprite2D.SHOW_COMMANDS_TIMEOUT, false)\n\t},\n\n\tsetSpriteColor: function(id)\n\t{\n\t\tthis._activeSprite.setColor(pm.RobotSprite2D.getRobotColor(id));\n\t\tthis._activeCircleSprite.setColor(pm.RobotSprite2D.getRobotColor(id));\n\t\tthis._commandsSprite.setColor(pm.RobotSprite2D.getRobotColor(id));\n\t},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase RobotAnimation2D.Turn: this._turn(args[0], args[1], callback, target); break;\n\t\t\tcase RobotAnimation2D.Move: this._move(args, callback, target); break;\n\t\t\tcase RobotAnimation2D.Destroy: this._destroy(args, callback, target); break;\n\t\t\tcase RobotAnimation2D.Indicate: this._indicate(args, callback, target); break;\n\t\t}\n\t},\n\n\tgetAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase RobotAnimation2D.Move: return this._getMoveAnimation(args, callback, target); break;\n\t\t}\n\t},\n\n\t_turn: function(oldDirection, curDirection, endCallback, target) {},\n\n\t_move: function(pos, endCallback, target)\n\t{\n\t\tvar sequenceAnimation = this._getMoveAnimation(pos, endCallback, target);\n\n\t\tthis.getSprite().runAction(sequenceAnimation);\n\t},\n\n\t_getMoveAnimation: function(pos, endCallback, target)\n\t{\n\t\tvar targetPos = this.getRealPosition(pos);\n\t\tvar callback = cc.callFunc(endCallback, target);\n\t\tvar moveEnd = cc.callFunc(function()\n\t\t{\n\t\t\tthis._needToUpdateZOrder = false;\n\t\t}, this);\n\n\t\tvar moveRobot = cc.moveTo(pm.settings.getAnimationSpeed(), targetPos);\n\n\t\tthis._needToUpdateZOrder = true;\n\n\t\treturn cc.sequence(moveRobot, moveEnd, callback);\n\t},\n\n\t_transport: function(target)\n\t{\n\t\tvar pos = this.getRealPosition(target);\n\t\tthis.getSprite().setPosition(pos.x, pos.y);\n\t},\n\n\t_destroy: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(this._getDestroyAnimationName(direction));\n\t\tanimation.setDelayPerUnit(0.1);\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar end = new cc.CallFunc(endCallback, target);\n\t\tthis.sprite.runAction( new cc.Sequence(animate, end));\n\n\t\tthis.showCommands(true, target.stepCount);\n\t},\n\n\t_indicate: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(this._getIndicateAnimationName(direction));\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar end = new cc.CallFunc(endCallback, target);\n\t\tthis.sprite.runAction( new cc.Sequence(animate, end));\n\t}\n});\n\npm.RobotSprite2D.getRobotColor = function(id)\n{\n\tswitch(id % RobotColorList2D.Length)\n\t{\n\t\tcase 0: return RobotColorList2D.Green;\n\t\tcase 1: return RobotColorList2D.Orange;\n\t\tcase 2: return RobotColorList2D.Blue;\n\t\tcase 3: return RobotColorList2D.Pink;\n\t}\n}\n\npm.RobotSprite2D.SHOW_COMMANDS_TIMEOUT = 6000;\n","/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n\n/**\n * @class Common interface for 2D iso robot sprites.
\n * Provides move animations.\n * @interface\n * @extends pm.RobotSprite2D\n */\npm.IsoRobotSprite = pm.RobotSprite2D.extend(/** @lends pm.IsoRobotSprite#*/{\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\n\t\tthis.setOrientation(pm.MapLayer2D.Orientation.Iso);\n\t},\n\n\t_getTurnAnimationName: function(oldDirection, curDirection){ return \"\"; },\n\n\tsetDirection: function(direction)\n\t{\n\t\tif(direction >= 0)\n\t\t\tthis.sprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(direction)));\n\t\telse\n\t\t\tcc.log(\"Incorrect robot direction\");\n\t},\n\n\t_turn: function(oldDirection, curDirection, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(this._getTurnAnimationName(oldDirection, curDirection));\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\t\tvar turnEnd = new cc.CallFunc(endCallback, target);\n\t\tthis.sprite.runAction( new cc.Sequence(animate, turnEnd));\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class Common interface for 2D ortho robot sprites.
\n * Provides move animations.\n * @interface\n * @extends pm.RobotSprite2D\n */\npm.OrthoRobotSprite = pm.RobotSprite2D.extend(/** @lends pm.OrthoRobotSprite#*/{\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\n\t\tthis.setOrientation(pm.MapLayer2D.Orientation.Ortho);\n\n\t\tthis._minPoint = cc.p(0, this.sprite.height);\n\t\tthis._maxPoint = cc.p(this.sprite.width, 0);\n\t},\n\n\t_getTurnAngle: function(direction) {},\n\n\tsetDirection: function(direction)\n\t{\n\t\tif(direction >= 0)\n\t\t{\n\t\t\tthis.sprite.setRotation(this._getTurnAngle(direction));\n\t\t\tthis._commandsSprite.setRotation(-this._getTurnAngle(direction));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcc.log(\"Incorrect robot direction\");\n\t\t}\n\t},\n\n\t_turn: function(oldDirection, curDirection, endCallback, target)\n\t{\n\t\tvar turn = cc.rotateTo(pm.settings.getAnimationSpeed(), this._getTurnAngle(curDirection));\n\t\tvar turnEnd = cc.callFunc(endCallback, target);\n\t\tthis.sprite.runAction(cc.sequence(turn, turnEnd));\n\n\t\tthis._commandsSprite.runAction(cc.rotateTo(pm.settings.getAnimationSpeed(), -this._getTurnAngle(curDirection)));\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.17.\n */\n\n/**\n * @class Functions for any module.\n * @interface\n * @extends cc.Class\n */\n\npm.ModuleInfo = cc.Class.extend(/** @lends pm.ModuleInfo# */{\n\n\t/**\n * Returns type of Module\n * @returns {String}\n */\n\tgetType: function () {},\n\n\tgetBackgroundParameters: function ()\n\t{\n\t\treturn{\n\t\t\tcolor: cc.color(46, 84, 167),\n\n\t\t\tcenterImage: \"Background/Levels/repair_center.png\"\n\t\t};\n\t},\n\n\t/**\n * Generates empty map for level with robot.\n * @param {pm.data.AbstractLevel} level\n * @returns {pm.data.AbstractMap}\n */\n\tgenerateEmptyMap: function (level) {},\n\n\t_fillLevelData: function(level)\n\t{\n\t\tlevel.startRobotIndex = 0;\n\n\t\tlevel.robots[0].id = 0;\n\t\tlevel.robots[0].groupID = 0;\n\t\tlevel.robots[0].parentLevel = level;\n\n\t\tlevel.programData[0] = new pm.data.ProgramInfo();\n\t\tlevel.programData[0].currentIndex = 0;\n\n\t\tlevel.programData[0].programDataArray[0] = pm.appUtils.generateProgramData();\n\n\t\tthis._fillRobotProgramData(level.robots[0]);\n\n\t\tlevel.startMapIndex = 0;\n\t\tlevel.maps.push(this.generateEmptyMap(level));\n\t},\n\n\t_fillRobotProgramData: function(robot) {},\n\n\t/**\n * Generates empty level.\n * @returns {pm.data.AbstractLevel}\n */\n\tgenerateEmptyLevel: function () {},\n\n\t/**\n * Returns Map ObjectType->Object sprite filename\n * @returns {Object}\n */\n\tgetObjectsInfo: function() {},\n\n\t/**\n * Returns RobotType->Robot sprite filename\n * @returns {Object}\n */\n\tgetRobotsInfo: function () {},\n\n\t/**\n * Returns robot mathod name\n * @param {String} methodName\n * @returns {String}\n */\n\n\tgetRobotMethodName: function (methodName)\n\t{\n\t\treturn LocalizedString(methodName);\n\t},\n\t/**\n * Returns robot mathod name\n * @param {String} methodName\n * @returns {String}\n */\n\n\tgetRobotConditionName: function (condName)\n\t{\n\t\treturn LocalizedString(condName);\n\t},\n\n\t/**\n\t * Returns robot sprite sheet\n\t * @param {String} robotType type of Robot\n\t * @returns {String}\n\t */\n\n\tgetRobotSpriteSheet: function (robotType) {},\n\n\t/**\n * Returns setting layer for robot in editor\n * @param {String} robotType type of Robot\n * @param {Object} object Robot\n * @returns {PlayerRobotSettingsLayer}\n */\n\tgetSettings: function (robotType, object) {},\n\n\t/**\n\t * Returns extra settings for level in editor\n\t * @param {String} type Type of this level\n\t * @param {String} level Level\n\t */\n\tgetExtraLevelSettings: function (level)\n\t{\n\t\treturn null;\n\t},\n\n\t/**\n\t * Returns extra settings for map in editor\n\t * @param {String} type Type of this level\n\t * @param {*} target Target\n\t */\n\tgetExtraMapSettings: function (target)\n\t{\n\t\treturn null;\n\t},\n\n\t/**\n\t * Returns extra info for level\n\t * @param {String} type Type of this level\n\t * @param {String} level Level\n\t */\n\tgetExtraInfo: function (level)\n\t{\n\t\treturn null;\n\t},\n\n\t/**\n * Returns dictionary with map elements types\n * @returns {Object}\n */\n\tgetMapElementsType: function() {},\n\n\t/**\n * Returns Localized name of robot\n * @param {String} robotType type of robot\n * @returns {String}\n */\n\tgetRobotDisplayedName: function (robotType) {},\n\n\t/**\n * Returns Localized name of level\n * @returns {String}\n */\n\tgetDisplayedNames: function() {},\n\n\t/**\n * Returns path to tileset\n * @param {String} tileset\n * @returns {String}\n */\n\tgetMapTileset: function (tileset) {},\n\n\t/**\n * Returns array of Methods and conditions of robot\n * @param {String} robotType Type of robot\n * @returns {String}\n */\n\tgetResources: function () {},\n\n\t/**\n * Generates Object for type\n * @param {String} objectType Type of Object\n * @returns {Object}\n */\n\tgenerateObject: function (objectType) {},\n\n\t/**\n * Generates Robot for type\n * @param {String} robotType Type of robot\n * @returns {Robot}\n */\n\tgenerateRobot: function (robotType) {},\n\n\tstopResizingWidth: function (map, side)\n\t{\n\t\treturn false;\n\t},\n\n\tstopDecreasingHeight: function (map, side)\n\t{\n\t\treturn false;\n\t},\n\n\tstopResizingHeight: function (map, side)\n\t{\n\t\treturn false;\n\t},\n\n\tcanUseMethodStack: function()\n\t{\n\t\treturn true;\n\t},\n\n\tgetAffineVector: function(dif)\n\t{\n\t\treturn cc.p(dif.x / Math.sqrt(2) - dif.y / (Math.sqrt(2) * 2), dif.x / Math.sqrt(2) + dif.y / (Math.sqrt(2) * 2));\n\t},\n\n\t/**\n * Adds localized strings of module for language.\n * @param {String} language Localized string language\n * @returns {String}\n */\n\tgetLocalization: function (language) {},\n\n\tgenerateTaskLayer: function (level, task) {},\n\n\tgetTaskLabel: function () {},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn true;\n\t},\n\n\taddLevelTask: function (level) {},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\t/**\n * Returns sprite frame of depth lines\n */\n\tgetDepthLineSprites: function() {},\n\n\t/**\n * Returns layout with changeable conditions for level settings\n * @param {pm.PlayerRobot} robot Current robot\n * @param callback\n * @param target\n * @returns {ccui.Layout}\n */\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\t/**\n * Returns function for comparing conditions in array\n */\n\tcompareConditions: function() {},\n\n\tgetLessonMapLayer: function() {}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.17.\n */\n\n/**\n * How modulation system works\n * Firstly ypu need to create new module file, which will contain functions from pm.ModuleInfo and which extends it\n * In each of them you need to write features of your module.\n * Then you need to register your module.\n * For that you need after class of your module call function pm.moduleUtils.register(new ).\n * This function adds your module to dictionary _modules of all modules and bind it with type of module.\n * Then in project, when function from pm.moduleUtils from type will be called, it will automatically called and made\n * in module of this type, because function will be called in module, which key is type: return this._modules[type].\n */\n\n/**\n * Functions, which each module need to contain\n * @namespace\n */\npm.moduleUtils = {\n\t_modules: {},\n\n\t/**\n\t * Adds your module to dictionary _modules of all modules and\n\t * bind it with type of module.\n\t * @param {cc.Class} module\n\t */\n\tregister: function (module)\n\t{\n\t\tthis._modules[module.getType()] = module;\n\t},\n\n\tgetModuleType: function (type)\n\t{\n\t\treturn this._modules[type].getType();\n\t},\n\n\tgetBackgroundParameters: function (type)\n\t{\n\t\treturn this._modules[type].getBackgroundParameters();\n\t},\n\n\t/**\n * Generates empty level of this level type.\n * @param {String} type Type of this level\n * @returns {pm.data.AbstractLevel}\n */\n\tgenerateEmptyLevel: function (type)\n\t{\n\t\treturn this._modules[type].generateEmptyLevel();\n\t},\n\n\t/**\n * Generates empty map for level with robot of this level type.\n * @param {String} type Type of this level\n * @param {pm.data.AbstractLevel} level\n * @returns {pm.data.AbstractMap}\n */\n\tgenerateEmptyMap: function (type, level)\n\t{\n\t\treturn this._modules[type].generateEmptyMap(level);\n\t},\n\n\t/**\n * Returns Map ObjectType->Object sprite filename of this level type.\n * @param {String} type Type of this level\n * @returns {Object}\n */\n\tgetObjectsInfo: function (type)\n\t{\n\t\treturn this._modules[type].getObjectsInfo();\n\t},\n\n\t/**\n * Returns RobotType->Robot sprite filename of this level type.\n * @param {String} type Type of this level\n * @returns {Object}\n */\n\tgetRobotsInfo: function (type)\n\t{\n\t\treturn this._modules[type].getRobotsInfo();\n\t},\n\n\t/**\n * Returns robot sprite sheet of this level type.\n * @param {String} type Type of this level\n * @param {String} robotType type of Robot\n * @returns {String}\n */\n\tgetRobotSpriteSheet: function (type, robotType)\n\t{\n\t\treturn this._modules[type].getRobotSpriteSheet(robotType);\n\t},\n\n\t/**\n * Returns setting layer for robot in editor of this level type.\n * @param {String} type Type of this level\n * @param {String} robotType type of Robot\n * @param {Object} object Robot\n * @returns {PlayerRobotSettingsLayer}\n */\n\tgetSettings: function (type, robotType, object)\n\t{\n\t\treturn this._modules[type].getSettings(robotType, object);\n\t},\n\n\t/**\n\t * Returns extra settings for level in editor of this level type.\n\t * @param {String} type Type of this level\n\t * @param {String} level Level\n\t */\n\tgetExtraLevelSettings: function (type, level)\n\t{\n\t\treturn this._modules[type].getExtraLevelSettings(level);\n\t},\n\n\t/**\n\t * Returns extra settings for map in editor of this level type.\n\t * @param {String} type Type of this level\n\t * @param {*} target Target\n\t */\n\tgetExtraMapSettings: function (type, target)\n\t{\n\t\treturn this._modules[type].getExtraMapSettings(target);\n\t},\n\n\t/**\n\t * Returns extra info for level of this level type.\n\t * @param {String} type Type of this level\n\t * @param {String} level Level\n\t */\n\tgetExtraInfo: function (type, level)\n\t{\n\t\treturn this._modules[type].getExtraInfo(level);\n\t},\n\n\t/**\n * Returns dictionary with map elements types of this level type.\n * @param {String} type Type of this level\n * @returns {Object}\n */\n\tgetMapElementsType: function(type)\n\t{\n\t\treturn this._modules[type].getMapElementsType();\n\t},\n\n\t/**\n * Returns Localized name of robot of this level type.\n * @param {String} type Type of this level\n * @param {String} robotType type of robot\n * @returns {String}\n */\n\tgetRobotDisplayedName: function (type, robotType)\n\t{\n\t\treturn this._modules[type].getRobotDisplayedName(robotType);\n\t},\n\t/**\n\t * Returns robot mathod name\n\t * @param {String} methodName\n\t * @returns {String}\n\t */\n\n\tgetRobotMethodName: function (type, methodName, level)\n\t{\n\t\treturn this._modules[type].getRobotMethodName(methodName, level);\n\t},\n\n\t/**\n\t * Returns robot condiiton name\n\t * @param {String} condName\n\t * @returns {String}\n\t */\n\n\tgetRobotConditionName: function (type, condName)\n\t{\n\t\treturn this._modules[type].getRobotConditionName(condName);\n\t},\n\n\t/**\n * Returns array of names of levels\n * @returns {Array}\n */\n\tgetLevelNames: function ()\n\t{\n\t\tvar ret = [];\n\t\tfor(var module in this._modules)\n\t\t\tret.push(this._modules[module].getDisplayedNames());\n\t\treturn ret;\n\t},\n\n\t/**\n * Returns array of types of levels\n * @returns {Array}\n */\n\tgetLevelTypes: function ()\n\t{\n\t\tvar ret = [];\n\t\tfor(var module in this._modules)\n\t\t\tret.push(this._modules[module].getType());\n\t\treturn ret;\n\t},\n\n\t/**\n\t * Returns array of lessonMapLayers\n\t * @returns {Array}\n\t */\n\tgetLessonMapLayers: function ()\n\t{\n\t\tvar ret = [];\n\n\t\tfor(var module in this._modules)\n\t\t{\n\t\t\tvar mapLayer = this._modules[module].getLessonMapLayer();\n\n\t\t\tif (mapLayer)\n\t\t\t\tret.push(mapLayer);\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t/**\n * Returns path to tileset of this level type.\n * @param {String} type Type of this level\n * @param {String} tileset\n * @returns {String}\n */\n\tgetMapTileset: function (type, tyleset)\n\t{\n\t\treturn this._modules[type].getMapTileset(tyleset);\n\t},\n\n\t/**\n * Returns array of Methods and conditions of robot of this level type.\n * @param {String} type Type of this level\n * @param {String} robotType Type of robot\n * @returns {String}\n */\n\tgetResources: function (type)\n\t{\n\t\treturn this._modules[type].getResources();\n\t},\n\n\t/**\n * Generates Object for type of this level type.\n * @param {String} type Type of this level\n * @param {String} objectType Type of Object\n * @returns {Object}\n */\n\tgenerateObject: function (type, objectType)\n\t{\n\t\treturn this._modules[type].generateObject(objectType);\n\t},\n\n\t/**\n * Generates Robot for type of this level type.\n * @param {String} type Type of this level\n * @param {String} robotType Type of robot\n * @returns {Robot}\n */\n\tgenerateRobot: function (type, robotType)\n\t{\n\t\treturn this._modules[type].generateRobot(robotType);\n\t},\n\n\tstopResizingWidth: function (type, map, side)\n\t{\n\t\treturn this._modules[type].stopResizingWidth(map, side);\n\t},\n\n\tstopResizingHeight: function (type, map, side)\n\t{\n\t\treturn this._modules[type].stopResizingHeight(map, side);\n\t},\n\n\tstopDecreasingHeight: function (type, map, side)\n\t{\n\t\treturn this._modules[type].stopDecreasingHeight(map, side);\n\t},\n\n\tcanNotDragOrAddObject: function (type, map, point)\n\t{\n\t\treturn this._modules[type].canNotDragOrAddObject(map, point);\n\t},\n\n\tcanUseMethodStack: function (type)\n\t{\n\t\treturn this._modules[type].canUseMethodStack();\n\t},\n\n\tgetAffineVector: function (type, dif)\n\t{\n\t\treturn this._modules[type].getAffineVector(dif);\n\t},\n\n\t/**\n * Adds localized strings of all modules for language.\n * @param {String} localizedStrings\n * @param {String} language Localized string language\n * @returns {String}\n */\n\textendLocalization: function(localizedStrings, language)\n\t{\n\t\tfor(var module in this._modules)\n\t\t{\n\t\t\tvar moduleLoc = this._modules[module].getLocalization(language);\n\n\t\t\tfor (var loc in moduleLoc)\n\t\t\t{\n\t\t\t\tif (localizedStrings[loc])\n\t\t\t\t\tcc.warn(\"Duplicate localization from module {0} for key: {1}!\".format(module, loc));\n\n\t\t\t\tlocalizedStrings[loc] = moduleLoc[loc];\n\t\t\t}\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (type, level, task)\n\t{\n\t\treturn this._modules[type].generateTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function (type)\n\t{\n\t\treturn this._modules[type].getTaskLabel();\n\t},\n\n\tneedToRotateRobot: function(type)\n\t{\n\t\treturn this._modules[type].needToRotateRobot();\n\t},\n\n\taddLevelTask: function (type, level)\n\t{\n\t\treturn this._modules[type].addLevelTask(level);\n\t},\n\n\taddExtraMethods: function(type, robot, functions)\n\t{\n\t\treturn this._modules[type].addExtraMethods(robot, functions);\n\t},\n\n\tgetDepthLineSprites: function(type)\n\t{\n\t\treturn this._modules[type].getDepthLineSprites();\n\t},\n\n\tgetChangeableConditions: function(type, robot, callback, target)\n\t{\n\t\treturn this._modules[type].getChangeableConditions(robot, callback, target);\n\t},\n\n\tcompareConditions: function(type)\n\t{\n\t\treturn this._modules[type].compareConditions;\n\t}\n};\n","/**\n * Created by Nikita Besshaposhnikov on 03.11.15.\n */\n\n/**\n * This namespace contains functions to work with global robots.\n * @namespace\n */\npm.globalRobotHelper = {\n\n\t/**\n * Creates global robot by type with group data.\n * @param {pm.GlobalRobotType | String} type\n * @param {Object} config - Robot options\n * @returns {pm.GlobalRobot}\n */\n\tcreateRobot: function(type, config)\n\t{\n\t\tvar robot = null;\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Counter: robot = new pm.Counter(); break;\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter: robot = new pm.ExtendedCounter(); break;\n\t\t\tcase pm.GlobalRobotType.GreenFlag: robot = new pm.GreenFlagRobot(); break;\n\t\t\tcase pm.GlobalRobotType.OrangeFlag: robot = new pm.OrangeFlagRobot(); break;\n\t\t\tcase pm.GlobalRobotType.Output: robot = new pm.Output(); break;\n\t\t}\n\n\t\tif(robot)\n\t\t\trobot.configure(config);\n\n\t\treturn robot;\n\t}\n};\n\n/**\n * This enum contains all types of global robots.\n * @readonly\n * @enum {String}\n */\npm.GlobalRobotType = {\n\tCounter: \"counter\",\n\tExtendedCounter: \"e_counter\",\n\tOrangeFlag: \"o_flag\",\n\tGreenFlag: \"g_flag\",\n\tOutput: \"output_field\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 30.09.15.\n */\n\n/**\n * @class This is a common interface for global robots.
\n * This robot is created by level requirements and has data groups for level's robots.
\n * @interface\n * @extends pm.AbstractRobot\n */\npm.GlobalRobot = pm.AbstractRobot.extend(/** @lends pm.GlobalRobot */{\n\n\t_currentRobotID: -1,\n\t_currentRobotGroup: -1,\n\n\t/**\n * Sprite of robot.\n * @type {pm.ObjectSprite}\n */\n\tsprite: {},\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis.id = this.getType();\n\t},\n\n\t/**\n * Virtual method for configure robot.
\n * Called by {@link pm.globalRobotHelper}. Don't call by yourself.\n * @function\n * @param {Object} config\n * @name pm.GlobalRobot#configure\n */\n\tconfigure: function(config) {},\n\n\texecuteNativeFunction: function(functionID, args)\n\t{\n\t\tif(this.nativeFunctionMap[functionID])\n\t\t\tif(args)\n\t\t\t\tthis.nativeFunctionMap[functionID].execute(args);\n\t\t\telse\n\t\t\t\tthis.nativeFunctionMap[functionID].execute();\n\t},\n\n\t/**\n * Plays animation of robot\n * @param animation\n * @param animationCallback\n * @param args\n * @param forced\n */\n\tplayAnimation: function(animation, animationCallback, args, forced)\n\t{\n\t\tthis.setStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\tif(!CORE_BUILD && (!pm.settings.isAnimationDisabled() || forced))\n\t\t{\n\t\t\tif(this.sprite instanceof pm.ObjectSprite2D)\n\t\t\t\tthis.sprite.playAnimation(animationCallback, this, animation, args);\n\t\t}\n\t\telse\n\t\tif(animationCallback)\n\t\t{ setTimeout(animationCallback.bind(this), 0); }\n\t},\n\n\t/**\n * Updates sprite of robot\n */\n\tupdateSprite: function() {},\n\n\t/**\n * Generates robot sprite\n * @function\n * @name pm.GlobalRobot#generateRobotSprite\n * @returns {pm.ObjectSprite}\n */\n\tgenerateRobotSprite: function() {},\n\n\tgetState: function (){},\n\n\tsetState: function (state){}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.02.15.\n */\n/**\n * @class This robot can store some value, inc && dec && clear this value.
\n * Provides own conditions, repeaters and methods.\n * @implements pm.GlobalRobot\n */\npm.Output = pm.GlobalRobot.extend(/** @lends pm.Output# */{\n\ttypeName: \"Output\",\n\n\t_value: 0,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.Output.NativeMethod.Write] = new pm.NativeFunction(this, this._write, 1);\n\t\tthis.nativeFunctions.push(pm.Output.NativeMethod.Write);\n\t\t},\n\n\t_write: function(number)\n\t{\n\t\tthis._value = number;\n\t\tthis.playAnimation(pm.CounterSprite.Animation.IncValue, this._endPlayingAnimation, number);\n\t},\n\n\tgetValue: function()\n\t{\n\t\treturn this._value;\n\t},\n\n\treset: function()\n\t{\n\t\tthis._value = 0;\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.CounterSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tswitch(condition)\n\t\t{\n\t\t\tcase pm.Counter.Condition.Empty: return this._counter === 0;\n\t\t\tcase pm.Counter.Condition.NotEmpty: return this._counter !== 0;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_getRepeaterValueInternal: function(repeater, args)\n\t{\n\t\tif(repeater === pm.Counter.Repeater.Value)\n\t\t\treturn this._counter;\n\n\t\treturn 0;\n\t},\n\n\tupdateSprite: function()\n\t{\n\t\tthis.playAnimation(pm.CounterSprite.Animation.Set, null, this._counter, true);\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgetType: function() { return pm.GlobalRobotType.Output; },\n\n\tgetState: function ()\n\t{\n\t\treturn this._counter;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state !== this._counter)\n\t\t{\n\t\t\tif (state === this._counter - 1)\n\t\t\t{\n\t\t\t\tthis._dec();\n\t\t\t}\n\t\t\telse if (state === this._counter + 1)\n\t\t\t{\n\t\t\t\tthis._inc();\n\t\t\t}\n\t\t\telse if (state === 0)\n\t\t\t{\n\t\t\t\tthis._counter = 0;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.Empty, this._endPlayingAnimation);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._counter = state;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.IncValue, this._endPlayingAnimation, this._counter);\n\t\t\t}\n\t\t}\n\t},\n\n\t_endPlayingAnimation: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_setStonesByValue: function(value)\n\t{\n\t\tif (value < 1)\n\t\t{\n\t\t\tthis._stonesSprite.setOpacity(0);\n\t\t\treturn;\n\t\t}\n\t\telse\n\t\t{ this._stonesSprite.setOpacity(255); }\n\n\t\tif(value === 1)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones0.png\"));\n\t\telse if (value === 2)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones1.png\"));\n\t\telse if (value > 2)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones2.png\"));\n\t},\n\n\tsetNotCompleted: function(flag){\n\n\t}\n});\n\npm.Output.NativeMethod =\n{\n\tWrite: \"output_write\"\n};\n","\npm.data.OutputTask = pm.Task.extend(/** @lends pm.data.OutputTask*/ {\n\ttypeName: \"OutputTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar value = this.data[mapIndex];\n\t\tvar robot = null;\n\n\t\tfor(var i =0 ; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif(this._level.globalRobots[i].getType() === pm.GlobalRobotType.Output)\n\t\t\t\trobot = this._level.globalRobots[i];\n\t\t}\n\n\t\tif(robot.getValue() !== value)\n\t\t\t\treturn [robot];\n\t\treturn [];\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = data;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.02.15.\n */\n/**\n * @class This robot can store some value, inc && dec && clear this value.
\n * Provides own conditions, repeaters and methods.\n * @implements pm.GlobalRobot\n */\npm.Counter = pm.GlobalRobot.extend(/** @lends pm.Counter# */{\n\ttypeName: \"Counter\",\n\n\t_counter: 0,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.Counter.NativeMethod.Inc] = new pm.NativeFunction(this, this._inc);\n\t\tthis.nativeFunctionMap[pm.Counter.NativeMethod.Dec] = new pm.NativeFunction(this, this._dec);\n\t\tthis.nativeFunctionMap[pm.Counter.NativeMethod.Empty] = new pm.NativeFunction(this, this._empty);\n\n\t\tthis.nativeFunctions.push(pm.Counter.NativeMethod.Inc, pm.Counter.NativeMethod.Dec,\n\t\t\tpm.Counter.NativeMethod.Empty);\n\n\t\tthis.conditions.push(pm.Counter.Condition.Empty, pm.Counter.Condition.NotEmpty);\n\n\t\tthis.repeaters.push(pm.Counter.Repeater.Value);\n\t},\n\n\t_inc: function()\n\t{\n\t\t++this._counter;\n\n\t\tthis.playAnimation(pm.CounterSprite.Animation.IncValue, this._endPlayingAnimation, this._counter);\n\t},\n\n\t_dec: function()\n\t{\n\t\tif (this._counter > 0)\n\t\t\t--this._counter;\n\n\t\tthis.playAnimation(pm.CounterSprite.Animation.DecValue, this._endPlayingAnimation, this._counter);\n\t},\n\n\t_empty: function()\n\t{\n\t\tthis._counter = 0;\n\n\t\tthis.playAnimation(pm.CounterSprite.Animation.Empty, this._endPlayingAnimation);\n\t},\n\n\treset: function()\n\t{\n\t\tthis._counter = 0;\n\n\t\tthis.playAnimation(pm.CounterSprite.Animation.Reset, this._endPlayingAnimation, null, true);\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endPlayingAnimation: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.CounterSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tswitch(condition)\n\t\t{\n\t\t\tcase pm.Counter.Condition.Empty: return this._counter === 0;\n\t\t\tcase pm.Counter.Condition.NotEmpty: return this._counter !== 0;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_getRepeaterValueInternal: function(repeater, args)\n\t{\n\t\tif(repeater === pm.Counter.Repeater.Value)\n\t\t\treturn this._counter;\n\n\t\treturn 0;\n\t},\n\n\tupdateSprite: function()\n\t{\n\t\tthis.playAnimation(pm.CounterSprite.Animation.Set, null, this._counter, true);\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgetType: function() { return pm.GlobalRobotType.Counter; },\n\n\tgetState: function ()\n\t{\n\t\treturn this._counter;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state !== this._counter)\n\t\t{\n\t\t\tif (state === this._counter - 1)\n\t\t\t{\n\t\t\t\tthis._dec();\n\t\t\t}\n\t\t\telse if (state === this._counter + 1)\n\t\t\t{\n\t\t\t\tthis._inc();\n\t\t\t}\n\t\t\telse if (state === 0)\n\t\t\t{\n\t\t\t\tthis._counter = 0;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.Empty, this._endPlayingAnimation);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._counter = state;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.IncValue, this._endPlayingAnimation, this._counter);\n\t\t\t}\n\t\t}\n\t}\n});\n\npm.Counter.Condition = {\n\tEmpty: \"cnt_empty\",\n\tNotEmpty: \"cnt_not_empty\"\n};\n\npm.Counter.Repeater = {Value: \"cnt_value\"};\n\npm.Counter.NativeMethod =\n{\n\tInc: \"cnt_inc\",\n\tDec: \"cnt_dec\",\n\tEmpty: \"empty_counter\",\n\tFill: \"fill_counter\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 09.02.15.\n */\n\n/**\n * @class Sprite for counter robot.\n * @implements pm.ObjectSprite2D\n */\npm.CounterSprite = pm.ObjectSprite2D.extend(/** @lends pm.CounterSprite# */{\n\t_countLabel: null,\n\n\t_stonesSprite: null,\n\t_lightSprite: null,\n\t_counterValue: null,\n\n\tctor: function()\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(this._getSpriteFramesFile());\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Robot/counter_stones.plist\");\n\n\t\tthis._super();\n\n\t\tvar front = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(this._getFrontFrameName()));\n\t\tfront.setAnchorPoint(0, 0);\n\t\tfront.setPosition(0, 1);\n\n\t\tthis.getSprite().setContentSize(front.getContentSize());\n\n\t\tthis.getSprite().addChild(front, 2);\n\n\t\tvar back = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(this._getBackFrameName()));\n\t\tback.setAnchorPoint(0, 0);\n\t\tback.setPosition(0, 0);\n\n\t\tthis.getSprite().addChild(back, 0);\n\n\t\tthis._lightSprite = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(this._getLightFrameName()));\n\t\tthis.getSprite().addChild(this._lightSprite, -1);\n\n\t\tthis._lightSprite.setAnchorPoint(0.5, 0);\n\t\tthis._lightSprite.setPosition(this._getLightX(), this._getLightY());\n\n\t\tthis._lightSprite.setOpacity(0);\n\n\t\tthis.getSprite().setAnchorPoint(0, 0);\n\n\t\tthis._countLabel = new ccui.Text(\"0\", pm.CounterSprite.FONT_NAME, pm.CounterSprite.FONT_SIZE);\n\t\tthis._countLabel.setTextColor(pm.settings.levelFontColor);\n\t\tthis._countLabel.setPosition(this._getCenterX(), this._getValueLabelY());\n\n\t\tthis.getSprite().addChild(this._countLabel, 2);\n\n\t\tthis._stonesSprite = new cc.Sprite();\n\t\tthis.getSprite().addChild(this._stonesSprite, 1);\n\n\t\tthis._stonesSprite.setAnchorPoint(0.5, 0);\n\t\tthis._stonesSprite.setPosition(this._getCenterX(), this._getBottomY());\n\t},\n\n\t_getSpriteFramesFile: function()\n\t{\n\t\treturn \"Robot/counter.plist\";\n\t},\n\n\t_getBackFrameName: function()\n\t{\n\t\treturn \"counter_back.png\";\n\t},\n\n\t_getFrontFrameName: function()\n\t{\n\t\treturn \"counter_front.png\";\n\t},\n\n\t_getLightFrameName: function()\n\t{\n\t\treturn \"counter_light.png\";\n\t},\n\n\t_getCenterX: function() { return 51; },\n\t_getValueLabelY: function() { return 112; },\n\t_getBottomY: function() { return 45; },\n\t_getBottomStoneAniY: function() { return 45; },\n\t_getTopY: function() { return 300; },\n\t_getLightX: function() { return this.getSprite().getContentSize().width / 2 - 1; },\n\t_getLightY: function() { return 2; },\n\n\tplayAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase pm.CounterSprite.Animation.IncValue: this._incValue(args, endCallBack, target); break;\n\t\t\tcase pm.CounterSprite.Animation.DecValue: this._decValue(args, endCallBack, target); break;\n\t\t\tcase pm.CounterSprite.Animation.Empty: this._empty(endCallBack, target); break;\n\t\t\tcase pm.CounterSprite.Animation.Set: this._setValue(args); break;\n\t\t\tcase pm.CounterSprite.Animation.Reset: this._reset(); break;\n\t\t}\n\t},\n\n\t_setStonesByValue: function(value)\n\t{\n\t\tif (value < 1)\n\t\t{\n\t\t\tthis._stonesSprite.setOpacity(0);\n\t\t\treturn;\n\t\t}\n\t\telse\n\t\t{ this._stonesSprite.setOpacity(255); }\n\n\t\tif(value === 1)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones0.png\"));\n\t\telse if (value === 2)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones1.png\"));\n\t\telse if (value > 2)\n\t\t\tthis._stonesSprite.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"counter_stones2.png\"));\n\t},\n\n\t_incValue: function(value, callback, target)\n\t{\n\t\tvar stone = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"counter_stone{0}.png\".format(this._counterValue % 3)));\n\n\t\tthis.getSprite().addChild(stone, 1);\n\n\t\tstone.setPosition(this._getCenterX(), this._getTopY());\n\t\tstone.setOpacity(0);\n\n\t\tvar showIn = new cc.FadeIn(pm.settings.getAnimationSpeed());\n\t\tvar move = new cc.MoveTo(3 * pm.settings.getAnimationSpeed(), this._getCenterX(), this._getBottomStoneAniY());\n\t\tvar remove = new cc.CallFunc(function() { this._setStonesByValue(value);stone.removeFromParent();callback.call(target); }, this);\n\n\t\tthis._counterValue = value;\n\n\t\tvar finish = cc.callFunc(this._dysplayValue, this);\n\n\t\tvar action = cc.sequence(cc.spawn(showIn, move), remove, finish);\n\n\t\tstone.runAction(action);\n\t},\n\n\t_dysplayValue: function()\n\t{\n\t\tthis._countLabel.setString(\"{0}\".format(this._counterValue));\n\t},\n\n\t_decValue: function(value, callback, target)\n\t{\n\t\tvar stone = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"counter_stone{0}.png\".format((this._counterValue - 1) % 3)));\n\n\t\tthis.getSprite().addChild(stone, 1);\n\n\t\tstone.setPosition(this._getCenterX(), this._getBottomY());\n\n\t\tthis._setStonesByValue(value);\n\n\t\tvar showOut = new cc.FadeOut(3*pm.settings.getAnimationSpeed());\n\t\tvar move = new cc.MoveTo(3 * pm.settings.getAnimationSpeed(), this._getCenterX(), this._getTopY());\n\t\tvar remove = new cc.CallFunc(function() { stone.removeFromParent();callback.call(target); }, this);\n\n\t\tthis._counterValue = value;\n\n\t\tvar start = cc.callFunc(this._dysplayValue, this);\n\n\t\tvar action = cc.sequence(start, cc.spawn(showOut, move), remove);\n\n\t\tstone.runAction(action);\n\t},\n\n\t_lightAnimation: function(callback)\n\t{\n\t\tvar fadeIn = cc.fadeIn(pm.settings.getAnimationSpeed());\n\t\tvar fadeOut = cc.fadeOut(pm.settings.getAnimationSpeed());\n\t\tvar end = cc.callFunc(callback, this._lightSprite);\n\n\t\tthis._lightSprite.runAction(cc.sequence(fadeIn, fadeOut, end));\n\t},\n\n\t_setValue: function(value)\n\t{\n\t\tthis._countLabel.setString(\"{0}\".format(value));\n\t\tthis._setStonesByValue(value);\n\t},\n\n\t_empty: function(callback, target)\n\t{\n\t\tthis._countLabel.setString(\"0\");\n\n\t\tthis._lightAnimation(function() { this._setStonesByValue(0); callback.call(target); }.bind(this));\n\t},\n\n\t_reset: function()\n\t{\n\t\tthis._countLabel.setString(\"0\");\n\n\t\tthis._setStonesByValue(0);\n\t}\n});\n\n/**\n * Enum for counter robot animations.\n * @readonly\n * @enum {Number}\n */\npm.CounterSprite.Animation = {\n\tIncValue: \"inc\",\n\tDecValue: \"dec\",\n\tEmpty: \"empty\",\n\tReset: \"reset\",\n\tSet: \"set\"\n};\n\npm.CounterSprite.FONT_NAME = pm.fonts.getRealFontName(\"Comfortaa-Regular\");\npm.CounterSprite.FONT_SIZE = 24;\n\npm.CounterSprite.FONT_COLOR = cc.color(51, 0, 102, 255);\n","/**\n * Created by danilaeremin on 14.11.14.\n */\n\n/**\n * @class This robot can store some value, inc && dec && clear this value.
\n * Also can store two additional static values
\n * Provides own conditions, repeaters and methods.\n * @extends pm.Counter\n */\npm.ExtendedCounter = pm.Counter.extend(/** @lends pm.ExtendedCounter# */{\n\ttypeName: \"ExtendedCounter\",\n\n\t_memory: 0,\n\n\t_useCompareConditions: true,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.ExtendedCounter.NativeMethod.MemClear] = new pm.NativeFunction(this, this._memClear);\n\t\tthis.nativeFunctionMap[pm.ExtendedCounter.NativeMethod.MemAdd] = new pm.NativeFunction(this, this._memAdd);\n\t\tthis.nativeFunctionMap[pm.ExtendedCounter.NativeMethod.MemSub] = new pm.NativeFunction(this, this._memSub);\n\t\tthis.nativeFunctionMap[pm.ExtendedCounter.NativeMethod.MemRestore] = new pm.NativeFunction(this, this._memRestore);\n\n\t\tthis.nativeFunctions.push(pm.ExtendedCounter.NativeMethod.MemAdd,\n\t\t\tpm.ExtendedCounter.NativeMethod.MemSub, pm.ExtendedCounter.NativeMethod.MemClear);\n\n\t\tthis.repeaters.push(pm.ExtendedCounter.Repeater.Memory)\n\t\t\t// pm.ExtendedCounter.Repeater.Random);\n\t},\n\n\treconfigure: function(config)\n\t{\n\t\tvar index = this.conditions.indexOf(pm.ExtendedCounter.Condition.LeftLRight);\n\t\tif (index >= 0)\n\t\t\tthis.conditions.splice(index, 1);\n\t\tindex = this.conditions.indexOf(pm.ExtendedCounter.Condition.RightLLeft);\n\t\tif (index >= 0)\n\t\t\tthis.conditions.splice(index, 1);\n\t\tindex = this.conditions.indexOf(pm.ExtendedCounter.Condition.Equal);\n\t\tif (index >= 0)\n\t\t\tthis.conditions.splice(index, 1);\n\t\tindex = this.conditions.indexOf(pm.ExtendedCounter.Condition.NotEqual);\n\t\tif (index >= 0)\n\t\t\tthis.conditions.splice(index, 1);\n\n\t\tthis.configure(config);\n\t},\n\n\tconfigure: function(config)\n\t{\n\t\tif(config.useCompareConditions === undefined)\n\t\t\tthis._useCompareConditions = true;\n\t\telse\n\t\t\tthis._useCompareConditions = config.useCompareConditions;\n\n\t\tif(this._useCompareConditions)\n\t\t{\n\t\t\tthis.conditions.push(pm.ExtendedCounter.Condition.LeftLRight, pm.ExtendedCounter.Condition.RightLLeft,\n\t\t\t\tpm.ExtendedCounter.Condition.Equal, pm.ExtendedCounter.Condition.NotEqual);\n\t\t}\n\t},\n\n\t_memClear: function()\n\t{\n\t\tthis._memory = 0;\n\n\t\tthis.playAnimation(pm.ExtendedCounterSprite.Animation.MemSet, this._endPlayingAnimation, 0);\n\t},\n\n\t_memRestore: function()\n\t{\n\t\tthis._memory = 0;\n\n\t\tthis.playAnimation(pm.ExtendedCounterSprite.Animation.MemSet, this._endPlayingAnimation, this._memory);\n\t},\n\n\t_memAdd: function()\n\t{\n\t\tif(this._counter === 0)\n\t\t\treturn;\n\n\t\tthis._memory += this._counter;\n\n\t\tthis.playAnimation(pm.ExtendedCounterSprite.Animation.MemSet, this._endPlayingAnimation, this._memory);\n\t},\n\n\t_memSub: function()\n\t{\n\t\tif(this._counter === 0)\n\t\t\treturn;\n\n\t\tthis._memory -= this._counter;\n\t\tthis._memory = Math.max(0, this._memory);\n\n\t\tthis.playAnimation(pm.ExtendedCounterSprite.Animation.MemSet, this._endPlayingAnimation, this._memory);\n\t},\n\n\treset: function()\n\t{\n\t\tthis._counter = 0;\n\t\tthis._memory = 0;\n\n\t\tthis.playAnimation(pm.CounterSprite.Animation.Reset, null);\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endPlayingAnimation: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.ExtendedCounterSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tswitch(condition)\n\t\t{\n\t\t\tcase pm.Counter.Condition.Empty: return this._counter === 0;\n\t\t\tcase pm.Counter.Condition.NotEmpty: return this._counter !== 0;\n\t\t\tcase pm.ExtendedCounter.Condition.LeftLRight: return this._memory < this._counter;\n\t\t\tcase pm.ExtendedCounter.Condition.Equal: return this._memory === this._counter;\n\t\t\tcase pm.ExtendedCounter.Condition.RightLLeft: return this._counter < this._memory;\n\t\t\tcase pm.ExtendedCounter.Condition.NotEqual: return this._counter !== this._memory;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_getRepeaterValueInternal: function(repeater, args)\n\t{\n\t\tswitch(repeater)\n\t\t{\n\t\t\tcase pm.Counter.Repeater.Value: return this._counter;\n\t\t\tcase pm.ExtendedCounter.Repeater.Memory: return this._memory;\n\t\t\t// case pm.ExtendedCounter.Repeater.Random: return 1 + Math.round(Math.random() * (this._counter - 1));\n\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\tupdateSprite: function()\n\t{\n\t\tthis.playAnimation(\n\t\t\tpm.CounterSprite.Animation.Set,\n\t\t\tnull,\n\t\t\t[this._counter, this._memory],\n\t\t\ttrue\n\t\t);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgetType: function() { return pm.GlobalRobotType.ExtendedCounter; },\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tcounter: this._counter,\n\t\t\tmemory: this._memory\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tvar counter = state.counter;\n\n\t\tif (counter !== this._counter)\n\t\t{\n\t\t\tif (counter === this._counter - 1)\n\t\t\t{\n\t\t\t\tthis._dec();\n\t\t\t}\n\t\t\telse if (counter === this._counter + 1)\n\t\t\t{\n\t\t\t\tthis._inc();\n\t\t\t}\n\t\t\telse if (counter === 0)\n\t\t\t{\n\t\t\t\tthis._counter = 0;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.Empty, this._endPlayingAnimation);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._counter = state;\n\t\t\t\tthis.playAnimation(pm.CounterSprite.Animation.IncValue, this._endPlayingAnimation, this._counter);\n\t\t\t}\n\t\t}\n\n\t\tif (this._memory !== state.memory)\n\t\t{\n\t\t\tthis._memory = state.memory;\n\n\t\t\tthis.playAnimation(pm.ExtendedCounterSprite.Animation.MemSet, this._endPlayingAnimation, this._memory);\n\t\t}\n\t}\n});\n\npm.ExtendedCounter.Condition = {\n\tLeftLRight: \"cnt_llr\",\n\tRightLLeft: \"cnt_rll\",\n\tEqual: \"cnt_equal\",\n\tNotEqual: \"cnt_not_equal\"\n};\n\npm.ExtendedCounter.Repeater = {Memory: \"cnt_mem\", Random: \"cnt_rand\"};\n\npm.ExtendedCounter.NativeMethod = {\n\tMemClear: \"cnt_mem_clear\",\n\tMemAdd: \"cnt_mem_add\",\n\tMemSub: \"cnt_mem_sub\",\n\tMemRestore: \"cnt_mem_restore\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 11.03.16.\n */\n\n/**\n * @class pm.Task for memory value of extended counter.
\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {Object} memoryValue Target memory value.\n */\npm.data.ExCounterMemoryTask = pm.Task.extend(/** @lends pm.data.ExCounterMemoryTask*/ {\n\ttypeName: \"ExCounterMemoryTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tcomplete: function (mapIndex)\n\t{\n\t\tvar complete = true;\n\n\t\tvar targetGroupValues = this.data[mapIndex];\n\t\tvar robotGroups = null;\n\n\t\tfor(var i =0 ; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif(this._level.globalRobots[i].getType() === pm.GlobalRobotType.ExtendedCounter)\n\t\t\t\trobotGroups = this._level.globalRobots[i].getRobotDataGroups();\n\t\t}\n\n\t\tfor (var i = 0; i < targetGroupValues.length; ++i)\n\t\t{\n\t\t\tif(targetGroupValues[i] !== robotGroups[i].data.memory)\n\t\t\t\tcomplete = false;\n\t\t}\n\n\t\treturn complete;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = [];\n\n\t\tvar robotGroups = null;\n\n\t\tfor(var i =0 ; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif(this._level.globalRobots[i].getType() === pm.GlobalRobotType.ExtendedCounter)\n\t\t\t\trobotGroups = this._level.globalRobots[i].getRobotDataGroups();\n\t\t}\n\n\t\tfor(var i = 0; i < robotGroups.length; ++i)\n\t\t\tthis.data[mapIndex][i] = data;\n\t}\n\n});\n","/**\n * Created by danilaeremin on 14.11.14.\n */\n\n/**\n * @class Sprite for extended counter robot.\n * @extends pm.CounterSprite\n */\npm.ExtendedCounterSprite = pm.CounterSprite.extend(/** @lends pm.ExtendedCounterSprite# */{\n\t_memoryLabel: null,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis._memoryLabel = new ccui.Text(\"0\", pm.CounterSprite.FONT_NAME, pm.CounterSprite.FONT_SIZE);\n\t\tthis._memoryLabel.setTextColor(pm.settings.levelFontColor);\n\t\tthis._memoryLabel.setPosition(this._getValueLabelX(), this._getValueLabelY());\n\n\t\tthis.getSprite().addChild(this._memoryLabel, 3);\n\n\t},\n\n\t_getSpriteFramesFile: function()\n\t{\n\t\treturn \"Robot/extended_counter.plist\";\n\t},\n\n\t_getBackFrameName: function()\n\t{\n\t\treturn \"extended_counter_back.png\";\n\t},\n\n\t_getFrontFrameName: function()\n\t{\n\t\treturn \"extended_counter_front.png\";\n\t},\n\n\t_getLightFrameName: function()\n\t{\n\t\treturn \"extended_counter_light.png\";\n\t},\n\n\t_getCenterX: function() { return 71; },\n\t_getValueLabelX: function() { return 21; },\n\t_getValueLabelY: function() { return 111; },\n\t_getLightX: function() { return this.getSprite().getContentSize().width / 2 - 1; },\n\t_getLightY: function() { return 0; },\n\n\tplayAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase pm.CounterSprite.Animation.Set: this._setValues(args[0], args[1]); break;\n\t\t\tcase pm.ExtendedCounterSprite.Animation.MemSet: this._memSet(args, endCallBack, target); break;\n\t\t\tdefault: pm.CounterSprite.prototype.playAnimation.call(this, endCallBack, target, type, args); break;\n\t\t}\n\t},\n\n\t_memSet: function(memory, callback, target)\n\t{\n\t\tthis._memoryLabel.setString(\"{0}\".format(memory));\n\n\t\tthis._lightAnimation(function() { callback.call(target); });\n\t},\n\n\t_setValues: function(value, memory)\n\t{\n\t\tthis._countLabel.setString(\"{0}\".format(value));\n\t\tthis._memoryLabel.setString(\"{0}\".format(memory));\n\n\t\tthis._setStonesByValue(value);\n\t},\n\n\t_reset: function()\n\t{\n\t\tthis._countLabel.setString(\"0\");\n\t\tthis._memoryLabel.setString(\"0\");\n\n\t\tthis._setStonesByValue(0);\n\t}\n});\n\n/**\n * Enum for extended counter robot animations.\n * @readonly\n * @enum {Number}\n */\npm.ExtendedCounterSprite.Animation = {MemSet: \"mem_set\"};\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\npm.FlagRobot = pm.GlobalRobot.extend(/** @lends pm.FlagRobot# */{\n\n\t_flagState: \"down\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\t_up: function ()\n\t{\n\t\tthis._flagState = pm.FlagRobot.State.Up;\n\n\t\tthis.playAnimation(pm.FlagRobotSprite.Animation.Up, this._endPlayingAnimation);\n\t},\n\n\t_down: function ()\n\t{\n\t\tthis._flagState = pm.FlagRobot.State.Down;\n\n\t\tthis.playAnimation(pm.FlagRobotSprite.Animation.Down, this._endPlayingAnimation);\n\t},\n\n\t_endPlayingAnimation: function()\n\t{\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\treset: function ()\n\t{\n\t\tthis._down();\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tgetType: function (){},\n\n\tgetState: function ()\n\t{\n\t\treturn this._flagState;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state !== this._flagState)\n\t\t{\n\t\t\tif (state === pm.FlagRobot.State.Up)\n\t\t\t\tthis._up();\n\t\t\telse\n\t\t\t\tthis._down();\n\t\t}\n\t}\n});\n\npm.FlagRobot.State = {\n\tUp: \"up\",\n\tDown: \"down\"\n};\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\npm.FlagRobotSprite = pm.ObjectSprite2D.extend(/** @lends pm.FlagRobotSprite# */{\n\n\t_type: null,\n\n\tctor: function (type)\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Robot/{0}_flag_robot.plist\".format(type));\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(type, pm.FlagRobot.State.Down)));\n\n\t\tthis._type = type;\n\t},\n\n\t_getFrameName: function (type, state)\n\t{\n\t\treturn \"{0}_flag_robot_{1}.png\".format(type, state);\n\t},\n\n\tplayAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase pm.FlagRobotSprite.Animation.Up: this._up(endCallBack, target); break;\n\t\t\tcase pm.FlagRobotSprite.Animation.Down: this._down(endCallBack, target); break;\n\t\t}\n\t},\n\n\t_up: function (callback, target)\n\t{\n\t\tthis.getSprite().setSpriteFrame(this._getFrameName(this._type, pm.FlagRobot.State.Up));\n\t\tcallback.call(target);\n\t},\n\n\t_down: function (callback, target)\n\t{\n\t\tthis.getSprite().setSpriteFrame(this._getFrameName(this._type, pm.FlagRobot.State.Down));\n\t\tcallback.call(target);\n\t}\n});\n\npm.FlagRobotSprite.Type = {\n\tGreen: \"green\",\n\tOrange: \"orange\"\n};\n\npm.FlagRobotSprite.Animation = {\n\tUp: \"up\",\n\tDown: \"down\"\n};\n\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\npm.GreenFlagRobot = pm.FlagRobot.extend(/** @lends pm.GreenFlagRobot# */{\n\ttypeName: \"GreenFlagRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.GreenFlagRobot.NativeMethod.Up] = new pm.NativeFunction(this, this._up);\n\t\tthis.nativeFunctionMap[pm.GreenFlagRobot.NativeMethod.Down] = new pm.NativeFunction(this, this._down);\n\n\t\tthis.nativeFunctions.push(pm.GreenFlagRobot.NativeMethod.Up, pm.GreenFlagRobot.NativeMethod.Down);\n\n\t\tthis.conditions.push(pm.GreenFlagRobot.Condition.IsUp, pm.GreenFlagRobot.Condition.IsDown);\n\t},\n\n\t_checkConditionInternal: function (condition, args)\n\t{\n\t\tswitch(condition)\n\t\t{\n\t\t\tcase pm.GreenFlagRobot.Condition.IsUp: return this._flagState === pm.FlagRobot.State.Up;\n\t\t\tcase pm.GreenFlagRobot.Condition.IsDown: return this._flagState === pm.FlagRobot.State.Down;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.FlagRobotSprite(pm.FlagRobotSprite.Type.Green);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tgetType: function ()\n\t{\n\t\treturn pm.GlobalRobotType.GreenFlag;\n\t}\n});\n\npm.GreenFlagRobot.Condition = {\n\tIsUp: \"gflag_isup\",\n\tIsDown: \"gflag_isdown\"\n};\n\npm.GreenFlagRobot.NativeMethod = {\n\tUp: \"gflag_up\",\n\tDown: \"gflag_down\"\n};\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\npm.OrangeFlagRobot = pm.FlagRobot.extend(/** @lends pm.OrangeFlagRobot# */{\n\ttypeName: \"OrangeFlagRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.OrangeFlagRobot.NativeMethod.Up] = new pm.NativeFunction(this, this._up);\n\t\tthis.nativeFunctionMap[pm.OrangeFlagRobot.NativeMethod.Down] = new pm.NativeFunction(this, this._down);\n\n\t\tthis.nativeFunctions.push(pm.OrangeFlagRobot.NativeMethod.Up, pm.OrangeFlagRobot.NativeMethod.Down);\n\n\t\tthis.conditions.push(pm.OrangeFlagRobot.Condition.IsUp, pm.OrangeFlagRobot.Condition.IsDown);\n\t},\n\n\t_checkConditionInternal: function (condition, args)\n\t{\n\t\tswitch(condition)\n\t\t{\n\t\t\tcase pm.OrangeFlagRobot.Condition.IsUp: return this._flagState === pm.FlagRobot.State.Up;\n\t\t\tcase pm.OrangeFlagRobot.Condition.IsDown: return this._flagState === pm.FlagRobot.State.Down;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.FlagRobotSprite(pm.FlagRobotSprite.Type.Orange);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tgetType: function ()\n\t{\n\t\treturn pm.GlobalRobotType.OrangeFlag;\n\t}\n});\n\npm.OrangeFlagRobot.NativeMethod = {\n\tUp: \"oflag_up\",\n\tDown: \"oflag_down\"\n};\n\npm.OrangeFlagRobot.Condition = {\n\tIsUp: \"oflag_isup\",\n\tIsDown: \"oflag_isdown\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class 2D square level.\n * @implements pm.AbstractLevel\n */\nvar SquarableLevel = pm.AbstractLevel.extend(/** @lends SquarableLevel# */{\n\ttypeName: \"PushLevel\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\thasPhysicalConnector: function() { return true; },\n\n\t_supportsPhysicalConnector: function(type)\n\t{\n\t\treturn type === pm.PhysicalConnectorType.Magnet;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n\n/**\n * @class Common interface for square map layers.\n * @interface\n * @extends pm.MapLayer2D\n */\nvar SquarableMapLayer = pm.MapLayer2D.extend(/** @lends SquarableMapLayer# */{\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t},\n\n\trealPosition: function(pos, del)\n\t{\n\t\treturn cc.p(this.getMapElementSize().width * pos.x + del.x, this.getRealHeight() - this.getMapElementSize().height * pos.y + del.y);\n\t},\n\n\tpositionFromReal: function(pos)\n\t{\n\t\tvar X = Math.floor(pos.x/this.getMapElementSize().width + 0.5);\n\t\tif (X < 0) X = 0;\n\t\tif (X >= this._map.width) X = this._map.width - 1;\n\n\t\tvar Y = Math.floor((this.getRealHeight() - pos.y)/this.getMapElementSize().height + 0.5);\n\t\tif (Y < 0) Y = 0;\n\t\tif (Y >= this._map.height) Y = this._map.height - 1;\n\t\treturn cc.p(X, Y);\n\t}\n});\n","\"use sctrict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n\n/**\n * Possible direction on square maps.\n * @see SquarableMap\n * @readonly\n * @enum {Number}\n */\nvar MapDirection4 = {\n\tDown: 0,\n\tRight: 1,\n\tUp: 2,\n\tLeft: 3\n};\n\n/**\n * @class Common interface for all square maps.\n * @interface\n * @extends Map2D\n */\nvar SquarableMap = Map2D.extend(/** @lends SquarableMap#*/{\n\n\telement: function (pos)\n\t{\n\t\tif (pos.x < 0 || pos.y < 0||pos.x>=this.width||pos.y>=this.height)\n\t\t\treturn null;\n\t\telse\n\t\t\treturn this.mapElements[pos.y][pos.x];\n\t},\n\n\tgetNextDirectionalElementPosition: function(pos, direction)\n\t{\n\t\tvar retPos = cc.p(pos.x, pos.y);\n\n\t\tswitch(direction)\n\t\t{\n\t\t\tcase MapDirection4.Up: retPos.y--; break;\n\t\t\tcase MapDirection4.Left: retPos.x--; break;\n\t\t\tcase MapDirection4.Down: retPos.y++; break;\n\t\t\tcase MapDirection4.Right: retPos.x++; break;\n\t\t}\n\n\t\tif (retPos.x < 0 || retPos.y < 0|| retPos.x >= this.width || retPos.y >= this.height)\n\t\t\treturn null;\n\n\t\treturn retPos;\n\t},\n\n\tgetPrevDirectionalElementPosition: function(pos, direction)\n\t{\n\t\tvar retPos = cc.p(pos.x, pos.y);\n\n\t\tswitch(direction)\n\t\t{\n\t\t\tcase MapDirection4.Up: retPos.y++; break;\n\t\t\tcase MapDirection4.Left: retPos.x++; break;\n\t\t\tcase MapDirection4.Down: retPos.y--; break;\n\t\t\tcase MapDirection4.Right: retPos.x--; break;\n\t\t}\n\n\t\treturn retPos;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 10.11.14.\n */\n\n/**\n * @class Common interface for all 2D robots.
\n * Provides move native functions and element&wall-checking conditions.\n * @interface\n * @extends pm.PlayerRobot2D\n */\nvar PlayerRobot4 = pm.PlayerRobot2D.extend(/** @lends PlayerRobot4# */{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[PlayerRobot4.NativeMethod.Move] = new pm.NativeFunction(this, this._move);\n\t\tthis.nativeFunctionMap[PlayerRobot4.NativeMethod.TurnLeft] = new pm.NativeFunction(this, this._turnLeft);\n\t\tthis.nativeFunctionMap[PlayerRobot4.NativeMethod.TurnRight] = new pm.NativeFunction(this, this._turnRight);\n\n\t\tthis.nativeFunctions.push(PlayerRobot4.NativeMethod.TurnLeft, PlayerRobot4.NativeMethod.TurnRight, PlayerRobot4.NativeMethod.Move);\n\t},\n\n\tgetDirectionCount: function() { return 4; },\n\n\tsetState: function (state)\n\t{\n\t\tif (state.direction !== this.direction)\n\t\t{\n\t\t\tvar k = (state.direction - this.direction + 4) % 4;\n\n\t\t\tif (k === 1)\n\t\t\t\tthis._turnLeft();\n\t\t\telse\n\t\t\t\tthis._turnRight();\n\t\t}\n\t\tif (state.position !== this.position || this.isBroken())\n\t\t\tthis._moveTo(state.position, true);\n\t},\n\n\t_getPhysicalConnectorState: function()\n\t{\n\t\treturn {\n\t\t\tposition: this.position,\n\t\t\tdirection: this.direction\n\t\t};\n\t}\n});\n\nPlayerRobot4.Condition =\n{\n\tClear: \"r4_clear\",\n\tWall: \"r4_wall\"\n};\n\nPlayerRobot4.NativeMethod =\n{\n\tMove: \"r4_move\",\n\tTurnLeft: \"r4_turn_left\",\n\tTurnRight: \"r4_turn_right\",\n\tMoveReverse: \"r4_move_reverse\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 11.11.14.\n */\n\n/**\n * @class This task is used for last robot position checking.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.PositionTask4 = pm.Task.extend(/**@lends pm.data.PositionTask4# */{\n\ttypeName: \"PositionTask4\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar retArray = [];\n\n\t\tfor(var id in this.data[mapIndex])\n\t\t{\n\t\t\tvar point = this.data[mapIndex][id];\n\n\t\t\tif(!this._level.maps[mapIndex].element(point).containsRobotID(id))\n\t\t\t\tretArray.push(this._level.maps[mapIndex].element(point));\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = cc.p(2, 2);\n\n\t\tthis.data[mapIndex] = {};\n\n\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t\tthis.data[mapIndex][this._level.robots[i].id] = cc.clone(data);\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 30.06.17.\n */\n\n/**\n * @class This a interface for map elements with walls.\n * @interface\n * @extends pm.MapElement2D\n */\n\npm.MapElement4WithWalls = pm.MapElement2D.extend(/** @lends pm.MapElement4WithWalls#*/{\n\n\twallUpSprite: null,\n\twallLeftSprite: null,\n\n\t/**\n\t * Walls all directions of map element.
If \"walls[direction] === true\" then there is wall in \"direction\".\n\t * @type {Array}\n\t */\n\twalls: [],\n\n\tctor: function ()\n\t{\n\t\tthis._addNonEnumerableProps(\"wallUpSprite\", \"wallLeftSprite\");\n\t\tthis._super();\n\n\t\tthis.setDimension(4);\n\t},\n\n\t/**\n\t * Initializes wal array for dimension.\n\t * @param {Number} dimension Target dimension\n\t */\n\tsetDimension: function(dimension)\n\t{\n\t\tthis.walls.length = dimension;\n\n\t\tfor(var i = 0; i < dimension; ++i)\n\t\t\tthis.walls[i] = false;\n\t},\n\n\t/**\n * Generates Wall Left Sprite\n */\n\tgenerateWallLeftSprite: function(orientation)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.walls[MapDirection4.Right])\n\t\t\t\tthis.wallLeftSprite = new pm.WallSprite4(pm.WallType4.Left, orientation);\n\t\t}\n\t},\n\n\t/**\n * Generates Wall Up Sprite\n */\n\tgenerateWallUpSprite: function(orientation)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif(this.walls[MapDirection4.Down])\n\t\t\t\tthis.wallUpSprite = new pm.WallSprite4(pm.WallType4.Up, orientation);\n\t\t}\n\t}\n\n});\n","/**\n * Created by Kirill Madhchenko on 29.06.17.\n */\n\n/**\n * Wall Types\n * @enum {String}\n */\n\npm.WallType4 = {\n\tLeft: \"left\",\n\tUp: \"up\"\n};\n\n/**\n * @class Class of walls.\n * @interface\n * @extends pm.StaticSprite\n */\npm.WallSprite4 = pm.StaticSprite.extend(/** @lends WallSprite4# */{\n\n\tctor: function(type, orientation)\n\t{\n\t\tif (orientation !== undefined)\n\t\t{\n\t\t\tthis._super(pm.spriteUtils.getMapWallTileFrame(type, orientation));\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase pm.WallType4.Left:\n\t\t\t\t\tif (orientation === pm.MapLayer2D.Orientation.Ortho)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._minPoint = cc.p(0, 65);\n\t\t\t\t\t\tthis._maxPoint = cc.p(11, 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._minPoint = cc.p(13, 61);\n\t\t\t\t\t\tthis._maxPoint = cc.p(21, 4);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\tcase pm.WallType4.Up:\n\t\t\t\t\tif (orientation === pm.MapLayer2D.Orientation.Ortho)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._minPoint = cc.p(0, 11);\n\t\t\t\t\t\tthis._maxPoint = cc.p(63, 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._minPoint = cc.p(17, 7);\n\t\t\t\t\t\tthis._maxPoint = cc.p(74, 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.17.\n */\n\n/**\n * @class Common interface for all square maps with walls.\n * @interface\n * @extends SquarableMap\n */\nvar SquarableMapWithWalls = SquarableMap.extend(/** @lends SquarableMap#*/{\n\n\t/**\n * Editing of walls for this level.\n * @type {Boolean}\n */\n\teditWalls: true,\n\n\thasWalls: function() { return true; }\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.17.\n */\n\n/**\n * @class Common interface for square map layers with walls.\n * @interface\n * @extends SquarableMapLayer\n */\nvar SquarableMapLayerWithWalls = SquarableMapLayer.extend(/** @lends SquarableMapLayer# */{\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor(var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite();\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\t\tif (this._map.element(p).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\t\t\t\t\tthis._drawWall(p, type);\n\t\t\t\t}\n\t\t\t\tif (this._map.element(p).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\t\t\t\t\tthis._drawWall(p, type);\n\t\t\t\t}\n\n\t\t\t\tif(this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getWallType: function (direction)\n\t{\n\t\tvar type = \"None\";\n\t\tswitch (direction)\n\t\t{\n\t\t\tcase MapDirection4.Down:\n\t\t\t\ttype = pm.WallType4.Up;\n\t\t\t\tbreak;\n\t\t\tcase MapDirection4.Right:\n\t\t\t\ttype = pm.WallType4.Left;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn type;\n\t},\n\n\t_drawWall: function(pos, type)\n\t{\n\t\tvar el = this._map.element(pos);\n\n\t\tvar dx = type === pm.WallType4.Left ? this.getMapElementSize().width / 2 : 0;\n\t\tvar dy = type === pm.WallType4.Up ? -this.getMapElementSize().height / 2 : 0;\n\t\tvar del = cc.p(dx, dy);\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase pm.WallType4.Up:\n\t\t\t\tel.generateWallUpSprite(this._orientation);\n\t\t\t\tel.wallUpSprite.mapLayer = this;\n\t\t\t\tel.wallUpSprite.setRealPosition(pos, del);\n\t\t\t\tthis.addObject(el.wallUpSprite, pos.x + pos.y);\n\t\t\t\tbreak;\n\t\t\tcase pm.WallType4.Left:\n\t\t\t\tel.generateWallLeftSprite(this._orientation);\n\t\t\t\tel.wallLeftSprite.mapLayer = this;\n\t\t\t\tel.wallLeftSprite.setRealPosition(pos, del);\n\t\t\t\tthis.addObject(el.wallLeftSprite, pos.x + pos.y);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_removeWall: function (child)\n\t{\n\t\tthis.removeObject(child);\n\t\tchild = null;\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.17.\n */\n\n/**\n * @class Common interface for all 2D robots.
\n * Provides move native functions and element&wall-checking conditions.\n * @interface\n * @extends PlayerRobot4\n */\n\nvar PlayerRobot4Walls = PlayerRobot4.extend(/** @lends PlayerRobot4Walls# */{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.conditions.push(PlayerRobot4.Condition.Clear);\n\t\tthis.conditionOpposites.push(PlayerRobot4.Condition.Wall);\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tif (condition === PlayerRobot4.Condition.Wall)\n\t\t{\n\t\t\treturn !this._isNearClear();\n\t\t}\n\t\telse if (condition === PlayerRobot4.Condition.Clear)\n\t\t{\n\t\t\treturn this._isNearClear();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_isNearClear: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tvar nextPos = map.getNextDirectionalElementPosition(this.position, this.direction);\n\n\t\tif (!nextPos)\n\t\t\treturn false;\n\n\t\tvar nextElement = map.element(nextPos);\n\n\t\tif (this._isNearWall())\n\t\t\treturn false;\n\n\t\tif (nextElement.getObjectCount() > 0)\n\t\t{\n\t\t\tfor (var o in nextElement._objectsHere)\n\t\t\t{\n\t\t\t\tvar object = nextElement._objectsHere[o];\n\n\t\t\t\tif (!(object instanceof pm.Object))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif (object.oldPosition.x === nextPos.x || object.oldPosition.y === nextPos.y)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (nextElement.getRobotsCount() > 0)\n\t\t{\n\t\t\tfor (var r in nextElement._robotsHere)\n\t\t\t{\n\t\t\t\tvar robot = nextElement._robotsHere[r];\n\n\t\t\t\tif (!(robot instanceof pm.PlayerRobot2D))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif (robot._oldPosition.x === nextPos.x || robot._oldPosition.y === nextPos.y)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_isNearWall: function ()\n\t{\n\t\treturn this.getMap().element(this.position).walls[this.direction];\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\tvar map = this.getMap();\n\n\t\treturn !map.element(target).walls[(direction + this.getDirectionCount()/2) % this.getDirectionCount()];\n\t}\n\n});\n","/**\n * Created by Antony Orlovsky on 05.07.19.\n */\n\n/**\n * @class Layer for selecting pattern of program.\n * @extends ccui.Layout\n * @constructor\n */\nvar SelectPatternMenu = ccui.Layout.extend(/** @lends SelectPatternMenu# */{\n\n\t_selectedPatternIndex: -1,\n\t_level: null,\n\t_robot: null,\n\n\t_target: null,\n\t_callback: null,\n\n\tctor: function(level, robot, target, callback)\n\t{\n\t\tthis._level = level;\n\t\tthis._robot = robot;\n\t\tthis._target = target;\n\t\tthis._callback = callback;\n\n\t\tthis._super();\n\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(60, 15, 40, 15));\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\t},\n\n\tupdateCircles: function()\n\t{\n\t\tvar programData = null;\n\n\t\tif (pm.settings.isEditorMode)\n\t\t{\n\t\t\tprogramData = this._level.programData[this._robot.groupID];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this._level.programDataCache[this._robot.groupID])\n\t\t\t\tprogramData = this._level.programDataCache[this._robot.groupID];\n\t\t\telse\n\t\t\t\tprogramData = this._level.programData[this._robot.groupID];\n\t\t}\n\n\t\tvar patternCount = programData.programDataArray.length;\n\n\t\tthis.removeAllChildren(true);\n\n\t\tvar circle = pm.spriteUtils.getInterfaceElementSprite(\"unchecked\");\n\n\t\tvar width = patternCount * (circle.getContentSize().width + SelectPatternMenu.SEPARATOR_SIZE);\n\t\twidth -= SelectPatternMenu.SEPARATOR_SIZE;\n\n\t\tthis.setContentSize(cc.size(width, circle.getContentSize().height));\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin.setMargin(SelectPatternMenu.SEPARATOR_SIZE, 0, 0, 0);\n\n\t\tvar buttonMargin0 = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin0.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin0.setMargin(0, 0, 0, 0);\n\n\t\tfor (var i = 0; i < patternCount; ++i)\n\t\t{\n\t\t\tvar icon = \"unchecked\";\n\n\t\t\tif (i === programData.currentIndex)\n\t\t\t{\n\t\t\t\ticon = \"checked\";\n\t\t\t\tthis._selectedPatternIndex = i;\n\t\t\t}\n\n\t\t\tcircle = new pmui.Button(pm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tif(i === 0)\n\t\t\t\tcircle.setLayoutParameter(buttonMargin0);\n\t\t\telse\n\t\t\t\tcircle.setLayoutParameter(buttonMargin);\n\n\t\t\tcircle.setTag(i);\n\t\t\tcircle.addClickEventListener(this._selectPattern.bind(this));\n\n\t\t\tthis.addChild(circle);\n\t\t}\n\n\t\tthis._callback.call(this._target);\n\t},\n\n\t/**\n\t * Sets layer enabled.\n\t * @param {Boolean} flag\n\t */\n\tsetEnabled: function(flag)\n\t{\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\n\t\tfor (var i = 0; i < this.getChildrenCount(); ++i)\n\t\t\tthis.getChildren()[i].setTouchEnabled(flag);\n\t},\n\n\t_selectPattern: function(sender)\n\t{\n\t\tvar index = sender.getTag();\n\n\t\tif (index !== this._selectedPatternIndex)\n\t\t{\n\t\t\tvar oldCircle = this.getChildByTag(this._selectedPatternIndex);\n\n\t\t\tthis._updateTextures(oldCircle, sender);\n\n\t\t\tthis._selectedPatternIndex = index;\n\n\t\t\tif (pm.settings.isEditorMode)\n\t\t\t{\n\t\t\t\tthis._level.programData[this._robot.groupID].currentIndex = index;\n\t\t\t\tpm.sendCustomEvent(pm.PATTERN_CHANGED, this._robot);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._level.programDataCache[this._robot.groupID].currentIndex = index;\n\t\t\t}\n\n\t\t\tthis._callback.call(this._target);\n\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t\t}\n\t},\n\n\t_updateTextures: function(oldCircle, newCircle)\n\t{\n\t\toldCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\toldCircle.setTouchEnabled(true);\n\n\t\tnewCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tnewCircle.setTouchEnabled(false);\n\t}\n});\n\nSelectPatternMenu.LEFT_MARGIN = -15;\nSelectPatternMenu.SEPARATOR_SIZE = 5;\nSelectPatternMenu.HEIGHT = 30;\nSelectPatternMenu.LEFT_BOUND = 65;\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for common player robot settings.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar PlayerRobotSettingsLayer = ccui.Layout.extend(/** @lends PlayerRobotSettingsLayer# */{\n\t_robot: null,\n\t_label: null,\n\t_settingsLayout: null,\n\t_canEditProgramPattern: null,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super();\n\n\t\tthis._robot = robot;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._label = new ccui.Text(LocalizedString(\"Robot\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tvar height = this._label.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tthis._label.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(this._label);\n\n\t\tthis._settingsLayout = new ccui.Layout();\n\t\tthis._settingsLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar settingsLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tsettingsLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tsettingsLayoutAlign.setRelativeToWidgetName(\"label\");\n\t\tsettingsLayoutAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._settingsLayout.setLayoutParameter(settingsLayoutAlign);\n\n\t\tthis.addChild(this._settingsLayout);\n\n\t\tthis._canEditProgramPattern = new pmui.CheckBox(LocalizedString(\"CanEditProgramPattern\"), this._canEditProgramPatternChanged,\n\t\t\tthis, 15, this._robot.getProgramData().canEditProgramPattern);\n\t\theight += this._canEditProgramPattern.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar canEditAlign = new ccui.RelativeLayoutParameter();\n\t\tcanEditAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcanEditAlign.setRelativeName(\"canEditProgramPattern\");\n\t\tcanEditAlign.setMargin(30, 10, 0, 0);\n\t\tthis._canEditProgramPattern.setLayoutParameter(canEditAlign);\n\t\tthis._settingsLayout.addChild(this._canEditProgramPattern);\n\n\t\tvar settingsInterface = pm.appUtils.generatePlayerRobotInterfaceLayer(robot);\n\n\t\tvar settingInterfaceAlign = new ccui.RelativeLayoutParameter();\n\t\tsettingInterfaceAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tsettingInterfaceAlign.setRelativeName(\"settings\");\n\t\tsettingInterfaceAlign.setRelativeToWidgetName(\"canEditProgramPattern\");\n\t\tsettingInterfaceAlign.setMargin(0, 10, 0, 0);\n\t\tsettingsInterface.setLayoutParameter(settingInterfaceAlign);\n\t\tthis._settingsLayout.addChild(settingsInterface);\n\t\theight += settingsInterface.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar patternLayout = this._createPatternLayout(\"settings\");\n\t\theight += patternLayout.height + LevelSettingsLayer.SEPARATOR;\n\t\tthis._settingsLayout.addChild(patternLayout);\n\n\t\tthis._settingsLayout.setContentSize(LevelSettingsLayer.WIDTH, height + LevelSettingsLayer.BORDER_RADIUS);\n\t\tthis.setContentSize(LevelSettingsLayer.WIDTH, height + 2 * LevelSettingsLayer.BORDER_RADIUS);\n\t},\n\n\t_createPatternLayout: function(relativeToName)\n\t{\n\t\tvar patternLayout = new ccui.Layout();\n\t\tpatternLayout.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tvar patternLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tpatternLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tpatternLayoutAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tpatternLayoutAlign.setRelativeName(\"pattern\");\n\t\tpatternLayoutAlign.setRelativeToWidgetName(relativeToName);\n\t\tpatternLayout.setLayoutParameter(patternLayoutAlign);\n\n\t\tvar addPatternLeftButton = new pmui.Button(pm.spriteUtils.getIconName(\"addPatternLeft\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addPatternLeft\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addPatternLeft\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\taddPatternLeftButton.addClickEventListener(this._addLeftPattern.bind(this));\n\n\t\tvar addPatternRightButton = new pmui.Button(pm.spriteUtils.getIconName(\"addPatternRight\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addPatternRight\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addPatternRight\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\taddPatternRightButton.addClickEventListener(this._addRightPattern.bind(this));\n\n\t\tvar deleteButton = new pmui.Button(pm.spriteUtils.getIconName(\"deletePattern\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deletePattern\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deletePattern\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tdeleteButton.addClickEventListener(this._deletePattern.bind(this));\n\n\t\tvar addPatternRightButtonAlign = new ccui.LinearLayoutParameter();\n\t\taddPatternRightButtonAlign.setMargin(8, 0, 8, 0);\n\t\taddPatternRightButton.setLayoutParameter(addPatternRightButtonAlign);\n\n\t\tpatternLayout.addChild(addPatternLeftButton);\n\t\tpatternLayout.addChild(addPatternRightButton);\n\t\tpatternLayout.addChild(deleteButton);\n\n\t\tpatternLayout.setContentSize(LevelSettingsLayer.WIDTH, addPatternLeftButton.height);\n\t\treturn patternLayout;\n\t},\n\n\t_canEditProgramPatternChanged: function(flag)\n\t{\n\t\tthis._robot.getProgramData().canEditProgramPattern = flag;\n\t},\n\n\t_getRobotPatternCount: function()\n\t{\n\t\treturn this._robot.parentLevel.programData[this._robot.groupID].programDataArray.length;\n\t},\n\n\t_addLeftPattern: function ()\n\t{\n\t\tif (this._getRobotPatternCount() === PlayerRobotSettingsLayer.MAX_PATTERN_COUNT)\n\t\t\treturn;\n\n\t\tvar index = this._robot.parentLevel.programData[this._robot.groupID].currentIndex;\n\n\t\tvar programData = pm.appUtils.generateProgramData();\n\n\t\tthis._robot.parentLevel.programData[this._robot.groupID].programDataArray.splice(index, 0, programData);\n\n\t\tpm.sendCustomEvent(pme.PATTERNS_COUNT_CHANGED_EVENT_STR);\n\t\tthis.getParent().setObject(this._robot);\n\t},\n\n\t_addRightPattern: function ()\n\t{\n\t\tif (this._getRobotPatternCount() === PlayerRobotSettingsLayer.MAX_PATTERN_COUNT)\n\t\t\treturn;\n\n\t\tvar index = this._robot.parentLevel.programData[this._robot.groupID].currentIndex;\n\n\t\tvar programData = pm.appUtils.generateProgramData();\n\n\t\t++this._robot.parentLevel.programData[this._robot.groupID].currentIndex;\n\n\t\tthis._robot.parentLevel.programData[this._robot.groupID].programDataArray.splice(index+1, 0, programData);\n\n\t\tpm.sendCustomEvent(pme.PATTERNS_COUNT_CHANGED_EVENT_STR);\n\t\tthis.getParent().setObject(this._robot);\n\t},\n\n\t_deletePattern: function ()\n\t{\n\t\tif (this._getRobotPatternCount() === 1)\n\t\t\treturn;\n\n\t\tvar index = this._robot.parentLevel.programData[this._robot.groupID].currentIndex;\n\n\t\tvar to = index - 1;\n\n\t\tif (to !== -1)\n\t\t\tthis._robot.parentLevel.programData[this._robot.groupID].currentIndex = to;\n\n\t\tthis._robot.parentLevel.programData[this._robot.groupID].programDataArray.splice(index, 1);\n\n\t\tpm.sendCustomEvent(pme.PATTERNS_COUNT_CHANGED_EVENT_STR);\n\t\tthis.getParent().setObject(this._robot);\n\t}\n});\n\nPlayerRobotSettingsLayer.MAX_PATTERN_COUNT = 12;\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for common player robot settings.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar PlayerRobotInterfaceLayerK = ccui.Layout.extend(/** @lends PlayerRobotSettingsLayer# */{\n\t_robot: null,\n\n\t_useTabs: null,\n\t_useCustomFuncs: null,\n\t_maxMethods: null,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super();\n\n\t\tthis._robot = robot;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar maxMethodLabel = new pmui.Text(LocalizedString(\"MaxMethods\"), 15);\n\t\tvar maxMethodLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tmaxMethodLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tmaxMethodLabelAlign.setRelativeName(\"maxMethods\");\n\t\tmaxMethodLabelAlign.setMargin(0, 15, 0, 0);\n\t\tmaxMethodLabel.setLayoutParameter(maxMethodLabelAlign);\n\t\tthis.addChild(maxMethodLabel);\n\n\t\tthis._maxMethods = new pmui.TextInput(this._robot.getProgramData().maxMethodCount, \"0\", 16, 40);\n\t\tvar height = this._maxMethods.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar maxMethodsAlign = new ccui.RelativeLayoutParameter();\n\t\tmaxMethodsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tmaxMethodsAlign.setRelativeToWidgetName(\"maxMethods\");\n\t\tmaxMethodsAlign.setMargin(5, 0, 0, 0);\n\t\tthis._maxMethods.setLayoutParameter(maxMethodsAlign);\n\t\tthis.addChild(this._maxMethods);\n\n\t\tthis._maxMethods.setInsertTextCallback(this, this._maxMethodsChanged);\n\n\t\tthis._useTabs = new pmui.CheckBox(LocalizedString(\"useGroupButtons\"), this._useTabsChanged, this, 15, this._robot.getProgramData().useGroupButtons);\n\t\theight += this._useTabs.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar useTabsAlign = new ccui.RelativeLayoutParameter();\n\t\tuseTabsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tuseTabsAlign.setRelativeToWidgetName(\"maxMethods\");\n\t\tuseTabsAlign.setRelativeName(\"useTabs\");\n\t\tuseTabsAlign.setMargin(0, 15, 0, 0);\n\t\tthis._useTabs.setLayoutParameter(useTabsAlign);\n\t\tthis.addChild(this._useTabs);\n\n\t\tthis._useCustomFuncs = new pmui.CheckBox(LocalizedString(\"useCustomFuncs\"), this._useCustomFuncsChanged, this, 15, this._robot.getProgramData().useCustomFuncs);\n\t\theight += this._useCustomFuncs.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar useCustomFuncs = new ccui.RelativeLayoutParameter();\n\t\tuseCustomFuncs.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tuseCustomFuncs.setRelativeToWidgetName(\"useTabs\");\n\t\tuseCustomFuncs.setRelativeName(\"useCustomFuncs\");\n\t\tuseCustomFuncs.setMargin(0, 15, 0, 0);\n\t\tthis._useCustomFuncs.setLayoutParameter(useCustomFuncs);\n\t\tthis.addChild(this._useCustomFuncs);\n\n\t\tvar funcs = this.drawChangeableButs([pm.CMD_A, pm.CMD_B, pm.CMD_C, pm.CMD_D, pm.CMD_E],\n\t\t\trobot.getProgramData().funcs, \"useCustomFuncs\", \"funcs\",\n\t\t\tpm.spriteUtils.getRobotMethodSpriteName, 10);\n\t\tthis.addChild(funcs);\n\n\t\tvar prevLayoutName = \"funcs\";\n\t\tvar condHeight = 0;\n\t\tif(robot.conditions.length)\n\t\t{\n\t\t\tvar conds = this.drawChangeableButs(robot.conditions, robot.getProgramData().conds, \"funcs\", \"conds\",\n\t\t\t\tpm.spriteUtils.getRobotConditionSpriteName, 5);\n\t\t\tthis.addChild(conds);\n\n\t\t\tvar condsOpp = this.drawChangeableButs(robot.conditionOpposites, robot.getProgramData().condsOpp, \"conds\", \"condsOpp\",\n\t\t\t\tpm.spriteUtils.getRobotConditionSpriteName, 0);\n\t\t\tthis.addChild(condsOpp);\n\t\t\tprevLayoutName = \"condsOpp\";\n\t\t\tcondHeight += + conds.height + condsOpp.height;\n\t\t}\n\n\t\tvar logs = this.drawGroupChangeableButs(pmui.LogicExpressionNode.values.slice(0, 4), robot.getProgramData().logicOperatorsLessGreater, prevLayoutName, \"logs\",\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName, 5);\n\t\tvar logsAlign = new ccui.RelativeLayoutParameter();\n\t\tlogsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tlogsAlign.setRelativeName(\"logs\");\n\t\tlogsAlign.setRelativeToWidgetName(prevLayoutName);\n\t\tlogs.setLayoutParameter(logsAlign);\n\t\tthis.addChild(logs);\n\n\t\tvar logsEq = this.drawGroupChangeableButs(pmui.LogicExpressionNode.values.slice(4, 6),robot.getProgramData().logicOperatorsEquals, \"logs\", \"logsEq\",\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName, 5);\n\t\tvar logsEqAlign = new ccui.RelativeLayoutParameter();\n\t\tlogsEqAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tlogsEqAlign.setRelativeName(\"logsEq\");\n\t\tlogsEqAlign.setRelativeToWidgetName(\"logs\");\n\t\tlogsEq.setLayoutParameter(logsEqAlign);\n\t\tthis.addChild(logsEq);\n\n\t\tvar loops = this.drawChangeableButs(pmui.RepeaterNode.vals, robot.getProgramData().loops, \"logs\", \"loops\",\n\t\t\tpm.spriteUtils.getRepeaterSpriteName, 5);\n\t\tthis.addChild(loops);\n\n\t\tvar ifSts = this.drawChangeableButs(pmui.IfNode.vals, robot.getProgramData().ifConstructions, \"loops\", \"ifs\",\n\t\t\tpm.spriteUtils.getConditionStatementSpriteName, 0);\n\t\tthis.addChild(ifSts);\n\n\t\tvar allocs = this.drawChangeableButs(pmui.AllocNode.intVals,robot.getProgramData().alloc, \"ifs\", \"allocs\",\n\t\t\tpm.spriteUtils.getAllocSpriteName, 5);\n\t\tfor(var i = 0;i < pmui.AllocNode.intVals.length; i++)\n\t\t{//todo new buts with pics\n\t\t\tallocs.getChildren()[i].setTitleText(LocalizedString(pmui.AllocNode.intVals[i]));\n\t\t\tallocs.getChildren()[i].setTitleColor(cc.color(92, 108, 118));\n\t\t}\n\t\tthis.addChild(allocs);\n\n\t\tvar exprs = this.drawGroupChangeableButs(pmui.NumericExpressionNode.values, robot.getProgramData().expressions, \"allocs\", \"exprs\",\n\t\t\tpm.spriteUtils.getExprSpriteName, 5);\n\t\tthis.addChild(exprs);\n\n\t\tvar consts = this.drawChangeableButs(pmui.RepeaterNode.Constants,robot.getProgramData().constants, \"exprs\", \"consts\",\n\t\t\tpm.spriteUtils.getRepeaterSpriteName, 5);\n\t\tthis.addChild(consts);\n\n\t\tvar intMethods = [];\n\t\tfor(var i = 0;i < this._robot.nativeFunctions.length; i++)\n\t\t{\n\t\t\tif(this._robot.nativeFunctionMap[this._robot.nativeFunctions[i]].returnArgs())\n\t\t\t{\n\t\t\t\tintMethods.push(this._robot.nativeFunctions[i]);\n\t\t\t}\n\t\t}\n\t\tvar methods = this.drawChangeableButs(intMethods, robot.getProgramData().intMethods, \"consts\", \"methods\",\n\t\t\tpm.spriteUtils.getIntMethodSpriteName, 5);\n\t\tthis.addChild(methods);\n\n\t\theight += loops.height + ifSts.height + allocs.height + exprs.height + logs.height + funcs.height + condHeight + consts.height + methods.height;\n\t\theight += LevelSettingsLayer.SEPARATOR + LevelSettingsLayer.BORDER_RADIUS ;\n\n\t\tthis.setContentSize(LevelSettingsLayer.WIDTH, height + LevelSettingsLayer.BORDER_RADIUS);\n\t},\n\n\tdrawChangeableButs: function(values, levelVals, prevLayoutName, layoutName, getSprite, topSeparator)\n\t{\n\t\tvar LoopsLayerLayout = new ccui.Layout();\n\t\tLoopsLayerLayout.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tvar LoopsLayerLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tLoopsLayerLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tLoopsLayerLayoutAlign.setMargin(0, topSeparator, 0, 0);\n\t\tLoopsLayerLayoutAlign.setRelativeName(layoutName);\n\t\tLoopsLayerLayoutAlign.setRelativeToWidgetName(prevLayoutName);\n\t\tLoopsLayerLayout.setLayoutParameter(LoopsLayerLayoutAlign);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tfor(var j = 0;j < values.length;j++)\n\t\t{\n\t\t\tvar rep = new pmui.SelectionButton(getSprite(values[j], pm.NORMAL_STATE),\n\t\t\t\tgetSprite(values[j], pm.SELECTED_STATE),\n\t\t\t\tgetSprite(values[j], pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tif (levelVals.indexOf(values[j]) !== -1)\n\t\t\t\trep.setSelectedTexture();\n\t\t\telse\n\t\t\t\trep.setNormalTexture();\n\t\t\trep.value = values[j];\n\t\t\trep.vals = levelVals;\n\t\t\tLoopsLayerLayout.addChild(rep);\n\t\t\trep.addClickEventListener(function ()\n\t\t\t{\n\t\t\t\tvar value = this.value;\n\t\t\t\tvar chosenVals = this.vals;\n\t\t\t\tif (chosenVals.indexOf(value) !== -1)\n\t\t\t\t{\n\t\t\t\t\tchosenVals.splice(chosenVals.indexOf(value), 1);\n\t\t\t\t\tthis.setNormalTexture();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.setSelectedTexture();\n\t\t\t\t\tchosenVals.push(value);\n\t\t\t\t}\n\t\t\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t\t\t});\n\n\t\t\twidth += rep.width;\n\t\t\theight = Math.max(height, rep.height);\n\t\t}\n\n\t\tLoopsLayerLayout.setContentSize(width, height + topSeparator);\n\t\treturn LoopsLayerLayout;\n\t},\n\n\tdrawGroupChangeableButs: function(values, programDataValues, prevLayoutName, layoutName, getSprite, topSeparator)\n\t{\n\t\tvar LoopsLayerLayout = new ccui.Layout();\n\t\tLoopsLayerLayout.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tvar LoopsLayerLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tLoopsLayerLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tLoopsLayerLayoutAlign.setMargin(0, topSeparator, 0, 0);\n\t\tLoopsLayerLayoutAlign.setRelativeName(layoutName);\n\t\tLoopsLayerLayoutAlign.setRelativeToWidgetName(prevLayoutName);\n\t\tLoopsLayerLayout.setLayoutParameter(LoopsLayerLayoutAlign);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tvar groupButton = new pmui.SelectionButton(getSprite(values[0], pm.NORMAL_STATE),\n\t\t\tgetSprite(values[0], pm.SELECTED_STATE),\n\t\t\tgetSprite(values[0], pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif (programDataValues.indexOf(values[0]) !== -1)\n\t\t{\n\t\t\tgroupButton.setSelectedTexture();\n\t\t}\n\n\t\tgroupButton.groupValues = values;\n\t\tgroupButton.programVals = programDataValues;\n\t\tLoopsLayerLayout.addChild(groupButton);\n\t\tgroupButton.addClickEventListener(function ()\n\t\t{\n\t\t\tvar groupValues = this.groupValues;\n\t\t\tvar chosenVals = this.programVals;\n\t\t\tif(this.selected)\n\t\t\t{\n\t\t\t\tfor (var j = 0; j < groupValues.length; j++)\n\t\t\t\t{\n\t\t\t\t\tif(chosenVals.indexOf(groupValues[j]) !== -1)\n\t\t\t\t\t\tchosenVals.splice(chosenVals.indexOf(groupValues[j]), 1);\n\t\t\t\t}\n\t\t\t\tthis.setNormalTexture();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setSelectedTexture();\n\t\t\t\tfor (var j = 0; j < groupValues.length; j++)\n\t\t\t\t{\n\t\t\t\t\tchosenVals.push(groupValues[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t\t});\n\n\t\twidth += groupButton.width;\n\t\theight = Math.max(height, groupButton.height);\n\n\t\tLoopsLayerLayout.setContentSize(width, height + topSeparator);\n\t\treturn LoopsLayerLayout;\n\t},\n\n\t_useTabsChanged: function (flag)\n\t{\n\t\tthis._robot.getProgramData().useGroupButtons = flag;\n\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t},\n\n\t_useCustomFuncsChanged: function (flag)\n\t{\n\t\tthis._robot.getProgramData().useCustomFuncs = flag;\n\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t},\n\n\t_maxMethodsChanged: function ()\n\t{\n\t\tthis._robot.getProgramData().maxMethodCount = Number(this._maxMethods.getString());\n\t}\n});\n\nPlayerRobotSettingsLayer.MAX_PATTERN_COUNT = 12;\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for common player robot settings.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar PlayerRobotInterfaceLayerP = ccui.Layout.extend(/** @lends PlayerRobotSettingsLayer# */{\n\t_robot: null,\n\t_maxFunctions: null,\n\t_maxMethods: null,\n\t_maxRepeaters: null,\n\t_maxConditions: null,\n\t_maxCondRepeaters: null,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super();\n\n\t\tthis._robot = robot;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._fillSettingsP();\n\t},\n\n\t_fillSettingsP: function()\n\t{\n\t\tvar maxFunctionLabel = new pmui.Text(LocalizedString(\"MaxFunctions\"), 15);\n\n\t\tvar maxFunctionsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tmaxFunctionsLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tmaxFunctionsLabelAlign.setRelativeName(\"MaxFunctions\");\n\t\tmaxFunctionsLabelAlign.setMargin(0, 10, 0, 0);\n\t\tmaxFunctionLabel.setLayoutParameter(maxFunctionsLabelAlign);\n\t\tthis.addChild(maxFunctionLabel);\n\n\t\tthis._maxFunctions = new pmui.TextInput(this._robot.getProgramData().maxFunctionCount, \"0\", 16, 40);\n\t\tthis._createTextInputAlign(\"MaxFunctions\", this._maxFunctions);\n\n\t\tthis._createLabel(\"MaxMethods\", \"MaxFunctions\");\n\t\tthis._maxMethods = new pmui.TextInput(this._robot.getProgramData().maxMethodCount, \"0\", 16, 40);\n\t\tthis._createTextInputAlign(\"MaxMethods\", this._maxMethods);\n\n\t\tthis._createLabel(\"MaxRepeaters\", \"MaxMethods\");\n\t\tthis._maxRepeaters = new pmui.TextInput(this._robot.getProgramData().maxRepeaterCount, \"0\", 16, 40);\n\t\tthis._createTextInputAlign(\"MaxRepeaters\", this._maxRepeaters);\n\n\t\tthis._createLabel(\"MaxConditions\", \"MaxRepeaters\");\n\t\tthis._maxConditions = new pmui.TextInput(this._robot.getProgramData().maxConditionCount, \"0\", 16, 40);\n\t\tthis._createTextInputAlign(\"MaxConditions\", this._maxConditions);\n\n\t\tthis._createLabel(\"MaxCondRepeaters\", \"MaxConditions\");\n\t\tthis._maxCondRepeaters = new pmui.TextInput(this._robot.getProgramData().maxCondRepeaterCount, \"0\", 16, 40);\n\t\tthis._createTextInputAlign(\"MaxCondRepeaters\", this._maxCondRepeaters);\n\n\t\tthis._maxFunctions.setInsertTextCallback(this, this._maxFunctionsChanged);\n\t\tthis._maxMethods.setInsertTextCallback(this, this._maxMethodsChanged);\n\t\tthis._maxRepeaters.setInsertTextCallback(this, this._maxRepeatersChanged);\n\t\tthis._maxConditions.setInsertTextCallback(this, this._maxConditionsChanged);\n\t\tthis._maxCondRepeaters.setInsertTextCallback(this, this._maxCondRepeatersChanged);\n\n\n\t\tvar height =\n\t\t\tthis._maxFunctions.height + this._maxMethods.height\n\t\t\t+ this._maxRepeaters.height + this._maxConditions.height\n\t\t\t+ this._maxCondRepeaters.height ;\n\n\t\tthis.setContentSize(LevelSettingsLayer.WIDTH, height);\n\t},\n\n\t_createLabel: function(name, relativeToName)\n\t{\n\t\tvar maxFunctionLabel = new pmui.Text(LocalizedString(name), 15);\n\n\t\tvar maxFunctionsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tmaxFunctionsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmaxFunctionsLabelAlign.setRelativeName(name);\n\t\tmaxFunctionsLabelAlign.setRelativeToWidgetName(relativeToName);\n\t\tmaxFunctionsLabelAlign.setMargin(0, 10, 0, 0);\n\t\tmaxFunctionLabel.setLayoutParameter(maxFunctionsLabelAlign);\n\t\tthis.addChild(maxFunctionLabel);\n\t},\n\n\t_createTextInputAlign: function(name, obj)\n\t{\n\t\tvar maxMethodsAlign = new ccui.RelativeLayoutParameter();\n\t\tmaxMethodsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tmaxMethodsAlign.setRelativeToWidgetName(name);\n\t\tmaxMethodsAlign.setMargin(5, 0, 0, 0);\n\t\tobj.setLayoutParameter(maxMethodsAlign);\n\t\tthis.addChild(obj);\n\t},\n\n\t_maxFunctionsChanged: function ()\n\t{\n\t\tthis._robot.getProgramData().maxFunctionCount = Number(this._maxFunctions.getString());\n\t},\n\n\t_maxMethodsChanged: function ()\n\t{\n\t\tthis._robot.getProgramData().maxMethodCount = Number(this._maxMethods.getString());\n\t},\n\n\t_maxRepeatersChanged: function()\n\t{\n\t\tthis._robot.getProgramData().maxRepeaterCount = Number(this._maxRepeaters.getString());\n\t},\n\n\t_maxConditionsChanged: function()\n\t{\n\t\tthis._robot.getProgramData().maxConditionCount = Number(this._maxConditions.getString());\n\t},\n\n\t_maxCondRepeatersChanged: function()\n\t{\n\t\tthis._robot.getProgramData().maxCondRepeaterCount = Number(this._maxCondRepeaters.getString());\n\t}\n});\n\nPlayerRobotSettingsLayer.MAX_PATTERN_COUNT = 12;\n","/**\n * Created by Kirill Mashchenko on 30.07.18.\n */\n\n/**\n * @class Layer for all settings.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level Level which settings shows\n */\nvar LevelSettingsLayer = ccui.Layout.extend(/** @lends LoginLayer# */{\n\n\t_level: null,\n\n\t_gradientLayer: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super();\n\n\t\tthis._level = level;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setBackGroundImage(\"System/SL_Border.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(84, 120, 85, 35));\n\t\tthis.setCascadeOpacityEnabled(true);\n\t},\n\n\tupdateSize: function(width, height)\n\t{\n\t\theight = Math.max(LevelSettingsLayer.HEIGHT, height);\n\n\t\tthis.setContentSize(width, height);\n\n\t\tvar settingsAlign = new ccui.RelativeLayoutParameter();\n\t\tsettingsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tsettingsAlign.setMargin(0, -this.height, ProgramLayer.METHOD_STACK_WIDTH + 35, 0);\n\t\tthis.setLayoutParameter(settingsAlign);\n\n\t\tif (this._gradientLayer)\n\t\t{\n\t\t\tthis._gradientLayer.removeFromParent();\n\t\t\tthis._gradientLayer = null;\n\t\t}\n\n\t\tthis._gradientLayer = new ccui.Layout();\n\t\tthis._gradientLayer.setContentSize(this.width - 2 * LevelSettingsLayer.BORDER_RADIUS, this.height - LevelSettingsLayer.BORDER_RADIUS);\n\t\tthis._gradientLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_GRADIENT);\n\t\tthis._gradientLayer.setBackGroundColorVector(cc.p(0, -1));\n\t\tthis._gradientLayer.setBackGroundColor(pmui.OvalLayout.GRAD_START_COLOR, pmui.OvalLayout.GRAD_END_COLOR);\n\n\t\tvar gradientLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tgradientLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgradientLayerAlign.setRelativeName(\"gradient\");\n\t\tgradientLayerAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS, 0, 0, 0);\n\t\tthis._gradientLayer.setLayoutParameter(gradientLayerAlign);\n\n\t\tthis.addChild(this._gradientLayer, -1);\n\t},\n\n\tshow: function()\n\t{\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, 0, -this.height);\n\n\t\tvar moveEnd = cc.callFunc(this._showEnded, this);\n\n\t\tthis.runAction(cc.sequence(moveLayer, moveEnd));\n\t},\n\n\t_showEnded: function()\n\t{\n\t\tvar settingsAlign = new ccui.RelativeLayoutParameter();\n\t\tsettingsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tsettingsAlign.setMargin(0, 0, ProgramLayer.METHOD_STACK_WIDTH + 35, 0);\n\t\tthis.setLayoutParameter(settingsAlign);\n\t},\n\n\thide: function()\n\t{\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, 0, this.height);\n\n\t\tvar moveEnd = cc.callFunc(this._hideEnded, this);\n\n\t\tthis.runAction(cc.sequence(moveLayer, moveEnd));\n\t},\n\n\t_hideEnded: function()\n\t{\n\t\tvar settingsAlign = new ccui.RelativeLayoutParameter();\n\t\tsettingsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tsettingsAlign.setMargin(0, -this.height, ProgramLayer.METHOD_STACK_WIDTH + 35, 0);\n\t\tthis.setLayoutParameter(settingsAlign);\n\t}\n});\n/**\n * @default\n * @const\n * @type {Number}\n */\nLevelSettingsLayer.WIDTH = 400.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nLevelSettingsLayer.HEIGHT = 200.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nLevelSettingsLayer.SEPARATOR = 10.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nLevelSettingsLayer.BORDER_RADIUS = 14.0;\n","/**\n * Created by danilaeremin on 10.08.15.\n */\n\n/**\n * @class Layer for settings of level.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {pm.AbstractLevel} level Level which settings shows\n */\nvar LevelSettings = LevelSettingsLayer.extend(/** @lends LevelSettings# */{\n\n\t_levelName: null,\n\t_editTutorialButton: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Level\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tvar height = label.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tthis._levelName = new pmui.TextInput(level.name, LocalizedString(\"LevelName\"), 20, LevelSettingsLayer.WIDTH - 60);\n\t\theight += this._levelName.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar levelNameAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelNameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tlevelNameAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlevelNameAlign.setRelativeName(\"levelName\");\n\t\tlevelNameAlign.setRelativeToWidgetName(\"label\");\n\t\tthis._levelName.setLayoutParameter(levelNameAlign);\n\n\t\tthis.addChild(this._levelName);\n\n\t\tthis._levelName.setInsertTextCallback(this, this._insertText);\n\n\t\tvar relativeName = \"levelName\";\n\n\t\tif (pm.moduleUtils.canUseMethodStack(level.getType()))\n\t\t{\n\t\t\tvar useMethodStack = new pmui.CheckBox(LocalizedString(\"UseMethodStack\"), this._useMethodStackChanged, this, LevelSettings.FONT_SIZE, level.useMethodStack);\n\t\t\theight += useMethodStack.height + LevelSettingsLayer.SEPARATOR;\n\n\t\t\tvar useMethodStackAlign = new ccui.RelativeLayoutParameter();\n\t\t\tuseMethodStackAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tuseMethodStackAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t\tuseMethodStackAlign.setRelativeName(\"methodStack\");\n\t\t\tuseMethodStackAlign.setRelativeToWidgetName(\"levelName\");\n\t\t\tuseMethodStack.setLayoutParameter(useMethodStackAlign);\n\n\t\t\tthis.addChild(useMethodStack);\n\n\t\t\trelativeName = \"methodStack\";\n\t\t}\n\n\t\tvar useProgramRecognizer = new pmui.CheckBox(LocalizedString(\"UseProgramRecognizer\"), this._useProgramRecognizerChanged, this, LevelSettings.FONT_SIZE, level.useProgramRecognizer);\n\t\theight += useProgramRecognizer.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar useProgramRecognizerAlign = new ccui.RelativeLayoutParameter();\n\t\tuseProgramRecognizerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tuseProgramRecognizerAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tuseProgramRecognizerAlign.setRelativeName(\"programRecognizer\");\n\t\tuseProgramRecognizerAlign.setRelativeToWidgetName(relativeName);\n\t\tuseProgramRecognizer.setLayoutParameter(useProgramRecognizerAlign);\n\n\t\tthis.addChild(useProgramRecognizer);\n\n\t\tvar canEditProgramData = new pmui.CheckBox(LocalizedString(\"CanEditProgramData\"), this._canEditProgramDataChanged, this, LevelSettings.FONT_SIZE, level.isProgramDataEditable);\n\t\theight += canEditProgramData.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar canEditProgramDataAlign = new ccui.RelativeLayoutParameter();\n\t\tcanEditProgramDataAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcanEditProgramDataAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tcanEditProgramDataAlign.setRelativeName(\"programData\");\n\t\tcanEditProgramDataAlign.setRelativeToWidgetName(\"programRecognizer\");\n\t\tcanEditProgramData.setLayoutParameter(canEditProgramDataAlign);\n\n\t\tthis.addChild(canEditProgramData);\n\n\t\tvar indicateMethod = new pmui.CheckBox(LocalizedString(\"IndicateMethod\"), this._indicationChanged, this, LevelSettings.FONT_SIZE, level.robotsCanBeIndicated);\n\t\theight += indicateMethod.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar indicateAlign = new ccui.RelativeLayoutParameter();\n\t\tindicateAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tindicateAlign.setRelativeName(\"indicate\");\n\t\tindicateAlign.setRelativeToWidgetName(\"programData\");\n\t\tindicateAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tindicateMethod.setLayoutParameter(indicateAlign);\n\n\t\tthis.addChild(indicateMethod);\n\n\t\tvar extraSettings = pm.moduleUtils.getExtraLevelSettings(level.getType(), level);\n\t\trelativeName = \"indicate\";\n\n\t\tif (extraSettings)\n\t\t{\n\t\t\tvar extraAlign = new ccui.RelativeLayoutParameter();\n\t\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\textraAlign.setRelativeName(\"extra\");\n\t\t\textraAlign.setRelativeToWidgetName(\"indicate\");\n\t\t\textraAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t\textraSettings.setLayoutParameter(extraAlign);\n\n\t\t\tthis.addChild(extraSettings);\n\n\t\t\trelativeName = \"extra\";\n\t\t\theight += extraSettings.height + LevelSettingsLayer.SEPARATOR;\n\t\t}\n\n\t\tvar tutorialLayout = new ccui.HBox();\n\n\t\tvar isTutorial = new pmui.CheckBox(LocalizedString(\"IsTutorialLevel\"), this._isTutorialChanged, this, LevelSettings.FONT_SIZE, level.isTutorial);\n\n\t\tthis._editTutorialButton = new pmui.Button(pm.spriteUtils.getIconName(\"edit\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tthis._editTutorialButton.addClickEventListener(this._editTutorial.bind(this));\n\n\t\tthis._editTutorialButton.setScale(0.5);\n\t\tthis._editTutorialButton.setEnabled(level.isTutorial);\n\n\t\tvar tutorialElementAlign = new ccui.LinearLayoutParameter();\n\t\ttutorialElementAlign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\n\t\tisTutorial.setLayoutParameter(tutorialElementAlign);\n\t\tthis._editTutorialButton.setLayoutParameter(tutorialElementAlign.clone());\n\n\t\ttutorialLayout.addChild(isTutorial);\n\t\ttutorialLayout.addChild(this._editTutorialButton);\n\n\t\ttutorialLayout.setContentSize(\n\t\t\tisTutorial.width + this._editTutorialButton.width,\n\t\t\tMath.max(isTutorial.height, this._editTutorialButton.height * 0.5)\n\t\t);\n\t\theight += tutorialLayout.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar tutorialAlign = new ccui.RelativeLayoutParameter();\n\t\ttutorialAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\ttutorialAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\ttutorialAlign.setRelativeName(\"tutorial\");\n\t\ttutorialAlign.setRelativeToWidgetName(relativeName);\n\t\ttutorialLayout.setLayoutParameter(tutorialAlign);\n\n\t\tthis.addChild(tutorialLayout);\n\n\t\tvar mapLayersLayout = new ccui.Layout();\n\t\tmapLayersLayout.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tvar mapLayersLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tmapLayersLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmapLayersLayoutAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tmapLayersLayoutAlign.setRelativeName(\"maps\");\n\t\tmapLayersLayoutAlign.setRelativeToWidgetName(\"tutorial\");\n\t\tmapLayersLayout.setLayoutParameter(mapLayersLayoutAlign);\n\n\t\tvar addDownButton = new pmui.Button(pm.spriteUtils.getIconName(\"addDown\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addDown\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addDown\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\taddDownButton.addClickEventListener(this._addDownLayer.bind(this));\n\n\t\tvar addUpButton = new pmui.Button(pm.spriteUtils.getIconName(\"addUp\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addUp\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addUp\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\taddUpButton.addClickEventListener(this._addUpLayer.bind(this));\n\n\t\tvar deleteButton = new pmui.Button(pm.spriteUtils.getIconName(\"deleteMap\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteMap\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteMap\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tdeleteButton.addClickEventListener(this._deleteLayer.bind(this));\n\n\t\tvar addUpButtonAlign = new ccui.LinearLayoutParameter();\n\t\taddUpButtonAlign.setMargin(8, 0, 8, 0);\n\t\taddUpButton.setLayoutParameter(addUpButtonAlign);\n\n\t\tmapLayersLayout.addChild(addDownButton);\n\t\tmapLayersLayout.addChild(addUpButton);\n\t\tmapLayersLayout.addChild(deleteButton);\n\n\t\tmapLayersLayout.setContentSize(LevelSettingsLayer.WIDTH, addDownButton.height);\n\t\theight += mapLayersLayout.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tthis.addChild(mapLayersLayout);\n\n\t\tvar robot = level.robots[level.startRobotIndex];\n\n\t\tif (robot.hasChangeableConditions())\n\t\t{\n\t\t\tvar conditionsLayout = pm.moduleUtils.getChangeableConditions(level.getType(), robot, this._conditionChanged, this);\n\t\t\theight += conditionsLayout.height + LevelSettingsLayer.SEPARATOR;\n\n\t\t\tvar conditionsAlign = new ccui.RelativeLayoutParameter();\n\t\t\tconditionsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tconditionsAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t\tconditionsAlign.setRelativeToWidgetName(\"maps\");\n\t\t\tconditionsLayout.setLayoutParameter(conditionsAlign);\n\n\t\t\tthis.addChild(conditionsLayout);\n\t\t}\n\n\t\theight += LevelSettingsLayer.SEPARATOR + LevelSettingsLayer.BORDER_RADIUS;\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, height);\n\n\t\tpm.registerCustomEventListener(pm.TUTORIAL_SCENARIO_CLOSED, this.show.bind(this), this);\n\t},\n\n\t_conditionChanged: function(name)\n\t{\n\t\tvar robot = this._level.robots[this._level.startRobotIndex];\n\n\t\tswitch(name)\n\t\t{\n\t\t\tcase \"grey\":\n\t\t\t\trobot.useGreyCondition = !robot.useGreyCondition;\n\t\t\t\tbreak;\n\t\t\tcase \"lightBlue\":\n\t\t\t\trobot.useLightBlueCondition = !robot.useLightBlueCondition;\n\t\t\t\tbreak;\n\t\t\tcase \"blue\":\n\t\t\t\trobot.useBlueCondition = !robot.useBlueCondition;\n\t\t\t\tbreak;\n\t\t}\n\n\t\trobot.updateConditions();\n\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED, name);\n\t},\n\n\t_useMethodStackChanged: function (flag)\n\t{\n\t\tthis._level.useMethodStack = flag;\n\t},\n\n\t_useProgramRecognizerChanged: function (flag)\n\t{\n\t\tthis._level.useProgramRecognizer = flag;\n\t},\n\n\t_canEditProgramDataChanged: function (flag)\n\t{\n\t\tthis._level.isProgramDataEditable = flag;\n\t},\n\n\t_indicationChanged: function(flag)\n\t{\n\t\tthis._level.robotsCanBeIndicated = flag;\n\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t},\n\n\t_isTutorialChanged: function (flag)\n\t{\n\t\tthis._level.isTutorial = flag;\n\n\t\tif(flag)\n\t\t\tthis._level.tutorialScenario = new pm.data.TutorialScenario();\n\t\telse\n\t\t\tthis._level.tutorialScenario = {};\n\n\t\tthis._editTutorialButton.setEnabled(flag);\n\t},\n\n\t_editTutorial: function ()\n\t{\n\t\tthis.hide();\n\t\tpm.tutorialUtils.editTutorial(this._level.tutorialScenario);\n\t},\n\n\t_insertText: function ()\n\t{\n\t\tthis._level.name = this._levelName.getString();\n\t},\n\n\t_addDownLayer: function ()\n\t{\n\t\tfor(var taskType in this._level.taskList.tasks)\n\t\t{\n\t\t\tvar task = this._level.taskList.tasks[taskType];\n\n\t\t\tif(!(task instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tfor (var i = this._level.maps.length-1; i >= this._level.getActiveMapIndex(); --i)\n\t\t\t{\n\t\t\t\ttask.data[i + 1] = task.data[i];\n\t\t\t\tdelete task.data[i];\n\t\t\t}\n\n\t\t\ttask.fillWithInitialData(this._level.getActiveMapIndex());\n\t\t}\n\n\t\tpm.sendCustomEvent(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, MapLayersEditActions.AddDown);\n\n\t\tif (this._level.maps.length === 2)\n\t\t\tpm.sendCustomEvent(pme.MULTIMAP_MODE, true);\n\t},\n\n\t_addUpLayer: function ()\n\t{\n\t\tfor(var taskType in this._level.taskList.tasks)\n\t\t{\n\t\t\tvar task = this._level.taskList.tasks[taskType];\n\n\t\t\tif(!(task instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tfor (var i = this._level.maps.length-1; i >= this._level.getActiveMapIndex() + 1; --i)\n\t\t\t{\n\t\t\t\ttask.data[i + 1] = task.data[i];\n\t\t\t\tdelete task.data[i];\n\t\t\t}\n\n\t\t\ttask.fillWithInitialData(this._level.getActiveMapIndex() + 1);\n\t\t}\n\n\t\tpm.sendCustomEvent(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, MapLayersEditActions.AddUp);\n\n\t\tif (this._level.maps.length === 2)\n\t\t\tpm.sendCustomEvent(pme.MULTIMAP_MODE, true);\n\t},\n\n\t_deleteLayer: function ()\n\t{\n\t\tfor(var taskType in this._level.taskList.tasks)\n\t\t{\n\t\t\tvar task = this._level.taskList.tasks[taskType];\n\n\t\t\tif(!(task instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tfor (var i = this._level.getActiveMapIndex() + 1; i < this._level.maps.length; i++)\n\t\t\t{\n\t\t\t\ttask.data[i - 1] = task.data[i];\n\t\t\t\tdelete task.data[i];\n\t\t\t}\n\t\t\tdelete task.data[this._level.maps.length - 1];\n\t\t}\n\n\t\tpm.sendCustomEvent(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, MapLayersEditActions.DeleteCurrent);\n\n\t\tif(this._level.maps.length === 1)\n\t\t\tpm.sendCustomEvent(pme.MULTIMAP_MODE, false);\n\t}\n});\n\nLevelSettings.FONT_SIZE = 18;\n","/**\n * Created by Nikita Besshaposhnikov on 05.12.14.\n */\n\nvar SquarableMapEditor_touchType = {\n\tNone: 0,\n\tResize: 1,\n\tDragRobot: 2,\n\tDragStartPoint: 3,\n\tEditMap: 4,\n\tMoveMap: 5,\n\tDragObject: 6,\n\tDeleteObject: 7,\n\tResizeLeft: 8\n};\n\nvar EditorTapsType = {\n\tNone: 0,\n\tChangeMapElement: 1,\n\tAddRobot: 2,\n\tAddObject: 3,\n\tAddClone: 4\n};\n\nvar SquarableMapEditor_resizeSide = {\n\tLeft: 0,\n\tRight: 1\n};\n\n/**\n * @class Common interface for square map layers in editor.\n * @interface\n */\nvar SquarableMapEditorLayerHelper = {\n\t_resizeLeftSprite: null,\n\t_resizeSprite: null,\n\t_startPoint: cc.p(),\n\t_startDragPoint: cc.p(),\n\t_touchType: SquarableMapEditor_touchType.None,\n\t_dragedObject: -1,\n\t_selectedObjectForTapType: null,\n\t_tapType: EditorTapsType.None,\n\n\t_disableEditing: false,\n\n\t_activeRobot: null,\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\n\t\tthis._disableEditing = false;\n\n\t\tthis._tapType = EditorTapsType.None;\n\n\t\tpm.registerCustomEventListener(pme.PAGE_CHANGED, function(event)\n\t\t{\n\t\t\tthis._selectedObjectForTapType = null;\n\t\t\tthis._tapType = EditorTapsType.None;\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.MAP_ELEMENT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis._selectedObjectForTapType = event.getUserData();\n\t\t\tthis._tapType = EditorTapsType.ChangeMapElement;\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.ADD_ROBOT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis._selectedObjectForTapType = event.getUserData();\n\t\t\tthis._tapType = EditorTapsType.AddRobot;\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.ADD_OBJECT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis._selectedObjectForTapType = event.getUserData();\n\t\t\tthis._tapType = EditorTapsType.AddObject;\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tthis._disableEditing = true;\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tthis._disableEditing = false;\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.ADD_CLONE, function(event)\n\t\t{\n\t\t\tthis._selectedObjectForTapType = this._activeRobot.getType();\n\t\t\tthis._tapType = EditorTapsType.AddClone;\n\t\t}.bind(this), this);\n\n\t\tthis._activeRobot = this._map.parentLevel.robots[this._map.parentLevel.startRobotIndex];\n\t},\n\n\t_drawPositionMark: function(robotID, point)\n\t{\n\t\tvar markName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robotID);\n\t\tvar markSprite = this.terrainLayer.getChildByName(markName);\n\n\t\tif(!markSprite)\n\t\t{\n\t\t\tmarkSprite = pm.spriteUtils.getMapTile(\"targetElement\");\n\t\t\tmarkSprite.setName(markName);\n\n\t\t\tif(robotID !== this._activeRobot.id)\n\t\t\t\tmarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\tthis.terrainLayer.addChild(markSprite, 10);\n\t\t}\n\n\t\tthis._setMarkPosition(robotID, point);\n\t},\n\n\t_touchBegan: function (touch, pEvent)\n\t{\n\t\tif (this._map.parentLevel.activeMap !== this._map || this._disableEditing)\n\t\t\treturn false;\n\n\t\tvar level = this._map.parentLevel;\n\n\t\t// resize\n\n\t\tvar p = this._resizeSprite.convertTouchToNodeSpace(touch);\n\t\tthis._startPoint = touch.getLocation();\n\n\t\tvar l = this._resizeLeftSprite.convertTouchToNodeSpace(touch);\n\n\t\tvar rect = this._resizeSprite.getContentSize();\n\t\tvar rectL = this._resizeLeftSprite.getContentSize();\n\n\t\tif (p.x > -20 && p.y > -20 && p.x < rect.width + 20 && p.y < rect.height + 20)\n\t\t{\n\t\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].isPlayingAnimation() || level.robots[i].isEndedWork())\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._touchType = SquarableMapEditor_touchType.Resize;\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (l.x > -20 && l.y > -20 && l.x < rectL.width + 20 && l.y < rectL.height + 20)\n\t\t{\n\t\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].isPlayingAnimation() || level.robots[i].isEndedWork())\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._touchType = SquarableMapEditor_touchType.ResizeLeft;\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!this.containsPoint(touch))\n\t\t\treturn false;\n\n\t\t// drag robot\n\n\t\tif (!level.robotsPlayingAnimation())\n\t\t{\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].sprite.containsPoint(touch) && level.robots[i].getType() !== pm.PlayerRobotType.Counter)\n\t\t\t\t{\n\t\t\t\t\tif (level.activeMap.element(level.robots[i].position).startForRobot === level.robots[i].id &&\n\t\t\t\t\t\tlevel.activeMap.element(level.robots[i].position).startRobotData.direction === level.robots[i].direction)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.dragedRobot = i;\n\t\t\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragRobot;\n\t\t\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\t\t\t\tthis._startDragPoint = this.objectLayer.convertTouchToNodeSpace(touch);\n\n\t\t\t\t\t\tif (!level.robots[i].isEndedWork())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._map.element(level.robots[this.dragedRobot].position).startForRobot = pm.MapElement.START_FOR_NO_ROBOT;\n\t\t\t\t\t\t\tdelete this._map.element(level.robots[this.dragedRobot].position).startRobotData.direction;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.ANIMATE_RESTART_BUTTON);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//drag objects\n\t\tfor(var i = 0; i < level.activeMap.objects.length; ++i)\n\t\t{\n\t\t\tif (level.activeMap.objects[i].sprite.containsPoint(touch))\n\t\t\t{\n\t\t\t\tthis._dragedObject = i;\n\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragObject;\n\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\t\tthis._startDragPoint = this.objectLayer.convertTouchToNodeSpace(touch);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// drag startPoint\n\t\tvar startPoint = this.terrainLayer.getChildByName(pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(this._activeRobot.id));\n\n\t\tif (startPoint !== null)\n\t\t{\n\t\t\tp = startPoint.convertTouchToNodeSpace(touch);\n\t\t\trect = startPoint.getContentSize();\n\n\t\t\tif (p.x > 0 && p.y > 0 && p.x < rect.width && p.y < rect.height)\n\t\t\t{\n\t\t\t\tthis._dragedObject = this._activeRobot;\n\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragStartPoint;\n\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\tthis._touchType = SquarableMapEditor_touchType.EditMap;\n\t\treturn true;\n\t},\n\n\tresizeTouchMoved: function (touch, side, pEvent)\n\t{\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tvar dif = cc.pSub(this.convertTouchToNodeSpace(touch), this._startPoint);\n\n\t\t\tvar affineVector = pm.moduleUtils.getAffineVector(this._map.getType(), dif);\n\n\t\t\tvar dx = affineVector.x / (this.getMapElementSize().width * Math.sqrt(5 / 8));\n\t\t\tvar dy = affineVector.y / (this.getMapElementSize().height * Math.sqrt(5 / 8));\n\t\t}\n\t\telse if (this._orientation === pm.MapLayer2D.Orientation.Ortho)\n\t\t{\n\t\t\tvar dif = cc.pSub(this.convertTouchToNodeSpace(touch), this._startPoint);\n\n\t\t\tvar dx = dif.x / this.getMapElementSize().width;\n\t\t\tvar dy = dif.y / this.getMapElementSize().height;\n\t\t}\n\n\t\tif (dx > 1)\n\t\t{\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\tif (side === SquarableMapEditor_resizeSide.Left)\n\t\t\t\tthis._resizeWidthLeft(-1);\n\t\t\telse\n\t\t\t\tthis._resizeWidthRight(1);\n\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t}\n\t\telse if (dx < -1)\n\t\t{\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\tif (side === SquarableMapEditor_resizeSide.Left)\n\t\t\t\tthis._resizeWidthLeft(1);\n\t\t\telse\n\t\t\t\tthis._resizeWidthRight(-1);\n\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t}\n\n\t\tif (dy > 1)\n\t\t{\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\tif (side === SquarableMapEditor_resizeSide.Left)\n\t\t\t\tthis._resizeHeightLeft(-1);\n\t\t\telse\n\t\t\t\tthis._resizeHeightRight(1);\n\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t}\n\t\telse if (dy < -1)\n\t\t{\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\tif (side === SquarableMapEditor_resizeSide.Left)\n\t\t\t\tthis._resizeHeightLeft(1);\n\t\t\telse\n\t\t\t\tthis._resizeHeightRight(-1);\n\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t}\n\t},\n\n\t_dragRobotMoved: function (touch, pEvent)\n\t{\n\t\tvar level = this._map.parentLevel;\n\t\tvar robot = level.robots[this.dragedRobot];\n\n\t\tif (level.robotsEndedWork())\n\t\t\treturn;\n\n\t\tvar p = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar p_normal = this.positionFromReal(p);\n\n\t\tvar startPosition = this.positionFromReal(this._startDragPoint);\n\n\t\tif (this._map.element(p_normal).getObjectCount() !== 0 &&\n (startPosition.x !== p_normal.x || startPosition.y !== p_normal.y))\n\t\t\treturn;\n\n\t\tif (this._map.element(p_normal).getRobotsCount() !== 0 &&\n (startPosition.x !== p_normal.x || startPosition.y !== p_normal.y))\n\t\t\treturn;\n\n\t\tif (!(robot.direction >= 0 && robot.direction < robot.getDirectionCount()))\n\t\t{\n\t\t\tcc.log(\"Incorrect robot4 direction\");\n\t\t\trobot.direction = 0;\n\t\t}\n\n\t\trobot.setPosition(p_normal, robot.direction);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis._setRobotStartPositionMarkPosition(robot.id, robot.position);\n\n\t\tvar opacity = 255;\n\n\t\tif (this._positionOutOfMap(p))\n\t\t\topacity = 50;\n\n\t\trobot.sprite.getSprite().setOpacity(opacity);\n\t},\n\n\t_dragObjectMoved: function (touch, pEvent)\n\t{\n\t\tvar level = this._map.parentLevel;\n\t\tvar object = level.activeMap.objects[this._dragedObject];\n\n\t\tvar point = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar normalPoint = this.positionFromReal(point);\n\n\t\tif (pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, normalPoint))\n\t\t\treturn;\n\n\t\tvar startPosition = this.positionFromReal(this._startDragPoint);\n\n\t\tif (this._map.element(normalPoint).getObjectCount() !== 0 &&\n (startPosition.x !== normalPoint.x || startPosition.y !== normalPoint.y))\n\t\t\treturn;\n\n\t\tif (this._map.element(normalPoint).getRobotsCount() !== 0 &&\n (startPosition.x !== normalPoint.x || startPosition.y !== normalPoint.y))\n\t\t\treturn;\n\n\t\tobject.setPosition(normalPoint);\n\t\tobject.startPosition = normalPoint;\n\t\tobject.position = normalPoint;\n\t\tobject.sprite.setRealPosition(object.startPosition);\n\n\t\tif (this._positionOutOfMap(point))\n\t\t\tobject.sprite.getSprite().setOpacity(100);\n\t\telse\n\t\t\tobject.sprite.getSprite().setOpacity(255);\n\t},\n\n\t_dragStartPointMoved: function (touch, pEvent)\n\t{\n\t\tvar p = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar p_normal = this.positionFromReal(p);\n\n\t\tvar level = this._map.parentLevel;\n\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\tif(task)\n\t\t{\n\t\t\tvar robotID = this._dragedObject.id;\n\n\t\t\ttask.data[mapIndex][robotID] = p_normal;\n\n\t\t\tthis._setMarkPosition(robotID, p_normal);\n\n\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t}\n\t},\n\n\t_positionOutOfMap: function(pos)\n\t{\n\t\tvar x = Math.floor(pos.x/this.getMapElementSize().width + 0.5);\n\t\tif (x < 0) return true;\n\t\tif (x >= this._map.width) return true;\n\n\t\tvar y = Math.floor((this.getRealHeight() - pos.y)/this.getMapElementSize().height + 0.5);\n\t\tif (y < 0) return true;\n\t\tif (y >= this._map.height) return true;\n\n\t\treturn false;\n\t},\n\n\t_touchMoved: function (touch, pEvent)\n\t{\n\t\tswitch (this._touchType)\n\t\t{\n\t\t\tcase SquarableMapEditor_touchType.EditMap:\n\t\t\t{\n\t\t\t\tvar dif = cc.pCompOp(cc.pSub(this._startPoint, this.convertTouchToNodeSpace(touch)), Math.abs);\n\n\t\t\t\tif (dif.x > 10 || dif.y > 10)\n\t\t\t\t\tthis._touchType = SquarableMapEditor_touchType.MoveMap;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase SquarableMapEditor_touchType.Resize:\n\t\t\t\tthis.resizeTouchMoved(touch, 1, pEvent);\n\t\t\t\tbreak;\n\n\t\t\tcase SquarableMapEditor_touchType.ResizeLeft:\n\t\t\t\tthis.resizeTouchMoved(touch, 0, pEvent);\n\t\t\t\tbreak;\n\n\t\t\tcase SquarableMapEditor_touchType.DragRobot:\n\t\t\t\tthis._dragRobotMoved(touch, pEvent);\n\t\t\t\tbreak;\n\n\t\t\tcase SquarableMapEditor_touchType.DragObject:\n\t\t\t\tthis._dragObjectMoved(touch, pEvent);\n\t\t\t\tbreak;\n\n\t\t\tcase SquarableMapEditor_touchType.DragStartPoint:\n\t\t\t\tthis._dragStartPointMoved(touch, pEvent);\n\t\t\t\tbreak;\n\n\t\t\tcase SquarableMapEditor_touchType.MoveMap:\n\t\t\t\tthis.setPosition(cc.pAdd(this.getPosition(), touch.getDelta()));\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_changeWallsForTouch: function (touch)\n\t{\n\t\tif (!this._map.editWalls)\n\t\t\treturn false;\n\n\t\tif (this._map.hasWalls())\n\t\t{\n\t\t\tvar start = this._startPoint;\n\t\t\tvar end = this.convertTouchToNodeSpace(touch);\n\n\t\t\tvar dif = cc.pSub(start, end);\n\t\t\tdif = cc.pCompOp(dif, Math.abs);\n\n\t\t\tif (dif.x < 10 && dif.y < 10)\n\t\t\t{\n\t\t\t\tvar p = this.terrainLayer.convertTouchToNodeSpace(touch);\n\t\t\t\tvar p_normal = this.positionFromReal(p);\n\t\t\t\tvar p_left = this.positionFromReal(cc.p(p.x + 10, p.y));\n\t\t\t\tvar p_up = this.positionFromReal(cc.p(p.x, p.y - 10));\n\t\t\t\tvar p_right = this.positionFromReal(cc.p(p.x - 10, p.y));\n\t\t\t\tvar p_down = this.positionFromReal(cc.p(p.x, p.y + 10));\n\n\t\t\t\tvar walls = false;\n\n\t\t\t\tif (p_normal.x < p_left.x)\n\t\t\t\t{\n\t\t\t\t\twalls = true;\n\t\t\t\t\tthis._map.elementFromPoint(p_normal).walls[MapDirection4.Right] = !this._map.elementFromPoint(p_normal).walls[MapDirection4.Right];\n\t\t\t\t\tthis._map.elementFromPoint(p_left).walls[MapDirection4.Left] = this._map.elementFromPoint(p_normal).walls[MapDirection4.Right];\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tif (this._map.elementFromPoint(p_normal).walls[MapDirection4.Right])\n\t\t\t\t\t\tthis._drawWall(p_normal, type);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._removeWall(this._map.element(p_normal).wallLeftSprite);\n\t\t\t\t}\n\t\t\t\telse if (p_normal.x > p_right.x)\n\t\t\t\t{\n\t\t\t\t\twalls = true;\n\t\t\t\t\tthis._map.elementFromPoint(p_normal).walls[MapDirection4.Left] = !this._map.elementFromPoint(p_normal).walls[MapDirection4.Left];\n\t\t\t\t\tthis._map.elementFromPoint(p_right).walls[MapDirection4.Right] = this._map.elementFromPoint(p_normal).walls[MapDirection4.Left];\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tif (this._map.elementFromPoint(p_right).walls[MapDirection4.Right])\n\t\t\t\t\t\tthis._drawWall(p_right, type);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._removeWall(this._map.element(p_right).wallLeftSprite);\n\t\t\t\t}\n\t\t\t\telse if (p_normal.y < p_up.y)\n\t\t\t\t{\n\t\t\t\t\twalls = true;\n\t\t\t\t\tthis._map.elementFromPoint(p_normal).walls[MapDirection4.Down] = !this._map.elementFromPoint(p_normal).walls[MapDirection4.Down];\n\t\t\t\t\tthis._map.elementFromPoint(p_up).walls[MapDirection4.Up] = this._map.elementFromPoint(p_normal).walls[MapDirection4.Down];\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\tif (this._map.elementFromPoint(p_normal).walls[MapDirection4.Down])\n\t\t\t\t\t\tthis._drawWall(p_normal, type);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._removeWall(this._map.element(p_normal).wallUpSprite);\n\t\t\t\t}\n\t\t\t\telse if (p_normal.y > p_down.y)\n\t\t\t\t{\n\t\t\t\t\twalls = true;\n\t\t\t\t\tthis._map.elementFromPoint(p_normal).walls[MapDirection4.Up] = !this._map.elementFromPoint(p_normal).walls[MapDirection4.Up];\n\t\t\t\t\tthis._map.elementFromPoint(p_down).walls[MapDirection4.Down] = this._map.elementFromPoint(p_normal).walls[MapDirection4.Up];\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\tif (this._map.elementFromPoint(p_down).walls[MapDirection4.Down])\n\t\t\t\t\t\tthis._drawWall(p_down, type);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._removeWall(this._map.element(p_down).wallUpSprite);\n\t\t\t\t}\n\n\t\t\t\tif (walls)\n\t\t\t\t{\n\t\t\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\t\tthis.objectLayer.updateOrderGraph();\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_setActiveRobot: function(newRobot)\n\t{\n\t\tif(!newRobot)\n\t\t\treturn;\n\n\t\tif(this._map.parentLevel.robots.length > 1)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.parentLevel.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = this._map.parentLevel.robots[i];\n\n\t\t\t\tif (robot.groupID === newRobot.groupID)\n\t\t\t\t{\n\t\t\t\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t\t\t\t\trobot.sprite.setActive(true);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\trobot.sprite.setActive(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar startMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(this._activeRobot.id);\n\t\tvar startMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\tif(startMarkSprite)\n\t\t\tstartMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\tstartMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(newRobot.id);\n\t\tstartMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\tif(startMarkSprite)\n\t\t\tstartMarkSprite.setOpacity(255);\n\n\t\tvar posMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(this._activeRobot.id);\n\t\tvar posMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\tif(posMarkSprite)\n\t\t\tposMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\tposMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(newRobot.id);\n\t\tposMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\tif(posMarkSprite)\n\t\t\tposMarkSprite.setOpacity(255);\n\n\t\tthis._activeRobot = newRobot;\n\n\t\tpm.sendCustomEvent(pm.ROBOT_TOUCH_EVENT_STR, this._activeRobot);\n\t},\n\n\t_touchEnded: function (touch, pEvent)\n\t{\n\t\tvar p = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar p_normal = this.positionFromReal(p);\n\t\tvar level = this._map.parentLevel;\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.DragRobot)\n\t\t{\n\t\t\tvar robot = level.robots[this.dragedRobot];\n\n\t\t\tif (!level.robotsEndedWork())\n\t\t\t{\n\t\t\t\tthis._map.element(robot.position).startForRobot = robot.id;\n\t\t\t\tthis._map.element(robot.position).startRobotData.direction = robot.direction;\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robot.id, robot.position);\n\t\t\t}\n\n\t\t\tvar start = this._startPoint;\n\t\t\tvar end = this.convertTouchToNodeSpace(touch);\n\n\t\t\tvar dif = cc.pSub(start, end);\n\t\t\tdif = cc.pCompOp(dif, Math.abs);\n\n\t\t\tif (dif.x < 10 && dif.y < 10)\n\t\t\t{\n\t\t\t\tif (this._activeRobot.id === robot.id && !level.robotsEndedWork())\n\t\t\t\t{\n\t\t\t\t\tif (!(robot.direction >= 0 && robot.direction < robot.getDirectionCount()))\n\t\t\t\t\t{\n\t\t\t\t\t\tcc.log(\"Incorrect robot4 direction\");\n\t\t\t\t\t\trobot.direction = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pm.moduleUtils.needToRotateRobot(this._map.getType()))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar newDirection = (robot.direction + 1) % robot.getDirectionCount();\n\n\t\t\t\t\t\trobot.setPosition(robot.position, newDirection);\n\t\t\t\t\t\trobot.sprite.setDirection(newDirection);\n\t\t\t\t\t\trobot.sprite.setRealPosition(robot.position);\n\t\t\t\t\t\tthis._map.element(robot.position).startRobotData.direction = robot.direction;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._setActiveRobot(robot);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this._positionOutOfMap(p) && level.robots.length > 1)\n\t\t\t{\n\t\t\t\tvar newActiveRobot = null;\n\n\t\t\t\tif(robot.id === this._activeRobot.id)\n\t\t\t\t{\n\t\t\t\t\tvar activeIndex = level.robots.indexOf(robot);\n\t\t\t\t\tfor (var t = 0; t < level.robots.length; ++t)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (t !== activeIndex)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnewActiveRobot = level.robots[t];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._map.element(robot.position).removeRobot(robot);\n\t\t\t\tthis.removeObject(robot.sprite, false);\n\t\t\t\tthis._removeRobotStartPositionMark(robot.id);\n\t\t\t\tthis._removePositionMark(robot.id);\n\n\t\t\t\tthis._onRemoveRobot(robot);\n\n\t\t\t\tfor (var k = 0; k < level.maps.length; ++k)\n\t\t\t\t{\n\t\t\t\t\tvar map = level.maps[k];\n\n\t\t\t\t\tfor (var i = 0; i < map.height; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var j = 0; j < map.width; ++j)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (map.element(cc.p(j, i)).startForRobot === robot.id)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmap.element(cc.p(j, i)).startForRobot = pm.MapElement.START_FOR_NO_ROBOT;\n\t\t\t\t\t\t\t\tdelete map.element(cc.p(j, i)).startRobotData.direction;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar deleteRobotGroupID = level.robots[this.dragedRobot].groupID;\n\n\t\t\t\tlevel.robots.splice(this.dragedRobot, 1);\n\n\t\t\t\tvar needToUpdateGroupID = true;\n\n\t\t\t\tfor (var r = 0; r < level.robots.length; ++r)\n\t\t\t\t{\n\t\t\t\t\tif (level.robots[r].groupID === deleteRobotGroupID)\n\t\t\t\t\t\tneedToUpdateGroupID = false;\n\t\t\t\t}\n\n\t\t\t\tif (needToUpdateGroupID)\n\t\t\t\t{\n\t\t\t\t\tfor (var r = 0; r < level.robots.length; ++r)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (level.robots[r].groupID > deleteRobotGroupID)\n\t\t\t\t\t\t\t--level.robots[r].groupID;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (var r = this.dragedRobot; r < level.robots.length; ++r)\n\t\t\t\t{\n\t\t\t\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(level.robots[r].id));\n\n\t\t\t\t\tmap.element(level.robots[r].position).removeRobot(level.robots[r]);\n\t\t\t\t\t--level.robots[r].id;\n\n\t\t\t\t\tmap.element(level.robots[r].position).startForRobot--;\n\t\t\t\t\tmap.element(level.robots[r].position).startRobotData.direction = level.robots[r].direction;\n\t\t\t\t\tmap.element(level.robots[r].position).addRobot(level.robots[r]);\n\n\t\t\t\t\tmarkSprite.setName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(level.robots[r].id));\n\t\t\t\t}\n\n\t\t\t\tif (newActiveRobot)\n\t\t\t\t\tthis._setActiveRobot(newActiveRobot);\n\n\t\t\t\tif (this._map.parentLevel.robots.length === 1)\n\t\t\t\t\tthis._activeRobot.sprite.setActive(false);\n\n\t\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.forceUpdate();\n\t\t\t}\n\t\t\telse if (this._positionOutOfMap(p) && level.robots.length === 1)\n\t\t\t{\n\t\t\t\trobot.sprite.getSprite().setOpacity(255);\n\t\t\t}\n\n\t\t\tif (this._map.parentLevel.robots.length > 1 && this._positionOutOfMap(p) && this.dragedRobot === this._map.parentLevel.startRobotIndex)\n\t\t\t\trobot.sprite.setActive(robot.id === this._activeRobot.id);\n\t\t}\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.DragObject)\n\t\t{\n\t\t\tif (this._positionOutOfMap(p))\n\t\t\t{\n\t\t\t\tvar object = level.activeMap.objects[this._dragedObject];\n\n\t\t\t\tthis._removeObject(object);\n\n\t\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.forceUpdate();\n\t\t\t}\n\t\t}\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.EditMap &&\n !this._changeWallsForTouch(touch) &&\n this._selectedObjectForTapType !== undefined &&\n this._selectedObjectForTapType !== null)\n\n\t\t\tthis._mapElementClicked(p_normal);\n\t},\n\n\t_removeObject: function(object)\n\t{\n\t\tthis._map.element(object.position).removeObject(object);\n\t\tthis.removeObject(object.sprite, false);\n\n\t\tthis._map.parentLevel.activeMap.objects.splice(this._dragedObject, 1);\n\n\t\tfor (var i = this._dragedObject; i < this._map.parentLevel.activeMap.objects.length; ++i)\n\t\t{\n\t\t\tthis._map.element(this._map.objects[i].position).removeObject(this._map.objects[i]);\n\t\t\tthis._map.parentLevel.activeMap.objects[i].id--;\n\t\t\tthis._map.element(this._map.objects[i].position).addObject(this._map.objects[i]);\n\t\t}\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.ChangeMapElement)\n\t\t{\n\t\t\tvar element = this._map.element(pos);\n\t\t\telement.setType(this._selectedObjectForTapType);\n\t\t\telement.originalType = this._selectedObjectForTapType;\n\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddObject)\n\t\t{\n\t\t\tif (this._map.element(pos).getObjectCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tif (!pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, pos))\n\t\t\t\tthis._addObject(pos, pm.moduleUtils.generateObject(this._map.getType(), this._selectedObjectForTapType));\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\t_addObject: function (pos, object)\n\t{\n\t\tobject.id = this._map.objects.length+1;\n\t\tobject.startPosition = pos;\n\t\tobject.parentMap = this._map;\n\t\tobject.setPosition(object.startPosition);\n\t\tobject.generateSprite(false);\n\t\tobject.sprite.setOrientation(this._orientation);\n\n\t\tthis._map.objects.push(object);\n\t\tobject.sprite.mapLayer = this._map.mapLayer;\n\t\tthis.addObject(object.sprite);\n\t\tobject.sprite.setRealPosition(object.startPosition);\n\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\tthis.objectLayer.updateOrderGraph();\n\t},\n\n\t_addRobot: function (pos, robot)\n\t{\n\t\tvar groupID = 0;\n\t\tvar isFound = false;\n\t\tvar indexes = [];\n\t\tvar robots = this._map.parentLevel.robots;\n\n\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\tindexes[i] = robots[i].groupID;\n\n\t\tindexes.sort();\n\n\t\tfor (var i = 1; i < indexes.length; ++i)\n\t\t{\n\t\t\tif (indexes[i] - indexes[i-1] > 1)\n\t\t\t{\n\t\t\t\tgroupID = indexes[i-1] + 1;\n\t\t\t\tisFound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (robots.length > 0 && !isFound)\n\t\t\tgroupID = indexes[indexes.length-1] + 1;\n\n\t\trobot.childRobot = null;\n\t\trobot.childRobotID = -1;\n\t\trobot.parentLevel = this._map.parentLevel;\n\n\t\tthis._map.parentLevel.robots.push(robot);\n\t\trobot.id = this._map.parentLevel.robots.indexOf(robot);\n\n\t\trobot.groupID = groupID;\n\n\t\trobot.parentLevel.programData[robot.groupID] = new pm.data.ProgramInfo();\n\t\trobot.parentLevel.programData[robot.groupID].currentIndex = 0;\n\t\trobot.parentLevel.programData[robot.groupID].programDataArray[0] = pm.appUtils.generateProgramData();\n\n\t\trobot.startPosition = pos;\n\t\trobot.setPosition(robot.startPosition, MapDirection4.Down);\n\n\t\tthis._map.element(pos).startForRobot = robot.id;\n\t\tthis._map.element(pos).startRobotData.direction = robot.direction;\n\n\t\trobot.generateRobotSprite();\n\n\n\t\trobot.sprite.mapLayer = this._map.mapLayer;\n\t\trobot.sprite.setDirection(robot.direction);\n\t\trobot.sprite.setOrientation(this._orientation);\n\n\t\tthis.addObject(robot.sprite);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis.drawRobotStartPositionMark(robot.id, robot.position);\n\n\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t},\n\n\t_addClone: function(pos, robot)\n\t{\n\t\trobot.childRobot = null;\n\t\trobot.childRobotID = -1;\n\t\trobot.parentLevel = this._map.parentLevel;\n\n\t\tthis._map.parentLevel.robots.push(robot);\n\t\trobot.id = this._map.parentLevel.robots.indexOf(robot);\n\n\t\trobot.groupID = this._activeRobot.groupID;\n\n\t\trobot.startPosition = pos;\n\t\trobot.setPosition(robot.startPosition, this._activeRobot.direction);\n\n\t\tthis._map.element(pos).startForRobot = robot.id;\n\t\tthis._map.element(pos).startRobotData.direction = robot.direction;\n\n\t\trobot.generateRobotSprite();\n\n\t\trobot.sprite.mapLayer = this._map.mapLayer;\n\t\trobot.sprite.setDirection(robot.direction);\n\t\trobot.sprite.setOrientation(this._orientation);\n\n\t\tthis.addObject(robot.sprite);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis.drawRobotStartPositionMark(robot.id, robot.position);\n\n\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t},\n\n\t_onAddRobot: function(robot)\n\t{\n\t\tpm.sendCustomEvent(pme.ADD_ROBOT, robot);\n\n\t\tif (this._map.parentLevel.getRobotCount() === 2)\n\t\t\tpm.sendCustomEvent(pme.COOPERATIVE_MODE, true);\n\t},\n\n\t_onRemoveRobot: function(robot)\n\t{\n\t\tpm.sendCustomEvent(pme.REMOVE_ROBOT, robot);\n\n\t\tif (this._map.parentLevel.getRobotCount() === 2)\n\t\t\tpm.sendCustomEvent(pme.COOPERATIVE_MODE, false);\n\t},\n\n\t_resizeHeightRight: function (sgn)\n\t{\n\t\tif (pm.moduleUtils.stopResizingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\treturn;\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.y === 0)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].y === 0)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.y === 0)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopDecreasingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tif (this._map.height === 1)\n\t\t\t\treturn;\n\n\t\t\tif (this._map.hasWalls())\n\t\t\t{\n\t\t\t\tvar wallsRemoved = false;\n\n\t\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t\t{\n\t\t\t\t\tif (this._map.element(cc.p(i, 0)).walls[MapDirection4.Right])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(this._map.element(cc.p(i, 0)).wallLeftSprite);\n\t\t\t\t\t\tthis._map.element(cc.p(i, 0)).walls[MapDirection4.Right] = false;\n\n\t\t\t\t\t\tif (this._map.element(cc.p(i + 1, 0)))\n\t\t\t\t\t\t\tthis._map.element(cc.p(i + 1, 0)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._map.element(cc.p(i, 0)).walls[MapDirection4.Down])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(this._map.element(cc.p(i, 0)).wallUpSprite);\n\t\t\t\t\t\tthis._map.element(cc.p(i, 0)).walls[MapDirection4.Down] = false;\n\n\t\t\t\t\t\tif (this._map.element(cc.p(i, 1)))\n\t\t\t\t\t\t\tthis._map.element(cc.p(i, 1)).walls[MapDirection4.Up] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < this._map.width; ++j)\n\t\t\t\tthis._deleteMapElement(cc.p(j, 0));\n\n\t\t\tthis._map.mapElements.shift();\n\t\t\tthis._map.height--;\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.y--;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\t--task.data[mapIndex][robots[i].id].y;\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(task.data[mapIndex][robots[i].id]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar specialTask = level.taskList.tasks[this._map.getType()];\n\t\t\tif (specialTask)\n\t\t\t\tspecialTask.moveDown(mapIndex);\n\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].startPosition.y--;\n\t\t\t\tobjects[i].setPosition(objects[i].startPosition);\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t}\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tvar newLine = [];\n\n\t\t\tfor (var j = 0; j < this._map.width; ++j)\n\n\t\t\t\tnewLine.push(this.createMapElement());\n\n\t\t\tthis._map.mapElements.unshift(newLine);\n\n\t\t\tthis._map.height++;\n\n\t\t\tfor (var j = 0; j < this._map.width; ++j)\n\t\t\t\tthis._drawMapElement(cc.p(j, 0));\n\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.y++;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].sprite.setRealPosition(robots[i].position);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\t++task.data[mapIndex][robots[i].id].y;\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(task.data[mapIndex][robots[i].id]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar specialTask = level.taskList.tasks[this._map.getType()];\n\t\t\tif (specialTask)\n\t\t\t\tspecialTask.moveUp(mapIndex);\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].startPosition.y++;\n\t\t\t\tobjects[i].setPosition(objects[i].startPosition);\n\t\t\t\tobjects[i].sprite.setRealPosition(objects[i].startPosition);\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_resizeHeightLeft: function (sgn)\n\t{\n\t\tif (pm.moduleUtils.stopResizingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\treturn;\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.y + 1 === this._map.height)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].y + 1 === this._map.height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.y + 1 === this._map.height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopDecreasingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar map = this._map;\n\n\t\t\tif (map.height === 1)\n\t\t\t\treturn;\n\n\t\t\tif (map.hasWalls())\n\t\t\t{\n\t\t\t\tvar wallsRemoved = false;\n\n\t\t\t\tfor (var i = 0; i < map.width; ++i)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(i, map.height - 1)).walls[MapDirection4.Right])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(i, map.height - 1)).wallLeftSprite);\n\t\t\t\t\t\tmap.element(cc.p(i, map.height - 1)).walls[MapDirection4.Right] = false;\n\n\t\t\t\t\t\tif (map.element(cc.p(i + 1, map.height - 1)))\n\t\t\t\t\t\t\tmap.element(cc.p(i + 1, map.height - 1)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (map.element(cc.p(i, map.height - 1)).walls[MapDirection4.Down])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(i, map.height - 1)).wallUpSprite);\n\t\t\t\t\t\tmap.element(cc.p(i, map.height - 1)).walls[MapDirection4.Down] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.updateOrderGraph();\n\n\t\t\t\tif (map.hasWalls())\n\t\t\t\t\tthis._moveWallsUp();\n\t\t\t}\n\n\t\t\tthis.moveElementsUp();\n\n\t\t\tfor (var j = 0; j < map.width; ++j)\n\t\t\t\tthis._deleteMapElement(cc.p(j, 0));\n\n\t\t\tmap.mapElements.shift();\n\t\t\tmap.height--;\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].updateSprite();\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\t\t\t\tvar oldPos = cc.p(robots[i].position.x, robots[i].position.y - 1);\n\n\t\t\t\tif (map.element(oldPos))\n\t\t\t\t{\n\t\t\t\t\tif (this._map.element(oldPos).startForRobot === robots[i].id)\n\t\t\t\t\t\tmap.element(oldPos).startForRobot = -1;\n\t\t\t\t\tmap.element(oldPos).removeRobot(robots[i]);\n\t\t\t\t}\n\n\t\t\t\tmap.element(newPos).addRobot(robots[i]);\n\t\t\t\tmap.element(newPos).startForRobot = robots[i].id;\n\t\t\t\tmap.element(newPos).startRobotData.direction = robots[i].direction;\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t\tmap.element(objects[i].position).addObject(objects[i]);\n\n\t\t\t\tvar pos = objects[i].position;\n\n\t\t\t\tif (map.element(cc.p(pos.x, pos.y - 1)))\n\t\t\t\t\tmap.element(cc.p(pos.x, pos.y - 1)).removeObject(objects[i]);\n\t\t\t}\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tvar map = this._map;\n\t\t\tvar mapElements = map.mapElements;\n\n\t\t\tvar newLine = [];\n\n\t\t\tfor (var j = 0; j < map.width; ++j)\n\n\t\t\t\tnewLine.push(this.createMapElement());\n\n\t\t\tmapElements.unshift(newLine);\n\n\t\t\tmap.height++;\n\n\t\t\tfor (var j = 0; j < map.width; ++j)\n\t\t\t\tthis._drawMapElement(cc.p(j, 0));\n\n\t\t\tif (map.hasWalls())\n\t\t\t\tthis._moveWallsDown();\n\n\t\t\tthis.moveElementsDown();\n\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].updateSprite();\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\t\t\t\tvar oldPos = cc.p(robots[i].position.x, robots[i].position.y + 1);\n\n\t\t\t\tmap.element(oldPos).startForRobot = -1;\n\t\t\t\tmap.element(oldPos).removeRobot(robots[i]);\n\n\t\t\t\tmap.element(newPos).addRobot(robots[i]);\n\t\t\t\tmap.element(newPos).startForRobot = robots[i].id;\n\t\t\t\tmap.element(newPos).startRobotData.direction = robots[i].direction;\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t\tmap.element(objects[i].position).addObject(objects[i]);\n\n\t\t\t\tvar pos = objects[i].position;\n\n\t\t\t\tmap.element(cc.p(pos.x, pos.y + 1)).removeObject(objects[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_moveWallsUp: function ()\n\t{\n\t\tvar map = this._map;\n\n\t\tvar wallsRemoved = false;\n\n\t\tfor (var j = map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < map.width; ++i)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallLeftSprite);\n\n\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Right] = true;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j + 1)).walls[MapDirection4.Left] = true;\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Right] = false;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tthis._drawWall(cc.p(i, j + 1), type);\n\t\t\t\t}\n\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallUpSprite);\n\n\t\t\t\t\tif ((j + 1) !== (map.height - 1))\n\t\t\t\t\t{\n\t\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Down] = true;\n\t\t\t\t\t\tif ((map.element(cc.p(i, j + 2))) && ((j + 2) !== (map.height - 1)))\n\t\t\t\t\t\t\tmap.element(cc.p(i, j + 2)).walls[MapDirection4.Up] = true;\n\n\t\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\t\tthis._drawWall(cc.p(i, j + 1), type);\n\t\t\t\t\t}\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Down] = false;\n\t\t\t\t\tif (map.element(cc.p(i, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Up] = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t}\n\t},\n\n\t_moveWallsDown: function ()\n\t{\n\t\tvar map = this._map;\n\n\t\tvar wallsRemoved = false;\n\n\t\tfor (var j = 1; j < map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < map.width; ++i)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallLeftSprite);\n\n\t\t\t\t\tmap.element(cc.p(i, j - 1)).walls[MapDirection4.Right] = true;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j - 1)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j - 1)).walls[MapDirection4.Left] = true;\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Right] = false;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tthis._drawWall(cc.p(i, j - 1), type);\n\t\t\t\t}\n\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallUpSprite);\n\n\t\t\t\t\tmap.element(cc.p(i, j - 1)).walls[MapDirection4.Down] = true;\n\t\t\t\t\tif (map.element(cc.p(i, j)))\n\t\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Up] = true;\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Down] = false;\n\t\t\t\t\tif (map.element(cc.p(i, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Up] = false;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\tthis._drawWall(cc.p(i, j - 1), type);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t}\n\t},\n\n\t_moveWallsRight: function ()\n\t{\n\t\tvar map = this._map;\n\n\t\tvar wallsRemoved = false;\n\n\t\tfor (var i = 1; i < map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallLeftSprite);\n\n\t\t\t\t\tmap.element(cc.p(i - 1, j)).walls[MapDirection4.Right] = true;\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Left] = true;\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Right] = false;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tthis._drawWall(cc.p(i - 1, j), type);\n\t\t\t\t}\n\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallUpSprite);\n\n\t\t\t\t\tmap.element(cc.p(i - 1, j)).walls[MapDirection4.Down] = true;\n\t\t\t\t\tif (map.element(cc.p(i - 1, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i - 1, j + 1)).walls[MapDirection4.Up] = true;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\tthis._drawWall(cc.p(i - 1, j), type);\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Down] = false;\n\t\t\t\t\tif (map.element(cc.p(i, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Up] = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t}\n\t},\n\n\t_moveWallsLeft: function ()\n\t{\n\t\tvar map = this._map;\n\n\t\tvar wallsRemoved = false;\n\n\t\tfor (var i = map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallLeftSprite);\n\n\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Right] = true;\n\t\t\t\t\tif (map.element(cc.p(i + 2, j)))\n\t\t\t\t\t\tmap.element(cc.p(i + 2, j)).walls[MapDirection4.Left] = true;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\n\t\t\t\t\tthis._drawWall(cc.p(i + 1, j), type);\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Right] = false;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Left] = false;\n\t\t\t\t}\n\n\t\t\t\tif (map.element(cc.p(i, j)).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\twallsRemoved = true;\n\n\t\t\t\t\tthis._removeWall(map.element(cc.p(i, j)).wallUpSprite);\n\n\t\t\t\t\tmap.element(cc.p(i + 1, j)).walls[MapDirection4.Down] = true;\n\t\t\t\t\tif (map.element(cc.p(i + 1, j + 1)))\n\t\t\t\t\t\tmap.element(cc.p(i + 1, j + 1)).walls[MapDirection4.Up] = true;\n\n\t\t\t\t\tmap.element(cc.p(i, j)).walls[MapDirection4.Down] = false;\n\t\t\t\t\tmap.element(cc.p(i, j + 1)).walls[MapDirection4.Up] = false;\n\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\n\t\t\t\t\tthis._drawWall(cc.p(i + 1, j), type);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t}\n\t},\n\n\tcreateMapElement: function ()\n\t{\n\t},\n\n\t_drawMapElement: function (pos)\n\t{\n\t\tvar sprite = this._map.element(pos).generateTerrainSprite();\n\t\tsprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\tthis.addTerrainObject(sprite, 0);\n\t},\n\n\t_deleteMapElement: function (pos)\n\t{\n\t\tvar sprite = this._map.element(pos).sprite;\n\t\tthis.removeTerrainObject(sprite);\n\t},\n\n\t_resizeWidthRight: function (sgn)\n\t{\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.x + 1 === this._map.width)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].x + 1 === this._map.width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.x + 1 === this._map.width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopResizingWidth(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar map = this._map;\n\n\t\t\tif (map.width === 1)\n\t\t\t\treturn;\n\n\t\t\tif (map.hasWalls())\n\t\t\t{\n\t\t\t\tvar wallsRemoved = false;\n\n\t\t\t\tfor (var i = 0; i < map.height; ++i)\n\t\t\t\t{\n\n\t\t\t\t\tif (map.element(cc.p(map.width - 1, i)).walls[MapDirection4.Right])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(map.width - 1, i)).wallLeftSprite);\n\t\t\t\t\t\tmap.element(cc.p(map.width - 1, i)).walls[MapDirection4.Right] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (map.element(cc.p(map.width - 2, i)).walls[MapDirection4.Right])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(map.width - 2, i)).wallLeftSprite);\n\t\t\t\t\t\tmap.element(cc.p(map.width - 2, i)).walls[MapDirection4.Right] = false;\n\n\t\t\t\t\t\tif (map.element(cc.p(map.width - 1, i)))\n\t\t\t\t\t\t\tmap.element(cc.p(map.width - 1, i)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (map.element(cc.p(map.width - 1, i)).walls[MapDirection4.Down])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(map.width - 1, i)).wallUpSprite);\n\t\t\t\t\t\tmap.element(cc.p(map.width - 1, i)).walls[MapDirection4.Down] = false;\n\n\t\t\t\t\t\tif (map.element(cc.p(map.width - 1, i + 1)))\n\t\t\t\t\t\t\tmap.element(cc.p(map.width - 1, i + 1)).walls[MapDirection4.Up] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.updateOrderGraph();\n\t\t\t}\n\n\t\t\tvar mapElements = map.mapElements;\n\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tthis._deleteMapElement(cc.p(map.width - 1, j));\n\t\t\t\tmapElements[j].pop();\n\t\t\t}\n\n\t\t\tmap.width--;\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tvar map = this._map;\n\t\t\tvar mapElements = map.mapElements;\n\n\t\t\tmap.width++;\n\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tvar el = this.createMapElement();\n\t\t\t\tmapElements[j].push(el);\n\n\t\t\t\tthis._drawMapElement(cc.p(map.width - 1, j));\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_resizeWidthLeft: function (sgn)\n\t{\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.x === 0)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].x === 0)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.x === 0)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopResizingWidth(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar map = this._map;\n\n\t\t\tif (map.width === 1)\n\t\t\t\treturn;\n\n\t\t\tif (map.hasWalls())\n\t\t\t{\n\t\t\t\tvar wallsRemoved = false;\n\n\t\t\t\tfor (var i = 0; i < map.height; ++i)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(0, i)).walls[MapDirection4.Right])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(0, i)).wallLeftSprite);\n\t\t\t\t\t\tmap.element(cc.p(0, i)).walls[MapDirection4.Right] = false;\n\n\t\t\t\t\t\tmap.element(cc.p(1, i)).walls[MapDirection4.Left] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (map.element(cc.p(0, i)).walls[MapDirection4.Down])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._removeWall(map.element(cc.p(0, i)).wallUpSprite);\n\t\t\t\t\t\tmap.element(cc.p(0, i)).walls[MapDirection4.Down] = false;\n\n\t\t\t\t\t\tmap.element(cc.p(0, i + 1)).walls[MapDirection4.Up] = false;\n\n\t\t\t\t\t\twallsRemoved = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (wallsRemoved && this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.updateOrderGraph();\n\n\t\t\t\tif (map.hasWalls())\n\t\t\t\t\tthis._moveWallsRight();\n\t\t\t}\n\n\t\t\tthis.moveElementsRight();\n\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tthis._deleteMapElement(cc.p(map.width - 1, j));\n\t\t\t\tmap.mapElements[j].pop();\n\t\t\t}\n\n\t\t\tmap.width--;\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.x--;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\t\t\t\tvar oldPos = cc.p(robots[i].position.x + 1, robots[i].position.y);\n\n\t\t\t\tif (map.element(oldPos))\n\t\t\t\t{\n\t\t\t\t\tif (this._map.element(oldPos).startForRobot === robots[i].id)\n\t\t\t\t\t\tmap.element(oldPos).startForRobot = -1;\n\t\t\t\t\tmap.element(oldPos).removeRobot(robots[i]);\n\t\t\t\t}\n\n\t\t\t\tmap.element(newPos).addRobot(robots[i]);\n\t\t\t\tmap.element(newPos).startForRobot = robots[i].id;\n\t\t\t\tmap.element(newPos).startRobotData.direction = robots[i].direction;\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\t--task.data[mapIndex][robots[i].id].x;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar specialTask = level.taskList.tasks[this._map.getType()];\n\t\t\tif (specialTask)\n\t\t\t\tspecialTask.moveRight(mapIndex);\n\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].position.x--;\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t\tmap.element(objects[i].position).addObject(objects[i]);\n\n\t\t\t\tvar pos = objects[i].position;\n\n\t\t\t\tif (map.element(cc.p(pos.x + 1, pos.y)))\n\t\t\t\t\tmap.element(cc.p(pos.x + 1, pos.y)).removeObject(objects[i]);\n\t\t\t}\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tvar map = this._map;\n\t\t\tvar mapElements = map.mapElements;\n\n\t\t\tmap.width++;\n\n\t\t\tfor (var j = 0; j < map.height; ++j)\n\t\t\t{\n\t\t\t\tvar el = this.createMapElement();\n\t\t\t\tmapElements[j].push(el);\n\n\t\t\t\tthis._drawMapElement(cc.p(map.width - 1, j));\n\t\t\t}\n\n\t\t\tif (map.hasWalls())\n\t\t\t\tthis._moveWallsLeft();\n\n\t\t\tthis.moveElementsLeft();\n\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.x++;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\t\t\t\tvar oldPos = cc.p(robots[i].position.x - 1, robots[i].position.y);\n\n\t\t\t\tif (this._map.element(oldPos).startForRobot === robots[i].id)\n\t\t\t\t\tmap.element(oldPos).startForRobot = -1;\n\t\t\t\tmap.element(oldPos).removeRobot(robots[i]);\n\n\t\t\t\tmap.element(newPos).addRobot(robots[i]);\n\t\t\t\tmap.element(newPos).startForRobot = robots[i].id;\n\t\t\t\tmap.element(newPos).startRobotData.direction = robots[i].direction;\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\t++task.data[mapIndex][robots[i].id].x;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar specialTask = level.taskList.tasks[this._map.getType()];\n\t\t\tif (specialTask)\n\t\t\t\tspecialTask.moveLeft(mapIndex);\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].position.x++;\n\t\t\t\tobjects[i].updateSprite();\n\n\t\t\t\tvar pos = objects[i].position;\n\t\t\t\tmap.element(cc.p(pos.x - 1, pos.y)).removeObject(objects[i]);\n\n\t\t\t\tmap.element(pos).addObject(objects[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t/**\n * Draw map on layer.\n */\n\tdrawMap: function(previewDraw)\n\t{\n\t\tSquarableMapLayer.prototype.drawMap.call(this, previewDraw);\n\n\t\tif (!previewDraw)\n\t\t{\n\t\t\tvar listener = cc.EventListener.create({\n\t\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\t\tswallowTouches: true,\n\t\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t\t});\n\n\t\t\tcc.eventManager.addListener(listener, this);\n\n\t\t\tthis._resizeSprite = pm.spriteUtils.getInterfaceElementSprite(\"unchecked\");\n\t\t\tthis.terrainLayer.addChild(this._resizeSprite, 1);\n\t\t\tvar mapSize = this.terrainLayer.getContentSize();\n\t\t\tthis._resizeSprite.setPosition(mapSize.width - this.getMapElementSize().width / 2,\n\t\t\t\tmapSize.height + this.getMapElementSize().height / 2);\n\n\t\t\tthis._resizeLeftSprite = pm.spriteUtils.getInterfaceElementSprite(\"unchecked\");\n\t\t\tthis.terrainLayer.addChild(this._resizeLeftSprite, 1);\n\t\t\tthis._resizeLeftSprite.setPosition(- this.getMapElementSize().width / 2,\n\t\t\t\tthis.getMapElementSize().height / 2);\n\t\t}\n\n\t},\n\n\t/**\n * Update size and position of container.\n */\n\t_update: function()\n\t{\n\t\tthis.resizeContainer();\n\n\t\tvar mapSize = this.terrainLayer.getContentSize();\n\n\t\tthis._resizeSprite.setPosition(mapSize.width - this.getMapElementSize().width / 2,\n\t\t\tmapSize.height + this.getMapElementSize().height / 2);\n\n\t\tthis._resizeLeftSprite.setPosition(- this.getMapElementSize().width / 2,\n\t\t\tthis.getMapElementSize().height / 2);\n\t},\n\n\t/**\n * Update size of container.\n */\n\tresizeContainer: function()\n\t{\n\t\tthis.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.terrainLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.objectLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tthis.depthLayer.removeAllChildren();\n\t\t\tthis.depthLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\t\tthis.container.setContentSize(this.getRealWidth(), this.getRealHeight());\n\n\t\t\tvar rect = this.terrainLayer.getBoundingBox();\n\t\t\tthis.setContentSize(rect.width, rect.height / 2);\n\n\t\t\tvar elementRect = cc.rect(0, 0, this.getMapElementSize().width, this.getMapElementSize().height);\n\t\t\telementRect = cc.rectApplyAffineTransform(elementRect, this.terrainLayer.getNodeToParentTransform());\n\n\t\t\tthis._containerShift = cc.p((this.width - this.getRealWidth()) / 2,\n\t\t\t\t(this.height - this.getRealHeight()) / 2 - elementRect.height / 4);\n\n\t\t\tthis.container.setPosition(this._containerShift);\n\t\t\tthis.depthLayer.setPosition(this._containerShift.x, this._containerShift.y + elementRect.height / 4 + 1);\n\n\t\t\tthis._drawDepthLines();\n\t\t}\n\t}\n};\n\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * This callback is used when task layer emitted deleting.\n * @callback TaskLayer~deleteCallback\n * @param {TaskLayer} sender Who called callback\n */\n\n/**\n * @class Common layer for tasks.\n * @extends ccui.Layout\n */\nvar TaskLayer = ccui.Layout.extend(/** @lends TaskLayer# */{\n\n\t_task: null,\n\t_taskType: null,\n\t_level: null,\n\n\t_deleteCallback: null,\n\t_deleteTarget: null,\n\n\tctor: function(header, level, task, taskType)\n\t{\n\t\tthis._super();\n\n\t\tthis._task = task;\n\t\tthis._level = level;\n\t\tthis._taskType = taskType;\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\n\t\tvar headerLayout = new ccui.HBox();\n\t\tvar headerAlign = new ccui.LinearLayoutParameter();\n\t\theaderAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\theaderLayout.setLayoutParameter(headerAlign);\n\n\t\tvar label = new ccui.Text(header, pm.settings.fontName, pm.settings.fontSize);\n\t\tvar labelAlign = new ccui.LinearLayoutParameter();\n\t\tlabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tvar deleteButton = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tdeleteButton.setScale(0.7);\n\t\tdeleteButton.addClickEventListener(this._delete.bind(this));\n\n\t\theaderLayout.addChild(label);\n\t\theaderLayout.addChild(deleteButton);\n\t\tthis.addChild(headerLayout);\n\n\t\theaderLayout.setContentSize(deleteButton.width + label.width, Math.max(deleteButton.height, label.height));\n\t\tthis.setContentSize(LevelSettingsLayer.WIDTH, headerLayout.height);\n\t},\n\n\t/**\n *\n * @param {TaskLayer~deleteCallback} callback\n * @param {*} target\n */\n\taddDeleteCallback: function(callback, target)\n\t{\n\t\tthis._deleteCallback = callback;\n\t\tthis._deleteTarget = target;\n\t},\n\n\tgetTaskType: function() { return this._taskType; },\n\n\t_delete: function()\n\t{\n\t\tthis._onTaskRemoved();\n\n\t\tthis._deleteCallback.call(this._deleteTarget, this);\n\t},\n\n\t_onTaskRemoved: function(){},\n\n\trefresh: function() {}\n\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 07.04.17.\n */\n\n/**\n * Callback called on change state of physical connector.\n * @callback pm.PhysicalConnector~connectionCallback\n * @param {pm.PhysicalConnector.STATE} status\n */\n\n/**\n * @class Interface for physical representation of levels.\n * @interface\n * @extends cc.Class\n */\npm.PhysicalConnector = cc.Class.extend(/** @lends pm.PhysicalConnector# */{\n\n\t/**\n\t * Has connected to physical representation\n\t * @type {Boolean}\n\t * @private\n\t */\n\t_connected: false,\n\t/**\n\t * Connected to physical representation callback\n\t * @type {pm.PhysicalConnector~connectionCallback}\n\t * @private\n\t */\n\t_stateCallback: null,\n\n\t/**\n\t * Is processing commands or animations\n\t * @type {Boolean}\n\t * @private\n\t */\n\t_busy: false,\n\n\t/**\n\t * @type {pm.AbstractLevel}\n\t * @private\n\t */\n\t_level: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._level = level;\n\t},\n\n\t/**\n * Connects to physical robot\n */\n\tconnect: function() {},\n\t/**\n * Disconnects to physical robot\n */\n\tdisconnect: function() {},\n\t/**\n * Executes command of robot in physical environment\n\t * @param {Number} id Robot id\n * @param {String} command\n * @param {*} [state] State of robot on execute of function.\n */\n\texecuteRobotCommand: function(id, command, state) {},\n\t/**\n\t * Play animation of object in physical environment\n\t * @param {Number} id Object id\n\t * @param {String} animation\n\t */\n\tplayObjectAnimation: function(id, animation) {},\n\t/**\n * Returns if connected to physical robot\n * @returns {Boolean}\n */\n\tisConnected: function()\n\t{\n\t\treturn this._connected;\n\t},\n\n\t/**\n * Returns if physical robot is running command\n * @returns {Boolean}\n */\n\tisBusy: function()\n\t{\n\t\treturn this._busy;\n\t},\n\n\t/**\n * Sets connections status callback\n * @param {pm.PhysicalConnector~connectionCallback}callback\n */\n\tsetStateCallback: function(callback)\n\t{\n\t\tthis._stateCallback = callback;\n\t},\n\n\t_endCommand: function ()\n\t{\n\t\tthis._busy = false;\n\t}\n});\n\n/**\n * Connections state of physical robot\n * @enum {Number}\n * @readonly\n */\npm.PhysicalConnector.STATE = {\n\tCONNECTED: 0,\n\tDISCONNECTED: 1,\n\tCONNECTING: 2\n};\n\n/**\n * Type for physical robots.\n * @enum {String}\n * @readonly\n */\npm.PhysicalConnectorType = {\n\tNone: \"none\",\n\tLego: \"lego\",\n\tBLE: \"ble\",\n\tSound: \"sound\",\n\tMagnet: \"magnet\"\n};\n/**\n * Returns physical robot for type.\n * @static\n * @param {pm.PhysicalConnectorType} type\n * @param {pm.AbstractLevel} level\n * @returns {?pm.PhysicalConnector}\n */\npm.PhysicalConnector.getConnectorForType = function(type, level)\n{\n\tswitch(type)\n\t{\n\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\treturn new pm.LegoPhysicalConnector(level);\n\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\treturn new pm.BLEPhysicalConnector(level);\n\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\treturn new pm.SoundPhysicalConnector(level);\n\t\tcase pm.PhysicalConnectorType.Magnet:\n\t\t\treturn new pm.MagnetPhysicalConnector(level);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 07.04.17.\n */\n\n/**\n * @class Lego physical robot.\n * @extends pm.PhysicalConnector\n */\npm.LegoPhysicalConnector = pm.PhysicalConnector.extend(/** @lends pm.LegoPhysicalRobot# */{\n\n\t_robotHost: \"\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis._robotHost = \"http://\" + pm.LegoPhysicalConnector.DEFAULT_HOST + \"/\";\n\t},\n\n\tconnect: function()\n\t{\n\t\tvar xhr = cc.loader.getXMLHttpRequest();\n\n\t\txhr.open(\"GET\", this._robotHost, true);\n\n\t\txhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n\t\tcc.log(\"Connecting to Lego Physical robot\");\n\n\t\tif(cc.sys.isNative)\n\t\t\tpm.setHttpRequestTimeout(pm.LegoPhysicalConnector.DEFAULT_TIMEOUT);\n\t\telse\n\t\t\txhr.timeout = pm.LegoPhysicalConnector.DEFAULT_TIMEOUT;\n\n\t\tthis._connected = false;\n\n\t\tvar self = this;\n\n\t\txhr.onreadystatechange = function ()\n\t\t{\n\n\t\t\tif (xhr.readyState === 4 )\n\t\t\t{\n\t\t\t\tcc.log(xhr.status);\n\t\t\t\tcc.log(xhr.responseText);\n\t\t\t\tif((xhr.status >= 200 && xhr.status <= 207))\n\t\t\t\t{\n\t\t\t\t\tcc.log(\"Connecting to Lego Physical robot success\");\n\t\t\t\t\tself._connected = true;\n\n\t\t\t\t\tif(self._stateCallback)\n\t\t\t\t\t\tself._stateCallback(pm.PhysicalConnector.STATE.CONNECTED);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.onerror = function ()\n\t\t{\n\t\t\tcc.log(\"Error connecting to Lego Physical robot\");\n\n\t\t\tif(self._stateCallback)\n\t\t\t\tself._stateCallback(pm.PhysicalConnector.STATE.DISCONNECTED);\n\t\t};\n\n\t\txhr.send(\"\");\n\t},\n\n\texecuteRobotCommand: function(id, command, args)\n\t{\n\t\tif(!this._connected)\n\t\t\treturn;\n\n\t\tthis._busy = true;\n\n\t\tcc.log(\"Sending command to Lego Physical robot\" + command);\n\n\t\tvar xhr = cc.loader.getXMLHttpRequest();\n\n\t\txhr.open(\"GET\", this._robotHost + command, true);\n\n\t\txhr.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n\t\tif(cc.sys.isNative)\n\t\t\tpm.setHttpRequestTimeout(100 * 1000);\n\t\telse\n\t\t\txhr.timeout = timeout;\n\n\t\tvar self = this;\n\n\t\txhr.ontimeout = function ()\n\t\t{\n\t\t\tcc.log(\"Lego Physical robot HTTP request timeout\");\n\t\t\tself._endCommand();\n\t\t};\n\n\t\txhr.onerror = function (error)\n\t\t{\n\t\t\tcc.log(\"Lego Physical robot HTTP error\" + error.message);\n\t\t\tself._endCommand();\n\t\t};\n\n\t\txhr.onreadystatechange = function ()\n\t\t{\n\t\t\tif (xhr.readyState === 4)\n\t\t\t\tself._endCommand();\n\t\t};\n\n\t\txhr.send(\"\");\n\t}\n});\n\npm.LegoPhysicalConnector.DEFAULT_HOST = \"192.168.3.80\";\npm.LegoPhysicalConnector.DEFAULT_TIMEOUT = 2000;\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 07.04.17.\n */\n\n/**\n * @class BLE physical robot.\n * @extends pm.PhysicalConnector\n */\npm.BLEPhysicalConnector = pm.PhysicalConnector.extend(/** @lends pm.BLEPhysicalRobot# */{\n\n\t_currentCommand: \"\",\n\n\tconnect: function()\n\t{\n\t\tif(pm.btleManager && pm.btleManager.isBTLEAvailable())\n\t\t{\n\t\t\tpm.btleManager.setReceiveDataCallback(this._dataReceiveCallback.bind(this));\n\t\t\tpm.btleManager.setConnectCallback(this._connectedCallback.bind(this));\n\t\t\tpm.btleManager.setDisconnectCallback(this._disconnectedCallback.bind(this));\n\n\t\t\tpm.btleManager.scan();\n\t\t}\n\t\telse\n\t\tif(this._stateCallback)\n\t\t{ this._stateCallback(pm.PhysicalConnector.STATE.DISCONNECTED); }\n\t},\n\n\tdisconnect: function()\n\t{\n\t\tpm.btleManager.cleanup();\n\t},\n\n\t_connectedCallback: function()\n\t{\n\t\tthis._connected = true;\n\n\t\tif(this._stateCallback)\n\t\t\tthis._stateCallback(pm.PhysicalConnector.STATE.CONNECTED);\n\t},\n\n\t_disconnectedCallback: function()\n\t{\n\t\tthis._connected = false;\n\n\t\tif(this._stateCallback)\n\t\t\tthis._stateCallback(pm.PhysicalConnector.STATE.DISCONNECTED);\n\t},\n\n\texecuteRobotCommand: function(id, command, args)\n\t{\n\t\tif(!this._connected)\n\t\t\treturn;\n\n\t\tthis._busy = true;\n\t\tthis._currentCommand = command;\n\n\t\tcc.log(\"Sending command to BLE Physical robot:\" + command);\n\n\t\tpm.btleManager.sendData(command);\n\t},\n\n\t_dataReceiveCallback: function(data)\n\t{\n\t\tcc.log(\"Received response from BLE Physical robot:\" + data);\n\n\t\tif(this._currentCommand && data.indexOf(\"ok_\" + this._currentCommand ) !== -1)\n\t\t{\n\t\t\tthis._currentCommand = \"\";\n\t\t\tthis._busy = false;\n\t\t}\n\t}\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 07.04.17.\n */\n\n/**\n * @class Sound physical robot. Extends BLE functionality by sound\n * @extends pm.BLEPhysicalConnector\n */\npm.SoundPhysicalConnector = pm.BLEPhysicalConnector.extend(/** @lends pm.SoundPhysicalConnector# */{\n\n\texecuteRobotCommand: function(id, command, args)\n\t{\n\t\tif(!this._connected)\n\t\t\treturn;\n\n\t\tcc.log(\"Sending command to Sound Physical robot:\" + command);\n\n\t\tvar timeout = 0;\n\n\t\tswitch(command)\n\t\t{\n\t\t\tcase PlayerRobot4.NativeMethod.Move:\n\t\t\t\tpm.audioUtils.playSound(\"res/Sounds/r4_move.wav\");\n\t\t\t\ttimeout = 1400;\n\t\t\t\tbreak;\n\t\t\tcase PlayerRobot4.NativeMethod.TurnLeft:\n\t\t\t\tpm.audioUtils.playSound(\"res/Sounds/r4_turn_left.wav\");\n\t\t\t\ttimeout = 2400;\n\t\t\t\tbreak;\n\t\t\tcase PlayerRobot4.NativeMethod.TurnRight:\n\t\t\t\tpm.audioUtils.playSound(\"res/Sounds/r4_turn_right.wav\");\n\t\t\t\ttimeout = 3200;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._busy = true;\n\n\t\tvar self = this;\n\t\tsetTimeout(function()\n\t\t{\n\t\t\tpm.BLEPhysicalConnector.prototype.executeRobotCommand.call(self, id, command, args);\n\t\t}, timeout);\n\t}\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 15.07.19.\n */\n\n/**\n * @class Magnet physical robot. Works only with {@link PlayerRobot4} subclasses.\n * (Supports repair by {@link pm.data.RepairRobot})\n * @extends pm.PhysicalConnector\n */\npm.MagnetPhysicalConnector = pm.PhysicalConnector.extend(/** @lends pm.MagnetPhysicalConnector# */{\n\n\t_client: null,\n\t_magnetHost: 0,\n\t_sendConnectTime: null,\n\t_lastPacketTime: null,\n\t_lastStatusPacketTime: null,\n\t_reconnectCount: 0,\n\n\t_packetQueue: [],\n\t_packetsProcessedConfirm: {},\n\t_magnetCommands: [],\n\t_packetNumber: 0,\n\t_waitingForPacketProcessed: false,\n\t_paused: false,\n\n\t_level: null,\n\t_robotMap: null,\n\t_objectMap: null,\n\t_mapCoordinatesTable: {},\n\t_mapCoordinatedReceived: false,\n\t_levelInitialized: false,\n\n\t_logList: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t\tthis._level = level;\n\n\t\tthis._robotMap = {};\n\n\t\tfor(var r = 0; r < level.robots.length; ++r)\n\t\t{\n\t\t\tthis._robotMap[level.robots[r].id] = {\n\t\t\t\trobot: level.robots[r],\n\t\t\t\thasCommand: false\n\t\t\t};\n\t\t}\n\n\t\tthis._objectMap = {};\n\n\t\tfor(var o = 0; o < level.activeMap.objects.length; ++o)\n\t\t{\n\t\t\tthis._objectMap[level.activeMap.objects[o].id] = {\n\t\t\t\tobject: level.activeMap.objects[o],\n\t\t\t\thasAnimation: false\n\t\t\t};\n\t\t}\n\n\t\tthis._mapCoordinatesTable = {};\n\t\tthis._magnetCommands = [];\n\t\tthis._packetQueue = [];\n\t\tthis._packetsProcessedConfirm = {};\n\n\t\tif(pm.appConfig.showMagnetLog)\n\t\t\tthis._addDebugWindow();\n\t},\n\n\t_addDebugWindow: function()\n\t{\n\t\tthis._logList = new ccui.ListView();\n\t\tthis._logList.setContentSize(800, 200);\n\t\tthis._logList.setPosition(100, 100);\n\t\tthis._logList.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._logList.setBackGroundColor(cc.color.WHITE);\n\n\t\tthis._logList.retain();\n\n\t\tsetTimeout(function() {\n\t\t\tcc.director.getRunningScene().addChild(this._logList, 2000, 2000);\n\t\t\tthis._logList.release();\n\t\t}.bind(this), 1000);\n\t},\n\n\tconnect: function()\n\t{\n\t\tthis._client = new pm.MagnetClient();\n\t\tvar started = this._client.start(pm.appConfig.magnetUDPPort);\n\n\t\tthis._log(\"UDP client started: \" + started);\n\n\t\tif(started)\n\t\t{\n\t\t\tthis._packetNumber = pm.MagnetPhysicalConnector.START_PACKET_NUMBER;\n\n\t\t\tthis._client.setDataCallback(this._dataCallback.bind(this));\n\t\t\tthis._sendConnectPacket();\n\n\t\t\tcc.director.getScheduler().schedule(\n\t\t\t\tthis._loop, this, pm.MagnetPhysicalConnector.LOOP_INTERVAL,\n\t\t\t\tcc.REPEAT_FOREVER, 0, false, pm.MagnetPhysicalConnector.LOOP_NAME\n\t\t\t);\n\t\t}\n\t},\n\n\tisConnected: function()\n\t{\n\t\treturn this._connected && this._mapCoordinatedReceived;\n\t},\n\n\t_sendPacket: function(ip, packet, number)\n\t{\n\t\tvar sendPacket = packet;\n\n\t\tif(number !== undefined)\n\t\t\tsendPacket += String.fromCharCode(number);\n\n\t\tsendPacket = String.fromCharCode(pm.MagnetPhysicalConnector.BYTES.SR_START) +\n\t\t\tsendPacket +\n\t\t\tString.fromCharCode(pm.MagnetPhysicalConnector.BYTES.SEND_END);\n\n\t\tthis._client.sendPacket(\n\t\t\tip,\n\t\t\tpm.appConfig.magnetUDPPort,\n\t\t\tpm.BROADCAST_PACKET_TYPE.DISCOVER_INFO,\n\t\t\tsendPacket\n\t\t);\n\t},\n\n\t_requestMapCoordinates: function()\n\t{\n\t\tthis._client.sendPacket(\n\t\t\tthis._magnetHost,\n\t\t\tpm.appConfig.magnetUDPPort,\n\t\t\tpm.BROADCAST_PACKET_TYPE.DATA_REQUEST,\n\t\t\t\"MAPREQ\"\n\t\t);\n\t},\n\n\t_sendStatusPacket: function()\n\t{\n\t\tthis._client.sendPacket(\n\t\t\tthis._magnetHost,\n\t\t\tpm.appConfig.magnetUDPPort,\n\t\t\tpm.BROADCAST_PACKET_TYPE.DATA_REQUEST,\n\t\t\t\"STS\"\n\t\t);\n\t},\n\n\t_extractReceivedPacketData: function(bytes)\n\t{\n\t\tif(bytes[0] === pm.MagnetPhysicalConnector.BYTES.CONNECTED_START)\n\t\t{\n\t\t\tthis._packetNumber = bytes[2] + 1;\n\n\t\t\treturn {\n\t\t\t\tpacket: \"WHO\",\n\t\t\t\tnumber: this._packetNumber,\n\t\t\t\tbytes: [],\n\t\t\t\ttype: pm.MagnetPhysicalConnector.PACKET_TYPE.CONNECTED\n\t\t\t};\n\t\t}\n\n\t\tif(bytes[0] !== pm.MagnetPhysicalConnector.BYTES.SR_START &&\n\t\t\tbytes[0] !== pm.MagnetPhysicalConnector.BYTES.STATUS_START &&\n\t\t\tbytes[0] !== pm.MagnetPhysicalConnector.BYTES.SYSTEM &&\n\t\t\tbytes[0] !== pm.MagnetPhysicalConnector.BYTES.MAP_START)\n\t\t\treturn null;\n\n\t\tvar checkSize = bytes.length;\n\n\t\tif(bytes[0] === pm.MagnetPhysicalConnector.BYTES.STATUS_START)\n\t\t{\n\t\t\t// search for terminating byte\n\t\t\tfor (var b = checkSize - 1; b > 0; --b)\n\t\t\t{\n\t\t\t\tif(bytes[b] === pm.MagnetPhysicalConnector.BYTES.STATUS_END)\n\t\t\t\t{\n\t\t\t\t\tcheckSize = b + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if(bytes[0] !== pm.MagnetPhysicalConnector.BYTES.MAP_START)\n\t\t{\n\t\t\tcheckSize -= 2;\n\t\t}\n\n\t\tif(bytes[checkSize - 1] !== pm.MagnetPhysicalConnector.BYTES.DELIVERED_END &&\n\t\t\tbytes[checkSize - 1] !== pm.MagnetPhysicalConnector.BYTES.STATUS_END &&\n\t\t\tbytes[checkSize - 1] !== pm.MagnetPhysicalConnector.BYTES.SYSTEM &&\n\t\t\tbytes[checkSize - 1] !== pm.MagnetPhysicalConnector.BYTES.MAP_END)\n\t\t\treturn null;\n\n\t\t--checkSize; // skip last byte\n\n\t\tvar parsedPacket = {\n\t\t\tpacket: \"\",\n\t\t\tnumber: -1,\n\t\t\tbytes: [],\n\t\t\ttype: pm.MagnetPhysicalConnector.PACKET_TYPE.DELIVER_CONFIRM\n\t\t};\n\n\t\tvar lastByte = checkSize;\n\n\t\tswitch(bytes[checkSize])\n\t\t{\n\t\t\tcase pm.MagnetPhysicalConnector.BYTES.SYSTEM:\n\t\t\t\tparsedPacket.type = pm.MagnetPhysicalConnector.PACKET_TYPE.SYSTEM;\n\t\t\t\tbreak;\n\t\t\tcase pm.MagnetPhysicalConnector.BYTES.STATUS_END:\n\t\t\t\tparsedPacket.type = pm.MagnetPhysicalConnector.PACKET_TYPE.STATUS;\n\t\t\t\tbreak;\n\t\t\tcase pm.MagnetPhysicalConnector.BYTES.MAP_END:\n\t\t\t\tparsedPacket.type = pm.MagnetPhysicalConnector.PACKET_TYPE.MAP;\n\t\t\t\tbreak;\n\t\t\tcase pm.MagnetPhysicalConnector.BYTES.DELIVERED_END:\n\t\t\t\tparsedPacket.type = pm.MagnetPhysicalConnector.PACKET_TYPE.DELIVER_CONFIRM;\n\t\t\t\t//Get number of packet\n\t\t\t\tlastByte = checkSize - 1;\n\t\t\t\tparsedPacket.number = bytes[lastByte];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfor (var i = 1; i < lastByte; ++i) {\n\t\t\tparsedPacket.packet += String.fromCharCode(bytes[i]);\n\t\t\tparsedPacket.bytes.push(bytes[i])\n\t\t}\n\n\t\treturn parsedPacket;\n\t},\n\n\t_sendConnectPacket: function()\n\t{\n\t\tthis._sendConnectTime = new Date();\n\n\t\tthis._sendPacket(pm.convertIPAddress(\"255.255.255.255\"), \"WHO\", 1);\n\t\tthis._stateCallback(pm.PhysicalConnector.STATE.CONNECTING);\n\t},\n\n\tdisconnect: function()\n\t{\n\t\tthis._sendPacket(this._magnetHost, \"INI\", 1);// Reset\n\t\tthis._sendPacket(this._magnetHost, \"Off\", 1);// Turn off lights\n\n\t\tthis._client.clearCallback();\n\t\tthis._client.stop();\n\t\tthis._client = null;\n\n\t\tif(this._stateCallback)\n\t\t\tthis._stateCallback(pm.PhysicalConnector.STATE.DISCONNECTED);\n\n\t\tcc.director.getScheduler().unschedule(pm.MagnetPhysicalConnector.LOOP_NAME, this);\n\t},\n\n\t_dataCallback: function(host, port, bytes)\n\t{\n\t\tthis._lastPacketTime = new Date();\n\n\t\tvar string = \"\";\n\t\tvar stringBytes = \"\";\n\n\t\tfor(var i = 0 ; i < bytes.length; ++i)\n\t\t\tstring += String.fromCharCode(bytes[i]);\n\n\t\tfor(var j = 0 ; j < bytes.length; ++j)\n\t\t{\n\t\t\tvar stringByte = bytes[j].toString(16);\n\n\t\t\tif(stringByte.length === 1)\n\t\t\t\tstringByte = \"0\" + stringByte;\n\t\t\tstringBytes += stringByte + \" \";\n\t\t}\n\n\t\tif(string.startsWith(\"I=\") || string.startsWith(\"Health\"))\n\t\t\treturn;\n\n\t\t// bytes.length = 6; // remove trailing trash bytes\n\n\t\tvar packetData = this._extractReceivedPacketData(bytes);\n\n\t\tif(!packetData)\n\t\t{\n\t\t\tthis._log(\n\t\t\t\t\"Received incorrect packet from magnet host: \" + host +\n\t\t\t\t\";\\ndata(string): \" + string +\n\t\t\t\t\";\\ndata(bytes): \" + stringBytes +\n\t\t\t\t\";\\nlength: \" + bytes.length\n\t\t\t);\n\t\t\tthis._udpLog(\"Wrong answer received bytes:\" + stringBytes + \" str:\" + string);\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._log(\n\t\t\t\"Received string data from magnet host: \" + host +\n\t\t\t\";\\ndata(string): \" + packetData.packet + \" number: \" + packetData.number +\n\t\t\t\" type: \" + packetData.type + \" bytes(length): \" + packetData.bytes.length +\n\t\t\t\";\\ndata(bytes): \" + stringBytes +\n\t\t\t\";\\nlength: \" + bytes.length\n\t\t);\n\n\t\tif (!this._connected && packetData.type === pm.MagnetPhysicalConnector.PACKET_TYPE.CONNECTED)\n\t\t{\n\t\t\tthis._connected = true;\n\n\t\t\tthis._log(\"Received connected data from magnet host: \" + host);\n\n\t\t\tthis._magnetHost = host;\n\n\t\t\tif(this._stateCallback)\n\t\t\t\tthis._stateCallback(pm.PhysicalConnector.STATE.CONNECTED);\n\n\t\t\tif(!this._levelInitialized)\n\t\t\t{\n\t\t\t\tpm.registerCustomEventListener(pm.PROGRAM_RESTART_EVENT_STR, this._programRestart.bind(this), 100);\n\t\t\t\tthis._requestMapCoordinates();\n\t\t\t}\n\t\t}\n\n\t\tif(this._connected)\n\t\t{\n\t\t\tswitch(packetData.type)\n\t\t\t{\n\t\t\t\tcase pm.MagnetPhysicalConnector.PACKET_TYPE.MAP:\n\t\t\t\t\tthis._parseMapCoordinates(packetData.packet);\n\t\t\t\t\tthis._initLevel();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.MagnetPhysicalConnector.PACKET_TYPE.DELIVER_CONFIRM:\n\t\t\t\t\tif (this._packetQueue.length > 0)\n\t\t\t\t\t\tthis._processPacketQueue(packetData);\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.MagnetPhysicalConnector.PACKET_TYPE.SYSTEM:\n\t\t\t\t\tswitch(packetData.packet)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase \"ERR\":\n\t\t\t\t\t\t\tthis._log(\"Received error packet\");\n\t\t\t\t\t\t\tthis._cleanup();\n\t\t\t\t\t\t\tthis.disconnect();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"OFF\":\n\t\t\t\t\t\t\tthis._log(\"Received of packet\");\n\t\t\t\t\t\t\tthis._cleanup();\n\t\t\t\t\t\t\tthis.disconnect();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"PAU\":\n\t\t\t\t\t\t\tthis._log(\"Received pause packet\");\n\t\t\t\t\t\t\tthis._paused = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"PLA\":\n\t\t\t\t\t\t\tthis._log(\"Received play packet\");\n\t\t\t\t\t\t\tthis._paused = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"PAS\":\n\t\t\t\t\t\t\tthis._log(\"Received pass packet\");\n\t\t\t\t\t\t\tthis._finalizeRunningCommands();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.MagnetPhysicalConnector.PACKET_TYPE.STATUS:\n\t\t\t\t\tif(this._waitingForPacketProcessed)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var b = 0; b < packetData.bytes.length; ++b)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar donePacketNumber = packetData.bytes[b];\n\n\t\t\t\t\t\t\tif (this._packetsProcessedConfirm[donePacketNumber] === undefined)\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\tif (this._packetsProcessedConfirm[donePacketNumber])\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\tthis._packetsProcessedConfirm[donePacketNumber] = true;\n\t\t\t\t\t\t\tthis._log(\"Packet with number {0} processed!\".format(donePacketNumber));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._endRunningCommands();\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// if (packetData.packet === \"-Ok\" && packetData.number !== 1)\n\t\t\t\t\t// {\n\t\t\t\t\t// \tvar donePacketNumber = packetData.number - pm.MagnetPhysicalConnector.PACKET_NUMBER_OFFSET;\n\t\t\t\t\t//\n\t\t\t\t\t// \tif (this._packetsProcessedConfirm[donePacketNumber] === undefined)\n\t\t\t\t\t// \t\treturn;\n\t\t\t\t\t//\n\t\t\t\t\t// \tthis._packetsProcessedConfirm[donePacketNumber] = true;\n\t\t\t\t\t//\n\t\t\t\t\t// \tthis._log(\"Packet with number {0} processed!\".format(donePacketNumber));\n\t\t\t\t\t// \tthis._endRunningCommands();\n\t\t\t\t\t// \treturn;\n\t\t\t\t\t// }\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t},\n\n\t_loop: function()\n\t{\n\t\tif(this._paused)\n\t\t\treturn;\n\n\t\tvar curTime = new Date();\n\n\t\tif(!this._connected && this._sendConnectTime)\n\t\t{\n\t\t\tvar diff = curTime - this._sendConnectTime;\n\n\t\t\tif(this._reconnectCount < pm.MagnetPhysicalConnector.MAX_RECONNECT_COUNT &&\n\t\t\t\tdiff > pm.MagnetPhysicalConnector.RESEND_CONNECT_TIMEOUT)\n\t\t\t{\n\t\t\t\tthis._log(\"Reconnect to magnet host due to timeout\");\n\t\t\t\tthis._sendConnectPacket();\n\t\t\t\t++this._reconnectCount;\n\t\t\t}\n\t\t}\n\t\telse if(curTime - this._lastPacketTime > pm.MagnetPhysicalConnector.RECONNECT_TIMEOUT)\n\t\t{\n\t\t\tthis._log(\"Disconnected(no packets from host) due to timeout\");\n\n\t\t\tthis._connected = false;\n\n\t\t\tthis._sendConnectPacket();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._checkPacketQueue(curTime);\n\t\t}\n\t},\n\n\t_checkPacketQueue: function(curTime)\n\t{\n\t\tif(this._packetQueue.length > 0)\n\t\t{\n\t\t\tif(!this._packetQueue[0].sent)\n\t\t\t\treturn;\n\n\t\t\tvar sendTime = this._packetQueue[0].sendTime;\n\t\t\tvar diff = curTime - sendTime;\n\n\t\t\tif(diff >= pm.MagnetPhysicalConnector.RESEND_PACKET_TIMEOUT)\n\t\t\t{\n\t\t\t\tthis._log(\"Resend due to timeout(\" + diff + \") packet: \" + this._packetQueue[0].packet);\n\n\t\t\t\tthis._packetQueue[0].retryCount += 1;\n\n\t\t\t\tthis._sendQueuedPacket();\n\t\t\t}\n\t\t}\n\t\telse if(this._waitingForPacketProcessed)\n\t\t{\n\t\t\tvar diff = curTime - this._lastStatusPacketTime;\n\n\t\t\tif(diff >= pm.MagnetPhysicalConnector.STATUS_SEND_TIMEOUT)\n\t\t\t{\n\t\t\t\tthis._sendStatusPacket();\n\n\t\t\t\tthis._lastStatusPacketTime = curTime;\n\t\t\t}\n\t\t}\n\t},\n\n\t_processPacketQueue: function(packetData)\n\t{\n\t\tvar packetNumber = this._packetQueue[0].packetNumber;\n\t\tvar donePacketNumber = packetData.number;\n\n\t\tif(packetData.packet === this._packetQueue[0].packet && packetNumber === donePacketNumber)\n\t\t{\n\t\t\tthis._packetsProcessedConfirm[packetNumber] = false;\n\n\t\t\tthis._packetQueue.splice(0, 1);\n\t\t\tthis._udpLog(\" # DONE\");\n\t\t\tthis._udpLog(\"Command was sent:\" + packetData.packet);\n\n\t\t\tif (this._packetQueue.length > 0)\n\t\t\t{\n\t\t\t\tthis._log(\"Sending queued packet: \" + this._packetQueue[0].packet);\n\n\t\t\t\tthis._sendQueuedPacket();\n\t\t\t}\n\t\t\telse // here all packets sent, start waiting for execution(senddig status packets)\n\t\t\t{\n\t\t\t\tthis._log(\"Waiting for commands are processed\");\n\n\t\t\t\tthis._waitingForPacketProcessed = true;\n\t\t\t}\n\t\t}\n\t},\n\n\t_endRunningCommands: function()\n\t{\n\t\tif(!this._waitingForPacketProcessed)\n\t\t\treturn;\n\n\t\tvar allConfirmed = true;\n\n\t\tfor(var p in this._packetsProcessedConfirm)\n\t\t{\n\t\t\tif(!this._packetsProcessedConfirm[p])\n\t\t\t{\n\t\t\t\tallConfirmed = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(allConfirmed)\n\t\t{\n\t\t\tthis._log(\"Ended run commands\");\n\t\t\tthis._finalizeRunningCommands();\n\t\t}\n\t},\n\n\t_finalizeRunningCommands: function()\n\t{\n\t\tthis._cleanup();\n\t\tthis._busy = false;\n\t\tthis._waitingForPacketProcessed = false;\n\t\tthis._packetsProcessedConfirm = {}\n\t},\n\n\t_cleanup: function()\n\t{\n\t\tfor(var r in this._robotMap)\n\t\t\tthis._robotMap[r].hasCommand = false;\n\n\t\tfor(var o in this._objectMap)\n\t\t\tthis._objectMap[o].hasAnimation = false;\n\n\t\tthis._magnetCommands = [];\n\t\tthis._packetQueue = [];\n\t},\n\n\t_programRestart: function()\n\t{\n\t\tthis._log(\"Program restarted\");\n\t\tthis._finalizeRunningCommands();\n\n\t\tthis._queuePacket(\"RST\");\n\t\tthis._initLevel();\n\t},\n\n\t_queuePacket: function(packet)\n\t{\n\t\tif(this._packetNumber > pm.MagnetPhysicalConnector.END_PACKET_NUMBER)\n\t\t\tthis._packetNumber = pm.MagnetPhysicalConnector.START_PACKET_NUMBER;\n\n\t\tif(this._packetNumber >= pm.MagnetPhysicalConnector.EXCLUDE_PACKET_NUMBER.START &&\n\t\t\tthis._packetNumber < pm.MagnetPhysicalConnector.EXCLUDE_PACKET_NUMBER.END)\n\t\t{\n\t\t\tthis._packetNumber = pm.MagnetPhysicalConnector.EXCLUDE_PACKET_NUMBER.END;\n\t\t}\n\n\t\tthis._packetQueue.push({\n\t\t\tpacket: packet,\n\t\t\tsent: false,\n\t\t\tsendTime: new Date(),\n\t\t\tretryCount: 0,\n\t\t\tpacketNumber: this._packetNumber\n\t\t});\n\n\t\t++this._packetNumber;\n\n\t\tif(this._packetQueue.length === 1) // first packet send immediately\n\t\t{\n\t\t\tthis._log(\"Sending immediately packet: \" + packet);\n\t\t\tthis._sendQueuedPacket();\n\t\t}\n\t},\n\n\t_sendQueuedPacket: function()\n\t{\n\t\tvar number = this._packetQueue[0].packetNumber;\n\t\tvar packet = this._packetQueue[0].packet;\n\n\t\tthis._packetQueue[0].sent = true;\n\t\tthis._packetQueue[0].sendTime = new Date();\n\n\t\tthis._sendPacket(this._magnetHost, packet, number);\n\t\tthis._udpLog(\" # Sent\");\n\t},\n\n\t_addMagnetStepCommands: function(commands)\n\t{\n\t\tfor(var i = 0; i < commands.length; ++i)\n\t\t\tthis._magnetCommands.push(commands[i]);\n\n\t\tvar sendCommands = true;\n\n\t\tfor (var r in this._robotMap)\n\t\t{\n\t\t\tif (!this._robotMap[r].hasCommand)\n\t\t\t{\n\t\t\t\tsendCommands = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(sendCommands)\n\t\t{\n\t\t\tvar passiveObjectsCommands = this._getPassiveObjectsCommands();\n\n\t\t\tfor(var j = 0; j < passiveObjectsCommands.length; ++j)\n\t\t\t\tthis._magnetCommands.push(passiveObjectsCommands[j]);\n\n\t\t\tthis._sendMagnetCommands();\n\t\t}\n\t},\n\n\t_sendMagnetCommands: function()\n\t{\n\t\tfor (var i = 0; i < this._magnetCommands.length; ++i)\n\t\t{\n\t\t\tthis._log(\"Sending magnet commands \" + this._magnetCommands[i]);\n\t\t\tthis._queuePacket(this._magnetCommands[i]);\n\t\t}\n\n\t\tthis._queuePacket(\"GO!\");\n\t},\n\n\texecuteRobotCommand: function(id, command, state)\n\t{\n\t\tif(!this._connected)\n\t\t\treturn;\n\n\t\tthis._busy = true;\n\n\t\tvar magnetCommands = this._getMagnetRobotCommands(this._robotMap[id].robot, command, state);\n\n\t\tthis._log(\"Sending robot command to Magnet Physical robot: \" + command);\n\n\t\tthis._robotMap[id].hasCommand = true;\n\t\tthis._addMagnetStepCommands(magnetCommands);\n\t},\n\n\tplayObjectAnimation: function(id, animation)\n\t{\n\t\tif(!this._connected)\n\t\t\treturn;\n\n\t\tthis._busy = true;\n\n\t\tvar magnetCommands = this._getMagnetObjectCommands(this._objectMap[id].object, animation);\n\n\t\tthis._log(\"Sending object animation to Magnet Physical robot: \" + animation);\n\n\t\tthis._objectMap[id].hasAnimation = true;\n\t\tthis._addMagnetStepCommands(magnetCommands);\n\t},\n\n\t_getMagnetRobotCommands: function(robot, robotCommand, state)\n\t{\n\t\tvar direction = state.direction;\n\t\tvar position = state.position; //robot already moved need to calculate prev position\n\t\tvar nextPos = this._level.activeMap.getNextDirectionalElementPosition(position, direction);\n\n\t\tif(!nextPos)\n\t\t\tnextPos = position;\n\n\t\t//inverting robot coordinates\n\t\tvar magnetPos = this._getMagnetCoordinatesFromMap(position);\n\t\tvar magnetNextPos = this._getMagnetCoordinatesFromMap(nextPos);\n\t\tvar magnetDirection = this._getMagnetRobotDirection(direction);\n\n\t\tvar commands = [];\n\n\t\tswitch (robotCommand)\n\t\t{\n\t\t\tcase PlayerRobot4.NativeMethod.Move:\n\t\t\t\tvar method = \"M\";\n\n\t\t\t\tif (robot.getType() === pm.PushLevelModule.RobotTypes.PullRobot)\n\t\t\t\t\t\tmethod = \"T\";\n\n\t\t\t\tcommands.push(magnetPos + method + magnetDirection);\n\t\t\t\tcommands.push(magnetNextPos + method + magnetDirection);\n\t\t\t\tbreak;\n\t\t\tcase pm.data.PullRobot.NativeMethod.Pull:\n\t\t\t\tcommands.push(magnetPos + \"T\" + magnetDirection);\n\t\t\t\tcommands.push(magnetNextPos + \"T\" + magnetDirection);\n\t\t\t\tbreak;\n\t\t\tcase PlayerRobot4.NativeMethod.TurnLeft:\n\t\t\t\tvar leftDirection = this._getMagnetRobotDirection((direction + 1) % 4);\n\t\t\t\tcommands.push(magnetPos + magnetDirection + leftDirection);\n\t\t\t\tbreak;\n\t\t\tcase PlayerRobot4.NativeMethod.TurnRight:\n\t\t\t\tvar rightDirection = this._getMagnetRobotDirection((direction + 3) % 4);\n\t\t\t\tcommands.push(magnetPos + magnetDirection + rightDirection);\n\t\t\t\tbreak;\n\t\t\tcase pm.CMD_INDICATE:\n\t\t\t\tcommands.push(magnetPos + \"FW\");\n\t\t\t\tcommands.push(magnetPos + \"S\" + magnetDirection);\n\t\t\t\tbreak;\n\t\t\tcase pm.data.RepairRobot.NativeMethod.Repair:\n\t\t\t\tcommands.push(magnetPos + \"PB\");\n\t\t\t\tcommands.push(magnetPos + \"S\" + magnetDirection);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn commands;\n\t},\n\n\t_getMagnetObjectCommands: function(object, objectAnimation)\n\t{\n\t\tvar position = object.oldPosition;\n\t\tvar nextPos = object.position;\n\n\t\tvar magnetPos = this._getMagnetCoordinatesFromMap(position);\n\t\tvar magnetNextPos = this._getMagnetCoordinatesFromMap(nextPos);\n\t\tvar magnetDirection = this._getMagnetObjectDirection(position, nextPos);\n\n\t\tvar commands = [];\n\n\t\tif(objectAnimation === PushObjectAnimation.Move)\n\t\t{\n\t\t\tcommands.push(magnetPos + \"m\" + magnetDirection);\n\t\t\tcommands.push(magnetNextPos + \"m\" + magnetDirection);\n\t\t}\n\n\t\treturn commands;\n\t},\n\n\t_getPassiveObjectsCommands: function()\n\t{\n\t\tvar commands = [];\n\n\t\tfor (var o in this._objectMap)\n\t\t{\n\t\t\tif (!this._objectMap[o].hasAnimation)\n\t\t\t{\n\t\t\t\tvar position = this._objectMap[o].object.position;\n\n\t\t\t\tvar magnetPos = this._getMagnetCoordinatesFromMap(position);\n\t\t\t\tcommands.push(magnetPos + \"SS\");\n\t\t\t}\n\t\t}\n\n\t\treturn commands;\n\t},\n\n\t_initLevel: function()\n\t{\n\t\tvar map = this._level.activeMap;\n\n\t\tfor(var i = 0; i < map.objects.length; ++i)\n\t\t{\n\t\t\tvar object = map.objects[i];\n\t\t\tvar objectType = \"\";\n\n\t\t\tswitch (object.getType())\n\t\t\t{\n\t\t\t\tcase pm.PushLevelModule.ObjectTypes.PushBarrel:\n\t\t\t\t\tobjectType = \"O\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.PushLevelModule.ObjectTypes.PushBox:\n\t\t\t\t\tobjectType = \"X\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar objMagnetPos = this._getMagnetCoordinatesFromMap(object.startPosition);\n\n\t\t\tthis._magnetCommands.push(objMagnetPos + \"s\" + objectType);\n\t\t}\n\n\t\tvar task = this._level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\tvar mapIndex = this._level.getActiveMapIndex();\n\n\t\tif(task)\n\t\t{\n\t\t\tfor(var id in task.data[mapIndex])\n\t\t\t{\n\t\t\t\tvar targetPos = this._getMagnetCoordinatesFromMap(task.data[mapIndex][id]);\n\t\t\t\tthis._magnetCommands.push(targetPos + \"IF\");\n\t\t\t}\n\t\t}\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tvar element = map.element(cc.p(x, y));\n\t\t\t\tvar magnetPos = this._getMagnetCoordinatesFromMap(cc.p(x, y));\n\n\t\t\t\tvar leftWall = element.walls[MapDirection4.Left];\n\t\t\t\tvar upWall = element.walls[MapDirection4.Up];\n\n\t\t\t\tif (leftWall && upWall)\n\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"NE\");\n\t\t\t\telse if (leftWall)\n\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"EE\");\n\t\t\t\telse if (upWall)\n\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"NN\");\n\n\t\t\t\tif(element.startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t{\n\t\t\t\t\tvar robot = this._robotMap[element.startForRobot].robot;\n\t\t\t\t\tvar robotType = \"\";\n\n\t\t\t\t\tvar direction = this._getMagnetRobotDirection(element.startRobotData.direction);\n\n\t\t\t\t\tswitch (robot.getType())\n\t\t\t\t\t{\n\t\t\t\t\t\tcase pm.RepairLevelModule.RobotType:\n\t\t\t\t\t\t\trobotType = \"v\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase pm.PushLevelModule.RobotTypes.PushRobot:\n\t\t\t\t\t\t\trobotType = \"d\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase pm.PushLevelModule.RobotTypes.PullRobot:\n\t\t\t\t\t\t\trobotType = \"t\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IF\");\n\t\t\t\t\tthis._magnetCommands.push(magnetPos + robotType + direction);\n\t\t\t\t}\n\n\t\t\t\tif(element instanceof pm.data.RepairMapElement)\n\t\t\t\t{\n\t\t\t\t\tswitch (element.originalType)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase RepairMapElementType.BlueGrass:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IB\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase RepairMapElementType.BrokenGrass:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IQ\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase RepairMapElementType.RepairedGrass:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IV\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(element instanceof pm.data.PushMapElement)\n\t\t\t\t{\n\t\t\t\t\tswitch (element.originalType)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase PushMapElementType.BarrelTarget:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IO\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PushMapElementType.BoxTarget:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IX\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PushMapElementType.CommonTarget:\n\t\t\t\t\t\t\tthis._magnetCommands.push(magnetPos + \"IY\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._sendMagnetCommands();\n\n\t\tthis._magnetCommands = [];\n\n\t\tthis._levelInitialized = true;\n\t},\n\n\t_parseMapCoordinates: function(packet)\n\t{\n\t\tvar coordinates = packet.split(';');\n\n\t\tfor(var i = 0; i < coordinates.length; ++i)\n\t\t{\n\t\t\tvar data = coordinates[i].split(',');\n\n\t\t\tif(data.length > 2)\n\t\t\t{\n\t\t\t\tvar x = Number(data[0]);\n\t\t\t\tvar y = Number(data[1]);\n\t\t\t\tvar mapSymbol = data[2];\n\n\t\t\t\tif(this._mapCoordinatesTable[x] === undefined)\n\t\t\t\t\tthis._mapCoordinatesTable[x] = {};\n\n\t\t\t\tthis._mapCoordinatesTable[x][y] = mapSymbol;\n\t\t\t}\n\t\t}\n\n\t\tthis._mapCoordinatedReceived = true;\n\t},\n\n\t_getMagnetCoordinatesFromMap: function(p)\n\t{\n\t\treturn this._mapCoordinatesTable[p.x][p.y];\n\t},\n\n\t_getMagnetRobotDirection: function(robotDirection)\n\t{\n\t\tswitch(robotDirection)\n\t\t{\n\t\t\tcase MapDirection4.Up: return \"U\";\n\t\t\tcase MapDirection4.Down: return \"D\";\n\t\t\tcase MapDirection4.Left: return \"L\";\n\t\t\tcase MapDirection4.Right: return \"R\";\n\t\t}\n\n\t\treturn \"\";\n\t},\n\n\t_getMagnetObjectDirection: function(position, nextPos)\n\t{\n\n\t\tif(nextPos.y > position.y)\n\t\t\treturn \"D\";\n\n\t\tif(nextPos.y < position.y)\n\t\t\treturn \"U\";\n\n\t\tif(nextPos.x > position.x)\n\t\t\treturn \"R\";\n\n\t\tif(nextPos.x < position.x)\n\t\t\treturn \"L\";\n\n\t\treturn \"\";\n\t},\n\n\t_log: function(message)\n\t{\n\t\tcc.log(\"Magnet Connector: \"+ message);\n\n\t\tif(this._logList)\n\t\t{\n\t\t\tvar text = new ccui.Text(message, pm.settings.fontBoldName, 12);\n\t\t\ttext.setTextColor(cc.color.BLACK);\n\t\t\tthis._logList.pushBackCustomItem(text);\n\n\t\t\tthis._logList.jumpToBottom();\n\t\t}\n\t},\n\n\t_udpLog: function(message)\n\t{\n\t\tif(this._client)\n\t\t{\n\t\t\tthis._client.sendPacket(\n\t\t\t\tpm.convertIPAddress(pm.appConfig.magnetLogUDPAddress),\n\t\t\t\tpm.appConfig.magnetLogUDPPort,\n\t\t\t\tpm.BROADCAST_PACKET_TYPE.DISCOVER_INFO,\n\t\t\t\tmessage\n\t\t\t);\n\t\t}\n\t}\n});\n\npm.MagnetPhysicalConnector.RECONNECT_TIMEOUT = 5000;\npm.MagnetPhysicalConnector.RESEND_CONNECT_TIMEOUT = 2000;\npm.MagnetPhysicalConnector.RESEND_PACKET_TIMEOUT = 500;\npm.MagnetPhysicalConnector.MAX_RECONNECT_COUNT = 20;\npm.MagnetPhysicalConnector.STATUS_SEND_TIMEOUT = 80;\npm.MagnetPhysicalConnector.LOOP_INTERVAL = 0.01;\npm.MagnetPhysicalConnector.LOOP_NAME = \"magnet_connector_loop\";\npm.MagnetPhysicalConnector.START_PACKET_NUMBER = 0x10;\npm.MagnetPhysicalConnector.END_PACKET_NUMBER = 125;\npm.MagnetPhysicalConnector.EXCLUDE_PACKET_NUMBER = {START: 0x39, END: 0x55};\n\npm.MagnetPhysicalConnector.BYTES = {\n\tSR_START: 8,\n\tCONNECTED_START: 2,\n\tSEND_END: 9,\n\tDELIVERED_END: 3,\n\tSTATUS_START: 126,\n\tSTATUS_END: 5,\n\tSYSTEM: 95,\n\tMAP_START: 0x21,\n\tMAP_END: 0x3F\n};\n\npm.MagnetPhysicalConnector.PACKET_TYPE = {\n\tSTATUS: 0,\n\tDELIVER_CONFIRM: 1,\n\tCONNECTED: 2,\n\tSYSTEM: 3,\n\tMAP: 4\n};\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n\n/**\n * @class 2D level where robot can repair some kinds({@link RepairMapElementType}) of elements.\n * @extends SquarableLevel\n */\npm.data.RepairLevel = SquarableLevel.extend(/** @lends pm.data.RepairLevel# */{\n\ttypeName: \"RepairLevel\",\n\t/**\n\t * Robots can be indicated.\n\t * @type {Boolean}\n\t */\n\trobotsCanBeIndicated: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.RepairLevelModule.Type; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n\n/**\n * @class 2D map where robot can repair some kinds({@link RepairMapElementType}) of elements.\n * @implements SquarableMapWithWalls\n */\npm.data.RepairMap = SquarableMapWithWalls.extend(/** @lends pm.data.RepairMap# */{\n\ttypeName: \"RepairMap\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.RepairLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new RepairMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new RepairMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.RepairMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\t/**\n * Repairs element by element coordinate.\n * @param {Number} position in elements.\n */\n\trepairElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.repair();\n\t},\n\n\t/**\n * Returns element to broken state by element coordinate.\n * @param {Number} x X-coordinate in elements.\n * @param {Number} y Y-coordinate in elements.\n */\n\tdisrepairElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.disrepair();\n\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n\n/**\n * @class Layer for {@link pm.data.RepairMap}.\n * @implements SquarableMapLayerWithWalls\n */\nvar RepairMapLayer = SquarableMapLayerWithWalls.extend(/** @lends RepairMapLayer#*/{\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Iso;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n\n/**\n * Repair map element types.\n * @enum {Number}\n * @readonly\n */\nvar RepairMapElementType = {\n\tNone: -1,\n\tLightBlueGrass: 0,\n\tBlueGrass: 1,\n\tBrokenGrass: 2,\n\tRepairedGrass: 3\n};\n\n/**\n * @class Elements for {@link pm.data.RepairMap}\n * @implements pm.MapElement\n */\npm.data.RepairMapElement = pm.MapElement4WithWalls.extend(/** @lends pm.data.RepairMapElement# */{\n\ttypeName: \"RepairMapElement\",\n\n\t_repairCount: 0,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_repairCount\");\n\t\tthis._super();\n\t},\n\n\trestore: function()\n\t{\n\t\tthis._repairCount = 0;\n\t\tpm.MapElement.prototype.restore.call(this);\n\t},\n\n\t/**\n * Repairs element.\n */\n\trepair: function()\n\t{\n\t\tif(this._type === RepairMapElementType.LightBlueGrass)\n\t\t\tthis.setType(RepairMapElementType.BlueGrass);\n\t\telse if(this._type === RepairMapElementType.BrokenGrass)\n\t\t\tthis.setType(RepairMapElementType.RepairedGrass);\n\n\t\t++this._repairCount;\n\t},\n\n\t/**\n * Returns element to broken state.\n */\n\tdisrepair: function()\n\t{\n\t\t--this._repairCount;\n\n\t\tif(this._repairCount === 0)\n\t\t{\n\t\t\tif (this._type === RepairMapElementType.BlueGrass)\n\t\t\t\tthis.setType(RepairMapElementType.LightBlueGrass);\n\t\t\telse if (this._type === RepairMapElementType.RepairedGrass)\n\t\t\t\tthis.setType(RepairMapElementType.BrokenGrass);\n\t\t}\n\t},\n\n\t/**\n * Checks is element is repaired.\n * @returns {Boolean}\n */\n\tisRepaired: function()\n\t{\n\t\treturn this.originalType === RepairMapElementType.BrokenGrass && this._type === RepairMapElementType.RepairedGrass;\n\t},\n\n\tisBadRepaired: function()\n\t{\n\t\treturn this.originalType === RepairMapElementType.LightBlueGrass && this._type === RepairMapElementType.BlueGrass;\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tthis.setType(state);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 11.11.14.\n */\n\n/**\n * @class pm.Task for repairing elements.
\n * Contains number of elements to repair.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.RepairTask = pm.Task.extend(/** @lends pm.data.RepairTask*/ {\n\ttypeName: \"RepairTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar repaired = 0;\n\t\tvar badRepaired = 0;\n\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar retArray = [];\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tif(map.element(cc.p(x, y)).isRepaired())\n\t\t\t\t\t++repaired;\n\t\t\t\telse if(map.element(cc.p(x, y)).isBadRepaired())\n\t\t\t\t\t++badRepaired;\n\t\t\t}\n\t\t}\n\n\t\tif (!(badRepaired === 0 && repaired === this.data[mapIndex]))\n\t\t{\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).getType() === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\t\t\t\t\telse if (map.element(cc.p(x, y)).isBadRepaired())\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = data;\n\t}\n\n});\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n\n/**\n * @class 2D robot for {@link pm.data.RepairLevel}.
\n * Has a repair element native function.\n * @implements PlayerRobot4\n */\npm.data.RepairRobot = PlayerRobot4Walls.extend(/** @lends pm.data.RepairRobot# */{\n\ttypeName: \"RepairRobot\",\n\n\tuseGreyCondition: false,\n\tuseLightBlueCondition: true,\n\tuseBlueCondition: true,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.RepairRobot.NativeMethod.Repair] = new pm.NativeFunction(this, this._repair);\n\n\t\tthis.nativeFunctions.push(pm.data.RepairRobot.NativeMethod.Repair);\n\t\tthis.updateConditions();\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new RepairRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_repair: function()\n\t{\n\t\tthis.playAnimation(RepairRobotAnimation.Repair, this._endRepair, this.direction);\n\t},\n\n\t_disRepair: function()\n\t{\n\t\tthis.playAnimation(RepairRobotAnimation.Repair, this._endDisRepair, this.direction);\n\t},\n\n\t_endRepair: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.repairElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endDisRepair: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.disrepairElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif (condition === pm.data.RepairRobot.Condition.GrassIsGrey)\n\t\t{\n\t\t\treturn map.element(this.position).getType() === RepairMapElementType.BrokenGrass;\n\t\t}\n\t\telse if (condition === pm.data.RepairRobot.Condition.GrassIsNotGrey)\n\t\t{\n\t\t\treturn map.element(this.position).getType() !== RepairMapElementType.BrokenGrass;\n\t\t}\n\t\telse if (condition === pm.data.RepairRobot.Condition.GrassIsLightBlue)\n\t\t{\n\t\t\treturn map.element(this.position).getType() === RepairMapElementType.LightBlueGrass;\n\t\t}\n\t\telse if (condition === pm.data.RepairRobot.Condition.GrassIsNotLightBlue)\n\t\t{\n\t\t\treturn map.element(this.position).getType() !== RepairMapElementType.LightBlueGrass;\n\t\t}\n\t\telse if (condition === pm.data.RepairRobot.Condition.GrassIsBlue)\n\t\t{\n\t\t\treturn map.element(this.position).getType() === RepairMapElementType.RepairedGrass ||\n map.element(this.position).getType() === RepairMapElementType.BlueGrass;\n\t\t}\n\t\telse if (condition === pm.data.RepairRobot.Condition.GrassIsNotBlue)\n\t\t{\n\t\t\treturn map.element(this.position).getType() !== RepairMapElementType.RepairedGrass &&\n map.element(this.position).getType() !== RepairMapElementType.BlueGrass;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn PlayerRobot4Walls.prototype._checkConditionInternal.call(this, condition);\n\t\t}\n\t},\n\n\tupdateConditions: function()\n\t{\n\t\tthis._changeCondition(pm.data.RepairRobot.Condition.GrassIsGrey, this.useGreyCondition);\n\t\tthis._changeConditionOpposite(pm.data.RepairRobot.Condition.GrassIsNotGrey, this.useGreyCondition);\n\t\tthis._changeCondition(pm.data.RepairRobot.Condition.GrassIsLightBlue, this.useLightBlueCondition);\n\t\tthis._changeConditionOpposite(pm.data.RepairRobot.Condition.GrassIsNotLightBlue, this.useLightBlueCondition);\n\t\tthis._changeCondition(pm.data.RepairRobot.Condition.GrassIsBlue, this.useBlueCondition);\n\t\tthis._changeConditionOpposite(pm.data.RepairRobot.Condition.GrassIsNotBlue, this.useBlueCondition);\n\t},\n\n\t_changeCondition: function(condition, flag)\n\t{\n\t\tvar index = this.conditions.indexOf(condition);\n\n\t\tif (flag && index === -1)\n\t\t\tthis.conditions.push(condition);\n\t\telse if (!flag && index !== -1)\n\t\t\tthis.conditions.splice(index, 1);\n\t},\n\n\t_changeConditionOpposite: function(condition, flag)\n\t{\n\t\tvar index = this.conditionOpposites.indexOf(condition);\n\n\t\tif (flag && index === -1)\n\t\t\tthis.conditionOpposites.push(condition);\n\t\telse if (!flag && index !== -1)\n\t\t\tthis.conditionOpposites.splice(index, 1);\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tdirection: this.direction,\n\t\t\tposition: this.position,\n\t\t\tanimation: this.getLastAnimation()\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state.direction !== this.direction)\n\t\t{\n\t\t\tvar k = (state.direction - this.direction + 4) % 4;\n\n\t\t\tif (k === 1)\n\t\t\t\tthis._turnLeft();\n\t\t\telse\n\t\t\t\tthis._turnRight();\n\t\t}\n\t\telse if (state.position !== this.position || this.isBroken())\n\t\t\tthis._moveTo(state.position, true);\n\t\telse if (state.animation === RepairRobotAnimation.Repair)\n\t\t\tthis._disRepair();\n\t},\n\n\thasChangeableConditions: function() { return true; },\n\n\tgetType: function() { return pm.RepairLevelModule.RobotType; }\n});\n\npm.data.RepairRobot.Condition =\n{\n\tGrassIsGrey: \"rep_gig\",\n\tGrassIsNotGrey: \"rep_ging\",\n\tGrassIsLightBlue: \"rep_gilb\",\n\tGrassIsNotLightBlue: \"rep_ginlb\",\n\tGrassIsBlue: \"rep_gib\",\n\tGrassIsNotBlue: \"rep_ginb\"\n};\n\npm.data.RepairRobot.NativeMethod =\n{\n\tRepair: \"rep_repair\",\n\tDisRepair: \"rep_disrepair\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 18.12.14.\n */\n/**\n * Animation type for repair robot.\n * @enum {String}\n * @readonly\n */\nvar RepairRobotAnimation = {Repair: \"paint\"};\n\n/**\n * @class 2D Sprite for {@link pm.data.RepairRobot}\n * @implements pm.IsoRobotSprite\n */\nvar RepairRobotSprite = pm.IsoRobotSprite.extend(/** @lends RepairRobotSprite# */{\n\tctor: function()\n\t{\n \tcc.animationCache.addAnimations(\"Robot/repair_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/repair_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/repair_robot-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/repair_robot-broken.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/repair_robot-repair.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(28, 27);\n\t\tthis._maxPoint = cc.p(28, -6);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(26, 85);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(26, 115);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"rep_robot{0}.png\".format(4 * direction);\n\t},\n\n\t_getTurnAnimationName: function(oldDirection, curDirection)\n\t{\n\t\treturn \"rep_robot_{0}->{1}\".format(oldDirection, curDirection);\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"rep_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"rep_robot_i_{0}\".format(direction);\n\t},\n\n\t//getRealPosition: function(x,y)\n\t//{\n\t// return this.mapLayer.realPosition(x, y, -35, 35);\n\t//},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase RepairRobotAnimation.Repair: this._repair(args, callback, target); break;\n\t\t\tdefault: pm.IsoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_repair: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(\"rep_robot_r_{0}\".format(direction));\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar turnEnd = new cc.CallFunc(endCallback, target);\n\t\tthis.getSprite().runAction( new cc.Sequence(animate, turnEnd));\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.17.\n */\n\n/**\n * @class Functions for RepairLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.RepairLevelModule = pm.ModuleInfo.extend(/** @lends pm.RepairLevelModule# */{\n\n\tname: \"Repair\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.RepairLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.RepairMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = RepairMapElementType.LightBlueGrass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.RepairLevel();\n\n\t\tlevel.name = \"Новый Вертун\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.RepairRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.RepairLevelModule.Type] = new pm.data.RepairTask(level);\n\t\tlevel.taskList.tasks[pm.RepairLevelModule.Type].data[0] = 0;\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.RepairLevelModule.RobotType] = \"rep_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/repair_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new RepairRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn RepairMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Repair\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/repair_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/robot4-methods.plist\",\n\t\t\t\"Robot Methods/repair_robot-methods.plist\",\n\t\t\t\"Conditions/robot4-conditions.plist\",\n\t\t\t\"Conditions/repair_robot-conditions.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.RepairRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Repair\": \"Repair\",\n\t\t\t\t\t\"RepairLevelType\": \"Repair level\",\n\t\t\t\t\t\"RepairTask\": \"Repair task\",\n\t\t\t\t\t\"NeedToRepairPattern\": \"Need to repair: {0}\",\n\t\t\t\t\t\"RepairLevel\": \"Repair\",\n\t\t\t\t\t\"rep_repair\" : \"Repair\",\n\t\t\t\t\t \"rep_gig\": \"is cell painted\",\n\t\t\t\t\t\"rep_ging\" : \"is cell not painted\",\n\t\t\t\t\t\"rep_gilb\" : \"is cell light blue\",\n\t\t\t\t\t\"rep_ginlb\" : \"is cell not light blue\",\n\t\t\t\t\t\"rep_gib\" : \"is cell blue\",\n\t\t\t\t\t\"rep_ginb\" : \"is cell not blue\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Repair\": \"Вертун\",\n\t\t\t\t\t\"RepairLevelType\": \"Вертун\",\n\t\t\t\t\t\"RepairTask\": \"Задание починки\",\n\t\t\t\t\t\"NeedToRepairPattern\": \"Нужно починить: {0}\",\n\t\t\t\t\t\"RepairLevel\": \"Вертун\",\n\t\t\t\t\t\"rep_repair\" : \"закрасить\",\n\t\t\t\t\t\"rep_gig\": \"клетка закрашена\",\n\t\t\t\t\t\"rep_ging\" : \"клетка чистая\",\n\t\t\t\t\t\"rep_gilb\" : \"клетка голубая\",\n\t\t\t\t\t\"rep_ginlb\" : \"клетка не голубая\",\n\t\t\t\t\t\"rep_gib\" : \"клетка синяя\",\n\t\t\t\t\t\"rep_ginb\" : \"клетка не синяя\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new RepairTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"RepairTask\";\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.RepairTask(level);\n\n\t\tfor(var i =0; i < level.maps.length;++i)\n\t\t{\n\t\t\tvar repairValue = 0;\n\t\t\tvar map = level.maps[i];\n\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).originalType === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t\t++repairValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttask.fillWithInitialData(i, repairValue);\n\t\t}\n\n\t\tlevel.taskList.addTask(pm.RepairLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function()\n\t{\n\t\treturn {\n\t\t\thorizontal: pm.spriteUtils.getMapTileFrame(\"repair-depth_horizontal\"),\n\t\t\tvertical: pm.spriteUtils.getMapTileFrame(\"repair-depth_vertical\")\n\t\t};\n\t},\n\n\tgetChangeableConditions: function(robot, callback, target)\n\t{\n\t\tvar conditionsLayout = new ccui.Layout();\n\t\tconditionsLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar greyCondition = new pmui.SelectionButton(pm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsGrey, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsGrey, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsGrey, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif (robot.useGreyCondition)\n\t\t\tgreyCondition.setSelectedTexture();\n\t\telse\n\t\t\tgreyCondition.setNormalTexture();\n\n\t\tgreyCondition.addClickEventListener(function (flag)\n\t\t{\n\t\t\tcallback.call(target, \"grey\", flag);\n\n\t\t\tif (robot.useGreyCondition)\n\t\t\t\tgreyCondition.setSelectedTexture();\n\t\t\telse\n\t\t\t\tgreyCondition.setNormalTexture();\n\t\t});\n\n\t\tvar lightBlueCondition = new pmui.SelectionButton(pm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsLightBlue, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsLightBlue, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsLightBlue, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif (robot.useLightBlueCondition)\n\t\t\tlightBlueCondition.setSelectedTexture();\n\t\telse\n\t\t\tlightBlueCondition.setNormalTexture();\n\n\t\tlightBlueCondition.addClickEventListener(function (flag)\n\t\t{\n\t\t\tcallback.call(target, \"lightBlue\", flag);\n\n\t\t\tif (robot.useLightBlueCondition)\n\t\t\t\tlightBlueCondition.setSelectedTexture();\n\t\t\telse\n\t\t\t\tlightBlueCondition.setNormalTexture();\n\t\t});\n\n\t\tvar blueCondition = new pmui.SelectionButton(pm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsBlue, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsBlue, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getRobotConditionSpriteName(pm.data.RepairRobot.Condition.GrassIsBlue, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif (robot.useBlueCondition)\n\t\t\tblueCondition.setSelectedTexture();\n\t\telse\n\t\t\tblueCondition.setNormalTexture();\n\n\t\tblueCondition.addClickEventListener(function (flag)\n\t\t{\n\t\t\tcallback.call(target, \"blue\", flag);\n\n\t\t\tif (robot.useBlueCondition)\n\t\t\t\tblueCondition.setSelectedTexture();\n\t\t\telse\n\t\t\t\tblueCondition.setNormalTexture();\n\t\t});\n\n\t\tvar greyAlign = new ccui.RelativeLayoutParameter();\n\t\tgreyAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgreyAlign.setRelativeName(\"grey\");\n\t\tgreyCondition.setLayoutParameter(greyAlign);\n\n\t\tvar lightBlueAlign = new ccui.RelativeLayoutParameter();\n\t\tlightBlueAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tlightBlueAlign.setMargin(5, 0, 0, 0);\n\t\tlightBlueAlign.setRelativeName(\"lightBlue\");\n\t\tlightBlueAlign.setRelativeToWidgetName(\"grey\");\n\t\tlightBlueCondition.setLayoutParameter(lightBlueAlign);\n\n\t\tvar blueAlign = new ccui.RelativeLayoutParameter();\n\t\tblueAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tblueAlign.setMargin(5, 0, 0, 0);\n\t\tblueAlign.setRelativeToWidgetName(\"lightBlue\");\n\t\tblueCondition.setLayoutParameter(blueAlign);\n\n\t\tconditionsLayout.addChild(greyCondition);\n\t\tconditionsLayout.addChild(lightBlueCondition);\n\t\tconditionsLayout.addChild(blueCondition);\n\n\t\tconditionsLayout.setContentSize(LevelSettingsLayer.WIDTH, greyCondition.height);\n\n\t\treturn conditionsLayout;\n\t},\n\n\tcompareConditions: function(a, b)\n\t{\n\t\tif (a.indexOf(\"4\") !== -1 && b.indexOf(\"4\") === -1)\n\t\t\treturn -1;\n\t\telse if (a.indexOf(\"4\") === -1 && b.indexOf(\"4\") !== -1)\n\t\t\treturn 1;\n\n\t\tif (a.lastIndexOf(\"g\") === a.length - 1 && b.lastIndexOf(\"g\") !== b.length - 1)\n\t\t\treturn -1;\n\t\telse if (a.lastIndexOf(\"g\") !== a.length - 1 && b.lastIndexOf(\"g\") === b.length - 1)\n\t\t\treturn 1;\n\n\t\tif (a.indexOf(\"l\") !== -1 && b.indexOf(\"l\") === -1)\n\t\t\treturn -1;\n\t\telse if (a.indexOf(\"l\") === -1 && b.indexOf(\"l\") !== -1)\n\t\t\treturn 1;\n\t},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\tvar level = new pm.data.RepairLevel();\n\n\t\tlevel.name = \"Repair\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.RepairRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.robots[0]._oldPosition = cc.p(0, 1);\n\t\tlevel.robots[0].position = cc.p(0, 1);\n\t\tlevel.robots[0].direction = 1;\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.RepairLevelModule.Type] = new pm.data.RepairTask(level);\n\t\tlevel.taskList.tasks[pm.RepairLevelModule.Type].data[0] = 0;\n\n\t\tvar map = new pm.data.RepairMap();\n\n\t\tmap.parentLevel = level;\n\t\tmap.setSize(2, 2);\n\n\t\tmap.element(cc.p(0, 0)).originalType = RepairMapElementType.LightBlueGrass;\n\t\tmap.element(cc.p(1, 0)).originalType = RepairMapElementType.RepairedGrass;\n\t\tmap.element(cc.p(0, 1)).originalType = RepairMapElementType.BlueGrass;\n\t\tmap.element(cc.p(1, 1)).originalType = RepairMapElementType.BrokenGrass;\n\n\t\tmap.element(cc.p(0, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(0, 1)).startRobotData.direction = 1;\n\n\t\tlevel.maps.push(map);\n\t\tlevel.load();\n\n\t\tmap.load();\n\t\tmap.generateMapLayer(false);\n\n\t\tmap.mapLayer.placeRobots(true);\n\n\t\treturn map.mapLayer;\n\t}\n});\n\npm.RepairLevelModule.RobotType = \"repair-robot\";\npm.RepairLevelModule.Type = \"repair\";\npm.RepairLevelModule.ObjectTypes = {};\n","/**\n * Created by Kirill Mashchenko on 29.06.17.\n */\n\nvar RepairMapEditorLayer = RepairMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.RepairMapElement();\n\t\tel.originalType = RepairMapElementType.LightBlueGrass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = RepairMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = RepairMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = RepairMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = RepairMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for repair robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar RepairRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends RepairRobotSettingsLayer# */{\n\t_repairSlider: null,\n\t_repairLabel: null,\n\t_repairValue: 0,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Repair\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * @class Layer for repair task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.RepairTask} task\n */\n\nvar RepairTaskLayer = TaskLayer.extend(/** @lends RepairTaskLayer# */{\n\n\t_repairLabel: null,\n\t_repairSlider: null,\n\t_repairValue: null,\n\t_allRepairValue: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"RepairTask\"), level, task, pm.RepairLevelModule.Type);\n\n\t\tvar height = this.height;\n\n\t\tthis._repairLabel = new ccui.Text(\"0\", pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar repairLabelAlign = new ccui.LinearLayoutParameter();\n\t\trepairLabelAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\trepairLabelAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._repairLabel.setLayoutParameter(repairLabelAlign);\n\n\t\tthis.addChild(this._repairLabel);\n\t\theight += this._repairLabel.height;\n\n\t\tthis._repairSlider = new ccui.Slider();\n\t\tthis._repairSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._repairSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._repairSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._repairSlider.addEventListener(this._repairSliderValueChanged.bind(this));\n\n\t\tvar repairAlign = new ccui.LinearLayoutParameter();\n\t\trepairAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\trepairAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._repairSlider.setLayoutParameter(repairAlign);\n\n\t\tthis.addChild(this._repairSlider);\n\t\theight += this._repairSlider.height + 20;\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateRepairSliderValue.bind(this), this);\n\n\t\tthis.setContentSize(this.width, height);\n\n\t\tvar map = this._level.activeMap;\n\n\t\tif (this._task.data[this._level.getActiveMapIndex()])\n\t\t{\n\t\t\tthis._allRepairValue = 0;\n\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).originalType === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t\t++this._allRepairValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._repairValue = this._task.data[this._level.getActiveMapIndex()];\n\t\t\tthis._repairSlider.setPercent(this._repairValue/this._allRepairValue * 100);\n\t\t\tthis._repairLabel.setString(LocalizedString(\"NeedToRepairPattern\").format(this._repairValue));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._createRepairSliderValue();\n\t\t}\n\t},\n\n\t_createRepairSliderValue: function ()\n\t{\n\t\tthis._allRepairValue = 0;\n\n\t\tvar map =this._level.activeMap;\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, y)).originalType === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t++this._allRepairValue;\n\t\t\t}\n\t\t}\n\n\t\tthis._repairSlider.setPercent(100);\n\n\t\tthis._repairLabel.setString(LocalizedString(\"NeedToRepairPattern\").format(this._allRepairValue));\n\n\t\tthis._task.data[this._level.getActiveMapIndex()] = this._allRepairValue;\n\t},\n\n\t_updateRepairSliderValue: function()\n\t{\n\t\tthis._allRepairValue = 0;\n\n\t\tvar map =this._level.activeMap;\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, y)).originalType === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t++this._allRepairValue;\n\t\t\t}\n\t\t}\n\n\t\tif (this._repairSlider.getPercent() === 100)\n\t\t{\n\t\t\tthis._repairSlider.setPercent(100);\n\t\t\tthis._repairLabel.setString(LocalizedString(\"NeedToRepairPattern\").format(this._allRepairValue));\n\t\t\tthis._task.data[this._level.getActiveMapIndex()] = this._allRepairValue;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._repairSlider.setPercent(Math.floor(this._task.data[this._level.getActiveMapIndex()] / this._allRepairValue * 100));\n\t\t}\n\t},\n\n\t_repairSliderValueChanged: function (target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tvar repairValue = Math.floor(this._repairSlider.getPercent() / 100 * this._allRepairValue);\n\n\t\t\tif (this._repairSlider.getPercent() !== 0 && repairValue !== this._allRepairValue)\n\t\t\t\t++repairValue;\n\n\t\t\tthis._repairLabel.setString(LocalizedString(\"NeedToRepairPattern\").format(repairValue));\n\t\t\tthis._task.data[this._level.getActiveMapIndex()] = repairValue;\n\t\t}\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._updateRepairSliderValue();\n\t}\n\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class 2D Level where robots can push objects.\n * @implements SquarableLevel\n */\npm.data.PushLevel = SquarableLevel.extend(/** @lends pm.data.PushLevel# */{\n\ttypeName: \"PushLevel\",\n\t/**\n\t * Robots can be indicated.\n\t * @type {Boolean}\n\t */\n\trobotsCanBeIndicated: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.PushLevelModule.Type; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class 2D map for {@link pm.data.PushLevel}\n * @implements SquarableMapWithWalls\n */\npm.data.PushMap = SquarableMapWithWalls.extend(/** @lends pm.data.PushMap# */{\n\ttypeName: \"PushMap\",\n\n\t_pushTargetElements: [],\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_pushTargetElements\");\n\n\t\tthis._super();\n\t},\n\n\tload: function()\n\t{\n\t\tSquarableMap.prototype.load.call(this);\n\n\t\tthis.updatePushTargetElements();\n\t},\n\n\tupdatePushTargetElements: function()\n\t{\n\t\tthis._pushTargetElements = [];\n\n\t\tfor (var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this.height; ++y)\n\t\t\t{\n\t\t\t\tif (this.element(cc.p(x, y)).originalType !== PushMapElementType.Grass)\n\t\t\t\t{\n\t\t\t\t\tthis._pushTargetElements.push({\n\t\t\t\t\t\tpoint: cc.p(cc.p(x, y)),\n\t\t\t\t\t\ttype: this.element(cc.p(x, y)).originalType\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tgetType: function() { return pm.PushLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new PushMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new PushMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.PushMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class Layer for {@link pm.data.PushMap}.\n * @implements SquarableMapLayerWithWalls\n */\nvar PushMapLayer = SquarableMapLayerWithWalls.extend(/** @lends PushMapLayer#*/{\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Iso;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * Types of {@link pm.data.PushMapElement}.\n * @enum {Number}\n * @readonly\n */\nvar PushMapElementType = {\n\tGrass: 0,\n\tBoxTarget: 1,\n\tBarrelTarget: 2,\n\tCommonTarget: 3\n};\n\n/**\n * @class Elements of {@link pm.data.PushMap}.\n * @implements pm.MapElement\n */\npm.data.PushMapElement = pm.MapElement4WithWalls.extend(/** @lends pm.data.PushMapElement# */{\n\ttypeName: \"PushMapElement\",\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 21.05.15.\n */\n\n/**\n * @class pm.Task for pushing objects on needed elements.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.PushTask = pm.Task.extend(/** @ends pm.data.PushTask# */{\n\ttypeName: \"PushTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar completed = true;\n\n\t\tvar retArray = [];\n\n\t\tvar point = cc.p();\n\t\tvar type = 0;\n\t\tvar elementObjectType = 0;\n\n\t\tfor(var i = 0; i < map._pushTargetElements.length; ++i)\n\t\t{\n\t\t\tpoint = map._pushTargetElements[i].point;\n\t\t\ttype = map._pushTargetElements[i].type;\n\n\t\t\tif(map.element(point).getObjectCount() === 1)\n\t\t\t{\n\t\t\t\telementObjectType = map.element(point).getObjectByKeyIndex(0).getType();\n\n\t\t\t\tswitch(type)\n\t\t\t\t{\n\t\t\t\t\tcase PushMapElementType.BoxTarget:\n\t\t\t\t\t\tcompleted = elementObjectType === pm.PushLevelModule.ObjectTypes.PushBox;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PushMapElementType.BarrelTarget:\n\t\t\t\t\t\tcompleted = elementObjectType === pm.PushLevelModule.ObjectTypes.PushBarrel;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PushMapElementType.CommonTarget:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcompleted = false;\n\t\t\t}\n\n\t\t\tif(!completed)\n\t\t\t\tretArray.push(map.element(point));\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tmoveDown: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._pushTargetElements.length; ++i)\n\t\t\tmap._pushTargetElements[i].point.y--;\n\t},\n\n\tmoveUp: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._pushTargetElements.length; ++i)\n\t\t\tmap._pushTargetElements[i].point.y++;\n\t},\n\n\tmoveRight: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._pushTargetElements.length; ++i)\n\t\t\tmap._pushTargetElements[i].point.x--;\n\t},\n\n\tmoveLeft: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._pushTargetElements.length; ++i)\n\t\t\tmap._pushTargetElements[i].point.x++;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class 2D robot which can push no more than two objects in one line.\n * @implements PlayerRobot4\n */\npm.data.PushRobot = PlayerRobot4Walls.extend(/** @lends pm.data.PushRobot# */{\n\ttypeName: \"PushRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.conditions.push(pm.data.PushRobot.Condition.CanMoveForward);\n\t\tthis.conditionOpposites.push(pm.data.PushRobot.Condition.CanNotMoveForward);\n\t},\n\n\treset: function()\n\t{\n\t\tPlayerRobot4.prototype.reset.call(this);\n\t},\n\n\t_canMoveTo: function (pos, direction)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tvar lastObjectPosition = pos;\n\t\tvar objectBlockLength = 0;\n\n\t\tdirection = (direction + 2) % 4;\n\n\t\twhile (map.element(lastObjectPosition).getObjectCount() > 0 &&\n\t\t!map.element(lastObjectPosition).walls[direction])\n\t\t{\n\t\t\tfor (var o in map.element(lastObjectPosition)._objectsHere)\n\t\t\t{\n\t\t\t\tvar object = map.element(lastObjectPosition)._objectsHere[o];\n\n\t\t\t\tif (!(object instanceof PushObject))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (object.isMoving())\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++objectBlockLength;\n\n\t\t\tvar nextPos = map.getNextDirectionalElementPosition(lastObjectPosition, this.direction);\n\n\t\t\tif (nextPos)\n\t\t\t{\n\t\t\t\tlastObjectPosition = nextPos;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn objectBlockLength <= 2 && !map.element(lastObjectPosition).walls[direction];\n\t},\n\n\t_moveTo: function(pos, reverse)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tvar lastObjectPosition = pos;\n\t\tvar objectBlockLength = 0;\n\n\t\tif(!pos || !map.element(lastObjectPosition))\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\twhile(map.element(lastObjectPosition).getObjectCount() > 0)\n\t\t{\n\t\t\t++objectBlockLength;\n\n\t\t\tvar nextPos = map.getNextDirectionalElementPosition(lastObjectPosition, this.direction);\n\n\t\t\tif (nextPos)\n\t\t\t\tlastObjectPosition = nextPos;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (lastObjectPosition.x !== pos.x || lastObjectPosition.y !== pos.y)\n\t\t{\n\t\t\tfor (var r in map.element(lastObjectPosition)._robotsHere)\n\t\t\t{\n\t\t\t\tvar robot = map.element(lastObjectPosition)._robotsHere[r];\n\n\t\t\t\tif (!(robot instanceof pm.AbstractRobot))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar wasBroken = this.isBroken();\n\n\t\tPlayerRobot4.prototype._moveTo.call(this, pos, reverse);\n\n\t\tif(wasBroken || this.isBroken() || reverse)\n\t\t\treturn;\n\n\t\tvar objectNextPos = lastObjectPosition;\n\n\t\tfor (var j = 0; j < objectBlockLength; ++j)\n\t\t{\n\t\t\tlastObjectPosition = map.getPrevDirectionalElementPosition(lastObjectPosition, this.direction);\n\t\t\tvar element = map.element(lastObjectPosition);\n\n\t\t\tfor (var i in element._objectsHere)\n\t\t\t{\n\t\t\t\tvar object = element._objectsHere[i];\n\n\t\t\t\tif (!(object instanceof PushObject) || object.isMoving())\n\t\t\t\t\tcontinue;\n\n\t\t\t\tobject.moveTo(objectNextPos);\n\t\t\t}\n\t\t\tobjectNextPos = lastObjectPosition;\n\t\t}\n\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new PushRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_isClearForward: function()\n\t{\n\t\tvar map = this.getMap();\n\t\tvar pos = map.getNextDirectionalElementPosition(this.position, this.direction);\n\n\t\tif (!pos)\n\t\t\treturn false;\n\n\t\tvar lastObjectPosition = pos;\n\t\tvar objectBlockLength = 0;\n\n\t\tvar direction = (this.direction + 2) % 4;\n\n\t\twhile(map.element(lastObjectPosition).getObjectCount() > 0 &&\n\t!map.element(lastObjectPosition).walls[direction])\n\t\t{\n\t\t\tvar hasObjects = true;\n\n\t\t\tfor (var o in map.element(lastObjectPosition)._objectsHere)\n\t\t\t{\n\t\t\t\tvar object = map.element(lastObjectPosition)._objectsHere[o];\n\n\t\t\t\tif (!(object instanceof PushObject))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif(object.oldPosition.x !== lastObjectPosition.x || object.oldPosition.y !== lastObjectPosition.y)\n\t\t\t\t{\n\t\t\t\t\thasObjects = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!hasObjects)\n\t\t\t\tbreak;\n\n\t\t\t++objectBlockLength;\n\n\t\t\tvar nextPos = map.getNextDirectionalElementPosition(lastObjectPosition, this.direction);\n\n\t\t\tif (nextPos)\n\t\t\t\tlastObjectPosition = nextPos;\n\t\t\telse\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn objectBlockLength <= 2 && !map.element(lastObjectPosition).walls[direction];\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif (condition === pm.data.PushRobot.Condition.CanMoveForward)\n\t\t{\n\t\t\treturn this._isClearForward();\n\t\t}\n\t\telse if (condition === pm.data.PushRobot.Condition.CanNotMoveForward)\n\t\t{\n\t\t\treturn !this._isClearForward();\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn PlayerRobot4Walls.prototype._checkConditionInternal.call(this, condition);\n\t\t}\n\t},\n\n\tgetType: function() { return pm.PushLevelModule.RobotTypes.PushRobot; }\n});\n\npm.data.PushRobot.Condition = {\n\tCanMoveForward: \"push_mf\",\n\tCanNotMoveForward: \"push_nmf\"\n};\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class 2D sprite of {pm.data.PushRobot}.\n * @implements pm.IsoRobotSprite\n */\nvar PushRobotSprite = pm.IsoRobotSprite.extend(/** @lends PushRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/push_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/push_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/push_robot-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/push_robot-broken.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(44, 29);\n\t\tthis._maxPoint = cc.p(44, -2);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(48, 84);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(48, 115);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"push_robot{0}.png\".format(4 * direction);\n\t},\n\n\t_getTurnAnimationName: function(oldDirection, curDirection)\n\t{\n\t\treturn \"push_robot_{0}->{1}\".format(oldDirection, curDirection);\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"push_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"push_robot_i_{0}\".format(direction);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 06.12.2017.\n */\n\n/**\n * @class 2D robot\n * @implements PlayerRobot4\n */\npm.data.PullRobot = PlayerRobot4Walls.extend(/** @lends pm.data.PullRobot# */{\n\ttypeName: \"PullRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.PullRobot.NativeMethod.Pull] = new pm.NativeFunction(this, this._pull);\n\n\t\tthis.nativeFunctions.push(pm.data.PullRobot.NativeMethod.Pull);\n\t},\n\n\treset: function()\n\t{\n\t\tPlayerRobot4.prototype.reset.call(this);\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\tvar element = this.getMap().element(target);\n\t\treturn !element.walls[(direction + this.getDirectionCount()/2) % this.getDirectionCount()] &&\n element.getObjectCount() === 0;\n\t},\n\n\t_pull: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tvar nextPos = map.getNextDirectionalElementPosition(this.position, this.direction);\n\t\tvar prevPos = map.getPrevDirectionalElementPosition(this.position, this.direction);\n\t\tvar objectPosition = this.position;\n\n\t\tvar wasBroken = this.isBroken();\n\n\t\tvar prevElement = map.element(prevPos);\n\n\t\tif(!prevElement || prevElement.getObjectCount() === 0)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i in prevElement._objectsHere)\n\t\t{\n\t\t\tvar object = prevElement._objectsHere[i];\n\n\t\t\tif (!(object instanceof PushObject))\n\t\t\t\tcontinue;\n\n\t\t\tif (object.isMoving())\n\t\t\t{\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis._moveTo(nextPos, false);\n\n\t\tif(wasBroken || this.isBroken())\n\t\t\treturn;\n\n\t\tfor (var i in prevElement._objectsHere)\n\t\t{\n\t\t\tvar object = prevElement._objectsHere[i];\n\n\t\t\tif (!(object instanceof PushObject))\n\t\t\t\tcontinue;\n\n\t\t\tobject.moveTo(objectPosition);\n\t\t}\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new PullRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tgetType: function() { return pm.PushLevelModule.RobotTypes.PullRobot; }\n});\n\npm.data.PullRobot.NativeMethod = {Pull: \"push_pull\"};\n\n","/**\n * Created by Kirill Mashchenko on 06.12.2017.\n */\n\n/**\n * @class 2D sprite of {pm.data.PullRobot}.\n * @implements pm.IsoRobotSprite\n */\nvar PullRobotSprite = pm.IsoRobotSprite.extend(/** @lends PullRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/pull_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/pull_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/pull_robot-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/pull_robot-broken.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(52, 35);\n\t\tthis._maxPoint = cc.p(52, 5);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(50, 82);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(50, 113);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"pull_robot{0}.png\".format(4 * direction);\n\t},\n\n\t_getTurnAnimationName: function(oldDirection, curDirection)\n\t{\n\t\treturn \"pull_robot_{0}->{1}\".format(oldDirection, curDirection);\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"pull_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"pull_robot_i_{0}\".format(direction);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 08.07.15.\n */\n\n/**\n * @class Common interface for objects pushed by {@link pm.data.PushRobot}\n * @interface\n * @extends pm.Object\n */\nvar PushObject = pm.Object.extend(/** @lends PushObject#*/{\n\n\toldPosition: cc.p(),\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"oldPosition\");\n\t\tthis._super();\n\t},\n\n\t/**\n * Sets position of object by element position.\n * @param {cc.Point} point Point in element coordinates.\n */\n\tsetPosition: function(point)\n\t{\n\t\tthis._removeFromCurrentPosition();\n\n\t\tthis.position = point;\n\t\tthis.oldPosition = this.position;\n\n\t\tthis.parentMap.element(point).addObject(this);\n\t},\n\n\t/**\n * Returns if push object is moving\n */\n\tisMoving: function()\n\t{\n\t\treturn this.oldPosition.x !== this.position.x || this.oldPosition.y !== this.position.y;\n\t},\n\n\t/**\n * Moves object to element position.\n * @param {cc.Point} target Move coordinate in elements.\n */\n\tmoveTo: function(target)\n\t{\n\t\tif (this.position.x === target.x && this.position.y === target.y)\n\t\t\treturn;\n\n\t\tthis.oldPosition = this.position;\n\t\tthis.position = target;\n\n\t\tthis.parentMap.element(target).addObject(this);\n\n\t\tthis.playAnimation(PushObjectAnimation.Move, this._endMoving, this.position);\n\t},\n\n\t_endMoving: function()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\n\t\tthis._removeFromOldPosition();\n\t\tthis.oldPosition = this.position;\n\t},\n\n\t_removeFromOldPosition: function()\n\t{\n\t\tif(this.oldPosition.x < this.parentMap.width && this.oldPosition.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.oldPosition).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.oldPosition).removeObject(this);\n\t\t}\n\t},\n\n\t_removeFromCurrentPosition: function()\n\t{\n\t\tif(this.position.x < this.parentMap.width && this.position.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.position).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.position).removeObject(this);\n\t\t}\n\t},\n\n\tupdateSprite: function(isBroken)\n\t{\n\t\tif (isBroken === undefined)\n\t\t\tisBroken = false;\n\n\t\tif (!isBroken)\n\t\t\tthis.sprite.setRealPosition(this.position);\n\t\telse\n\t\t\tthis.sprite.setRealPosition(this.oldPosition);\n\t},\n\n\treset: function ()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t\tthis._removeFromOldPosition();\n\t\tthis.setPosition(this.startPosition);\n\t},\n\n\tgenerateSprite: function(previewDraw) {},\n\n\tgetState: function ()\n\t{\n\t\treturn this.position;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (this.position !== state)\n\t\t\tthis.moveTo(state);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 08.07.15.\n */\n/**\n * Push object sprite animation types.\n * @enum {Number}\n */\nvar PushObjectAnimation = {Move: 0};\n\n/**\n * @class Common sprite interface for push objects.\n * @interface\n * @extends pm.DynamicSprite\n */\nvar PushObjectSprite = pm.DynamicSprite.extend(/** @lends PushObjectSprite#*/{\n\n\tctor: function(frame)\n\t{\n\t\tthis._super(frame);\n\t},\n\n\tplayAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase PushObjectAnimation.Move: this._move(args, endCallBack, target); break;\n\t\t}\n\t},\n\n\t_move: function(target, endCallback, callbackTarget)\n\t{\n\t\tvar targetPos = this.getRealPosition(target);\n\n\t\tvar moveObject = cc.moveTo(pm.settings.getAnimationSpeed(), targetPos);\n\n\t\tvar moveEnd = cc.callFunc(function() { this._needToUpdateZOrder = false; endCallback.call(callbackTarget); }, this);\n\n\t\tthis._needToUpdateZOrder = true;\n\n\t\tthis.sprite.runAction(cc.sequence(moveObject, moveEnd));\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n\n/**\n * @class Box object for pushing by {@link pm.data.PushRobot}\n * @implements PushObject\n */\npm.data.PushBox = PushObject.extend(/** @lends pm.data.PushBox# */{\n\n\ttypeName: \"PushBox\",\n\n\tgetType: function() { return pm.PushLevelModule.ObjectTypes.PushBox; },\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new PushBoxSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 09.04.15.\n */\n/**\n * @class Sprite for {@link pm.data.PushBox}\n * @implements PushObjectSprite\n */\nvar PushBoxSprite = PushObjectSprite.extend(/** @lends PushBoxSprite# */{\n\n\tctor: function()\n\t{\n\t\tthis._super(\"Objects/PushBox.png\");\n\n\t\tthis._minPoint = cc.p(40, 35);\n\t\tthis._maxPoint = cc.p(this.getSprite().getContentSize().width / 2, 3);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 08.07.15.\n */\n\n/**\n * @class Barrel object for pushing by {@link pm.data.PushRobot}\n * @implements PushObject\n */\npm.data.PushBarrel = PushObject.extend(/** @lends pm.data.PushBarrel#*/{\n\n\ttypeName: \"PushBarrel\",\n\n\tgetType: function() { return pm.PushLevelModule.ObjectTypes.PushBarrel; },\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new PushBarrelSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 08.07.15.\n */\n\n/**\n * @class Sprite for {@link pm.data.PushBarrel}\n * @implements PushObjectSprite\n */\nvar PushBarrelSprite = PushObjectSprite.extend(/**@lends PushBarrelSprite#*/{\n\n\tctor: function()\n\t{\n\t\tthis._super(\"Objects/PushBarrel.png\");\n\n\t\tthis._minPoint = cc.p(34, 26);\n\t\tthis._maxPoint = cc.p(34, -6);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.17.\n */\n\n/**\n * @class Functions for PushLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.PushLevelModule = pm.ModuleInfo.extend(/** @lends pm.PushLevelModule# */{\n\n\tname: \"Push\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.PushLevelModule.Type;\n\t},\n\n\tgetBackgroundParameters: function ()\n\t{\n\t\treturn{\n\t\t\tcolor: cc.color(102, 0, 255),\n\n\t\t\tcenterImage: \"Background/Levels/push_center.png\"\n\t\t};\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.PushMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = PushMapElementType.Grass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.PushLevel();\n\n\t\tlevel.name = \"Новый Двигун\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.PushRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = new pm.data.PushTask(level);\n\n\t\treturn level;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.PushLevelModule.RobotTypes.PushRobot:\n\t\t\t\treturn \"Robot/push_robot.plist\";\n\t\t\tcase pm.PushLevelModule.RobotTypes.PullRobot:\n\t\t\t\treturn \"Robot/pull_robot.plist\";\n\t\t}\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.PushLevelModule.ObjectTypes.PushBarrel] = \"Objects/PushBarrel.png\";\n\t\tret[pm.PushLevelModule.ObjectTypes.PushBox] = \"Objects/PushBox.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.PushLevelModule.RobotTypes.PushRobot] = \"push_robot0.png\";\n\t\tret[pm.PushLevelModule.RobotTypes.PullRobot] = \"pull_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new PushRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn PushMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.PushLevelModule.RobotTypes.PushRobot:\n\t\t\t\treturn LocalizedString(\"Push\");\n\t\t\tcase pm.PushLevelModule.RobotTypes.PullRobot:\n\t\t\t\treturn LocalizedString(\"Pull\");\n\t\t}\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/push_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn[\n\t\t\t\"Robot Methods/robot4-methods.plist\",\n\t\t\t\"Conditions/robot4-conditions.plist\",\n\t\t\t\"Conditions/push_robot-conditions.plist\",\n\t\t\t\"Robot Methods/pull_robot-methods.plist\"\n\t\t];\n\t},\n\n\tgenerateObject: function (objectType)\n\t{\n\t\tswitch (objectType)\n\t\t{\n\t\t\tcase pm.PushLevelModule.ObjectTypes.PushBox:\n\t\t\t\treturn new pm.data.PushBox();\n\t\t\tcase pm.PushLevelModule.ObjectTypes.PushBarrel:\n\t\t\t\treturn new pm.data.PushBarrel();\n\t\t}\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.PushLevelModule.RobotTypes.PushRobot:\n\t\t\t\treturn new pm.data.PushRobot();\n\t\t\tcase pm.PushLevelModule.RobotTypes.PullRobot:\n\t\t\t\treturn new pm.data.PullRobot();\n\t\t}\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Push\": \"Push\",\n\t\t\t\t\t\"Pull\": \"Pull\",\n\t\t\t\t\t\"PushLevelType\": \"Push level\",\n\t\t\t\t\t\"PushTask\": \"Push objects to targets\",\n\t\t\t\t\t\"PushLevel\": \"Push and Pull\",\n\t\t\t\t\t\"push_pull\" : \"push\",\n\t\t\t\t\t\"push_mf\" : \"can move\",\n\t\t\t\t\t\"push_nmf\" : \"can not move\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Push\": \"Двигун\",\n\t\t\t\t\t\"Pull\": \"Тягун\",\n\t\t\t\t\t\"PushLevelType\": \"Двигун\",\n\t\t\t\t\t\"PushTask\": \"Расставить предметы\",\n\t\t\t\t\t\"PushLevel\": \"Двигун и Тягун\",\n\t\t\t\t\t\"push_pull\" : \"тянуть\",\n\t\t\t\t\t\"push_mf\" : \"впереди свободно\",\n\t\t\t\t\t\"push_nmf\" : \"впереди не свободно\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new PushTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"PushTask\";\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.PushTask(level);\n\t\tlevel.taskList.addTask(pm.PushLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function()\n\t{\n\t\treturn {\n\t\t\thorizontal: pm.spriteUtils.getMapTileFrame(\"push-depth_horizontal\"),\n\t\t\tvertical: pm.spriteUtils.getMapTileFrame(\"push-depth_vertical\")\n\t\t};\n\t},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function() {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\tvar level = new pm.data.PushLevel();\n\n\t\tlevel.name = \"Push\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.PushRobot());\n\n\t\tlevel.startRobotIndex = 0;\n\n\t\tlevel.robots[0].id = 0;\n\t\tlevel.robots[0].groupID = 0;\n\t\tlevel.robots[0].parentLevel = level;\n\n\t\tlevel.robots[0]._oldPosition = cc.p(1, 0);\n\t\tlevel.robots[0].position = cc.p(1, 0);\n\t\tlevel.robots[0].direction = 0;\n\n\t\tlevel.programData[0] = new pm.data.ProgramInfo();\n\t\tlevel.programData[0].currentIndex = 0;\n\t\tlevel.programData[0].programDataArray[0] = pm.appUtils.generateProgramData();\n\n\t\tlevel.robots.push(new pm.data.PullRobot());\n\n\t\tlevel.robots[1].id = 1;\n\t\tlevel.robots[1].groupID = 1;\n\t\tlevel.robots[1].parentLevel = level;\n\n\t\tlevel.robots[1]._oldPosition = cc.p(0, 1);\n\t\tlevel.robots[1].position = cc.p(0, 1);\n\t\tlevel.robots[1].direction = 1;\n\n\t\tlevel.programData[1] = new pm.data.ProgramInfo();\n\t\tlevel.programData[1].currentIndex = 0;\n\t\tlevel.programData[1].programDataArray[0] = pm.appUtils.generateProgramData();\n\n\t\tlevel.startMapIndex = 0;\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.PushLevelModule.Type] = new pm.data.PushTask(level);\n\n\t\tvar map = new pm.data.PushMap();\n\n\t\tmap.parentLevel = level;\n\t\tmap.setSize(2, 2);\n\n\t\tfor(var x = 0; x < 2; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < 2; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = PushMapElementType.Grass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 0)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 0)).startRobotData.direction = 0;\n\n\t\tmap.element(cc.p(0, 1)).startForRobot = level.robots[1].id;\n\t\tmap.element(cc.p(0, 1)).startRobotData.direction = 1;\n\n\t\tmap.objects.push(new pm.data.PushBarrel());\n\n\t\tmap.objects[0].position = cc.p(0,0);\n\n\t\tlevel.maps.push(map);\n\t\tlevel.load();\n\n\t\tmap.load();\n\t\tmap.generateMapLayer(false);\n\n\t\tmap.mapLayer.placeRobots(true);\n\t\tmap.mapLayer.spawnObjects();\n\n\t\tlevel.robots[0].sprite.getSprite().removeAllChildren();\n\t\tlevel.robots[1].sprite.getSprite().removeAllChildren();\n\n\t\treturn map.mapLayer;\n\t}\n});\n\npm.PushLevelModule.RobotTypes = {\n\tPushRobot: \"push-robot\",\n\tPullRobot: \"pull-robot\"\n};\npm.PushLevelModule.Type = \"push\";\npm.PushLevelModule.ObjectTypes = {\n\tPushBox: \"PushBox\",\n\tPushBarrel: \"PushBarrel\"\n};\n","/**\n * Created by Kirill Mashchenko on 29.06.17.\n */\n\nvar PushMapEditorLayer = PushMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.PushMapElement();\n\t\tel.originalType = PushMapElementType.Grass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = PushMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = PushMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = PushMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = PushMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for push robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar PushRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends PushRobotSettingsLayer# */{\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Push\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * @class Layer for push task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PushTask} task\n */\n\nvar PushTaskLayer = TaskLayer.extend(/** @lends PushTaskLayer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"PushTask\"), level, task, pm.PushLevelModule.Type);\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateTaskData.bind(this), this);\n\t},\n\n\t_updateTaskData: function()\n\t{\n\t\tthis._level.activeMap.updatePushTargetElements();\n\t}\n});\n","/**\n * Created by Ekaterina Ermishkina on 24.08.16.\n */\n\n/**\n * Possible states of Lamp.\n * @see LightLamp\n * @readonly\n * @enum {Number}\n */\n\nvar LightLampState = {\n\tunLightened: 0,\n\tlightened: 1\n};\n\n/**\n * @class Lamp to turn on\n * @extends pm.Object\n */\npm.data.LightLamp = pm.Object.extend(/** @lends LightLamp#*/{\n\ttypeName: \"LightLamp\",\n\ttype: \"\",\n\t_state: 0,\n\tcountIgnitions: 0,\n\n\tctor: function()\n\t{\n\t\tthis.orientation = pm.MapLayer2D.Orientation.Iso;\n\t\tthis._addNonEnumerableProps(\"_state\");\n\t\tthis.countIgnitions = 0;\n\t\tthis._super();\n\t},\n\tgetType: function() { return pm.LightLevelModule.Lamp; },\n\n\t/**\n * Sets position of object by element position.\n * @param {cc.Point} point Point in element coordinates.\n */\n\tsetPosition: function(point)\n\t{\n\t\tif(this.position.x < this.parentMap.width && this.position.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.position).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.position).removeObject(this);\n\t\t}\n\n\t\tthis.position = point;\n\n\t\tthis.parentMap.element(point).addObject(this);\n\t},\n\n\t/**\n * Turn lamp off\n */\n\trestore: function()\n\t{\n\t\tthis.turnOff();\n\t},\n\n\t/**\n * Turn on lamp.\n */\n\tturnOn: function(callBack)\n\t{\n\t\tthis._state = LightLampState.lightened;\n\t\tthis.playAnimation(LightLampAnimation.TurnOn, callBack);\n\n\t\tthis._endAnimation();\n\t},\n\n\t/**\n * Turn off lamp\n */\n\tturnOff: function(callBack)\n\t{\n\t\tthis._state = LightLampState.unLightened;\n\t\tthis.playAnimation(LightLampAnimation.TurnOff, callBack);\n\n\t\tthis._endAnimation();\n\t},\n\n\t/**\n * Checks is element is lightened.\n * @returns {Boolean}\n */\n\tisLightened: function()\n\t{\n\t\treturn this._state === LightLampState.lightened;\n\t},\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new LightLampSprite(this.type);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tupdateSprite: function ()\n\t{\n\t\tif (this.isLightened())\n\t\t\tthis.sprite._turnOn();\n\t\telse\n\t\t\tthis.sprite._turnOff();\n\n\t\tthis.sprite.setRealPosition(this.position);\n\t},\n\n\treset: function ()\n\t{\n\t\tthis.sprite._turnOff();\n\t\tthis.countIgnitions = 0;\n\t},\n\n\tgetState: function ()\n\t{\n\t},\n\n\tsetState: function (state)\n\t{\n\n\t}\n});\n","/**\n * Updated by Mashchenko Kirill on 04.03.17.\n */\n\n/**\n * Push object sprite animation types.\n * @enum {Number}\n */\nvar LightLampAnimation =\n {\n \tTurnOn: 0,\n \tTurnOff: 1\n };\n\n/**\n * @class Sprite for {@link pm.data.LightLamp}\n * @interface\n * @extends pm.DynamicSprite\n */\n\nvar LightLampSprite = pm.StaticSprite.extend(/** @lends LightLampSprite#*/\n\t{\n\t\tlights: [],\n\n\t\tctor: function(type)\n\t\t{\n\t\t\tthis.lights=[];\n\n\t\t\tthis._super(\"Objects/{0}.png\".format(type));\n\n\t\t\tswitch (type)\n\t\t\t{\n\t\t\t\tcase pm.LightLevelModule.ObjectTypes.LightLamp0:\n\t\t\t\t\tthis._minPoint = cc.p(42, 20);\n\t\t\t\t\tthis._maxPoint = cc.p(42, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.LightLevelModule.ObjectTypes.LightLamp1:\n\t\t\t\t\tthis._minPoint = cc.p(12, 12);\n\t\t\t\t\tthis._maxPoint = cc.p(12, 0);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar light;\n\t\t\tvar coordinates = [cc.p(13, 142), cc.p(74, 142), cc.p(13, 172), cc.p(74, 172), cc.p(43, 175)];\n\n\t\t\tif (type === pm.LightLevelModule.ObjectTypes.LightLamp0)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < 5; ++i)\n\t\t\t\t{\n\t\t\t\t\tlight = new cc.ParticleSystem(\"Particles/light.plist\");\n\t\t\t\t\tlight.setPositionType(cc.ParticleSystem.TYPE_GROUPED);\n\n\t\t\t\t\tlight.setPosition(coordinates[i]);\n\t\t\t\t\tlight.setVisible(false);\n\n\t\t\t\t\tthis.lights.push(light);\n\t\t\t\t\tthis.getSprite().addChild(light, -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (type === pm.LightLevelModule.ObjectTypes.LightLamp1)\n\t\t\t{\n\t\t\t\tlight = new cc.ParticleSystem(\"Particles/light.plist\");\n\t\t\t\tlight.setPositionType(cc.ParticleSystem.TYPE_GROUPED);\n\n\t\t\t\tlight.setPosition(cc.p(13.5, 34));\n\t\t\t\tlight.setVisible(false);\n\n\t\t\t\tthis.lights.push(light);\n\t\t\t\tthis.getSprite().addChild(light, -1);\n\t\t\t}\n\t\t},\n\n\t\tplayAnimation: function(endCallBack, target, type, args)\n\t\t{\n\t\t\tif(!CORE_BUILD)\n\t\t\t{\n\t\t\t\tswitch(type)\n\t\t\t\t{\n\t\t\t\t\tcase LightLampAnimation.TurnOn:\n\t\t\t\t\t\tthis._turnOn();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LightLampAnimation.TurnOff:\n\t\t\t\t\t\tthis._turnOff();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(endCallBack)\n\t\t\t\t\tendCallBack();\n\t\t\t}\n\t\t},\n\n\t\t_turnOn: function()\n\t\t{\n\t\t\tfor (var i = 0; i < this.lights.length; ++i)\n\t\t\t\tthis.lights[i].setVisible(true);\n\t\t},\n\n\t\t_turnOff: function()\n\t\t{\n\t\t\tfor (var i = 0; i < this.lights.length; ++i)\n\t\t\t\tthis.lights[i].setVisible(false);\n\t\t}\n\t});\n","/**\n * Created by Ekaterina Ermishkina on 29.08.16.\n */\n\n/**\n * @class Common interface for objects Lighted by {@link pm.data.:LightRobot}\n * @interface\n * @extends pm.Object\n */\n\npm.data.LightObject = pm.Object.extend(/** @lends LightObject#*/{\n\ttypeName: \"LightObject\",\n\n\ttype: \"\",\n\n\tgetType: function() { return pm.LightLevelModule.Object; },\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"ObjectType\");\n\t\tthis._super();\n\t},\n\n\t/**\n * Sets position of object by element position.\n * @param {cc.Point} point Point in element coordinates.\n */\n\tsetPosition: function(point)\n\t{\n\t\tif(this.position.x < this.parentMap.width && this.position.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.position).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.position).removeObject(this);\n\t\t}\n\n\t\tthis.position = point;\n\n\t\tthis.parentMap.element(point).addObject(this);\n\t},\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new LightObjectSprite(this.type);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tupdateSprite: function()\n\t{\n\t\tthis.sprite.setRealPosition(this.position);\n\t}\n});\n","/**\n * Created by Ekaterina Ermishkina on 29.08.16.\n */\n\n/**x\n\n * @class Common sprite interface for light objects.\n * @interface\n * @extends pm.DynamicSprite\n */\nvar LightObjectSprite = pm.DynamicSprite.extend(/** @lends LightObjectSprite#*/{\n\n\tctor: function(type)\n\t{\n\t\tthis._super(\"Objects/\" + type + \".png\");\n\t\tswitch (type)\n\t\t{\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightObject0:\n\t\t\t\tthis._minPoint = cc.p(65, 5);\n\t\t\t\tthis._maxPoint = cc.p(65, -5);\n\t\t\t\tbreak;\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightObject1:\n\t\t\t\tthis._minPoint = cc.p(80, 15);\n\t\t\t\tthis._maxPoint = cc.p(80, -2);\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\n\t}\n\n});\n","/**\n * Created by Ekaterina Ermishkina on 18.08.16.\n */\n\n/**\n * @class Light Level\n * @implements pm.AbstractLevel\n */\npm.data.LightLevel = pm.AbstractLevel.extend(/** @lends pm.data.LightLevel# */{\n\ttypeName: \"LightLevel\",\n\t/**\n\t * Robots can be indicated.\n\t * @type {Boolean}\n\t */\n\trobotsCanBeIndicated: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.LightLevelModule.Type; }\n});\n","/**\n * Created by Ekaterina Ermishkina on 25.08.16.\n */\n\n/**\n * Possible direction indexes on light maps.\n * @see LightMap\n * @readonly\n * @enum {Number}\n */\n\nvar LightDirection = {\n\tUp: 4,\n\tUpLeft: 5,\n\tLeft: 6,\n\tDownLeft: 7,\n\tDown: 0,\n\tDownRight: 1,\n\tRight: 2,\n\tUpRight: 3\n};\n\n/**\n * @class 2D map for LightLevel.\n * @implements SquarableMap\n */\n\npm.data.LightMap = SquarableMap.extend(/** @lends pm.data.LightMap# */{\n\ttypeName: \"LightMap\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\thasWalls: function() { return false; },\n\n\tgetType: function() { return pm.LightLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new LightMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new LightMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\n\t\t\t\tthis.mapElements[i].push(new pm.data.LightMapElement());\n\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\tclean: function()\n\t{\n\t\tvar level = this.parentLevel;\n\t\tlevel.robots[0].paths = [];\n\n\t\tfor(var i = 0; i < this.height; ++i)\n\t\t{\n\t\t\tfor(var j = 0; j < this.width; ++j)\n\t\t\t{\n\t\t\t\tvar element = this.element(cc.p(j, i));\n\t\t\t\telement.setNotCompleted(false);\n\n\t\t\t\tif(this === level.activeMap)\n\t\t\t\t{\n\t\t\t\t\tvar startForRobot = element.startForRobot;\n\n\t\t\t\t\tif (startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\t{\n\t\t\t\t\t\tlevel.robots[startForRobot].setPosition(cc.p(j, i), element.startRobotData.direction);\n\t\t\t\t\t\tlevel.robots[startForRobot].course = LightRobotCourse.None;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(this === level.activeMap)\n\t\t{\n\t\t\tfor (var i = 0; i < this.objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (this.objects[i].getType() === pm.LightLevelModule.Lamp)\n\t\t\t\t\tthis.objects[i].restore();\n\t\t\t}\n\t\t}\n\n\t\tpm.AbstractMap.prototype.clean.call(this);\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 13.05.17.\n */\n\n/**\n * @class Layer for {@link pm.data.LightMap}.\n * @implements SquarableMapLayer\n */\n\nvar LightMapLayer = SquarableMapLayer.extend(/** @lends LightMapLayer#*/{\n\n\t_fishes: [],\n\n\tctor: function(map)\n\t{\n\t\tthis._fishes=[];\n\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Iso;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t\tcc.animationCache.addAnimations(\"MapsPics/light_fish-animations.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"MapsPics/light_fish.plist\");\n\t},\n\n\t_findDirectionFish: function(i)\n\t{\n\t\tvar map = this._map;\n\t\tvar pos = this._fishes[i].position;\n\t\tvar fishDirection = this._fishes[i].direction;\n\n\t\tvar possibleShifts = [];\n\n\t\tvar x = pos.x, y = pos.y;\n\t\tvar periodOfRandom = 0;\n\n\t\tfor (var q = x - 1; q <= x + 1; ++q)\n\t\t{\n\t\t\tfor (var p = y - 1; p <= y + 1; ++p)\n\t\t\t{\n\t\t\t\tvar fishFound = false;\n\t\t\t\tvar el = map.element(cc.p(q, p));\n\n\t\t\t\tfor (var t = 0; t < this._fishes.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tif (q === this._fishes[t].position.x && p === this._fishes[t].position.y)\n\t\t\t\t\t\tfishFound = true;\n\t\t\t\t}\n\n\t\t\t\tif (!fishFound && el._type === LightMapElementType.BottomWater)\n\t\t\t\t{\n\t\t\t\t\tif (this._getDirectionByShift(cc.p(q - x, p - y)) === fishDirection)\n\t\t\t\t\t{\n\t\t\t\t\t\tperiodOfRandom += LightMapLayer.FISH_MOVE_STRAIGHT_WEIGHT;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpossibleShifts.push(cc.p(q - x, p - y));\n\t\t\t\t\t\t++periodOfRandom;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar direction = LightMapLayer.FISH_NO_WAY_DIR;\n\n\t\tvar rand = Math.floor(cc.rand()) % periodOfRandom;\n\n\t\tif(periodOfRandom >=LightMapLayer.FISH_MOVE_STRAIGHT_WEIGHT)\n\t\t{\n\t\t\tif (rand <= LightMapLayer.FISH_MOVE_STRAIGHT_WEIGHT)\n\t\t\t\tdirection = fishDirection;\n\t\t\telse\n\t\t\t\tdirection = this._getDirectionByShift(possibleShifts[rand - LightMapLayer.FISH_MOVE_STRAIGHT_WEIGHT]);\n\t\t}\n\t\telse if (periodOfRandom > 0)\n\t\t{\n\t\t\tdirection = this._getDirectionByShift(possibleShifts[rand]);\n\t\t}\n\n\t\treturn direction;\n\t},\n\n\t_getDirectionByShift: function (shift)\n\t{\n\t\tvar x = shift.x;\n\t\tvar y = shift.y;\n\n\t\tswitch (x)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tswitch (y)\n\t\t\t\t{\n\t\t\t\t\tcase 0: return LightMapLayer.FISH_NO_WAY_DIR;\n\t\t\t\t\tcase 1: return LightDirection.Down;\n\t\t\t\t\tcase -1: return LightDirection.Up;\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tswitch (y)\n\t\t\t\t{\n\t\t\t\t\tcase 0: return LightDirection.Right;\n\t\t\t\t\tcase 1: return LightDirection.DownRight;\n\t\t\t\t\tcase -1: return LightDirection.UpRight;\n\t\t\t\t}\n\t\t\tcase -1:\n\t\t\t\tswitch (y)\n\t\t\t\t{\n\t\t\t\t\tcase 0: return LightDirection.Left;\n\t\t\t\t\tcase 1: return LightDirection.DownLeft;\n\t\t\t\t\tcase -1: return LightDirection.UpLeft;\n\t\t\t\t}\n\t\t}\n\n\t\treturn LightMapLayer.FISH_NO_WAY_DIR;\n\t},\n\n\t_decideFunction: function()\n\t{\n\t\tif (this._fishes.length === 0)\n\t\t\treturn;\n\n\t\tvar animationList = [];\n\n\t\tfor (var i = 0; i < this._fishes.length; ++i)\n\t\t{\n\t\t\tvar newDirection = this._findDirectionFish(i);\n\n\t\t\tif (newDirection === LightMapLayer.FISH_NO_WAY_DIR)\n\t\t\t\tcontinue;\n\n\t\t\tvar fishAnimation = [];\n\n\t\t\tvar directionR1 = 12 + newDirection - this._fishes[i].direction % 8;\n\t\t\tvar directionR2 = 12 - newDirection + this._fishes[i].direction % 8;\n\n\t\t\tvar k = 1;\n\n\t\t\tif (directionR1 < directionR2)\n\t\t\t\tk = 7;\n\n\t\t\tvar speed = LightMapLayer.FISH_SPEED;\n\t\t\tvar turnCount = Math.abs(newDirection - this._fishes[i].direction);\n\n\t\t\tif (turnCount === 1)\n\t\t\t{\n\t\t\t\tvar q = this._fishes[i].direction;\n\n\t\t\t\tvar animation = cc.animationCache.getAnimation(\"light_fish_{0}->{1}\".format(q, (q + k) % 8));\n\t\t\t\tanimation.setDelayPerUnit(speed * 0.5 / animation.getTotalDelayUnits());\n\n\t\t\t\tvar animate = new cc.Animate(animation);\n\t\t\t\tfishAnimation.push(animate);\n\t\t\t}\n\t\t\telse if (turnCount > 1)\n\t\t\t{\n\t\t\t\tfor (var j = this._fishes[i].direction; j !== newDirection; j = (j + k) % 8)\n\t\t\t\t{\n\t\t\t\t\tvar animation = cc.animationCache.getAnimation(\"light_fish_{0}->{1}\".format(j, (j + k) % 8));\n\t\t\t\t\tanimation.setDelayPerUnit((speed - speed / turnCount) / animation.getTotalDelayUnits() / turnCount);\n\n\t\t\t\t\tvar animate = new cc.Animate(animation);\n\t\t\t\t\tfishAnimation.push(animate);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._fishes[i].direction = newDirection;\n\n\t\t\tvar dx = 0;\n\t\t\tvar dy = 0;\n\n\t\t\tswitch (newDirection)\n\t\t\t{\n\t\t\t\tcase LightDirection.Up: dx = 0; dy = -1; break;\n\t\t\t\tcase LightDirection.UpLeft: dx = -1; dy = -1; break;\n\t\t\t\tcase LightDirection.Left: dx = -1; dy = 0; break;\n\t\t\t\tcase LightDirection.DownLeft: dx = -1; dy = 1; break;\n\t\t\t\tcase LightDirection.Down: dx = 0; dy = 1; break;\n\t\t\t\tcase LightDirection.DownRight: dx = 1; dy = 1; break;\n\t\t\t\tcase LightDirection.Right: dx = 1; dy = 0; break;\n\t\t\t\tcase LightDirection.UpRight: dx = 1; dy = -1; break;\n\t\t\t}\n\n\t\t\tvar position = this._fishes[i].position;\n\n\t\t\tvar moveFish = null;\n\n\t\t\tswitch (turnCount)\n\t\t\t{\n\t\t\t\tcase 1:\n\t\t\t\t\tmoveFish = cc.moveTo(speed * 0.5, this.realPosition(cc.p(position.x + dx, position.y + dy), cc.p(0, 0)));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tmoveFish = cc.moveTo(speed, this.realPosition(cc.p(position.x + dx, position.y + dy), cc.p(0, 0)));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tmoveFish = cc.moveTo(speed/turnCount, this.realPosition(cc.p(position.x + dx, position.y + dy), cc.p(0, 0)));\n\t\t\t}\n\n\t\t\tthis._fishes[i].position.x += dx;\n\t\t\tthis._fishes[i].position.y += dy;\n\n\t\t\tfishAnimation.push(moveFish);\n\t\t\tanimationList.push(cc.targetedAction(this._fishes[i].sprite, cc.sequence(fishAnimation)));\n\t\t}\n\n\t\tif(animationList.length > 0)\n\t\t{\n\t\t\tvar end = cc.callFunc(this._decideFunction, this);\n\t\t\tthis.runAction(cc.sequence(cc.spawn(animationList), end));\n\t\t}\n\t},\n\n\t_needDrawFishes: function()\n\t{\n\t\treturn !this._previewDraw;\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tvar countFishes = 0;\n\n\t\tfor(var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar pos = cc.p(x, y);\n\n\t\t\t\tvar element = this._map.element(pos);\n\t\t\t\telement.wallsHere = [];\n\t\t\t\telement.roadsHere = [];\n\t\t\t\telement.topWater = null;\n\t\t\t\telement.botWater = null;\n\t\t\t\telement.mainRoad = null;\n\t\t\t\telement.grass = null;\n\n\t\t\t\tvar type = element.getType();\n\n\t\t\t\tif (type !== LightMapElementType.BottomWater)\n\t\t\t\t{\n\t\t\t\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar grassSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.GreenGrass));\n\t\t\t\t\t\tgrassSprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\t\t\t\tthis.addTerrainObject(grassSprite, 0);\n\t\t\t\t\t\telement.grass = grassSprite;\n\n\t\t\t\t\t\tvar terrainSprite = element.generateTerrainSprite();\n\t\t\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(pos, cc.p(-6, 6)));\n\n\t\t\t\t\t\tthis.addTerrainObject(terrainSprite, 1);\n\t\t\t\t\t\telement.mainRoad = terrainSprite;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tvar terrainSprite = element.generateTerrainSprite();\n\t\t\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t\t\t\telement.grass = terrainSprite;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar waterBot = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.BottomWater));\n\t\t\t\t\twaterBot.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\t\t\tthis.addTerrainObject(waterBot, 1);\n\t\t\t\t\telement.botWater = waterBot;\n\n\t\t\t\t\tvar topSprite = new cc.Sprite(pm.spriteUtils.getMapGrassTileFrame(LightMapLayer.TOP_WATER_ELEMENT));\n\t\t\t\t\ttopSprite.setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\t\t\tthis.terrainLayer.addChild(topSprite, 4);\n\t\t\t\t\telement.topWater = topSprite;\n\n\t\t\t\t\tif (this._needDrawFishes())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (countFishes === LightMapLayer.COUNT_SQUARES_TO_FISH)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar direction = Math.floor(cc.rand()) % 8;\n\t\t\t\t\t\t\tvar fish = new pm.TerrainSprite(cc.spriteFrameCache.getSpriteFrame(\"light_fish{0}.png\".format(2 * direction)));\n\n\t\t\t\t\t\t\tfish.getSprite().setRotation(-45);\n\t\t\t\t\t\t\tfish.getSprite().setScaleY(2);\n\n\t\t\t\t\t\t\tfish.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\t\t\t\t\t\t\tthis.addTerrainObject(fish, 3);\n\n\t\t\t\t\t\t\tthis._fishes.push({sprite: fish.getSprite(), direction: direction, position: pos});\n\n\t\t\t\t\t\t\tcountFishes = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse { ++countFishes; }\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._drawAroundWater(pos);\n\t\t\t\tthis._drawAroundRoad(pos);\n\n\t\t\t\tif(this._map.element(cc.p(x, y)).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(cc.p(x, y)).startForRobot, cc.p(x, y));\n\t\t\t}\n\t\t}\n\n\t\tif(this._needDrawFishes())\n\t\t\tthis._decideFunction();\n\t},\n\n\t_checkForWater: function (el)\n\t{\n\t\treturn el && el.getType() === LightMapElementType.BottomWater;\n\t},\n\n\t_checkForRoads: function (el)\n\t{\n\t\treturn el && (\n\t\t\tel.getType() === LightMapElementType.Road ||\n el.getType() === LightMapElementType.StopPoint\n\t\t);\n\t},\n\n\t_drawAroundWater: function (pos)\n\t{\n\t\tvar x = pos.x, y = pos.y;\n\t\tvar type = this._map.element(pos).getType();\n\n\t\tif (type === LightMapElementType.BottomWater)\n\t\t{\n\t\t\tfor (var i = x - 1; i <= x + 1; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y - 1; j <= y + 1; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar currentElement = this._map.element(cc.p(i, j));\n\n\t\t\t\t\tif (currentElement.getType() !== LightMapElementType.BottomWater)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar curElements = [];\n\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i, j - 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j - 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j - 1)));\n\n\t\t\t\t\t\tthis._evolutionOfWall(curElements, cc.p(i, j), pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evolutionOfWall: function (curElements, curPos, originalPos)\n\t{\n\t\tvar wall = 0;\n\t\tvar continueEvolution = true;\n\t\tvar variant1 = LightMapLayer.WALLS.RIGHT_SMALL_ANGLE;\n\t\tvar variant2 = LightMapLayer.WALLS.DOWN_WALL;\n\t\tvar variant3 = LightMapLayer.WALLS.LEFT_BIG_ANGLE;\n\n\t\tfor (var t = 0; t < 8; t += 2)\n\t\t{\n\t\t\tvar t1 = (t + 1) % 8;\n\t\t\tvar t2 = (t + 2) % 8;\n\n\t\t\tif (continueEvolution)\n\t\t\t{\n\t\t\t\tif (this._checkForWater(curElements[t]))\n\t\t\t\t{\n\t\t\t\t\tif (this._checkForWater(curElements[t2]))\n\t\t\t\t\t\twall = variant1;\n\t\t\t\t\telse\n\t\t\t\t\t\twall = variant2;\n\n\t\t\t\t\tcontinueEvolution = false;\n\t\t\t\t}\n\t\t\t\telse if (this._checkForWater(curElements[t1]))\n\t\t\t\t{\n\t\t\t\t\twall = variant3;\n\t\t\t\t}\n\n\t\t\t\t++variant1;\n\t\t\t\tif (variant1 === LightMapLayer.WALLS.DOWN_WALL)\n\t\t\t\t\tvariant1 = LightMapLayer.WALLS.LEFT_SMALL_ANGLE;\n\n\t\t\t\tvariant2 += 2;\n\t\t\t\tif (variant2 >= LightMapLayer.WALLS_COUNT)\n\t\t\t\t\tvariant2 = LightMapLayer.WALLS.UP_WALL;\n\n\t\t\t\t++variant3;\n\t\t\t}\n\t\t}\n\n\t\tif (this._checkForWater(curElements[0]) && this._checkForWater(curElements[6]))\n\t\t\twall = LightMapLayer.WALLS.UP_SMALL_ANGLE;\n\n\t\tvar wallString = \"_w{0}\".format(wall);\n\t\tvar wallSprite = new cc.Sprite(pm.spriteUtils.getMapGrassTileFrame(wallString));\n\t\twallSprite.setPosition(this.realPosition(curPos, cc.p(0, 0)));\n\n\t\tif (this._map.element(originalPos).wallsHere.indexOf(wallSprite) === -1)\n\t\t{\n\t\t\tthis.terrainLayer.addChild(wallSprite, 2);\n\t\t\tthis._map.element(originalPos).wallsHere.push(wallSprite);\n\t\t}\n\t},\n\n\t_drawAroundRoad: function (pos)\n\t{\n\t\tvar x = pos.x, y = pos.y;\n\t\tvar type = this._map.element(pos).getType();\n\n\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t{\n\t\t\tfor (var i = x - 1; i <= x + 1; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y - 1; j <= y + 1; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (i < 0 || i >= this._map.width || j < 0 || j >= this._map.height || this._checkForWall(cc.p(i, j)))\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tvar currentElement = this._map.element(cc.p(i, j));\n\n\t\t\t\t\tif (currentElement.getType() !== LightMapElementType.Road &&\n currentElement.getType() !== LightMapElementType.StopPoint)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar curElements = [];\n\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i, j - 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j - 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i + 1, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j + 1)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j)));\n\t\t\t\t\t\tcurElements.push(this._map.element(cc.p(i - 1, j - 1)));\n\n\t\t\t\t\t\tthis._evolutionOfRoad(curElements, cc.p(i, j), pos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_evolutionOfRoad: function (curElements, curPos, originalPos)\n\t{\n\t\tvar flag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\n\t\tfor (var t = 0; t <= 6; t += 2)\n\t\t{\n\t\t\tvar t1 = (t + 1 + 8) % 8;\n\t\t\tvar t2 = (t + 2 + 8) % 8;\n\t\t\tvar t3 = (t + 3 + 8) % 8;\n\t\t\tvar t4 = (t + 4 + 8) % 8;\n\n\t\t\tif (this._checkForRoads(curElements[t]) && this._checkForRoads(curElements[t2]) && this._checkForRoads(curElements[t4]))\n\t\t\t{\n\t\t\t\tif (!this._checkForRoads(curElements[t1] || this._checkForRoads(curElements[t3])))\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_EVOLUTION;\n\t\t\t}\n\t\t}\n\n\t\tvar roadCount = 0;\n\n\t\tfor (var t = 0; t < curElements.length; ++t)\n\t\t{\n\t\t\tif (this._checkForRoads(curElements[t]))\n\t\t\t\t++roadCount;\n\t\t}\n\n\t\tvar flag2 = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\n\t\tif (flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_EVOLUTION)\n\t\t{\n\t\t\tif (this._checkForRoads(curElements[0]) && this._checkForRoads(curElements[2]))\n\t\t\t{\n\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT;\n\n\t\t\t\tif (this._checkForRoads(curElements[1]))\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\t\t\t\telse\n\t\t\t\t\tflag2 = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT;\n\t\t\t}\n\n\t\t\tif (this._checkForRoads(curElements[2]) && this._checkForRoads(curElements[4]))\n\t\t\t{\n\t\t\t\tif (flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT)\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT;\n\n\t\t\t\tif (this._checkForRoads(curElements[3]) && flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT)\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\t\t\t\telse\n\t\t\t\t\tflag2 = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT;\n\t\t\t}\n\n\t\t\tif (this._checkForRoads(curElements[4]) && this._checkForRoads(curElements[6]))\n\t\t\t{\n\t\t\t\tif (flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT &&\n flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT)\n\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_RIGHT;\n\n\t\t\t\tif (this._checkForRoads(curElements[5]) &&\n flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT &&\n flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT)\n\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\n\t\t\t\telse\n\n\t\t\t\t\tflag2 = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_RIGHT;\n\n\t\t\t}\n\n\t\t\tif (this._checkForRoads(curElements[6]) && this._checkForRoads(curElements[0]))\n\t\t\t{\n\t\t\t\tif (flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT &&\n flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT &&\n flag !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_RIGHT)\n\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_RIGHT;\n\n\t\t\t\tif (this._checkForRoads(curElements[7]) &&\n flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT &&\n flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT &&\n flag2 !== LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_RIGHT)\n\n\t\t\t\t\tflag = LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_ROAD;\n\n\t\t\t}\n\t\t}\n\n\t\tif (flag > 0)\n\t\t{\n\t\t\tvar del = cc.p(0, 0);\n\n\t\t\tvar roadSprite = new cc.Sprite(pm.spriteUtils.getMapGrassTileFrame(\"1-1\"));\n\n\t\t\tvar elWidth = this.getMapElementSize().width;\n\t\t\tvar elHeight = this.getMapElementSize().height;\n\n\t\t\tvar spWidth = roadSprite.width;\n\t\t\tvar spHeight = roadSprite.height;\n\n\t\t\tswitch (flag)\n\t\t\t{\n\t\t\t\tcase LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_LEFT:\n\t\t\t\t\tdel = cc.p((elWidth - spWidth)*2/3, (elHeight - spHeight)*2/3);\n\t\t\t\t\tbreak;\n\t\t\t\tcase LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_LEFT:\n\t\t\t\t\tdel = cc.p((elWidth - spWidth)*2/3, -(elHeight - spHeight)*2/3);\n\t\t\t\t\tbreak;\n\t\t\t\tcase LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_UP_RIGHT:\n\t\t\t\t\tdel = cc.p(-(elWidth - spWidth)*2/3, -(elHeight - spHeight)*2/3);\n\t\t\t\t\tbreak;\n\t\t\t\tcase LightMapLayer.ROAD_EVOLUTION_FLAGS.EVOLUTION_DOWN_RIGHT:\n\t\t\t\t\tdel = cc.p(-(elWidth - spWidth)*2/3, (elHeight - spHeight)*2/3);\n\t\t\t\t\tbreak;\n\t\t\t\tcase LightMapLayer.ROAD_EVOLUTION_FLAGS.NO_EVOLUTION:\n\t\t\t\t\tdel = cc.p(0, 0);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\troadSprite.setPosition(this.realPosition(curPos, del));\n\n\t\t\tif (this._map.element(originalPos).roadsHere.indexOf(roadSprite) === -1)\n\t\t\t{\n\t\t\t\tthis.terrainLayer.addChild(roadSprite, 1);\n\t\t\t\tthis._map.element(originalPos).roadsHere.push(roadSprite);\n\t\t\t}\n\t\t}\n\t},\n\n\t_checkForWall: function (pos)\n\t{\n\t\tvar x = pos.x;\n\t\tvar y = pos.y;\n\t\tfor (var i = x - 1; i <= x + 1; ++i)\n\t\t{\n\t\t\tfor (var j = y - 1; j <= y + 1; ++j)\n\t\t\t{\n\t\t\t\tif (this._map.element(cc.p(i, j)))\n\t\t\t\t{\n\t\t\t\t\tif (this._map.element(cc.p(i, j)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_cleanWallSprites: function (pos)\n\t{\n\t\tvar borders = this._getBordersForElementPosition(pos);\n\n\t\tvar x1 = borders.x1;\n\t\tvar y1 = borders.y1;\n\t\tvar x2 = borders.x2;\n\t\tvar y2 = borders.y2;\n\n\t\tfor (var i = x1; i <= x2; ++i)\n\t\t{\n\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t{\n\t\t\t\tvar currentType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tif ((currentType === LightMapElementType.BottomWater) || (currentType === LightMapElementType.GreenGrass))\n\t\t\t\t{\n\t\t\t\t\tvar walls = this._map.element(cc.p(i, j)).wallsHere;\n\n\t\t\t\t\tfor (var k = 0; k < walls.length; ++k)\n\n\t\t\t\t\t\tthis.terrainLayer.removeChild(walls[k]);\n\n\t\t\t\t\tthis._map.element(cc.p(i, j)).wallsHere = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_cleanTopRoadSprites: function (pos)\n\t{\n\t\tvar borders = this._getBordersForElementPosition(pos);\n\n\t\tvar x1 = borders.x1;\n\t\tvar y1 = borders.y1;\n\t\tvar x2 = borders.x2;\n\t\tvar y2 = borders.y2;\n\n\t\tfor (var i = x1; i <= x2; ++i)\n\t\t{\n\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t{\n\t\t\t\tvar currentType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tif (currentType === LightMapElementType.GreenGrass ||\n currentType === LightMapElementType.StopPoint ||\n currentType === LightMapElementType.Road)\n\t\t\t\t{\n\t\t\t\t\tvar roads = this._map.element(cc.p(i, j)).roadsHere;\n\n\t\t\t\t\tfor (var k = 0; k < roads.length; ++k)\n\t\t\t\t\t\tthis.terrainLayer.removeChild(roads[k]);\n\n\t\t\t\t\tthis._map.element(cc.p(i, j)).roadsHere = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsetElement: function(pos, type)\n\t{\n\t\tvar x = pos.x, y = pos.y;\n\n\t\tvar element = this._map.element(pos);\n\n\t\tif (type === LightMapElementType.BottomWater)\n\t\t{\n\t\t\tif (element.getType() === LightMapElementType.Road ||\n element.getType() === LightMapElementType.StopPoint)\n\t\t\t\treturn;\n\n\t\t\tfor (var i = x - 1; i <= x + 1; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y - 1; j <= y + 1; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar curType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\t\tif (curType === LightMapElementType.Road || curType === LightMapElementType.StopPoint)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._cleanWallSprites(pos);\n\t\t\tthis._cleanTopRoadSprites(pos);\n\n\t\t\tif (element.grass)\n\t\t\t{\n\t\t\t\tthis.removeTerrainObject(element.grass);\n\t\t\t\telement.grass = null;\n\t\t\t}\n\n\t\t\tvar waterBot = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.BottomWater));\n\t\t\twaterBot.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!(element.botWater))\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(waterBot, 1);\n\t\t\t\telement.botWater = waterBot;\n\t\t\t}\n\n\t\t\tvar topSprite = new cc.Sprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.BottomWater));\n\t\t\ttopSprite.setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!(element.topWater))\n\t\t\t{\n\t\t\t\tthis.terrainLayer.addChild(topSprite, 4);\n\t\t\t\telement.topWater = topSprite;\n\t\t\t}\n\n\t\t\telement._type = type;\n\t\t\telement.originalType = type;\n\n\t\t\tvar x1 = x > 1 ? x - 2 : x;\n\t\t\tvar x2 = x < this._map.width - 2 ? x + 2 : x;\n\t\t\tvar y1 = y > 1 ? y - 2 : y;\n\t\t\tvar y2 = y < this._map.height - 2 ? y + 2 : y;\n\n\t\t\tfor (var i = x1; i <= x2; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t\t{\n\t\t\t\t\tthis._drawAroundWater(cc.p(i, j));\n\t\t\t\t\tthis._drawAroundRoad(cc.p(i, j));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (type === LightMapElementType.GreenGrass)\n\t\t{\n\t\t\tthis._cleanWallSprites(pos);\n\t\t\tthis._cleanTopRoadSprites(pos);\n\n\t\t\tif (element.topWater)\n\t\t\t{\n\t\t\t\tthis.terrainLayer.removeChild(element.topWater);\n\t\t\t\telement.topWater = null;\n\t\t\t}\n\n\t\t\tif (element.botWater)\n\t\t\t{\n\t\t\t\tthis.removeTerrainObject(element.botWater);\n\t\t\t\telement.botWater = null;\n\t\t\t}\n\n\t\t\tif (element.mainRoad)\n\t\t\t{\n\t\t\t\tthis.removeTerrainObject(element.mainRoad);\n\t\t\t\telement.mainRoad = null;\n\t\t\t}\n\n\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(type));\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!element.grass)\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t\telement.grass = terrainSprite;\n\t\t\t}\n\n\t\t\telement._type = type;\n\t\t\telement.originalType = type;\n\n\t\t\tvar borders = this._getBordersForElementPosition(pos);\n\n\t\t\tvar x1 = borders.x1;\n\t\t\tvar y1 = borders.y1;\n\t\t\tvar x2 = borders.x2;\n\t\t\tvar y2 = borders.y2;\n\n\t\t\tfor (var i = x1; i <= x2; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t\t{\n\t\t\t\t\tthis._drawAroundWater(cc.p(i, j));\n\t\t\t\t\tthis._drawAroundRoad(cc.p(i, j));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (element.getType() === LightMapElementType.BottomWater)\n\t\t\t\treturn;\n\n\t\t\tvar x1 = x > 0 ? x - 1 : x;\n\t\t\tvar x2 = x < this._map.width - 1 ? x + 1 : x;\n\t\t\tvar y1 = y > 0 ? y - 1 : y;\n\t\t\tvar y2 = y < this._map.height - 1 ? y + 1 : y;\n\n\t\t\tfor (var i = x1; i <= x2; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar curType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\t\tif (curType === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._cleanTopRoadSprites(pos);\n\n\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(type));\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(pos, cc.p(-6, 6)));\n\n\t\t\tvar grassSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.GreenGrass));\n\t\t\tgrassSprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!element.grass)\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(grassSprite, 0);\n\t\t\t\telement.grass = grassSprite;\n\t\t\t}\n\n\t\t\tif (element._type !== type)\n\t\t\t{\n\t\t\t\tif (element.mainRoad)\n\t\t\t\t{\n\t\t\t\t\tthis.removeTerrainObject(element.mainRoad);\n\t\t\t\t\telement.mainRoad = null;\n\t\t\t\t}\n\n\t\t\t\tthis.addTerrainObject(terrainSprite, 1);\n\t\t\t\telement.mainRoad = terrainSprite;\n\t\t\t}\n\n\t\t\tif (!element.mainRoad)\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(terrainSprite, 1);\n\t\t\t\telement.mainRoad = terrainSprite;\n\t\t\t}\n\n\t\t\telement._type = type;\n\t\t\telement.originalType = type;\n\n\t\t\tvar borders = this._getBordersForElementPosition(pos);\n\n\t\t\tvar x1 = borders.x1;\n\t\t\tvar y1 = borders.y1;\n\t\t\tvar x2 = borders.x2;\n\t\t\tvar y2 = borders.y2;\n\n\t\t\tfor (var i = x1; i <= x2; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = y1; j <= y2; ++j)\n\n\t\t\t\t\tthis._drawAroundRoad(cc.p(i, j));\n\n\t\t\t}\n\t\t}\n\t},\n\n\t_getBordersForElementPosition: function (pos)\n\t{\n\t\tvar x = pos.x, y = pos.y;\n\t\tvar x1, x2, y1, y2;\n\n\t\tif (x > 1)\n\t\t\tx1 = x - 2;\n\t\telse if (x > 0)\n\t\t\tx1 = x - 1;\n\t\telse\n\t\t\tx1 = x;\n\n\t\tif (x < this._map.width - 2)\n\t\t\tx2 = x + 2;\n\t\telse if (x < this._map.width - 1)\n\t\t\tx2 = x + 1;\n\t\telse\n\t\t\tx2 = x;\n\n\t\tif (y > 1)\n\t\t\ty1 = y - 2;\n\t\telse if (y > 0)\n\t\t\ty1 = y - 1;\n\t\telse\n\t\t\ty1 = y;\n\n\t\tif (y < this._map.height - 2)\n\t\t\ty2 = y + 2;\n\t\telse if (y < this._map.height - 1)\n\t\t\ty2 = y + 1;\n\t\telse\n\t\t\ty2 = y;\n\n\t\treturn ({x1: x1, y1: y1, x2: x2, y2: y2});\n\t}\n\n});\n\nLightMapLayer.FISH_SPEED = 2;\nLightMapLayer.FISH_NO_WAY_DIR = -10;\nLightMapLayer.COUNT_SQUARES_TO_FISH = 5;\nLightMapLayer.FISH_MOVE_STRAIGHT_WEIGHT = 20;\n\nLightMapLayer.ROAD_EVOLUTION_FLAGS = {\n\tNO_ROAD: 0,\n\tNO_EVOLUTION: 1,\n\tEVOLUTION_DOWN_LEFT: 13,\n\tEVOLUTION_UP_LEFT: 35,\n\tEVOLUTION_UP_RIGHT: 57,\n\tEVOLUTION_DOWN_RIGHT: 71\n};\n\nLightMapLayer.WALLS = {\n\tLEFT_BIG_ANGLE: 0,\n\tUP_BIG_ANGLE: 1,\n\tRIGHT_BIG_ANGLE: 2,\n\tDOWN_BIG_ANGLE: 3,\n\tLEFT_SMALL_ANGLE: 4,\n\tUP_SMALL_ANGLE: 5,\n\tRIGHT_SMALL_ANGLE: 6,\n\tDOWN_SMALL_ANGLE: 7,\n\tDOWN_WALL: 8,\n\tUP_WALL: 9,\n\tLEFT_WALL: 10,\n\tRIGHT_WALL: 11\n};\n\nLightMapLayer.WALLS_COUNT = 12;\n\nLightMapLayer.TOP_WATER_ELEMENT = 4;\n","/**\n * Created by Ekaterina Ermishkina on 19.08.16.\n */\n\n/**\n * Light map element types.\n * @enum {Number}\n * @readonly\n */\nvar LightMapElementType = {\n\tNone: -1,\n\tGreenGrass: 0,\n\tRoad: 1,\n\tStopPoint: 2,\n\tBottomWater: 3\n};\n\n/**\n * @class Elements of {@link pm.data.LightMap}.\n * @implements pm.MapElement2D\n */\npm.data.LightMapElement = pm.MapElement2D.extend(/** @lends pm.data.LightMapElement# */{\n\ttypeName: \"LightMapElement\",\n\twallsHere: [],\n\troadsHere: [],\n\ttopWater: null,\n\tbotWater: null,\n\tmainRoad: null,\n\tgrass: null,\n\n\tctor: function ()\n\t{\n\t\tthis._addNonEnumerableProps(\"wallsHere\", \"roadsHere\", \"topWater\", \"botWater\", \"mainRoad\", \"grass\");\n\t\tthis._super();\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 19.07.17.\n */\n\n/**\n * Possible robot's courses on light maps.\n * @see SquarableMap\n * @readonly\n * @enum {Number}\n */\nvar LightRobotCourse = {\n\tLeft: \"left\",\n\tRight: \"right\",\n\tNone: \"none\"\n};\n\n/**\n * * @class 2D robot for {@link pm.data.LightLevel}.\n * @implements PlayerRobot4\n */\n\npm.data.LightRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.LightRobot# */{\n\ttypeName: \"LightRobot\",\n\n\t_turnLamps: [],\n\t_beginDirection: null,\n\t_wasTurn: false,\n\t_breakFlag: false,\n\t_stopPoint: false,\n\t_beginInverseDirections: [],\n\t_instrStack: [],\n\t_countLoops: -1,\n\n\tctor: function()\n\t{\n\t\tthis._turnLamps = [];\n\t\tthis._beginInverseDirections = [];\n\t\tthis._instrStack = [];\n\t\tthis._super();\n\t\tthis.countLoops = -1;\n\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.Left] = new pm.NativeFunction(this, this._left);\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.Right] = new pm.NativeFunction(this, this._right);\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.TurnOn] = new pm.NativeFunction(this, this._turnOn);\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.TurnOff] = new pm.NativeFunction(this, this._turnOff);\n\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.LeftReverse] = new pm.NativeFunction(this, this._leftReverse);\n\t\tthis.nativeFunctionMap[pm.data.LightRobot.NativeMethod.RightReverse] = new pm.NativeFunction(this, this._rightReverse);\n\n\t\tthis.nativeFunctions.push(\n\t\t\tpm.data.LightRobot.NativeMethod.Left, pm.data.LightRobot.NativeMethod.Right,\n\t\t\tpm.data.LightRobot.NativeMethod.TurnOn, pm.data.LightRobot.NativeMethod.TurnOff\n\t\t);\n\n\t},\n\n\tgetDirectionCount: function () { return 8; },\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new LightRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_endAnimate: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\tif (this._breakFlag)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\tthis._breakFlag = false;\n\t\t}\n\t},\n\n\t_moveLoop: function(course, inverse)\n\t{\n\t\tthis._stopPoint = false;\n\t\tvar beginDirection, endDirection;\n\t\tvar k = 0;\n\n\t\tif (inverse)\n\t\t\tthis.direction = (this.direction + 4 + 8) % 8;\n\n\t\tvar map = this.getMap();\n\n\t\tvar wayPeace = [];\n\n\t\tif (inverse)\n\t\t{\n\t\t\twayPeace.push((this.direction + 4 + 8) % 8);\n\n\t\t\tvar invShift = cc.pAdd(this._getShift(this.direction), this.position);\n\t\t\tvar invType = map.element(invShift).getType();\n\t\t\tthis._insertStraightPeace(wayPeace, invShift, invType);\n\t\t}\n\t\telse\n\t\t{ wayPeace.push(this.direction); }\n\n\t\tthis._breakFlag = false;\n\n\t\twhile (!this._stopPoint && !this._breakFlag)\n\t\t{\n\t\t\tswitch (course)\n\t\t\t{\n\t\t\t\tcase LightRobotCourse.Left:\n\t\t\t\t\tbeginDirection = this.direction + 2;\n\t\t\t\t\tendDirection = this.direction - 2;\n\t\t\t\t\tk = -1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LightRobotCourse.Right:\n\t\t\t\t\tbeginDirection = this.direction - 2;\n\t\t\t\t\tendDirection = this.direction + 2;\n\t\t\t\t\tk = 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._breakFlag = true;\n\n\t\t\tfor (var i = beginDirection; i !== endDirection + k; i += k)\n\t\t\t{\n\t\t\t\tvar tryDirection = (i + 8) % 8;\n\t\t\t\tvar shift = cc.pAdd(this._getShift(tryDirection), this.position);\n\n\t\t\t\tif (shift.x >= map.width || shift.y >= map.height || shift.x < 0 || shift.y < 0)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvar curType = map.element(shift).getType();\n\n\t\t\t\tif (curType === LightMapElementType.Road || curType === LightMapElementType.StopPoint)\n\t\t\t\t{\n\t\t\t\t\tif (this.direction === tryDirection)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.direction % 2 !== 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar tryDir = (this.direction + k + 8) % 8;\n\t\t\t\t\t\t\tvar sh = cc.pAdd(this._getShift(tryDir), this.position);\n\n\t\t\t\t\t\t\tif (sh.x >= map.width || sh.y >= map.height || sh.x < 0 || sh.y < 0)\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\tvar currentType = map.element(sh).getType();\n\n\t\t\t\t\t\t\tif (currentType === LightMapElementType.Road || currentType === LightMapElementType.StopPoint)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (this._insertTurnPeace(wayPeace, tryDir, inverse))\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (this._insertStraightPeace(wayPeace, shift, curType))\n\t\t\t\t\t\t\t{ break; }\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (this._insertStraightPeace(wayPeace, shift, curType))\n\t\t\t\t\t\t{ break; }\n\t\t\t\t\t}\n\t\t\t\t\telse if ((Math.abs((tryDirection - this.direction) % 8) === 1 ||\n Math.abs((tryDirection - this.direction) % 8) === 7) &&\n (tryDirection % 2 !== 0))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar straightShift = cc.pAdd(this._getShift(this.direction), this.position);\n\t\t\t\t\t\tvar straightType = map.element(straightShift).getType();\n\n\t\t\t\t\t\tif (straightType === LightMapElementType.Road || straightType === LightMapElementType.StopPoint)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (this._insertStraightPeace(wayPeace, straightShift, straightType))\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this._wasTurn)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this._insertTurnPeace(wayPeace, tryDirection, inverse))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (inverse)\n\t\t{\n\t\t\tif (this._beginInverseDirections[this._countLoops] !== (this.direction + 4 + 8) % 8)\n\t\t\t{\n\t\t\t\twayPeace.push(this._beginInverseDirections[this._countLoops]);\n\t\t\t\tthis.direction = this._beginInverseDirections[this._countLoops];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.direction = this._beginInverseDirections[this._countLoops];\n\t\t\t}\n\n\t\t\tthis._countLoops--;\n\t\t\tthis._beginInverseDirections.pop();\n\t\t}\n\n\t\tif(!CORE_BUILD)\n\t\t\tthis.playAnimation(LightRobotAnimation.Play, this._endAnimate, wayPeace);\n\t},\n\n\t_insertTurnPeace: function (wayPeace, direction, inverse)\n\t{\n\t\tif ((typeof wayPeace[wayPeace.length - 1]) === \"number\")\n\t\t\twayPeace.push(this.position);\n\n\t\tif (inverse)\n\t\t\twayPeace.push((direction + 4 + 8) % 8);\n\t\telse\n\t\t\twayPeace.push(direction);\n\n\t\tthis.direction = direction;\n\t\tthis._breakFlag = false;\n\t\tthis._wasTurn = true;\n\n\t\treturn true;\n\t},\n\n\t_insertStraightPeace: function (wayPeace, shift, type)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif ((typeof wayPeace[wayPeace.length - 1]) === \"object\")\n\t\t\twayPeace.pop();\n\n\t\twayPeace.push(shift);\n\n\t\tthis.position = shift;\n\t\tthis._breakFlag = false;\n\t\tthis._wasTurn = false;\n\n\t\tif (type === LightMapElementType.StopPoint)\n\t\t\tthis._stopPoint = true;\n\n\t\tmap.element(this.position).addRobot(this);\n\n\t\treturn true;\n\t},\n\n\t_left: function()\n\t{\n\t\tthis._lastAnimation = LightRobotAnimation.Move;\n\n\t\tthis._beginInverseDirections.push(this.direction);\n\t\tthis._countLoops++;\n\t\tthis._instrStack.push(this._leftReverse);\n\n\t\tthis._moveLoop(LightRobotCourse.Left, false);\n\t},\n\n\t_right: function()\n\t{\n\t\tthis._lastAnimation = LightRobotAnimation.Move;\n\n\t\tthis._beginInverseDirections.push(this.direction);\n\t\tthis._countLoops++;\n\t\tthis._instrStack.push(this._rightReverse);\n\n\t\tthis._moveLoop(LightRobotCourse.Right, false);\n\t},\n\n\t_leftReverse: function ()\n\t{\n\t\tvar map = this.getMap();\n\t\tvar type = map.element(this.position).getType();\n\n\t\tif (type === LightMapElementType.StopPoint)\n\t\t{\n\t\t\tif (this.isBroken())\n\t\t\t{\n\t\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\t\t\t\tthis._countLoops--;\n\t\t\t\tthis._beginInverseDirections.pop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isBroken())\n\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\n\t\tthis._moveLoop(LightRobotCourse.Right, true);\n\t},\n\n\t_rightReverse: function ()\n\t{\n\t\tvar map = this.getMap();\n\t\tvar type = map.element(this.position).getType();\n\n\t\tif (type === LightMapElementType.StopPoint)\n\t\t{\n\t\t\tif (this.isBroken())\n\t\t\t{\n\t\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\t\t\t\tthis._countLoops--;\n\t\t\t\tthis._beginInverseDirections.pop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.isBroken())\n\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\n\t\tthis._moveLoop(LightRobotCourse.Left, true);\n\t},\n\n\t_turnOn: function ()\n\t{\n\t\tthis._lastAnimation = LightRobotAnimation.TurnToLamp;\n\n\t\tthis._changeLamp(true);\n\t\tthis._instrStack.push(this._turnOnReverse);\n\t\tthis.oneTurnToOnLamp();\n\t},\n\n\t_turnOff: function ()\n\t{\n\t\tthis._lastAnimation = LightRobotAnimation.TurnToLamp;\n\n\t\tthis._changeLamp(false);\n\t\tthis._instrStack.push(this._turnOffReverse);\n\t\tthis.oneTurnToOffLamp();\n\t},\n\n\t_turnOnReverse: function ()\n\t{\n\t\tthis._changeLamp(false);\n\t\tthis.oneTurnToOffLamp();\n\t},\n\n\t_turnOffReverse: function ()\n\t{\n\t\tthis._changeLamp(true);\n\t\tthis.oneTurnToOnLamp();\n\t},\n\n\t_changeLamp: function (condition)\n\t{\n\t\tthis._turnLamps = [];\n\t\tvar map = this.getMap();\n\t\tthis._beginDirection = this.direction;\n\n\t\tvar x = this.position.x, y = this.position.y;\n\n\t\tvar x1 = x > 0 ? x - 1 : x;\n\t\tvar x2 = x < map.width - 1 ? x + 1 : x;\n\t\tvar y1 = y > 0 ? y - 1 : y;\n\t\tvar y2 = y < map.height - 1 ? y + 1 : y;\n\n\t\tfor (var i = x1; i <= x2; ++i)\n\t\t{\n\t\t\tfor (var j = y1; j <= y2; ++j)\n\t\t\t{\n\t\t\t\tvar el = map.element(cc.p(i, j));\n\n\t\t\t\tfor (var ob in el._objectsHere)\n\t\t\t\t{\n\t\t\t\t\tif (el._objectsHere[ob].getType() === pm.LightLevelModule.Lamp)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (el._objectsHere[ob].isLightened() === condition || el._objectsHere[ob].countIgnitions > 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (condition === true)\n\t\t\t\t\t\t\t\tel._objectsHere[ob].countIgnitions++;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tel._objectsHere[ob].countIgnitions--;\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (condition === true)\n\t\t\t\t\t\t\tel._objectsHere[ob].countIgnitions++;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tel._objectsHere[ob].countIgnitions--;\n\n\t\t\t\t\t\tthis._turnLamps.push({\n\t\t\t\t\t\t\tdir: this.getDirectionLamp(this.position, cc.p(i, j)),\n\t\t\t\t\t\t\tlamp: el._objectsHere[ob]\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar compare = this.compareEl;\n\t\tthis._turnLamps.sort(compare.bind(this));\n\t},\n\n\tcompareEl: function (a, b)\n\t{\n\t\tvar da = (this.direction - a.dir + 8) % 8;\n\t\tvar db = (this.direction - b.dir + 8) % 8;\n\n\t\treturn da - db;\n\t},\n\n\tgetDirectionLamp: function (pos, point)\n\t{\n\t\tif (point.y === pos.y)\n\t\t\treturn -2 * (point.x - pos.x) + 4;\n\t\tif (point.x === pos.x)\n\t\t\treturn 2 * (pos.y - point.y) + 2;\n\t\tif (point.y === pos.y - 1)\n\t\t\treturn -(point.x - pos.x) + 4;\n\t\tif (point.y === pos.y + 1)\n\t\t\treturn -3 * (point.x - pos.x) + 4;\n\t},\n\n\toneTurnToOnLamp: function ()\n\t{\n\t\tif (this._turnLamps.length === 0)\n\t\t{\n\t\t\tvar oldDirection = this.direction;\n\t\t\tthis.direction = this._beginDirection;\n\n\t\t\tthis.playAnimation(LightRobotAnimation.TurnToLamp, this._endAnimate.bind(this), [oldDirection, this._beginDirection]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar direction = this._turnLamps[this._turnLamps.length - 1].dir;\n\t\t\tvar oldDirection = this.direction;\n\n\t\t\tthis.direction = direction;\n\t\t\tthis.playAnimation(LightRobotAnimation.TurnToLamp, this.turnOnOneLamp.bind(this), [oldDirection, direction]);\n\t\t}\n\t},\n\n\tturnOnOneLamp: function ()\n\t{\n\t\tvar lamp = this._turnLamps[this._turnLamps.length-1].lamp;\n\t\tthis._turnLamps.pop();\n\n\t\tlamp.turnOn(this.oneTurnToOnLamp.bind(this));\n\t},\n\n\toneTurnToOffLamp: function ()\n\t{\n\t\tif (this._turnLamps.length === 0)\n\t\t{\n\t\t\tvar oldDirection = this.direction;\n\t\t\tthis.direction = this._beginDirection;\n\n\t\t\tthis.playAnimation(LightRobotAnimation.TurnToLamp, this._endAnimate.bind(this), [oldDirection, this._beginDirection]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar direction = this._turnLamps[this._turnLamps.length - 1].dir;\n\t\t\tvar oldDirection = this.direction;\n\n\t\t\tthis.direction = direction;\n\t\t\tthis.playAnimation(LightRobotAnimation.TurnToLamp, this.turnOffOneLamp.bind(this), [oldDirection, direction]);\n\t\t}\n\t},\n\n\tturnOffOneLamp: function ()\n\t{\n\t\tvar lamp = this._turnLamps[this._turnLamps.length-1].lamp;\n\t\tthis._turnLamps.pop();\n\n\t\tlamp.turnOff(this.oneTurnToOffLamp.bind(this));\n\t},\n\n\t_getShift: function(direction)\n\t{\n\t\tswitch(direction)\n\t\t{\n\t\t\tcase LightDirection.Up: return cc.p(0, -1);\n\t\t\tcase LightDirection.UpLeft: return cc.p(-1, -1);\n\t\t\tcase LightDirection.Left: return cc.p(-1, 0);\n\t\t\tcase LightDirection.DownLeft: return cc.p(-1, 1);\n\t\t\tcase LightDirection.Down: return cc.p(0, 1);\n\t\t\tcase LightDirection.DownRight: return cc.p(1, 1);\n\t\t\tcase LightDirection.Right: return cc.p(1, 0);\n\t\t\tcase LightDirection.UpRight: return cc.p(1, -1);\n\t\t\tdefault:\n\t\t\t\tcc.log(\"bad light map\");\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tgetType: function()\n\t{\n\t\treturn pm.LightLevelModule.RobotType;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tvar func = this._instrStack[this._instrStack.length - 1];\n\t\tthis._instrStack.pop();\n\t\tfunc.call(this);\n\t}\n});\n\npm.data.LightRobot.NativeMethod =\n{\n\tLeft: \"light_turn_left\",\n\tRight: \"light_turn_right\",\n\tTurnOn: \"light_turn_on\",\n\tTurnOff: \"light_turn_off\",\n\tLeftReverse: \"light_turn_left_reverse\",\n\tRightReverse: \"light_turn_right_reverse\"\n};\n","/**\n * Created by Kirill Mashchenko on 19.07.17.\n */\n\n/**\n * Animation type for light robot.\n * @enum {String}\n * @readonly\n */\nvar LightRobotAnimation = {\n\tTurn: \"turn\",\n\tMove: \"move\",\n\tPlay: \"play\",\n\tIndicate: \"indicate\",\n\tTurnToLamp: \"turnToLamp\",\n\tDestroy: \"destroy\"\n};\n\n/**\n * @class 2D sprite of {pm.data.LightRobot}.\n * @implements pm.IsoRobotSprite\n */\nvar LightRobotSprite = pm.IsoRobotSprite.extend(/** @lends LightRobotSprite# */\n\t{\n\t\tctor: function ()\n\t\t{\n\t\t\tcc.animationCache.addAnimations(\"Robot/light_robot-animations.plist\");\n\n\t\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/light_robot.plist\");\n\t\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/light_robot-indicate.plist\");\n\t\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/light_robot-light.plist\");\n\t\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/light_robot-broken.plist\");\n\n\t\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\t\tthis._minPoint = cc.p(30, 23);\n\t\t\tthis._maxPoint = cc.p(30, -4);\n\t\t},\n\n\t\tplayAnimation: function(callback, target, type, args)\n\t\t{\n\t\t\tif(!CORE_BUILD)\n\t\t\t{\n\t\t\t\tswitch (type)\n\t\t\t\t{\n\t\t\t\t\tcase LightRobotAnimation.Play:\n\t\t\t\t\t\tthis._play(args, callback, target);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LightRobotAnimation.TurnToLamp:\n\t\t\t\t\t\tthis._turnToLamp(args[0], args[1], callback, target);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tpm.IsoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_play: function(wayPeace, endCallback, target)\n\t\t{\n\t\t\tvar animationList = [];\n\n\t\t\tvar inverseDirection = -1;\n\n\t\t\tif (wayPeace.length % 2 !== 0 && wayPeace.length !== 1)\n\t\t\t{\n\t\t\t\tinverseDirection = wayPeace[wayPeace.length - 1];\n\t\t\t\twayPeace.pop();\n\t\t\t}\n\n\t\t\tfor (var i = 0; i< wayPeace.length - 1; i += 2)\n\t\t\t{\n\t\t\t\tvar t = i + 1;\n\t\t\t\tvar j = i + 2;\n\n\t\t\t\tthis._insertMovePeace(animationList, wayPeace[t]);\n\t\t\t\tif (j < wayPeace.length)\n\t\t\t\t\tthis._insertTurnAndIndicatePeace(animationList, wayPeace[i], wayPeace[j]);\n\t\t\t}\n\n\t\t\tif (inverseDirection >= 0)\n\t\t\t\tthis._insertTurnAndIndicatePeace(animationList, wayPeace[wayPeace.length - 2], inverseDirection);\n\n\t\t\tvar callback = cc.callFunc(endCallback, target);\n\t\t\tvar moveEnd = cc.callFunc(endCallback, target);\n\t\t\tanimationList.push(moveEnd, callback);\n\n\t\t\tthis.getSprite().runAction(cc.sequence(animationList));\n\t\t},\n\n\t\t_insertTurnAndIndicatePeace: function(animationList, oldDirection, curDirection)\n\t\t{\n\t\t\tthis._insertIndicatePeace(animationList, oldDirection);\n\t\t\tthis._insertTurnPeace(animationList, oldDirection, curDirection);\n\t\t\tthis._insertIndicatePeace(animationList, curDirection);\n\t\t},\n\n\t\t_insertIndicatePeace: function(animationList, direction)\n\t\t{\n\t\t\tvar animation = cc.animationCache.getAnimation(this._getIndicateAnimationName(direction));\n\t\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\t\tvar animate = new cc.Animate(animation);\n\n\t\t\tanimationList.push(animate);\n\t\t},\n\n\t\t_insertMovePeace: function(animationList, pos)\n\t\t{\n\t\t\tvar targetPos = this.getRealPosition(pos);\n\n\t\t\tvar moveEnd = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._needToUpdateZOrder = false;\n\t\t\t}, this);\n\n\t\t\tvar moveRobot = cc.moveTo(pm.settings.getAnimationSpeed(), targetPos);\n\n\t\t\tvar moveStart = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._needToUpdateZOrder = true;\n\t\t\t}, this);\n\n\t\t\tanimationList.push(moveStart);\n\t\t\tanimationList.push(moveRobot);\n\t\t\tanimationList.push(moveEnd);\n\t\t},\n\n\t\t_insertTurnPeace: function (animationList, oldDirection, curDirection)\n\t\t{\n\t\t\tif (Math.abs((8 + curDirection - oldDirection) % 8) < Math.abs((8 - curDirection + oldDirection) % 8))\n\t\t\t{\n\t\t\t\tfor (var i = oldDirection; i !== curDirection; i = (i + 1) % 8)\n\t\t\t\t{\n\t\t\t\t\tvar animation = cc.animationCache.getAnimation(this._getTurnAnimationName(i, (i + 1) % 8));\n\t\t\t\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed() / animation.getTotalDelayUnits());\n\t\t\t\t\tvar animate = new cc.Animate(animation);\n\t\t\t\t\tanimationList.push(animate);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = oldDirection; i !== curDirection; i = (8 + i - 1) % 8)\n\t\t\t\t{\n\t\t\t\t\tvar animation = cc.animationCache.getAnimation(this._getTurnAnimationName(i, (8 + i - 1) % 8));\n\t\t\t\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed() / animation.getTotalDelayUnits());\n\t\t\t\t\tvar animate = new cc.Animate(animation);\n\t\t\t\t\tanimationList.push(animate);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_turnToLamp: function(oldDirection, direction, endCallBack, target)\n\t\t{\n\t\t\tvar animations = [];\n\n\t\t\tvar animation = cc.animationCache.getAnimation(this._getLightAnimationName(direction));\n\t\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed() / animation.getTotalDelayUnits());\n\n\t\t\tif (oldDirection !== direction)\n\t\t\t\tthis._insertTurnPeace(animations, oldDirection, direction);\n\n\t\t\tvar lightAnim = new cc.Animate(animation);\n\t\t\tanimations.push(lightAnim);\n\n\t\t\tvar turnEnd = new cc.CallFunc(endCallBack, target);\n\t\t\tanimations.push(turnEnd);\n\n\t\t\tthis.getSprite().runAction(cc.sequence(animations));\n\t\t},\n\n\t\t_getActiveSpritePosition: function()\n\t\t{\n\t\t\treturn cc.p(30, 106);\n\t\t},\n\n\t\t_getCommandsSpritePosition: function()\n\t\t{\n\t\t\treturn cc.p(30, 135);\n\t\t},\n\n\t\t_getFrameName: function(direction)\n\t\t{\n\t\t\treturn \"light_robot{0}.png\".format(2 * direction);\n\t\t},\n\n\t\t_getTurnAnimationName: function(oldDirection, curDirection)\n\t\t{\n\t\t\treturn \"light_robot_{0}->{1}\".format(oldDirection, curDirection);\n\t\t},\n\n\t\t_getDestroyAnimationName: function (direction)\n\t\t{\n\t\t\treturn \"light_robot_d_{0}\".format(direction);\n\t\t},\n\n\t\t_getIndicateAnimationName: function (direction)\n\t\t{\n\t\t\treturn \"light_robot_i_{0}\".format(direction);\n\t\t},\n\n\t\t_getLightAnimationName: function (direction)\n\t\t{\n\t\t\treturn \"light_robot_l_{0}\".format(direction);\n\t\t}\n\t});\n","/**\n * Created by Ekaterina Ermishkina on 24.08.16.\n */\n\n/**\n * @class pm.Task for light elements.
\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\n\npm.data.LightTask = pm.Task.extend(/** @lends pm.data.LightTask*/ {\n\ttypeName: \"LightTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar objects = this._level.maps[mapIndex].objects;\n\n\t\tvar retArray = [];\n\n\t\tfor(var j = 0; j < objects.length; ++j)\n\t\t{\n\t\t\tvar object = objects[j];\n\n\t\t\tif (!(object instanceof pm.data.LightLamp))\n\t\t\t\tcontinue;\n\n\t\t\tif (!object.isLightened())\n\t\t\t\tretArray.push(this._level.maps[mapIndex].element(object.position));\n\t\t}\n\n\t\treturn retArray;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 10.07.17.\n */\n\n/**\n * @class Functions for LightLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.LightLevelModule = pm.ModuleInfo.extend(/** @lends pm.LightLevelModule# */{\n\n\tname: \"Light\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.LightLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.LightMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = LightMapElementType.GreenGrass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).originalType = LightMapElementType.StopPoint;\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).originalType = LightMapElementType.StopPoint;\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.LightLevel();\n\n\t\tlevel.name = LocalizedString(\"Light\");\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\n\t\tlevel.robots.push(new pm.data.LightRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.LightLevelModule.Type] = new pm.data.LightTask(level);\n\n\t\treturn level;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/light_robot.plist\";\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\tvar ret = {};\n\n\t\tret[pm.LightLevelModule.ObjectTypes.LightLamp0] = \"Objects/LightLamp0.png\";\n\t\tret[pm.LightLevelModule.ObjectTypes.LightLamp1] = \"Objects/LightLamp1.png\";\n\t\tret[pm.LightLevelModule.ObjectTypes.LightObject0] = \"Objects/LightObject0.png\";\n\t\tret[pm.LightLevelModule.ObjectTypes.LightObject1] = \"Objects/LightObject1.png\";\n\n\t\treturn ret;\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.LightLevelModule.RobotType] = \"light_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new LightRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn LightMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Light\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/light_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\"Robot Methods/light_robot-methods.plist\"];\n\t},\n\n\tgenerateObject: function (objectType)\n\t{\n\t\tvar ret = null;\n\n\t\tswitch (objectType)\n\t\t{\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightLamp0:\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightLamp1:\n\t\t\t\tret = new pm.data.LightLamp();\n\t\t\t\tbreak;\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightObject0:\n\t\t\tcase pm.LightLevelModule.ObjectTypes.LightObject1:\n\t\t\t\tret = new pm.data.LightObject();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(ret)\n\t\t\tret.type = objectType;\n\n\t\treturn ret;\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.LightRobot();\n\t},\n\n\tstopResizingWidth: function (map, side)\n\t{\n\t\tswitch (side)\n\t\t{\n\t\t\tcase SquarableMapEditor_resizeSide.Left:\n\t\t\t\tfor (var y = 1; y < map.height - 1; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(1, y)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tvar type = map.element(cc.p(0, y)).getType();\n\n\t\t\t\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SquarableMapEditor_resizeSide.Right:\n\t\t\t\tfor (var y = 1; y < map.height - 1; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(map.width - 2, y)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tvar type = map.element(cc.p(map.width - 1, y)).getType();\n\n\t\t\t\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tstopDecreasingHeight: function (map, side)\n\t{\n\t\tswitch (side)\n\t\t{\n\t\t\tcase SquarableMapEditor_resizeSide.Left:\n\t\t\t\tfor (var x = 1; x < map.width - 1; ++x)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, map.height - 2)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tvar type = map.element(cc.p(x, map.height - 1)).getType();\n\n\t\t\t\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SquarableMapEditor_resizeSide.Right:\n\t\t\t\tfor (var x = 1; x < map.width - 1; ++x)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, 1)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tvar type = map.element(cc.p(x, 0)).getType();\n\n\t\t\t\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\tvar type = map.element(point).getType();\n\n\t\tif (type === LightMapElementType.BottomWater ||\n type === LightMapElementType.Road ||\n type === LightMapElementType.StopPoint)\n\n\t\t\treturn true;\n\n\t\tvar x = point.x;\n\t\tvar y = point.y;\n\n\t\tfor (var i = x - 1; i <= x + 1; ++i)\n\t\t{\n\t\t\tfor (var j = y - 1; j <= y + 1; ++j)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(i, j)))\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(i, j)).getType() === LightMapElementType.BottomWater)\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Light\": \"Light\",\n\t\t\t\t\t\"LightLevelType\": \"Light level\",\n\t\t\t\t\t\"LightTask\": \"Turn on Lights\",\n\t\t\t\t\t\"LightLevel\": \"Light\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Light\": \"Зажигун\",\n\t\t\t\t\t\"LightLevelType\": \"Зажигун\",\n\t\t\t\t\t\"LightTask\": \"Зажечь Лампы\",\n\t\t\t\t\t\"LightLevel\": \"Зажигун\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new LightTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"LightTask\";\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.LightTask(level);\n\t\tlevel.taskList.addTask(pm.LightLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function()\n\t{\n\t\treturn {\n\t\t\thorizontal: pm.spriteUtils.getMapTileFrame(\"light-depth_horizontal\"),\n\t\t\tvertical: pm.spriteUtils.getMapTileFrame(\"light-depth_vertical\")\n\t\t};\n\t},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function() {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\tvar level = new pm.data.LightLevel();\n\n\t\tlevel.name = \"Light\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\n\t\tlevel.robots.push(new pm.data.LightRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.robots[0]._oldPosition = cc.p(0, 1);\n\t\tlevel.robots[0].position = cc.p(0, 1);\n\t\tlevel.robots[0].direction = 1;\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.LightLevelModule.Type] = new pm.data.LightTask(level);\n\n\t\tvar map = new pm.data.LightMap();\n\t\tmap.parentLevel = level;\n\n\t\tmap.setSize(2, 2);\n\n\t\tfor (var x = 0; x < 2; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < 2; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = LightMapElementType.GreenGrass;\n\t\t}\n\n\t\tmap.element(cc.p(0, 1)).originalType = LightMapElementType.StopPoint;\n\t\tmap.element(cc.p(0, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(0, 1)).startRobotData.direction = 1;\n\n map.element(cc.p(1, 0)).originalType = LightMapElementType.Road;\n\n map.objects.push(new pm.data.LightLamp());\n\n map.objects[0].position = cc.p(0,0);\n map.objects[0].type = pm.LightLevelModule.ObjectTypes.LightLamp1;\n\n level.maps.push(map);\n\t\tlevel.load();\n\n\t\tmap.load();\n\t\tmap.generateMapLayer(false);\n\n\t\tmap.mapLayer.placeRobots(true);\n\n\t\treturn map.mapLayer;\n\t}\n});\n\npm.LightLevelModule.RobotType = \"light-robot\";\npm.LightLevelModule.Type = \"light\";\npm.LightLevelModule.Lamp = \"lamp\";\npm.LightLevelModule.Object = \"tree\";\npm.LightLevelModule.ObjectTypes = {\n\tLightLamp0: \"LightLamp0\",\n\tLightLamp1: \"LightLamp1\",\n\tLightObject0: \"LightObject0\",\n\tLightObject1: \"LightObject1\"\n\n};\n","/**\n * Created by Mashchenko Kirill on 21.04.2017.\n */\nvar LightMapEditorLayer = LightMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\t_needDrawFishes: function()\n\t{\n\t\treturn false;\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.ChangeMapElement)\n\t\t{\n\t\t\tvar x = pos.x, y = pos.y;\n\n\t\t\tvar type = this._map.element(pos).originalType;\n\t\t\tvar flag = 0;\n\n\t\t\tif (((this._selectedObjectForTapType === LightMapElementType.BottomWater) &&\n ((x >= 1) && (x < this._map.width - 1) && (y >= 1) && (y < this._map.height - 1))) ||\n (this._selectedObjectForTapType !== LightMapElementType.BottomWater))\n\t\t\t\tflag = 1;\n\n\t\t\tif (flag === 1)\n\t\t\t{\n\t\t\t\tif (type !== this._selectedObjectForTapType)\n\t\t\t\t{\n\t\t\t\t\tthis.setElement(pos, this._selectedObjectForTapType);\n\t\t\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddObject)\n\t\t{\n\t\t\tif (!pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, pos) && (this._map.element(pos).getObjectCount() === 0))\n\t\t\t\tthis._addObject(pos, pm.moduleUtils.generateObject(this._map.getType(), this._selectedObjectForTapType));\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\t_drawMapElement: function(pos)\n\t{\n\t\tvar element = this._map.element(pos);\n\n\t\tvar type = element.getType();\n\t\telement._type = type;\n\t\telement.originalType = type;\n\n\t\tif (type === LightMapElementType.Road || type === LightMapElementType.StopPoint)\n\t\t{\n\t\t\tvar grassSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(LightMapElementType.GreenGrass));\n\t\t\tgrassSprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!(element.grass))\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(grassSprite, 0);\n\t\t\t\telement.grass = grassSprite;\n\t\t\t}\n\n\t\t\tvar terrainSprite = element.generateTerrainSprite();\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(pos, cc.p(-6, 6)));\n\n\t\t\tif (!(element.mainRoad))\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(terrainSprite, 1);\n\t\t\t\telement.mainRoad = terrainSprite;\n\t\t\t}\n\n\t\t}\n\t\telse if (type === LightMapElementType.GreenGrass)\n\t\t{\n\t\t\tvar sprite = element.generateTerrainSprite();\n\t\t\tsprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\t\tif (!(element.grass))\n\t\t\t{\n\t\t\t\tthis.addTerrainObject(sprite, 0);\n\t\t\t\telement.grass = sprite;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetMapElementSize: function()\n\t{\n\t\tif(this._previewDraw)\n\t\t\treturn cc.size(this._mapElementSize.width, this._mapElementSize.height);\n\t\telse\n\t\t\treturn cc.size(this._mapElementSize.width + 1, this._mapElementSize.height + 1);\n\t},\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.LightMapElement();\n\t\tel.originalType = LightMapElementType.GreenGrass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\t_deleteMapElement: function (pos)\n\t{\n\t\tvar element = this._map.element(pos);\n\n\t\tif (element.grass)\n\t\t{\n\t\t\tthis.removeTerrainObject(element.grass);\n\t\t\telement.grass = null;\n\t\t}\n\n\t\tif (element.mainRoad)\n\t\t{\n\t\t\tthis.removeTerrainObject(element.mainRoad);\n\t\t\telement.mainRoad = null;\n\t\t}\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis.setElement(cc.p(i, j + 1), elementType);\n\t\t\t\tthis.setElement(cc.p(i, j), LightMapElementType.GreenGrass);\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis.setElement(cc.p(i, j - 1), elementType);\n\t\t\t\tthis.setElement(cc.p(i, j), LightMapElementType.GreenGrass);\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis.setElement(cc.p(i + 1, j), elementType);\n\t\t\t\tthis.setElement(cc.p(i, j), LightMapElementType.GreenGrass);\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis.setElement(cc.p(i - 1, j), elementType);\n\t\t\t\tthis.setElement(cc.p(i, j), LightMapElementType.GreenGrass);\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by Ekaterina Ermishkina on 29.08.16.\n */\n\n/**\n * @class Layer for light robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar LightRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends LightRobotSettingsLayer# */{\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Light\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * @class Layer for light task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PushTask} task\n */\n\nvar LightTaskLayer = TaskLayer.extend(/** @lends LightTaskLayer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"LightTask\"), level, task, pm.LightLevelModule.Type);\n\t}\n});\n","\"use strict\";\n\n/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class 2D Level where robot is a copy pf physical robot and can connect to real physical robot.\n * @implements pm.AbstractLevel\n */\npm.data.PhysicalRobotLevel = pm.AbstractLevel.extend(/** @lends pm.data.PhysicalRobotLevel# */{\n\ttypeName: \"PhysicalRobotLevel\",\n\t/**\n\t * Robots can be indicated.\n\t * @type {Boolean}\n\t */\n\trobotsCanBeIndicated: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tload: function(preview, robotIndex)\n\t{\n\t\tpm.AbstractLevel.prototype.load.call(this, preview, robotIndex);\n\t},\n\n\thasPhysicalConnector: function() { return true; },\n\n\t_supportsPhysicalConnector: function(type)\n\t{\n\t\treturn type !== pm.PhysicalConnectorType.Magnet;\n\t},\n\n\t_physicalStateChanged: function(state)\n\t{\n\t\tfor(var i = 0; i < this.robots.length; ++i)\n\t\t\tthis.robots[i].physicalStateChanged(state);\n\t},\n\n\tgetType: function() { return pm.PhysicalRobotLevelModule.Type; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class 2D map for {@link pm.data.PhysicalRobotLevel}\n * @implements SquarableMap\n */\npm.data.PhysicalRobotMap = SquarableMap.extend(/** @lends pm.data.PhysicalRobotMap# */{\n\ttypeName: \"PhysicalRobotMap\",\n\t_visitedCells: [],\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_visitedCells\");\n\t\tthis._super();\n\t},\n\n\thasWalls: function() { return false; },\n\n\tgetType: function() { return pm.PhysicalRobotLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new PhysicalRobotMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new PhysicalRobotMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.PhysicalRobotMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\tclean: function()\n\t{\n\t\tthis._visitedCells = [];\n\n\t\tMap2D.prototype.clean.call(this);\n\t},\n\n\tgetVisitedCells: function()\n\t{\n\t\treturn this._visitedCells;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class Layer for {@link pm.data.PhysicalRobotMap}.\n * @implements SquarableMapLayer\n */\nvar PhysicalRobotMapLayer = SquarableMapLayer.extend(/** @lends PhysicalRobotMapLayer#*/{\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Ortho;\n\t\tthis._mapElementSize = cc.size(96 - 7, 96- 7);\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn false;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * Types of {@link pm.data.PhysicalRobotMapElement}.\n * @enum {Number}\n * @readonly\n */\nvar PhysicalRobotMapElementType = {\n\tPlus: \"+\",\n\tMinus: \"-\",\n\tDivide: \"%\",\n\tEqual: \"=\",\n\tRed: \"R\",\n\tGreen: \"G\",\n\tBlue: \"B\",\n\tYellow: \"Y\",\n\tNullElement: 0,\n\tOneElement: 1,\n\tTwoElement: 2,\n\tThreeElement: 3,\n\tFourElement: 4,\n\tFiveElement: 5,\n\tSixElement: 6,\n\tSevenElement: 7,\n\tEightElement: 8,\n\tNineElement: 9\n};\n\n/**\n * @class Elements of {@link pm.data.PhysicalRobotMap}.\n * @implements pm.MapElement\n */\npm.data.PhysicalRobotMapElement = pm.MapElement2D.extend(/** @lends pm.data.PhysicalRobotMapElement# */{\n\ttypeName: \"PhysicalRobotMapElement\",\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t},\n\n\tsetNotCompleted: function(flag) {}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * @class 2D robot which represents virtual physical robot.\n * @implements PlayerRobot4\n */\npm.data.PhysicalRobot = PlayerRobot4.extend(/** @lends pm.data.PhysicalRobot# */{\n\ttypeName: \"PhysicalRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new PhysicalRobotSprite();\n\n\t\t\tvar state = pm.PhysicalConnector.STATE.DISCONNECTED;\n\n\t\t\tif(this._PhysicalConnector && this._PhysicalConnector.isConnected())\n\t\t\t\tstate = pm.PhysicalConnector.STATE.CONNECTED;\n\n\t\t\tthis.playAnimation(PhysicalRobotAnimation.ChangeState, null, state);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_moveTo: function (target, reverse)\n\t{\n\t\tif (this.getMap().getVisitedCells().length === 0)\n\t\t\tthis._updateTaskInformation();\n\n\t\tPlayerRobot4.prototype._moveTo.call(this, target, reverse);\n\n\t\tthis._updateTaskInformation();\n\t},\n\n\t_updateTaskInformation: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif (map.element(this.position).getType() >= PhysicalRobotMapElementType.NullElement &&\n map.element(this.position).getType() <= PhysicalRobotMapElementType.NineElement)\n\t\t\tmap.getVisitedCells().push(map.element(this.position).getType());\n\t},\n\n\tphysicalStateChanged: function(state)\n\t{\n\t\tif(this.sprite instanceof pm.ObjectSprite2D)\n\t\t\tthis.playAnimation(PhysicalRobotAnimation.ChangeState, null, state);\n\t},\n\n\tgetType: function() { return pm.PhysicalRobotLevelModule.RobotType; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 16.11.15.\n */\n\n/**\n * Animation type for physical robot.\n * @enum {String}\n * @readonly\n */\nvar PhysicalRobotAnimation = {\n\tPush: \"push\",\n\tChangeState: \"state\"\n};\n\n/**\n * @class 2D sprite of {pm.data.PhysicalRobot}.\n * @implements pm.OrthoRobotSprite\n */\nvar PhysicalRobotSprite = pm.OrthoRobotSprite.extend(/** @lends PhysicalRobotSprite# */{\n\n\t_stateIndicator: null,\n\n\tctor: function ()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/physical_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/physical_robot.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._stateIndicator = new cc.ParticleSystem(\"Particles/light.plist\");\n\t\tthis._stateIndicator.setPositionType(cc.ParticleSystem.TYPE_GROUPED);\n\t\tthis._stateIndicator.setScale(0.6);\n\n\t\tthis.getSprite().addChild(this._stateIndicator, 1);\n\t},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase PhysicalRobotAnimation.Push: this._push(args[0], args[1], args[2], callback, target); break;\n\t\t\tcase PhysicalRobotAnimation.ChangeState: this._changeState(args); break;\n\t\t\tdefault: pm.OrthoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_changeState: function(state)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\t\tcase pm.PhysicalConnector.STATE.CONNECTED:\n\t\t\t\tthis._stateIndicator.setPosition(this._getStateIndicatorPosition(state));\n\t\t\t\tthis._stateIndicator.setStartColor(cc.color.GREEN);\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnector.STATE.DISCONNECTED:\n\t\t\t\tthis._stateIndicator.setPosition(this._getStateIndicatorPosition(state));\n\t\t\t\tthis._stateIndicator.setStartColor(cc.color.RED);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_push: function(pos, direction, reverse, endCallback, target)\n\t{\n\t\tvar targetBack = this.getRealPosition(pos);\n\t\tvar targetPos = cc.p(pos.x, pos.y);\n\n\t\tif(!reverse)\n\t\t{\n\t\t\tswitch (direction)\n\t\t\t{\n\t\t\t\tcase MapDirection4.Up:\n\t\t\t\t\ttargetPos.y *= 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Left:\n\t\t\t\t\ttargetPos.x *= 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Down:\n\t\t\t\t\ttargetPos.y *= 1.25;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Right:\n\t\t\t\t\ttargetPos.x *= 1.25;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\t\telse\n\t\t{\n\t\t\tswitch (direction)\n\t\t\t{\n\t\t\t\tcase MapDirection4.Up:\n\t\t\t\t\ttargetPos.y = (targetPos.y - 1) * 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Left:\n\t\t\t\t\ttargetPos.x = (targetPos.x - 1) * 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Down:\n\t\t\t\t\ttargetPos.y = (targetPos.y + 1) * 1.25;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Right:\n\t\t\t\t\ttargetPos.x = (targetPos.x + 1) * 1.25;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\ttargetPos = this.getRealPosition(targetPos);\n\n\t\tvar callback = cc.callFunc(endCallback, target);\n\n\t\tif(!reverse)\n\t\t{\n\t\t\tvar moveRobot = cc.moveTo(pm.settings.getAnimationSpeed() * 1.5, targetPos);\n\t\t\tvar moveRobotBack = cc.moveTo(pm.settings.getAnimationSpeed() * 0.5, targetBack);\n\n\t\t\tthis.sprite.runAction(cc.sequence(moveRobot, moveRobotBack, callback));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar moveRobot = cc.moveTo(pm.settings.getAnimationSpeed() * 0.5, targetPos);\n\t\t\tvar moveRobotBack = cc.moveTo(pm.settings.getAnimationSpeed() * 1.5, targetBack);\n\n\t\t\tthis.sprite.runAction(cc.sequence(moveRobot, moveRobotBack, callback));\n\t\t}\n\t},\n\n\t_getTurnAngle: function(direction)\n\t{\n\t\treturn 180 - direction * 90;\n\t},\n\n\t_getFrameName: function (direction)\n\t{\n\t\tvar connectionType = pm.settings.getPhysicalConnectorType();\n\n\t\tif(connectionType === pm.PhysicalConnectorType.Lego)\n\t\t{\n\t\t\treturn \"physical_robot_lego.png\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn \"physical_robot_BLE.png\";\n\t\t}\n\t},\n\n\t_getDestroyAnimationName: function (direction)\n\t{\n\t\tswitch(pm.settings.getPhysicalConnectorType())\n\t\t{\n\t\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\t\treturn \"physical_robot_lego_d\";\n\t\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\tcase pm.PhysicalConnectorType.None:\n\t\t\t\treturn \"physical_robot_BLE_d\";\n\n\t\t}\n\t},\n\n\t_getIndicateAnimationName: function (direction)\n\t{\n\t\tswitch(pm.settings.getPhysicalConnectorType())\n\t\t{\n\t\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\t\treturn \"physical_robot_lego_i\";\n\t\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\tcase pm.PhysicalConnectorType.None:\n\t\t\t\treturn \"physical_robot_BLE_i\";\n\n\t\t}\n\t},\n\n\t_getStateIndicatorPosition: function (state)\n\t{\n\t\tvar connectionType = pm.settings.getPhysicalConnectorType();\n\n\t\tif(connectionType !== pm.PhysicalConnectorType.Lego)\n\t\t{\n\t\t\tif (state === pm.PhysicalConnector.STATE.CONNECTED)\n\t\t\t\treturn cc.p(57, 50);\n\t\t\telse if (state === pm.PhysicalConnector.STATE.DISCONNECTED)\n\t\t\t\treturn cc.p(23, 50);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn cc.p(33, 28);\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.17.\n */\n\n/**\n * @class Functions for PhysicalRobotLevel module.\n * @extends pm.ModuleInfo\n */\n\npm.PhysicalRobotLevelModule = pm.ModuleInfo.extend(/** @lends pm.PhysicalRobotLevelModule# */{\n\n\tname: \"Physical\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.PhysicalRobotLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.PhysicalRobotMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = PhysicalRobotMapElementType.Green;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.PhysicalRobotLevel();\n\n\t\tlevel.name = \"Новый Ползун\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\n\t\tlevel.robots.push(new pm.data.PhysicalRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.PhysicalRobotLevelModule.Type] = new pm.data.PhysicalTask(level);\n\t\tlevel.taskList.tasks[pm.PhysicalRobotLevelModule.Type].data[0] = [];\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\n\t\tswitch(pm.settings.getPhysicalConnectorType())\n\t\t{\n\t\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\t\tret[pm.PhysicalRobotLevelModule.RobotType] = \"physical_robot_lego.png\";\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\tcase pm.PhysicalConnectorType.None:\n\t\t\t\tret[pm.PhysicalRobotLevelModule.RobotType] = \"physical_robot_BLE.png\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/physical_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new PhysicalRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn PhysicalRobotMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Physical\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/physical_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/robot4-methods.plist\",\n\t\t\t\"Robot Methods/physical_robot-methods.plist\",\n\t\t\t\"Conditions/robot4-conditions.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.PhysicalRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Physical\": \"Floor robot\",\n\t\t\t\t\t\"PhysicalLevelType\": \"Floor robot level\",\n\t\t\t\t\t\"PhysicalTask\": \"Go by numbers\",\n\t\t\t\t\t\"PhysicalRobotLevel\": \"Floor robot\",\n\t\t\t\t\t\"phys_push\" : \"push\",\n\t\t\t\t\t\"phys_pull\" : \"pull\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Physical\": \"Ползун\",\n\t\t\t\t\t\"PhysicalLevelType\": \"Ползун\",\n\t\t\t\t\t\"PhysicalTask\": \"Пройти по цифрам\",\n\t\t\t\t\t\"PhysicalRobotLevel\": \"Ползун\",\n\t\t\t\t\t\"phys_push\" : \"толкать\",\n\t\t\t\t\t\"phys_pull\" : \"тянуть\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new PhysicalTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"PhysicalTask\";\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.PhysicalTask(level);\n\t\tlevel.taskList.addTask(pm.PhysicalRobotLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\tgetDepthLineSprites: function() {},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function() {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\tvar level = new pm.data.PhysicalRobotLevel();\n\n\t\tlevel.name = \"Physical\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.PhysicalRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.robots[0]._oldPosition = cc.p(0, 1);\n\t\tlevel.robots[0].position = cc.p(0, 1);\n\t\tlevel.robots[0].direction = 2;\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.PhysicalRobotLevelModule.Type] = new pm.data.PhysicalTask(level);\n\t\tlevel.taskList.tasks[pm.PhysicalRobotLevelModule.Type].data[0] = [];\n\n\t\tvar map = new pm.data.PhysicalRobotMap();\n\n\t\tmap.parentLevel = level;\n\t\tmap.setSize(2, 2);\n\n\t\tmap.element(cc.p(0, 0)).originalType = PhysicalRobotMapElementType.OneElement;\n\t\tmap.element(cc.p(1, 0)).originalType = PhysicalRobotMapElementType.TwoElement;\n\t\tmap.element(cc.p(0, 1)).originalType = PhysicalRobotMapElementType.Green;\n\t\tmap.element(cc.p(1, 1)).originalType = PhysicalRobotMapElementType.ThreeElement;\n\n\t\tmap.element(cc.p(0, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(0, 1)).startRobotData.direction = 2;\n\n\t\tlevel.maps.push(map);\n\t\tlevel.load();\n\n\t\tmap.load();\n\t\tmap.generateMapLayer(false);\n\n\t\tmap.mapLayer.placeRobots(true);\n\n level.robots[0].sprite._changeState(pm.PhysicalConnector.STATE.CONNECTED);\n\n\t\treturn map.mapLayer;\n\t}\n});\n\npm.PhysicalRobotLevelModule.RobotType = \"physical-robot\";\npm.PhysicalRobotLevelModule.Type = \"physical\";\npm.PhysicalRobotLevelModule.ObjectTypes = {};\n","/**\n * Created by Kirill Mashchenko on 29.06.17.\n */\n\nvar PhysicalRobotMapEditorLayer = PhysicalRobotMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tdrawMap: function(previewDraw)\n\t{\n\t\tSquarableMapEditorLayerHelper.drawMap.call(this, previewDraw);\n\n\t\t// var useProgramRecognizer = cc.sys.isMobile && pm.settings.getUseProgramRecognizer();\n\n\t\tvar useProgramRecognizer = true;\n\n\t\tif(!previewDraw && useProgramRecognizer)\n\t\t{\n\t\t\tvar recognizeProgramButton = new pmui.Button(pm.spriteUtils.getIconName(\"photo\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"photo\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"photo\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\trecognizeProgramButton.setPosition(0, this.height);\n\n\t\t\trecognizeProgramButton.addClickEventListener(this._onRecognizeMatsClick.bind(this));\n\t\t\tthis.addChild(recognizeProgramButton);\n\n\t\t\tpm.matsRecognizer.setSuccessCallback(this._onRecognizeMats.bind(this));\n\t\t\tpm.matsRecognizer.setErrorCallback(this._onRecognizeError.bind(this));\n\n\t\t}\n\t},\n\n\t_onRecognizeMatsClick: function()\n\t{\n\t\tpm.matsRecognizer.recognize();\n\t},\n\n\t_onRecognizeMats: function(result)\n\t{\n\t\ttry {\n\t\t\tvar data = JSON.parse(result);\n\n\t\t\tthis._map.width = data.width || 1;\n\t\t\tthis._map.height = data.height || 1;\n\n\t\t\tthis._map.mapElements = [];\n\n\t\t\tfor(var i = 0; i < data.height; ++i)\n\t\t\t{\n\t\t\t\tthis._map.mapElements.push([]);\n\n\t\t\t\tfor(var j = 0; j < data.width; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar el = new pm.data.PhysicalRobotMapElement();\n\t\t\t\t\tel.originalType = this._mapRecognizeElementType(data.field[i][j]);\n\n\t\t\t\t\tif (el.originalType === PhysicalRobotMapElementType.Red)\n\t\t\t\t\t{\n\t\t\t\t\t\tel.originalType = PhysicalRobotMapElementType.Green;\n\n\t\t\t\t\t\tvar task = new pm.data.PositionTask4(this._map.parentLevel);\n\t\t\t\t\t\ttask.fillWithInitialData(0, cc.p(i, j));\n\n\t\t\t\t\t\tthis._map.parentLevel.taskList.addTask(pm.GlobalTaskType.Position4, task);\n\t\t\t\t\t}\n\t\t\t\t\tel.initElement();\n\t\t\t\t\tthis._map.mapElements[i].push(el);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.removeAllChildren();\n\t\t\tthis.drawMap(false);\n\t\t}\n\t\tcatch(e)\n\t\t{\n\t\t\tthis._onRecognizeError(e.message);\n\t\t}\n\t},\n\n\t_mapRecognizeElementType: function(recType)\n\t{\n\t\tif(!isNaN(parseInt(recType)))\n\t\t\treturn Number(recType);\n\n\t\tswitch(recType)\n\t\t{\n\t\t\tcase \"green\": return PhysicalRobotMapElementType.Green;\n\t\t\tcase \"yellow\": return PhysicalRobotMapElementType.Yellow;\n\t\t\tcase \"red\": return PhysicalRobotMapElementType.Red;\n\t\t\tdefault: return PhysicalRobotMapElementType.Green;\n\t\t}\n\t},\n\n\t_onRecognizeError: function(error)\n\t{\n\t\tif(error !== \"\")\n\t\t{\n\t\t\tvar messageBox = new pmui.MessageBox(this, error);\n\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\t\t\tmessageBox.setPosition(x, y);\n\t\t\tcc.director.getRunningScene().addChild(messageBox, 1000);\n\t\t}\n\t},\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = new pm.data.PhysicalRobotMapElement();\n\t\tel.originalType = PhysicalRobotMapElementType.Green;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = PhysicalRobotMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = PhysicalRobotMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = PhysicalRobotMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = PhysicalRobotMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for physical robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar PhysicalRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends PhysicalRobotSettingsLayer# */{\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tswitch(pm.settings.getPhysicalConnectorType())\n\t\t{\n\t\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\t\tvar type = \"Lego\";\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\t\tvar type = \"BLE\";\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\t\tvar type = \"Sound\";\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnectorType.Magnet:\n\t\t\t\tvar type = \"Magnet\";\n\t\t\t\tbreak;\n\t\t\tcase pm.PhysicalConnectorType.None:\n\t\t\t\tvar type = \"None\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._label.setString(type + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.09.2018.\n */\n\n/**\n * @class pm.Task for light elements.
\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\n\npm.data.PhysicalTask = pm.Task.extend(/** @lends pm.data.LightTask*/ {\n\ttypeName: \"PhysicalTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar correctArray = this.data[mapIndex];\n\t\tvar currentArray = map.getVisitedCells();\n\n\t\tvar completedFlag = true;\n\t\tvar retArray = [];\n\n\t\tif (correctArray.length !== currentArray.length)\n\t\t{\n\t\t\tcompletedFlag = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = 0; i < correctArray.length; ++i)\n\t\t\t{\n\t\t\t\tif (correctArray[i] !== currentArray[i])\n\t\t\t\t\tcompletedFlag = false;\n\t\t\t}\n\t\t}\n\n\t\tif (!completedFlag)\n\t\t{\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).getType() >= PhysicalRobotMapElementType.NullElement &&\n map.element(cc.p(x, y)).getType() <= PhysicalRobotMapElementType.NineElement)\n\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn retArray;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.09.2018.\n */\n\n/**\n * @class Layer for light task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PushTask} task\n */\n\nvar PhysicalTaskLayer = TaskLayer.extend(/** @lends LightTaskLayer# */{\n\n\t_cellsInput: null,\n\t_cellsTaskArray: [],\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"PhysicalTask\"), level, task, pm.PhysicalRobotLevelModule.Type);\n\n\t\tthis._cellsTaskArray = [];\n\n\t\tvar height = this.height;\n\n\t\tthis._cellsInput = new pmui.TextInput(\"\", LocalizedString(\"EnterNumberOfCells\"), 20, LevelSettingsLayer.WIDTH - PhysicalTaskLayer.WIDTH_DELTA);\n\t\tthis._cellsInput.setAttachCallback(this._updateTaskFromInput, this);\n\n\t\tvar cellsAlign = new ccui.LinearLayoutParameter();\n\t\tcellsAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\tcellsAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._cellsInput.setLayoutParameter(cellsAlign);\n\n\t\tthis.addChild(this._cellsInput);\n\n\t\theight += this._cellsInput.height + 20;\n\n\t\tthis.setContentSize(this.width, height);\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateCellsInputValue.bind(this), this);\n\n\t\tif (this._task.data[this._level.getActiveMapIndex()])\n\t\t\tthis._updateCellsInputString(this._task.data[this._level.getActiveMapIndex()]);\n\t\telse\n\t\t\tthis._updateCellsInputValue();\n\t},\n\n\t_updateCellsInputValue: function()\n\t{\n\t\tvar map = this._level.activeMap;\n\n\t\tthis._cellsTaskArray = [];\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\n\t\t\t\tif (map.element(p).getType() >= PhysicalRobotMapElementType.NullElement &&\n map.element(p).getType() <= PhysicalRobotMapElementType.NineElement)\n\t\t\t\t{\n\t\t\t\t\tthis._cellsTaskArray.push(map.element(p).getType());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._cellsTaskArray.sort();\n\t\tthis._updateCellsInputString(this._cellsTaskArray);\n\t\tthis._task.data[this._level.getActiveMapIndex()] = this._cellsTaskArray;\n\t},\n\n\t_updateTaskFromInput: function()\n\t{\n\t\tvar array = [];\n\n\t\tfor (var i = 0; i < this._cellsInput.getString().length; ++i)\n\t\t\tarray.push(Number(this._cellsInput.getString()[i]));\n\n\t\tthis._task.data[this._level.getActiveMapIndex()] = array;\n\t},\n\n\t_updateCellsInputString: function(taskArray)\n\t{\n\t\tvar string = \"\";\n\n\t\tfor (var i = 0; i < taskArray.length; ++i)\n\t\t\tstring += taskArray[i];\n\n\t\tthis._cellsInput.setString(string);\n\t}\n});\n\nPhysicalTaskLayer.WIDTH_DELTA = 70.0;\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class 2D Level where robots can carry objects.\n * @implements pm.AbstractLevel\n */\npm.data.TrainLevel = pm.AbstractLevel.extend(/** @lends pm.data.TrainLevel# */{\n\ttypeName: \"TrainLevel\",\n\t/**\n\t * Robots can be indicated.\n\t * @type {Boolean}\n\t */\n\trobotsCanBeIndicated: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.TrainLevelModule.Type; }\n\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class 2D map for {@link pm.data.TrainLevel}\n * @implements SquarableMapWithWalls\n */\npm.data.TrainMap = SquarableMapWithWalls.extend(/** @lends pm.data.TrainMap# */{\n\ttypeName: \"TrainMap\",\n\n\t_trainTargetElements: [],\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_trainTargetElements\");\n\n\t\tthis._super();\n\t},\n\n\tload: function()\n\t{\n\t\tSquarableMap.prototype.load.call(this);\n\n\t\tthis.updateTrainTargetElements(); \n\t},\n\n\tupdateTrainTargetElements: function()\n\t{\n\t\tthis._trainTargetElements = [];\n\n\t\tfor (var x = 0; x < this.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this.height; ++y)\n\t\t\t{\n\t\t\t\tif (this.element(cc.p(x, y)).originalType !== TrainMapElementType.Grass)\n\t\t\t\t{\n\t\t\t\t\tthis._trainTargetElements.push({\n\t\t\t\t\t\tpoint: cc.p(cc.p(x, y)),\n\t\t\t\t\t\ttype: this.element(cc.p(x, y)).originalType\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tgetType: function()\n\t{\n\t\treturn pm.TrainLevelModule.Type;\n\t},\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new TrainMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new TrainMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.TrainMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Layer for {@link pm.data.TrainMap}.\n * @implements SquarableMapLayerWithWalls\n */\nvar TrainMapLayer = SquarableMapLayerWithWalls.extend(/** @lends TrainMapLayer#*/{\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Iso;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * Types of {@link pm.data.PushMapElement}.\n * @enum {Number}\n * @readonly\n */\nvar TrainMapElementType = {\n\tGrass: 0,\n\tCarTarget: 1,\n\tBarrelTarget: 2,\n\tCommonTarget: 3,\n};\n\n/**\n * @class Elements of {@link pm.data.TrainMap}.\n * @implements pm.MapElement\n */\npm.data.TrainMapElement = pm.MapElement4WithWalls.extend(/** @lends pm.data.TrainapElement# */{\n\ttypeName: \"TrainMapElement\",\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class pm.Task for carrying objects on needed elements.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.TrainTask = pm.Task.extend(/** @ends pm.data.TrainTask# */{\n\ttypeName: \"TrainTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar completed = true;\n\n\t\tvar retArray = [];\n\n\t\tvar point = cc.p();\n\t\tvar type = 0;\n\t\tvar elementObjectType = 0;\n\n\t\tfor(var i = 0; i < map._trainTargetElements.length; ++i)\n\t\t{\n\t\t\tpoint = map._trainTargetElements[i].point;\n\t\t\ttype = map._trainTargetElements[i].type;\n\n\t\t\tif(map.element(point).getObjectCount() === 1)\n\t\t\t{\n\t\t\t\telementObjectType = map.element(point).getObjectByKeyIndex(0).getType();\n\n\t\t\t\tswitch(type)\n\t\t\t\t{\n\t\t\t\t\tcase TrainMapElementType.CarTarget:\n\t\t\t\t\t\tcompleted = elementObjectType === pm.TrainLevelModule.ObjectTypes.TrainCar;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TrainMapElementType.BarrelTarget:\n\t\t\t\t\t\tcompleted = elementObjectType === pm.TrainLevelModule.ObjectTypes.TrainBarrel;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TrainMapElementType.CommonTarget:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcompleted = false;\n\t\t\t}\n\n\t\t\tif(!completed)\n\t\t\t\tretArray.push(map.element(point));\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tmoveDown: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._trainTargetElements.length; ++i)\n\t\t\tmap._trainTargetElements[i].point.y--;\n\t},\n\n\tmoveUp: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._trainTargetElements.length; ++i)\n\t\t\tmap._trainTargetElements[i].point.y++;\n\t},\n\n\tmoveRight: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._trainTargetElements.length; ++i)\n\t\t\tmap._trainTargetElements[i].point.x--;\n\t},\n\n\tmoveLeft: function(mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tfor (var i = 0; i < map._trainTargetElements.length; ++i)\n\t\t\tmap._trainTargetElements[i].point.x++;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class 2D robot\n * @implements PlayerRobot4\n */\npm.data.TrainRobot = PlayerRobot4Walls.extend(/** @lends pm.data.TrainRobot# */{\n\ttypeName: \"TrainRobot\",\n\n\tconnectionSprites: {},\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"connectionSprites\");\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.TrainRobot.NativeMethod.Carry] = new pm.NativeFunction(this, this._carry);\n\t\tthis.nativeFunctionMap[pm.data.TrainRobot.NativeMethod.Magnet] = new pm.NativeFunction(this, this._magnet);\n\t\tthis.nativeFunctionMap[pm.data.TrainRobot.NativeMethod.DisMagnet] = new pm.NativeFunction(this, this._disMagnet);\n\t\tthis.nativeFunctionMap[pm.data.TrainRobot.NativeMethod.MagnetAll] = new pm.NativeFunction(this, this._magnetAll);\n\t\tthis.nativeFunctionMap[pm.data.TrainRobot.NativeMethod.DisMagnetAll] = new pm.NativeFunction(this, this._disMagnetAll);\n\n\t\tthis.nativeFunctions.push(pm.data.TrainRobot.NativeMethod.Carry);\n\t\tthis.nativeFunctions.push(pm.data.TrainRobot.NativeMethod.Magnet);\n\t\tthis.nativeFunctions.push(pm.data.TrainRobot.NativeMethod.DisMagnet);\n\t\tthis.nativeFunctions.push(pm.data.TrainRobot.NativeMethod.MagnetAll);\n\t\tthis.nativeFunctions.push(pm.data.TrainRobot.NativeMethod.DisMagnetAll);\n\n\t\tthis.conditions.push(pm.data.TrainRobot.Condition.CanLink);\n\t\tthis.conditionOpposites.push(pm.data.TrainRobot.Condition.CanNotLink);\n\t\tthis.conditions.push(pm.data.TrainRobot.Condition.CanDislink);\n\t\tthis.conditionOpposites.push(pm.data.TrainRobot.Condition.CanNotDislink);\n\t},\n\n\treset: function()\n\t{\n\t\tif(this.getMap().mapLayer)\n\t\t{\n\t\t\tthis.getMap().mapLayer.objectLayer.stopAllActions();\n\t\t}\n\t\tPlayerRobot4.prototype.reset.call(this);\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\tvar element = this.getMap().element(target);\n\n\t\treturn !element.walls[(direction + this.getDirectionCount()/2) % this.getDirectionCount()] &&\n element.getObjectCount() === 0;\n\t},\n\n\t_move: function()\n\t{\n\t\tthis._disconnectFromTrain();\n\n\t\tvar nextPos = this.getMap().getNextDirectionalElementPosition(this.position, this.direction);\n\t\tthis._moveTo(nextPos, false);\n\t},\n\n\t_carry: function()\n\t{\n\t\tvar nextPos = this.getMap().getNextDirectionalElementPosition(this.position, this.direction);\n\t\tvar objectPosition = this.position;\n\n\t\tvar wasBroken = this.isBroken();\n\n\t\tif (wasBroken || this.isBroken())\n\t\t\treturn;\n\n\t\tvar train = this._findTrain();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\tvar animations = new pm.AnimationTransaction();\n\n this._moveTo(nextPos, false, undefined, true);\n if (this.isBroken())\n \treturn;\n\n\t\tanimations.addAnimationToPart(this, RobotAnimation2D.Move, this._endMove, this.position);\n\n var nextPosType = cc.p(0,0);\n switch(this.direction)\n {\n case MapDirection4.Up: nextPosType.y--; break;\n case MapDirection4.Left: nextPosType.x--; break;\n case MapDirection4.Down: nextPosType.y++; break;\n case MapDirection4.Right: nextPosType.x++; break;\n }\n\n\t\tvar car;\n var j = 0;\n\n\t\tfor (var i = 0; i < train.length; ++i)\n\t\t{\n\t\t\tcar = train[i];\n\n\t\t\tcar.magnetRobotId = this.id;\n\n\t\t\tvar oldObjectPosition = car.position;\n\n\t\t\tcar.moveTo(objectPosition);\n\n\t\t\tif (!(objectPosition.x - oldObjectPosition.x === nextPosType.x\n\t\t\t\t&& objectPosition.y - oldObjectPosition.y === nextPosType.y))\n\t\t\t{\n\t\t\t\tnextPosType = cc.p(objectPosition.x - oldObjectPosition.x, objectPosition.y - oldObjectPosition.y);\n\t\t\t\tanimations.spawn.push(cc.callFunc(function (target, k) {\n\t\t\t\t\ttrain[k].setConnectionSpritesAtPosition(train[k].position, train[k].oldPosition, false);\n\n\t\t\t\t\tif (k > 0)\n\t\t\t\t\t\ttrain[k - 1].setConnectionSpritesAtPosition(\n\t\t\t\t\t\t\ttrain[k].oldPosition, train[k - 1].oldPosition, false);\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\ttrain[0].connectionSprites[MapDirection4.Right].setVisible(false);\n\t\t\t\t\t\ttrain[0].connectionSprites[MapDirection4.Down].setVisible(false);\n\t\t\t\t\t}\n\t\t\t\t}, this, i));\n\t\t\t\tanimations.addPart();\n\t\t\t\tanimations.spawn.push(cc.callFunc(this._recalculateSprites, this, [j, i]));\n\t\t\t\tj = i;\n\t\t\t\tanimations.addPart();\n\t\t\t}\n\n\t\t\tanimations.addAnimationToPart(car, TrainObjectAnimation.Move, car._endMoving, car.position);\n\n\t\t\tobjectPosition = oldObjectPosition;\n\t\t}\n\n\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n {\n\t\t\tanimations.addPart();\n\t\t\tanimations.spawn.push(cc.callFunc(this._recalculateSprites, this, [j, train.length]));\n\t\t\tanimations.addPart();\n\n\t\t\tthis.getMap().mapLayer.objectLayer.runAction(cc.sequence(animations.sequence));\n }\n\t},\n\n\t_reverseCarry: function(target)\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tvar car = train[train.length - 1];\n\n\t\tvar animations = new pm.AnimationTransaction();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null || train[0].position === train[0].oldPosition)\n\t\t{\n\t\t\tthis.position = target;\n\t\t\ttrain = this._findTrain();\n\t\t\tthis.position = this._oldPosition;\n\n\t\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t\t{\n\t\t\t\tthis.playAnimation(RobotAnimation2D.Move, this._endMove, target);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tanimations.addAnimationToPart(this, RobotAnimation2D.Move, this._endMove, target);\n\t\t\tanimations.addPart();\n\n\t\t\tanimations.spawn.push(cc.callFunc(function (target, pos) {\n\t\t\t\ttrain[0].setConnectionSpritesAtPosition(pos);\n\t\t\t\ttrain[0].setConnectionSpritesAtPositionRightDown(pos);\n\t\t\t}, this, target));\n\n\t\t\tanimations.addPart();\n\n\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\tthis.getMap().mapLayer.objectLayer.runAction(cc.sequence(animations.sequence));\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar objectPosition = car.position;\n\n\t\tvar nextPosType = cc.p(car.position.x - car.oldPosition.x, car.position.y - car.oldPosition.y);\n\n\t\tthis._reverseRecalculateSprites();\n\n\t\tvar j = train.length;\n\n\t\tfor (var i = train.length - 1; i >= 0; --i)\n\t\t{\n\t\t\tcar = train[i];\n\n\t\t\tvar oldObjectPosition = car.oldPosition;\n\n\t\t\tif (!(objectPosition.x - oldObjectPosition.x === nextPosType.x\n\t\t\t\t&& objectPosition.y - oldObjectPosition.y === nextPosType.y))\n\t\t\t{\n\t\t\t\tnextPosType = cc.p(objectPosition.x - oldObjectPosition.x, objectPosition.y - oldObjectPosition.y);\n\t\t\t\tanimations.spawn.push(cc.callFunc(function (target, k) {\n\t\t\t\t\ttrain[k].setConnectionSpritesAtPosition(train[k].position, train[k].oldPosition, false);\n\n\t\t\t\t\tif (k + 1 < train.length)\n\t\t\t\t\t\ttrain[k + 1].setConnectionSpritesAtPosition(\n\t\t\t\t\t\t\ttrain[k].oldPosition, train[k + 1].oldPosition, false);\n\t\t\t\t}, this, i));\n\t\t\t\tanimations.addPart();\n\t\t\t\tanimations.spawn.push(cc.callFunc(this._reverseRecalculateSprites, this, [i + 1, j]));\n\t\t\t\tj = i + 1;\n\t\t\t\tanimations.addPart();\n\t\t\t}\n\n\t\t\tanimations.addAnimationToPart(car, TrainObjectAnimation.Move, car._endMoving, car.position);\n\n\t\t\tobjectPosition = oldObjectPosition;\n\t\t}\n\n\t\tif (!(oldObjectPosition.x - this.position.x === nextPosType.x\n\t\t\t&& oldObjectPosition.y - this.position.y === nextPosType.y))\n\t\t{\n\t\t\tanimations.spawn.push(cc.callFunc(function () {\n\t\t\t\ttrain[0].setConnectionSpritesAtPosition(this._oldPosition, train[0].oldPosition, false);\n\t\t\t\ttrain[0].setConnectionSpritesAtPositionRightDown(this._oldPosition, train[0].oldPosition, false);\n\t\t\t}, this));\n\t\t\tanimations.addPart();\n\t\t\tanimations.spawn.push(cc.callFunc(this._reverseRecalculateSprites, this, [i + 1, j]));\n\t\t\tanimations.addPart();\n\t\t}\n\n\t\tanimations.addAnimationToPart(this, RobotAnimation2D.Move, this._endMove, target);\n\n\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n {\n\t\t\tanimations.addPart();\n\t\t\tanimations.spawn.push(cc.callFunc(this._reverseRecalculateSprites, this, [0, j]));\n\t\t\tanimations.addPart();\n\n\t\t\tthis.getMap().mapLayer.objectLayer.runAction(cc.sequence(animations.sequence));\n }\n\t},\n\n\t_findTrain: function()\n\t{\n\t\tvar map = this.getMap();\n\t\tvar lastCar = null;\n\t\tvar preLastCar = null;\n\n\t\tvar firstCar = null;\n\t\tvar inverse = false;\n\n\t\tvar train = [];\n\n\t\tvar x1, y1, x2, y2, x3, y3;\n\n\t\tswitch(this.direction)\n\t\t{\n\t\t\tcase MapDirection4.Up:\n\t\t\t\tx1 = this.position.x;\n\t\t\t\ty1 = this.position.y+1;\n\t\t\t\tx2 = this.position.x+1;\n\t\t\t\ty2 = this.position.y;\n\t\t\t\tx3 = this.position.x-1;\n\t\t\t\ty3 = this.position.y;\n\t\t\t\tbreak;\n\t\t\tcase MapDirection4.Left:\n\t\t\t\tx1 = this.position.x+1;\n\t\t\t\ty1 = this.position.y;\n\t\t\t\tx2 = this.position.x;\n\t\t\t\ty2 = this.position.y-1;\n\t\t\t\tx3 = this.position.x;\n\t\t\t\ty3 = this.position.y+1;\n\t\t\t\tbreak;\n\t\t\tcase MapDirection4.Down:\n\t\t\t\tx1 = this.position.x;\n\t\t\t\ty1 = this.position.y-1;\n\t\t\t\tx2 = this.position.x-1;\n\t\t\t\ty2 = this.position.y;\n\t\t\t\tx3 = this.position.x+1;\n\t\t\t\ty3 = this.position.y;\n\t\t\t\tbreak;\n\t\t\tcase MapDirection4.Right:\n\t\t\t\tx1 = this.position.x-1;\n\t\t\t\ty1 = this.position.y;\n\t\t\t\tx2 = this.position.x;\n\t\t\t\ty2 = this.position.y+1;\n\t\t\t\tx3 = this.position.x;\n\t\t\t\ty3 = this.position.y-1;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar trainExists = false;\n\n\t\tfor (var i = 0; i < 3; ++i)\n\t\t{\n\t\t\tvar elem = null;\n\n\t\t\tif (i === 0)\n\t\t\t\telem = map.element(cc.p(x1, y1));\n\t\t\telse if (i === 1)\n\t\t\t\telem = map.element(cc.p(x2, y2));\n\t\t\telse\n\t\t\t\telem = map.element(cc.p(x3, y3));\n\n\t\t\tif (!elem)\n\t\t\t\tcontinue;\n\n\t\t\tfor (var o in elem._objectsHere)\n\t\t\t{\n\t\t\t\tvar curObject = elem._objectsHere[o];\n\n\t\t\t\tif (curObject.firstForRobotId === this.id)\n\t\t\t\t{\n\t\t\t\t\tfirstCar = curObject;\n\t\t\t\t\ttrain.push(firstCar);\n\t\t\t\t\ttrainExists = true;\n\t\t\t\t\ti = 4;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(!trainExists)\n\t\t{\n\t\t\tfor (var i = 0; i < 3; ++i)\n\t\t\t{\n\t\t\t\tvar elem = null;\n\n\t\t\t\tif (i === 0)\n\t\t\t\t\telem = map.element(cc.p(x1, y1));\n\t\t\t\telse if (i === 1)\n\t\t\t\t\telem = map.element(cc.p(x2, y2));\n\t\t\t\telse\n\t\t\t\t\telem = map.element(cc.p(x3, y3));\n\n\t\t\t\tif (!elem)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfor (var o in elem._objectsHere)\n\t\t\t\t{\n\t\t\t\t\tvar curObject = elem._objectsHere[o];\n\n\t\t\t\t\tif (curObject.magnetRobotId !== null)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (curObject.parentObject && curObject.childObject)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (!curObject.childObject && curObject.isMagnet)\n\t\t\t\t\t{\n\t\t\t\t\t\tfirstCar = curObject;\n\t\t\t\t\t\ttrain.push(firstCar);\n\t\t\t\t\t\tinverse = true;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!curObject.parentObject && curObject.isMagnet)\n\t\t\t\t\t{\n\t\t\t\t\t\tfirstCar = curObject;\n\t\t\t\t\t\ttrain.push(firstCar);\n\t\t\t\t\t\tinverse = false;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(!train[0].childObject && train[0].parentObject)\n\t\t\t\tinverse = true;\n\t\t}\n\n\t\tif (firstCar)\n\t\t{\n\t\t\tlastCar = firstCar;\n\n\t\t\tif (!inverse)\n\t\t\t{\n\t\t\t\twhile (firstCar.childObject)\n\t\t\t\t{\n\t\t\t\t\tpreLastCar = firstCar;\n\t\t\t\t\tlastCar = firstCar.childObject;\n\t\t\t\t\ttrain.push(lastCar);\n\t\t\t\t\tfirstCar = lastCar;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twhile (firstCar.parentObject)\n\t\t\t\t{\n\t\t\t\t\tpreLastCar = firstCar;\n\t\t\t\t\tlastCar = firstCar.parentObject;\n\t\t\t\t\ttrain.push(lastCar);\n\t\t\t\t\tfirstCar = lastCar;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (inverse && train.length > 0)\n\t\t{\n\t\t\tfor (var i = 1; i < train.length - 1; ++i)\n\t\t\t{\n\t\t\t\ttrain[i].childObject = train[i+1];\n\t\t\t\ttrain[i].parentObject = train[i-1];\n\t\t\t}\n\t\t\tif(train.length > 1)\n\t\t\t{\n\t\t\t\ttrain[0].childObject = train[1];\n\t\t\t\ttrain[train.length - 1].parentObject = train[train.length -2];\n\t\t\t}\n\t\t\ttrain[0].parentObject = null;\n\t\t\ttrain[train.length - 1].childObject = null;\n\t\t}\n\n\t\treturn train;\n\t},\n\n\t_magnet: function(checkCondition)\n\t{\n\t\tif (checkCondition === undefined)\n\t\t\tcheckCondition = false;\n\n\t\tvar map = this.getMap();\n\t\tvar lastCar = null;\n\t\tvar preLastCar = null;\n\n\t\tvar train = this._findTrain();\n\n\t\tvar x1, x2, x3, y1, y2, y3, dir1, dir2, dir3;\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t{\n\t\t\tswitch(this.direction)\n\t\t\t{\n\t\t\t\tcase MapDirection4.Up:\n\t\t\t\t\tx1 = this.position.x;\n\t\t\t\t\ty1 = this.position.y+1;\n\t\t\t\t\tx2 = this.position.x+1;\n\t\t\t\t\ty2 = this.position.y;\n\t\t\t\t\tx3 = this.position.x-1;\n\t\t\t\t\ty3 = this.position.y;\n\t\t\t\t\tdir1 = MapDirection4.Down;\n\t\t\t\t\tdir2 = MapDirection4.Right;\n\t\t\t\t\tdir3 = MapDirection4.Left;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Left:\n\t\t\t\t\tx1 = this.position.x+1;\n\t\t\t\t\ty1 = this.position.y;\n\t\t\t\t\tx2 = this.position.x;\n\t\t\t\t\ty2 = this.position.y-1;\n\t\t\t\t\tx3 = this.position.x;\n\t\t\t\t\ty3 = this.position.y+1;\n\t\t\t\t\tdir1 = MapDirection4.Right;\n\t\t\t\t\tdir2 = MapDirection4.Up;\n\t\t\t\t\tdir3 = MapDirection4.Down;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Down:\n\t\t\t\t\tx1 = this.position.x;\n\t\t\t\t\ty1 = this.position.y-1;\n\t\t\t\t\tx2 = this.position.x-1;\n\t\t\t\t\ty2 = this.position.y;\n\t\t\t\t\tx3 = this.position.x+1;\n\t\t\t\t\ty3 = this.position.y;\n\t\t\t\t\tdir1 = MapDirection4.Up;\n\t\t\t\t\tdir2 = MapDirection4.Left;\n\t\t\t\t\tdir3 = MapDirection4.Right;\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapDirection4.Right:\n\t\t\t\t\tx1 = this.position.x-1;\n\t\t\t\t\ty1 = this.position.y;\n\t\t\t\t\tx2 = this.position.x;\n\t\t\t\t\ty2 = this.position.y+1;\n\t\t\t\t\tx3 = this.position.x;\n\t\t\t\t\ty3 = this.position.y-1;\n\t\t\t\t\tdir1 = MapDirection4.Left;\n\t\t\t\t\tdir2 = MapDirection4.Down;\n\t\t\t\t\tdir3 = MapDirection4.Up;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar found = false;\n\n\t\t\tfor (var i = 0; i < 3; ++i)\n\t\t\t{\n\t\t\t\tvar elem = null;\n\t\t\t\tvar dir = -1;\n\n\t\t\t\tif (i === 0)\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x1, y1));\n\t\t\t\t\tdir = dir1;\n\t\t\t\t}\n\t\t\t\telse if (i === 1)\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x2, y2));\n\t\t\t\t\tdir = dir2;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x3, y3));\n\t\t\t\t\tdir = dir3;\n\t\t\t\t}\n\n\t\t\t\tif (!elem)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfor (var o in elem._objectsHere)\n\t\t\t\t{\n\t\t\t\t\tvar object = elem._objectsHere[o];\n\n\t\t\t\t\tif (this.getMap().element(this.position).walls[dir])\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (object.magnetRobotId !== null && object.magnetRobotId !== this.id)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (object.parentObject && object.childObject)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (!checkCondition)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (train.length === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tobject.childObject = null;\n\t\t\t\t\t\t\tobject.parentObject = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tobject.firstForRobotId = this.id;\n\n\t\t\t\t\t\tobject.isMagnet = true;\n\n\t\t\t\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tobject.setConnectionSpritesAtPosition(this.position);\n\t\t\t\t\t\t\tobject.setConnectionSpritesAtPositionRightDown(this.position);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfound = true;\n\n\t\t\t\t\ti = 4;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!found)\n\t\t\t{\n\t\t\t\tif (!checkCondition)\n\t\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlastCar = train[train.length - 1];\n\n\t\t\tif (train.length === 1)\n\t\t\t\tpreLastCar = this;\n\t\t\telse\n\t\t\t\tpreLastCar = train[train.length - 2];\n\n\t\t\tvar x = lastCar.position.x;\n\t\t\tvar y = lastCar.position.y;\n\n\t\t\tif (preLastCar.position.x === x)\n\t\t\t{\n\t\t\t\tif (preLastCar.position.y > y)\n\t\t\t\t{\n\t\t\t\t\tx1 = x;\n\t\t\t\t\ty1 = y - 1;\n\t\t\t\t\tx2 = x - 1;\n\t\t\t\t\ty2 = y;\n\t\t\t\t\tx3 = x + 1;\n\t\t\t\t\ty3 = y;\n\t\t\t\t\tdir1 = MapDirection4.Up;\n\t\t\t\t\tdir2 = MapDirection4.Left;\n\t\t\t\t\tdir3 = MapDirection4.Right;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tx1 = x;\n\t\t\t\t\ty1 = y + 1;\n\t\t\t\t\tx2 = x + 1;\n\t\t\t\t\ty2 = y;\n\t\t\t\t\tx3 = x - 1 ;\n\t\t\t\t\ty3 = y;\n\t\t\t\t\tdir1 = MapDirection4.Down;\n\t\t\t\t\tdir2 = MapDirection4.Right;\n\t\t\t\t\tdir3 = MapDirection4.Left;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (preLastCar.position.y === y)\n\t\t\t{\n\t\t\t\tif (preLastCar.position.x > x)\n\t\t\t\t{\n\t\t\t\t\tx1 = x - 1;\n\t\t\t\t\ty1 = y;\n\t\t\t\t\tx2 = x;\n\t\t\t\t\ty2 = y + 1;\n\t\t\t\t\tx3 = x;\n\t\t\t\t\ty3 = y - 1 ;\n\t\t\t\t\tdir1 = MapDirection4.Left;\n\t\t\t\t\tdir2 = MapDirection4.Down;\n\t\t\t\t\tdir3 = MapDirection4.Up;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tx1 = x + 1 ;\n\t\t\t\t\ty1 = y;\n\t\t\t\t\tx2 = x ;\n\t\t\t\t\ty2 = y - 1;\n\t\t\t\t\tx3 = x;\n\t\t\t\t\ty3 = y + 1;\n\t\t\t\t\tdir1 = MapDirection4.Right;\n\t\t\t\t\tdir2 = MapDirection4.Up;\n\t\t\t\t\tdir3 = MapDirection4.Down;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar found = false;\n\n\t\t\tfor (var i = 0; i < 3; ++i)\n\t\t\t{\n\t\t\t\tvar elem = null;\n\n\t\t\t\tif (i === 0)\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x1, y1));\n\t\t\t\t\tdir = dir1;\n\t\t\t\t}\n\t\t\t\telse if (i === 1)\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x2, y2));\n\t\t\t\t\tdir = dir2;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\telem = map.element(cc.p(x3, y3));\n\t\t\t\t\tdir = dir3;\n\t\t\t\t}\n\n\t\t\t\tif (!elem)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tfor (var o in elem._objectsHere)\n\t\t\t\t{\n\t\t\t\t\tvar object = elem._objectsHere[o];\n\n\t\t\t\t\tif (this.getMap().element(lastCar.position).walls[dir])\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (object.magnetRobotId !== null)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (object.parentObject && object.childObject)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\tif (!object.parentObject && !lastCar.childObject)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!checkCondition)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlastCar.childObject = object;\n\t\t\t\t\t\t\tobject.parentObject = lastCar;\n\n\t\t\t\t\t\t\tobject.isMagnet = true;\n\n\t\t\t\t\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tobject.setConnectionSpritesAtPosition(lastCar.position);\n\t\t\t\t\t\t\t\tlastCar.setConnectionSpritesAtPosition(object.position);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!object.childObject && !lastCar.parentObject)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!checkCondition)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlastCar.parentObject = object;\n\t\t\t\t\t\t\tobject.childObject = lastCar;\n\n\t\t\t\t\t\t\tobject.isMagnet = true;\n\n\t\t\t\t\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tobject.setConnectionSpritesAtPosition(lastCar.position);\n\t\t\t\t\t\t\t\tlastCar.setConnectionSpritesAtPosition(object.position);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse if (object.parentObject && !lastCar.childObject)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!checkCondition)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar tempTrain = [];\n\t\t\t\t\t\t\ttempTrain.push(object);\n\t\t\t\t\t\t\tvar tempObject = object.parentObject;\n\n\t\t\t\t\t\t\twhile (tempObject.parentObject)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttempTrain.push(tempObject);\n\t\t\t\t\t\t\t\ttempObject = tempObject.parentObject;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttempTrain.push(tempObject);\n\n\t\t\t\t\t\t\tfor (var k = 0; k < tempTrain.length; ++k)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar tempCar = tempTrain[k];\n\n\t\t\t\t\t\t\t\tvar temp = tempCar.childObject;\n\t\t\t\t\t\t\t\ttempCar.childObject = tempCar.parentObject;\n\t\t\t\t\t\t\t\ttempCar.parentObject = temp;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlastCar.childObject = object;\n\t\t\t\t\t\t\tobject.parentObject = lastCar;\n\n\t\t\t\t\t\t\tobject.isMagnet = true;\n\n\t\t\t\t\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tobject.setConnectionSpritesAtPosition(lastCar.position);\n\t\t\t\t\t\t\t\tlastCar.setConnectionSpritesAtPosition(object.position);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse if (object.childObject && !lastCar.parentObject)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(!checkCondition)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar tempTrain = [];\n\t\t\t\t\t\t\ttempTrain.push(object);\n\t\t\t\t\t\t\tvar tempObject = object.childObject;\n\n\t\t\t\t\t\t\twhile (tempObject.childObject)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttempTrain.push(tempObject);\n\t\t\t\t\t\t\t\ttempObject = tempObject.childObject;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttempTrain.push(tempObject);\n\n\t\t\t\t\t\t\tfor (var k = 0; k < tempTrain.length; ++k)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar tempCar = tempTrain[k];\n\n\t\t\t\t\t\t\t\tvar temp = tempCar.childObject;\n\t\t\t\t\t\t\t\ttempCar.childObject = tempCar.parentObject;\n\t\t\t\t\t\t\t\ttempCar.parentObject = temp;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlastCar.parentObject = object;\n\t\t\t\t\t\t\tobject.childObject = lastCar;\n\n\t\t\t\t\t\t\tobject.isMagnet = true;\n\n\t\t\t\t\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tobject.setConnectionSpritesAtPosition(lastCar.position);\n\t\t\t\t\t\t\t\tlastCar.setConnectionSpritesAtPosition(object.position);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\ti = 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\ti = 4;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found)\n\t\t\t{\n\t\t\t\tif (!checkCondition)\n\t\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif(checkCondition)\n\t\t\treturn true;\n\n\t\ttrain = this._findTrain();\n\n\t\tfor (var i = 0; i < train.length; ++i)\n\t\t\ttrain[i].magnetRobotId = this.id;\n\n\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t{\n\t\t\tfor (var i = 0; i < train.length; ++i)\n\t\t\t\ttrain[i].sprite.activeSprite.setVisible(true);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_disconnectFromTrain: function ()\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tfor (var i = 0; i < train.length; ++i)\n\t\t{\n\t\t\ttrain[i].magnetRobotId = null;\n\t\t\ttrain[i].sprite.activeSprite.setVisible(false);\n\t\t}\n\n\t\tif (train.length > 0)\n\t\t{\n\t\t\ttrain[0].setConnectionSpritesAtPosition(this.position, train[0].position, false);\n\t\t\ttrain[0].setConnectionSpritesAtPositionRightDown(this.position, train[0].position, false);\n\t\t\ttrain[0].firstForRobotId = null;\n\t\t}\n\t},\n\n\t_disMagnet: function(checkCondition)\n\t{\n\t\tif (checkCondition === undefined)\n\t\t\tcheckCondition = false;\n\n\t\tvar train = this._findTrain();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t{\n\t\t\tif(!checkCondition)\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif(checkCondition)\n\t\t\treturn true;\n\n\t\tvar lastCar = train[train.length - 1];\n\n\t\tlastCar.parentObject = null;\n\t\tlastCar.childObject = null;\n\t\tlastCar.isMagnet = false;\n\t\tlastCar.magnetRobotId = null;\n\t\tlastCar.firstForRobotId = null;\n\n\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t{\n\t\t\tlastCar.connectionSprites[MapDirection4.Left].setVisible(false);\n\t\t\tlastCar.connectionSprites[MapDirection4.Up].setVisible(false);\n\n\t\t\tlastCar.sprite.activeSprite.setVisible(false);\n\t\t}\n\n\t\tif (train.length >= 2)\n\t\t{\n\t\t\tvar preLastCar = train[train.length - 2];\n\n\t\t\tif (preLastCar.childObject && preLastCar.childObject.position.x === lastCar.position.x && preLastCar.childObject.position.y === lastCar.position.y)\n\t\t\t\tpreLastCar.childObject = null;\n\t\t\telse if (preLastCar.parentObject && preLastCar.parentObject.position.x === lastCar.position.x && preLastCar.parentObject.position.y === lastCar.position.y)\n\t\t\t\tpreLastCar.parentObject = null;\n\n\t\t\tif(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t\t\tpreLastCar.setConnectionSpritesAtPosition(lastCar.position, preLastCar.position, false);\n\t\t}\n\t\telse if(!CORE_BUILD && !pm.settings.isAnimationDisabled())\n\t\t{\n\t\t\ttrain[0].connectionSprites[MapDirection4.Right].setVisible(false);\n\t\t\ttrain[0].connectionSprites[MapDirection4.Down].setVisible(false);\n\t\t}\n\t},\n\n\t_magnetAll: function()\n\t{\n\t\twhile(this._magnet(true))\n\t\t\tthis._magnet();\n\t},\n\n\t_disMagnetAll: function()\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\tfor(var i = train.length - 1; i >= 0; --i) {\n\t\t\ttrain[i].parentObject = null;\n\t\t\ttrain[i].childObject = null;\n\t\t\ttrain[i].isMagnet = false;\n\t\t\ttrain[i].magnetRobotId = null;\n\t\t\ttrain[i].firstForRobotId = null;\n\n\t\t\tif (!CORE_BUILD && !pm.settings.isAnimationDisabled()) {\n\t\t\t\ttrain[i].connectionSprites[MapDirection4.Left].setVisible(false);\n\t\t\t\ttrain[i].connectionSprites[MapDirection4.Up].setVisible(false);\n\n\t\t\t\ttrain[i].sprite.activeSprite.setVisible(false);\n\t\t\t}\n\t\t}\n\n\t\ttrain[0].connectionSprites[MapDirection4.Right].setVisible(false);\n\t\ttrain[0].connectionSprites[MapDirection4.Down].setVisible(false);\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tif (condition === pm.data.TrainRobot.Condition.CanNotLink)\n\t\t{\n\t\t\tvar flag = this._magnet(true);\n\n\t\t\tif (!flag)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\t\telse if (condition === pm.data.TrainRobot.Condition.CanLink)\n\t\t{\n\t\t\tvar flag = this._magnet(true);\n\n\t\t\tif (flag)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\t\telse if (condition === pm.data.TrainRobot.Condition.CanDislink)\n\t\t{\n\t\t\tvar flag = this._disMagnet(true);\n\n\t\t\tif (flag)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\t\telse if (condition === pm.data.TrainRobot.Condition.CanNotDislink)\n\t\t{\n\t\t\tvar flag = this._disMagnet(true);\n\n\t\t\tif (!flag)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn PlayerRobot4Walls.prototype._checkConditionInternal.call(this, condition);\n\t\t}\n\t},\n\n\t_recalculateSprites: function(target, indexes)\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t\treturn;\n\n\t\tvar firstIndex;\n\t\tvar lastIndex;\n\n\t\tif (indexes === undefined)\n\t\t{\n\t\t\tfirstIndex = 0;\n\t\t\tlastIndex = train.length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfirstIndex = indexes[0];\n\t\t\tlastIndex = indexes[1];\n\t\t}\n\n\t\tif (firstIndex === 0)\n\t\t{\n\t\t\ttrain[0].connectionSprites[MapDirection4.Right].setVisible(false);\n\t\t\ttrain[0].connectionSprites[MapDirection4.Down].setVisible(false);\n\n\t\t\ttrain[0].setConnectionSpritesAtPosition(this._oldPosition, train[0].oldPosition);\n\t\t\ttrain[0].setConnectionSpritesAtPositionRightDown(this._oldPosition, train[0].oldPosition);\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttrain[firstIndex - 1].setConnectionSpritesAtPosition(train[firstIndex].position);\n\t\t\ttrain[firstIndex].setConnectionSpritesAtPosition(train[firstIndex - 1].position);\n\t\t}\n\n\t\tif (lastIndex < train.length)\n\t\t{\n\t\t\ttrain[lastIndex].connectionSprites[MapDirection4.Left].setVisible(false);\n\t\t\ttrain[lastIndex].connectionSprites[MapDirection4.Up].setVisible(false);\n\t\t}\n\n\t\tif (lastIndex + 1 < train.length)\n\t\t\ttrain[lastIndex].setConnectionSpritesAtPosition(\n\t\t\t\ttrain[lastIndex + 1].oldPosition, train[lastIndex].oldPosition);\n\t},\n\n\t_reverseRecalculateSprites: function(target, indexes)\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tif (train.length === 0 || train[0].magnetRobotId === null)\n\t\t\treturn;\n\n\t\tvar firstIndex;\n\t\tvar lastIndex;\n\n\t\tif (indexes === undefined)\n\t\t{\n\t\t\tfirstIndex = 0;\n\t\t\tlastIndex = train.length;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfirstIndex = indexes[0];\n\t\t\tlastIndex = indexes[1];\n\t\t}\n\n\t\tfor (var i = lastIndex - 1; i >= firstIndex; --i)\n\t\t{\n\t\t\ttrain[i].connectionSprites[MapDirection4.Left].setVisible(false);\n\t\t\ttrain[i].connectionSprites[MapDirection4.Up].setVisible(false);\n\n\t\t\tif (i + 1 < train.length)\n\t\t\t\ttrain[i].setConnectionSpritesAtPosition(train[i + 1].oldPosition, train[i].oldPosition);\n\n\t\t\tif (i > firstIndex)\n\t\t\t\ttrain[i].setConnectionSpritesAtPosition(train[i - 1].oldPosition, train[i].oldPosition);\n\t\t}\n\n\t\tif (lastIndex < train.length)\n\t\t\ttrain[lastIndex].setConnectionSpritesAtPosition(train[lastIndex - 1].position);\n\n\t\tif (firstIndex > 0)\n\t\t{\n\t\t\ttrain[firstIndex - 1].connectionSprites[MapDirection4.Left].setVisible(false);\n\t\t\ttrain[firstIndex - 1].connectionSprites[MapDirection4.Up].setVisible(false);\n\t\t}\n\n\t\tif (firstIndex - 1 > 0)\n\t\t\ttrain[firstIndex - 1].setConnectionSpritesAtPosition(\n\t\t\t\ttrain[firstIndex - 2].oldPosition, train[firstIndex - 1].oldPosition);\n\n\t\tif (firstIndex <= 1)\n\t\t{\n\t\t\ttrain[0].connectionSprites[MapDirection4.Right].setVisible(false);\n\t\t\ttrain[0].connectionSprites[MapDirection4.Down].setVisible(false);\n\n\t\t\ttrain[0].setConnectionSpritesAtPosition(this._oldPosition, train[0].oldPosition);\n\t\t\ttrain[0].setConnectionSpritesAtPositionRightDown(this._oldPosition, train[0].oldPosition);\n\t\t}\n\t},\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new TrainRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_turn: function(newDirection)\n\t{\n\t\tvar train = this._findTrain();\n\n\t\tif(!(train.length === 0 || train[0].magnetRobotId === null))\n\t\t{\n\t\t\tif(newDirection === MapDirection4.Up && train[0].position.y < this.position.y ||\n\t\t\t\tnewDirection === MapDirection4.Down && train[0].position.y > this.position.y ||\n\t\t\t\tnewDirection === MapDirection4.Left && train[0].position.x < this.position.x ||\n\t\t\t\tnewDirection === MapDirection4.Right && train[0].position.x > this.position.x)\n\t\t\t\tthis._disconnectFromTrain();\n\t\t}\n\n\t\tthis.playAnimation(RobotAnimation2D.Turn, this._endTurn, [this.direction, newDirection]);\n\n\t\tthis.direction = newDirection;\n\t},\n\n\t_turnLeft: function()\n\t{\n\t\tvar newDirection = (this.direction + 1) % this.getDirectionCount();\n\t\tthis._turn(newDirection);\n\t},\n\n\t_turnRight: function()\n\t{\n\t\tvar newDirection = (this.direction + this.getDirectionCount() - 1) % this.getDirectionCount();\n\t\tthis._turn(newDirection);\n\t},\n\n\t_moveTo: function(target, reverse, initialDirection, skipAnimation)\n\t{\n\t\tif(this.isBroken())\n\t\t{\n\t\t\tif(reverse)\n\t\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\n\t\t\tthis.updateSprite();\n\t\t\treturn;\n\t\t}\n\n\t\tvar map = this.getMap();\n\n\t\tvar move = true;\n\n\t\tif(!target)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\tfor(var i in map.element(target)._robotsHere)\n\t\t{\n\t\t\tvar r = map.element(target)._robotsHere[i];\n\n\t\t\tif(!(r instanceof pm.AbstractRobot))\n\t\t\t\tcontinue;\n\n\t\t\tif(!r.canMoveOn())\n\t\t\t{\n\t\t\t\tif(!r.interactable())\n\t\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\tmove = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(move)\n\t\t{\n\t\t\tif (initialDirection === undefined)\n\t\t\t\tinitialDirection = this.direction;\n\n\t\t\tvar direction = reverse ? (initialDirection + this.getDirectionCount()/2) % this.getDirectionCount() : initialDirection;\n\n\t\t\tif(!this._canMoveTo(target, direction) && !reverse)\n\t\t\t{\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!this.isBroken() && !skipAnimation)\n\t\t\t{\n\t\t\t\tif (!reverse)\n\t\t\t\t\tthis.playAnimation(RobotAnimation2D.Move, this._endMove, target);\n\t\t\t\telse\n\t\t\t\t\tthis._reverseCarry(target);\n\t\t\t}\n\n\t\t\tthis._oldPosition = this.position;\n\t\t\tthis.position = target;\n\n\t\t\tmap.element(this.position).addRobot(this);\n\t\t}\n\t\telse if(!this.isBroken())\n\t\t{\n\t\t\tfor(var i in map.element(target)._robotsHere)\n\t\t\t{\n\t\t\t\tvar r = map.element(target)._robotsHere[i];\n\n\t\t\t\tif(!(r instanceof pm.AbstractRobot))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tr.interact(this, this._endInteract);\n\t\t\t}\n\t\t}\n\t},\n\n\tgetType: function() { return pm.TrainLevelModule.RobotTypes.TrainRobot; }\n});\n\npm.data.TrainRobot.NativeMethod = {\n\tCarry: \"push_pull\",\n\tMagnet: \"train_link\",\n\tDisMagnet: \"train_unlink\",\n\tMagnetAll: \"train_link_all\",\n\tDisMagnetAll: \"train_unlink_all\"\n};\n\npm.data.TrainRobot.Condition =\n{\n\tCanLink: \"train_can_link\",\n\tCanNotLink: \"train_can_not_link\",\n\tCanDislink: \"train_can_dislink\",\n\tCanNotDislink: \"train_can_not_dislink\"\n};\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class 2D sprite of {pm.data.TrainRobot}.\n * @implements pm.IsoRobotSprite\n */\nvar TrainRobotSprite = pm.IsoRobotSprite.extend(/** @lends TrainRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/train_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/train_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/train_robot-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/train_robot-broken.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(38, 35);\n\t\tthis._maxPoint = cc.p(38, 5);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(27, 105);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(27, 136);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"train_robot{0}.png\".format(4 * direction);\n\t},\n\n\t_getTurnAnimationName: function(oldDirection, curDirection)\n\t{\n\t\treturn \"train_robot_{0}->{1}\".format(oldDirection, curDirection);\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"train_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"train_robot_i_{0}\".format(direction);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Common interface for objects pushed by {@link pm.data.TrainRobot}\n * @interface\n * @extends pm.Object\n */\nvar TrainObject = pm.Object.extend(/** @lends TrainObject#*/{\n\n\toldPosition: cc.p(),\n\n\tparentObject: null,\n\tchildObject: null,\n\tisMagnet: false,\n\tmagnetRobotId: null,\n\tfirstForRobotId: null,\n\n\tconnectionSprites: {},\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"oldPosition\", \"parentObject\", \"childObject\", \"isMagnet\", \"magnetRobotId\",\n\t\t\t\"firstForRobotId\", \"connectionSprites\");\n\t\tthis.parentObject = null;\n\t\tthis.childObject = null;\n\t\tthis._super();\n\t},\n\n\t/**\n * Sets position of object by element position.\n * @param {cc.Point} point Point in element coordinates.\n */\n\tsetPosition: function(point)\n\t{\n\t\tthis._removeFromCurrentPosition();\n\n\t\tthis.position = point;\n\t\tthis.oldPosition = this.position;\n\n\t\tthis.parentMap.element(point).addObject(this);\n\t},\n\n\t/**\n * Returns if push object is moving\n */\n\tisMoving: function()\n\t{\n\t\treturn this.oldPosition.x !== this.position.x || this.oldPosition.y !== this.position.y;\n\t},\n\n\t/**\n * Moves object to element position.\n\t * @param {cc.Point} target Move coordinate in elements.\n\t * @param {boolean} skipAnimation Need to play animation.\n */\n\tmoveTo: function(target)\n\t{\n\t\tif (this.position.x === target.x && this.position.y === target.y)\n\t\t\treturn;\n\n\t\tthis.oldPosition = this.position;\n\t\tthis.position = target;\n\n\t\tthis.parentMap.element(target).addObject(this);\n\t},\n\n\t_endMoving: function()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\n\t\tthis._removeFromOldPosition();\n\t\tthis.oldPosition = this.position;\n\t},\n\n\t_removeFromOldPosition: function()\n\t{\n\t\tif(this.oldPosition.x < this.parentMap.width && this.oldPosition.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.oldPosition).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.oldPosition).removeObject(this);\n\t\t}\n\t},\n\n\t_removeFromCurrentPosition: function()\n\t{\n\t\tif(this.position.x < this.parentMap.width && this.position.y < this.parentMap.height)\n\t\t{\n\t\t\tif(this.parentMap.element(this.position).containsObject(this))\n\t\t\t\tthis.parentMap.element(this.position).removeObject(this);\n\t\t}\n\t},\n\n\tupdateSprite: function(isBroken)\n\t{\n\t\tif (isBroken === undefined)\n\t\t\tisBroken = false;\n\n\t\tif (!isBroken)\n\t\t{\n\t\t\tthis.sprite.setRealPosition(this.position);\n\n\t\t\tthis._updateConnectionSprites();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sprite.setRealPosition(this.oldPosition);\n\n\t\t\tvar childObjectPosition, parentObjectPosition;\n\t\t\tif (this.childObject)\n\t\t\t\tchildObjectPosition = this.childObject.oldPosition;\n\t\t\tif (this.parentObject)\n\t\t\t\tparentObjectPosition = this.parentObject.oldPosition;\n\n\t\t\tthis._updateConnectionSprites(this.oldPosition, childObjectPosition, parentObjectPosition);\n\t\t}\n\t},\n\n\treset: function ()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t\tthis._removeFromOldPosition();\n\t\tthis.setPosition(this.startPosition);\n\t\tthis.parentObject = null;\n\t\tthis.childObject = null;\n\t\tthis.isMagnet = false;\n\t\tthis.magnetRobotId = null;\n\t\tthis.firstForRobotId = null;\n\n\t\tfor (var s in this.connectionSprites)\n\t\t\tthis.connectionSprites[s].setVisible(false);\n\n\t\tthis.sprite.activeSprite.setVisible(false);\n\t},\n\n\tgenerateSprite: function(previewDraw) {},\n\n\tgenerateObjectConnections: function()\n\t{\n\t\tvar width = this.sprite.sprite.getContentSize().width;\n\t\tvar height = this.sprite.sprite.getContentSize().height;\n\n\t\tthis.connectionSprites[MapDirection4.Left] = new cc.Sprite(\"Objects/TrainObjectConnectionLeftRight.png\");\n\t\tthis.connectionSprites[MapDirection4.Left].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Left].setPosition(cc.p(width * 0.2, height * 0.9));\n\n\t\tthis.sprite.sprite.addChild(this.connectionSprites[MapDirection4.Left]);\n\n\n\t\tthis.connectionSprites[MapDirection4.Right] = new cc.Sprite(\"Objects/TrainObjectConnectionLeftRight.png\");\n\t\tthis.connectionSprites[MapDirection4.Right].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Right].setPosition(cc.p(width * 0.8, height * 0.6));\n\n\t\tthis.sprite.sprite.addChild(this.connectionSprites[MapDirection4.Right]);\n\n\n\t\tthis.connectionSprites[MapDirection4.Up] = new cc.Sprite(\"Objects/TrainObjectConnectionUpDown.png\");\n\t\tthis.connectionSprites[MapDirection4.Up].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Up].setPosition(cc.p(width * 0.8, height * 0.9));\n\n\t\tthis.sprite.sprite.addChild(this.connectionSprites[MapDirection4.Up]);\n\n\n\t\tthis.connectionSprites[MapDirection4.Down] = new cc.Sprite(\"Objects/TrainObjectConnectionUpDown.png\");\n\t\tthis.connectionSprites[MapDirection4.Down].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Down].setPosition(cc.p(width * 0.2, height * 0.6));\n\n\t\tthis.sprite.sprite.addChild(this.connectionSprites[MapDirection4.Down]);\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tposition: this.position,\n\t\t\tparentObject: this.parentObject,\n\t\t\tchildObject: this.childObject,\n\t\t\tisMagnet: this.isMagnet,\n\t\t\tmagnetRobotId: this.magnetRobotId,\n\t\t\tfirstForRobotId: this.firstForRobotId\n\t\t};\n\t},\n\n\tsetState: function (state) {\n\t\tif (this.position !== state.position)\n\t\t\tthis.moveTo(state.position);\n\n\t\tthis.parentObject = state.parentObject;\n\t\tthis.childObject = state.childObject;\n\t\tthis.isMagnet = state.isMagnet;\n\t\tthis.magnetRobotId = state.magnetRobotId;\n\t\tthis.firstForRobotId = state.firstForRobotId;\n\n\t\tthis._updateConnectionSprites();\n\t},\n\n\t_updateConnectionSprites: function(position, childObjectPosition, parentObjectPosition)\n\t{\n\t\tif (position === undefined)\n\t\t\tposition = this.position;\n\n\t\tthis.connectionSprites[MapDirection4.Left].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Up].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Right].setVisible(false);\n\t\tthis.connectionSprites[MapDirection4.Down].setVisible(false);\n\n\t\tif (this.childObject)\n\t\t{\n\t\t\tif(childObjectPosition === undefined)\n\t\t\t\tchildObjectPosition = this.childObject.position;\n\n\t\t\tthis.setConnectionSpritesAtPosition(childObjectPosition, position);\n\t\t}\n\n\t\tif (this.parentObject)\n\t\t{\n\t\t\tif(parentObjectPosition === undefined)\n\t\t\t\tparentObjectPosition = this.parentObject.position;\n\n\t\t\tthis.setConnectionSpritesAtPosition(parentObjectPosition, position);\n\t\t}\n\n\t\tif (this.firstForRobotId !== null)\n\t\t{\n\t\t\tfor (var i = 0; i < this.parentMap.parentLevel.robots.length; ++i)\n\t\t\t{\n\t\t\t\tvar robot = this.parentMap.parentLevel.robots[i];\n\t\t\t\tif (robot.id === this.firstForRobotId)\n\t\t\t\t{\n\t\t\t\t\tthis.setConnectionSpritesAtPosition(robot.position, position);\n\t\t\t\t\tthis.setConnectionSpritesAtPositionRightDown(robot.position, position);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sprite.activeSprite.setVisible(false);\n\n\t\tif (this.magnetRobotId !== null)\n\t\t\tthis.sprite.activeSprite.setVisible(true);\n\t},\n\n\tsetConnectionSpritesAtPosition: function(firstObjectPosition, secondObjectPosition, flag)\n\t{\n\t\tif (flag === undefined)\n\t\t\tflag = true;\n\n\t\tif (secondObjectPosition === undefined)\n\t\t\tsecondObjectPosition = this.position;\n\n\t\tif (secondObjectPosition.x === firstObjectPosition.x)\n\t\t{\n\t\t\tif (secondObjectPosition.y > firstObjectPosition.y)\n\t\t\t\tthis.connectionSprites[MapDirection4.Up].setVisible(flag);\n\t\t}\n\t\telse if (secondObjectPosition.y === firstObjectPosition.y)\n\t\t{\n\t\t\tif (secondObjectPosition.x > firstObjectPosition.x)\n\t\t\t\tthis.connectionSprites[MapDirection4.Left].setVisible(flag);\n\t\t}\n\t},\n\n\tsetConnectionSpritesAtPositionRightDown: function(firstObjectPosition, secondObjectPosition, flag)\n\t{\n\t\tif (flag === undefined)\n\t\t\tflag = true;\n\n\t\tif (secondObjectPosition === undefined)\n\t\t\tsecondObjectPosition = this.position;\n\n\t\tif (secondObjectPosition.x === firstObjectPosition.x)\n\t\t{\n\t\t\tif (secondObjectPosition.y < firstObjectPosition.y)\n\t\t\t\tthis.connectionSprites[MapDirection4.Down].setVisible(flag);\n\t\t}\n\t\telse if (secondObjectPosition.y === firstObjectPosition.y)\n\t\t{\n\t\t\tif (secondObjectPosition.x < firstObjectPosition.x)\n\t\t\t\tthis.connectionSprites[MapDirection4.Right].setVisible(flag);\n\t\t}\n\t},\n\n\tupdateNumberSprite: function ()\n\t{\n\t\tthis.sprite.updateNumber(this.visualId);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n/**\n * Push object sprite animation types.\n * @enum {Number}\n */\nvar TrainObjectAnimation = {Move: 0};\n\n/**\n * @class Common sprite interface for train objects.\n * @interface\n * @extends pm.DynamicSprite\n */\nvar TrainObjectSprite = pm.DynamicSprite.extend(/** @lends TrainObjectSprite#*/{\n\n\t_idNumber: null,\n\t_idSprite: null,\n\n\tactiveSprite: null,\n\n\tctor: function(frame, activeFrame)\n\t{\n\t\tthis._super(frame);\n\n\t\tthis.activeSprite = new cc.Sprite(activeFrame);\n\n\t\tthis.activeSprite.setPosition(cc.p(0,0));\n\t\tthis.activeSprite.setAnchorPoint(cc.p(0,0));\n\t\tthis.activeSprite.setVisible(false);\n\n\t\tthis.sprite.addChild(this.activeSprite);\n\n\t\tthis._idSprite = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(\"commandsNumber\"));\n\n\t\tthis._idSprite.setScaleY(0.35);\n\t\tthis._idSprite.setScaleX(0.75);\n\t\tthis._idSprite.setPosition(this._getIdNumberSpritePosition());\n\t\tthis._idSprite.setAnchorPoint(cc.p(0.6, 0.6));\n\t\tthis._idSprite.setColor(RobotColorList2D.Green);\n\n\t\tthis.sprite.addChild(this._idSprite);\n\n\t\tthis._idNumber = new ccui.Text(\"\", pm.settings.fontBoldName, pm.settings.fontSize);\n\t\tthis._idNumber.setColor(cc.color(1, 1, 180));\n\t\tthis._idNumber.setAnchorPoint(cc.p(0.5, 0.5));\n\n\t\tif (cc.sys.isNative)\n\t\t\tthis._idNumber.setNormalizedPosition(cc.p(0.5, 0.5));\n\t\telse\n\t\t\tthis._idNumber.setNormalizedPosition(cc.p(0.5, 0.42));\n\n\t\tthis._idSprite.addChild(this._idNumber);\n\t},\n\n\tupdateNumber: function(id)\n\t{\n\t\tthis._idNumber.setString(id)\n\t},\n\n\tsetIdVisible: function()\n\t{\n\t\tthis._idSprite.setVisible(false);\n\t},\n\n\tplayAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase TrainObjectAnimation.Move: this._move(args, endCallBack, target); break;\n\t\t}\n\t},\n\n\tgetAnimation: function(endCallBack, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase TrainObjectAnimation.Move: return this._getMoveAnimation(args, endCallBack, target); break;\n\t\t}\n\t},\n\n\t_move: function(target, endCallback, callbackTarget)\n\t{\n\t\tvar sequenceAnimation = this._getMoveAnimation(target, endCallback, callbackTarget);\n\n\t\tthis.sprite.runAction(sequenceAnimation);\n\t},\n\n\t_getMoveAnimation: function(target, endCallback, callbackTarget)\n\t{\n\t\tvar targetPos = this.getRealPosition(target);\n\n\t\tvar moveObject = cc.moveTo(pm.settings.getAnimationSpeed(), targetPos);\n\n\t\tvar moveEnd = cc.callFunc(function() { this._needToUpdateZOrder = false; endCallback.call(callbackTarget); }, this);\n\n\t\tthis._needToUpdateZOrder = true;\n\n\t\treturn cc.sequence(moveObject, moveEnd);\n\t},\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Car object for carrying by {@link pm.data.TrainRobot}\n * @implements PushObject\n */\npm.data.TrainCar = TrainObject.extend(/** @lends pm.data.TrainCar# */{\n\n\ttypeName: \"TrainCar\",\n\n\tgetType: function() { return pm.TrainLevelModule.ObjectTypes.TrainCar; },\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (previewDraw === undefined)\n\t\t\t\tpreviewDraw = false;\n\n\t\t\tthis.sprite = new TrainCarSprite();\n\t\t\tthis.updateNumberSprite();\n\n\t\t\tif (previewDraw)\n\t\t\t\tthis.sprite.setIdVisible();\n\n\t\t\tthis.generateObjectConnections();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n/**\n * @class Sprite for {@link pm.data.TrainCar}\n * @implements PushObjectSprite\n */\nvar TrainCarSprite = TrainObjectSprite.extend(/** @lends TrainCarSprite# */{\n\n\tctor: function()\n\t{\n\t\tthis._super(\"Objects/GreyCar.png\", \"Objects/GreenCar.png\");\n\n\t\tthis._minPoint = cc.p(40, 35);\n\t\tthis._maxPoint = cc.p(this.getSprite().getContentSize().width / 2, 3);\n\t},\n\n\t_getIdNumberSpritePosition: function()\n\t{\n\t\treturn cc.p(39, 60);\n\t}\n});\n","/**\n * Created by MU on 20.04.2020.\n */\n\n/**\n * @class Car object for carrying by {@link pm.data.TrainRobot}\n * @implements PushObject\n */\npm.data.TrainBarrel = TrainObject.extend(/** @lends pm.data.TrainBarrel# */{\n\n\ttypeName: \"TrainBarrel\",\n\n\tgetType: function() { return pm.TrainLevelModule.ObjectTypes.TrainBarrel; },\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (previewDraw === undefined)\n\t\t\t\tpreviewDraw = false;\n\n\t\t\tthis.sprite = new TrainBarrelSprite();\n\t\t\tthis.updateNumberSprite();\n\n\t\t\tif (previewDraw)\n\t\t\t\tthis.sprite.setIdVisible();\n\n\t\t\tthis.generateObjectConnections();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tgenerateObjectConnections: function()\n\t{\n\t\tTrainObject.prototype.generateObjectConnections.call(this);\n\n\t\tvar width = this.sprite.sprite.getContentSize().width;\n\t\tvar height = this.sprite.sprite.getContentSize().height;\n\n\t\tthis.connectionSprites[MapDirection4.Left].setPosition(cc.p(width * 0.1, height * 0.95));\n\t\tthis.connectionSprites[MapDirection4.Right].setPosition(cc.p(width * 0.9, height * 0.6));\n\t\tthis.connectionSprites[MapDirection4.Up].setPosition(cc.p(width * 0.9, height * 0.95));\n\t\tthis.connectionSprites[MapDirection4.Down].setPosition(cc.p(width * 0.1, height * 0.6));\n\t}\n});\n","/**\n * Created by MU on 20.04.2020.\n */\n/**\n * @class Sprite for {@link pm.data.TrainBarrel}\n * @implements PushObjectSprite\n */\nvar TrainBarrelSprite = TrainObjectSprite.extend(/** @lends TrainBarrelSprite# */{\n\n\tctor: function()\n\t{\n\t\tthis._super(\"Objects/GreyBarrel.png\", \"Objects/GreenBarrel.png\");\n\n\t\tthis._minPoint = cc.p(35, 20);\n\t\tthis._maxPoint = cc.p(this.getSprite().getContentSize().width / 2, 3);\n\n\t\tthis._idSprite.setAnchorPoint(cc.p(0.72, 0.95));\n\t},\n\n\t_getIdNumberSpritePosition: function()\n\t{\n\t\treturn cc.p(39, 60);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Functions for TrainLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.TrainLevelModule = pm.ModuleInfo.extend(/** @lends pm.TrainLevelModule# */{\n\n\tname: \"Train\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.TrainLevelModule.Type;\n\t},\n\n\tgetBackgroundParameters: function ()\n\t{\n\t\treturn{\n\t\t\tcolor: cc.color(102, 0, 255),\n\n\t\t\tcenterImage: \"Background/Levels/push_center.png\"\n\t\t};\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.TrainMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = TrainMapElementType.Grass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.TrainLevel();\n\n\t\tlevel.name = \"Паровозик\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.TrainRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.TrainLevelModule.Type] = new pm.data.TrainTask(level);\n\n\t\treturn level;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.TrainLevelModule.RobotTypes.TrainRobot:\n\t\t\t\treturn \"Robot/train_robot.plist\";\n\t\t}\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.TrainLevelModule.ObjectTypes.TrainCar] = \"Objects/GreenCar.png\";\n\t\tret[pm.TrainLevelModule.ObjectTypes.TrainBarrel] = \"Objects/GreenBarrel.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.TrainLevelModule.RobotTypes.TrainRobot] = \"train_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new TrainRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn TrainMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.TrainLevelModule.RobotTypes.TrainRobot:\n\t\t\t\treturn LocalizedString(\"Train\");\n\t\t}\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/push_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn[\n\t\t\t\"Robot Methods/robot4-methods.plist\",\n\t\t\t\"Conditions/robot4-conditions.plist\",\n\t\t\t\"Conditions/push_robot-conditions.plist\",\n\t\t\t\"Robot Methods/pull_robot-methods.plist\",\n\t\t\t\"Robot Methods/train_robot-methods.plist\",\n\t\t\t\"Conditions/train_robot-conditions.plist\"\n\t\t];\n\t},\n\n\tgenerateObject: function (objectType)\n\t{\n\t\tswitch (objectType)\n\t\t{\n\t\t\tcase pm.TrainLevelModule.ObjectTypes.TrainCar:\n\t\t\t\treturn new pm.data.TrainCar();\n\t\t\tcase pm.TrainLevelModule.ObjectTypes.TrainBarrel:\n\t\t\t\treturn new pm.data.TrainBarrel();\n\t\t}\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.TrainLevelModule.RobotTypes.TrainRobot:\n\t\t\t\treturn new pm.data.TrainRobot();\n\t\t}\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Train\": \"Train\",\n\t\t\t\t\t\"TrainLevelType\": \"Train level\",\n\t\t\t\t\t\"TrainTask\": \"Carry objects to targets\",\n\t\t\t\t\t\"train_link\": \"link\",\n\t\t\t\t\t\"train_unlink\": \"unlink\",\n\t\t\t\t\t\"train_link_all\": \"link all\",\n\t\t\t\t\t\"train_unlink_all\": \"unlink all\",\n\t\t\t\t\t\"train_can_link\": \"can link\",\n\t\t\t\t\t\"train_can_not_link\": \"can not link\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Train\": \"Паровозик\",\n\t\t\t\t\t\"TrainLevelType\": \"Паровозик\",\n\t\t\t\t\t\"TrainTask\": \"Развезти предметы\",\n\t\t\t\t\t\"train_link\": \"примагнитить\",\n\t\t\t\t\t\"train_unlink\": \"отмагнитить\",\n\t\t\t\t\t\"train_link_all\": \"примагнитить все\",\n\t\t\t\t\t\"train_unlink_all\": \"отмагнитить все\",\n\t\t\t\t\t\"train_can_link\": \"можно примагнитить\",\n\t\t\t\t\t\"train_can_not_link\": \"нельзя пригмагнитить\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new TrainTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"TrainTask\";\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.TrainTask(level);\n\t\tlevel.taskList.addTask(pm.TrainLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function()\n\t{\n\t\treturn {\n\t\t\thorizontal: pm.spriteUtils.getMapTileFrame(\"push-depth_horizontal\"),\n\t\t\tvertical: pm.spriteUtils.getMapTileFrame(\"push-depth_vertical\")\n\t\t};\n\t},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function() {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.TrainLevelModule.RobotTypes = {TrainRobot: \"train-robot\"};\npm.TrainLevelModule.Type = \"train\";\npm.TrainLevelModule.ObjectTypes = {TrainCar: \"TrainCar\", TrainBarrel: \"TrainBarrel\"};\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\nvar TrainMapEditorLayer = TrainMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.TrainMapElement();\n\t\tel.originalType = TrainMapElementType.Grass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = TrainMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = TrainMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = TrainMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = TrainMapElementType.Grass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\t_addObject: function (pos, object)\n\t{\n\t\tobject.visualId = this._map.objects.length+1;\n\n\t\tSquarableMapEditorLayerHelper._addObject.call(this, pos, object);\n\t},\n\n\t_removeObject: function (object)\n\t{\n\t\tSquarableMapEditorLayerHelper._removeObject.call(this, object);\n\n\t\tfor (var i = this._dragedObject; i < this._map.parentLevel.activeMap.objects.length; ++i)\n\t\t\tthis._map.objects[i].visualId--;\n\n\t\tfor (i = 0; i < this._map.parentLevel.activeMap.objects.length; ++i)\n\t\t\tthis._map.objects[i].updateNumberSprite()\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Layer for push robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar TrainRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends PushRobotSettingsLayer# */{\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Train\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 07.07.2018.\n */\n\n/**\n * @class Layer for train task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PushTask} task\n */\n\nvar TrainTaskLayer = TaskLayer.extend(/** @lends PushTaskLayer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"TrainTask\"), level, task, pm.TrainLevelModule.Type);\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateTaskData.bind(this), this);\n\t},\n\n\t_updateTaskData: function()\n\t{\n\t\tthis._level.activeMap.updateTrainTargetElements();\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D level where robot can paint some kinds({@link KumirMapElementType}) of elements.\n * @extends pm.AbstractLevel\n */\npm.data.KumirLevel = pm.AbstractLevel.extend(/** @lends pm.data.KumirLevel# */{\n\ttypeName: \"KumirLevel\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.KumirLevelModule.Type; }\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D map where robot can paint some kinds({@link KumirMapElementType}) of elements.\n * @implements SquarableMapWithWalls\n */\npm.data.KumirMap = SquarableMapWithWalls.extend(/** @lends pm.data.KumirMap# */{\n\ttypeName: \"KumirMap\",\n\n\t_paintTargetElements: [],\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_paintTargetElements\");\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.KumirLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new KumirMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new KumirMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.KumirMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\t/**\n * Paints element by element coordinate.\n * @param {Number} position in elements.\n */\n\tpaintElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.paint();\n\t},\n\n\t/**\n * Returns element to broken state by element coordinate.\n * @param {Number} x X-coordinate in elements.\n * @param {Number} y Y-coordinate in elements.\n */\n\tunpaintElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.unpaint();\n\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for {@link pm.data.KumirMap}.\n * @implements SquarableMapLayerWithWalls\n */\nvar KumirMapLayer = SquarableMapLayerWithWalls.extend(/** @lends KumirMapLayer#*/{\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Ortho;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn false;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * Painr map element types.\n * @enum {Number}\n * @readonly\n */\nvar KumirMapElementType = {\n\tNone: -1,\n\tLightBlueGrass: 0,\n\tBlueGrass: 1,\n\tUnpaintedGrass: 2\n};\n\n/**\n * @class Elements for {@link pm.data.KumirMap}\n * @implements pm.MapElement\n */\npm.data.KumirMapElement = pm.MapElement4WithWalls.extend(/** @lends pm.data.KumirMapElement# */{\n\ttypeName: \"KumirMapElement\",\n\n\t_radiation: 0,\n\t_radiationLabel: null,\n\t_temperature: 0,\n\t_temperatureLabel: null,\n\t_paintCount: 0,\n\t_paintTarget: false,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_paintCount\", \"_radiationLabel\", \"_temperatureLabel\", \"_paintTarget\");\n\n\t\tthis._super();\n\t},\n\n\tgenerateTerrainSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t\t{\n\t\t\t\tthis.sprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(this._type));\n\n\t\t\t\tthis._notCompletedSprite = new cc.Sprite(\"MapsPics/mapElement_error_selection.png\");\n\n\t\t\t\tthis._notCompletedSprite.setPosition(cc.p(this.sprite.getSprite().getContentSize().width / 2, this.sprite.getSprite().getContentSize().height / 2));\n\t\t\t\tthis._notCompletedSprite.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\t\tthis._notCompletedSprite.setVisible(false);\n\n\t\t\t\tthis.sprite.getSprite().addChild(this._notCompletedSprite, 10);\n\n\t\t\t\tthis._radiationLabel = new ccui.Text(this._radiation, pm.settings.fontName, 16);\n\n\t\t\t\tthis._radiationLabel.setAnchorPoint(cc.p(0, 1));\n\t\t\t\tthis._radiationLabel.setPosition(pm.data.KumirMapElement.TEXT_MARGIN, this.sprite.getSprite().height - pm.data.KumirMapElement.TEXT_MARGIN);\n\n\t\t\t\tthis._temperatureLabel = new ccui.Text(this._temperature, pm.settings.fontName, 16);\n\n\t\t\t\tthis._temperatureLabel.setAnchorPoint(cc.p(1, 1));\n\t\t\t\tthis._temperatureLabel.setPosition(this.sprite.getSprite().width - pm.data.KumirMapElement.TEXT_MARGIN, this.sprite.getSprite().height - pm.data.KumirMapElement.TEXT_MARGIN);\n\n\t\t\t\tif (pm.settings.isEditorMode && !previewDraw)\n\t\t\t\t{\n\t\t\t\t\tthis.sprite.getSprite().addChild(this._radiationLabel, 10);\n\t\t\t\t\tthis.sprite.getSprite().addChild(this._temperatureLabel, 10);\n\t\t\t\t}\n\n\t\t\t\treturn this.sprite;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn pm.MapElement2D.prototype.generateTerrainSprite.call(this)\n\t\t\t}\n\t\t}\n\t},\n\n\trestore: function()\n\t{\n\t\tthis._paintCount = 0;\n\t\tpm.MapElement.prototype.restore.call(this);\n\t},\n\n\t/**\n * Paints element.\n */\n\tpaint: function()\n\t{\n\t\tif(this._type === KumirMapElementType.UnpaintedGrass)\n\t\t\tthis.setType(KumirMapElementType.BlueGrass);\n\t\telse if(this._type === KumirMapElementType.LightBlueGrass)\n\t\t\tthis.setType(KumirMapElementType.BlueGrass);\n\n\t\t++this._paintCount;\n\t},\n\n\t/**\n * Returns element to broken state.\n */\n\tunpaint: function()\n\t{\n\t\t--this._paintCount;\n\n\t\tif(this._paintCount === 0)\n\t\t{\n\t\t\tif (this._type === KumirMapElementType.BlueGrass)\n\t\t\t\tthis.setType(KumirMapElementType.UnpaintedGrass);\n\t\t\telse if (this._type === KumirMapElementType.BlueGrass)\n\t\t\t\tthis.setType(KumirMapElementType.LightBlueGrass);\n\t\t}\n\t},\n\n\t/**\n * Checks is element is painted.\n * @returns {Boolean}\n */\n\tisPainted: function()\n\t{\n\t\treturn this.originalType === KumirMapElementType.UnpaintedGrass && this._type === KumirMapElementType.BlueGrass;\n\t},\n\n\t/**\n\t * Checks is element is bad painted.\n\t * @returns {Boolean}\n\t */\n\tisBadPainted: function()\n\t{\n\t\treturn this.originalType === KumirMapElementType.LightBlueGrass && this._type === KumirMapElementType.BlueGrass && !this._paintTarget;\n\t},\n\n\tisTargetPainted: function()\n\t{\n\t\treturn this._paintTarget && this._type === KumirMapElementType.BlueGrass;\n\t},\n\n\tgetRadiation: function()\n\t{\n\t\treturn this._radiation;\n\t},\n\n\tsetRadiation: function(radiation)\n\t{\n\t\tthis._radiation = radiation;\n\t\tthis._radiationLabel.setString(radiation);\n\t},\n\n\tgetTemperature: function()\n\t{\n\t\treturn this._temperature;\n\t},\n\n\tsetTemperature: function(temperature)\n\t{\n\t\tthis._temperature = temperature;\n\t\tthis._temperatureLabel.setString(temperature);\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tthis.setType(state);\n\t}\n});\n\npm.data.KumirMapElement.TEXT_MARGIN = 8;\npm.data.KumirMapElement.SELECT_ELEMENT_PARAMS = \"select_element_params\";\npm.data.KumirMapElement.LABEL_TAG = 10;\npm.data.KumirMapElement.RADIATION_TAG = 11;\npm.data.KumirMapElement.TEMPERATURE_TAG = 12;\npm.data.KumirMapElement.START_ELEMENT_POS = \"not_completed_element_pos\";\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class pm.Task for painting elements.
\n * Contains number of elements to paint.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.KumirTask = pm.Task.extend(/** @lends pm.data.KumirTask*/ {\n\ttypeName: \"KumirTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar painted = 0;\n\t\tvar badPainted = 0;\n\t\tvar targetPainted = 0;\n\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar retArray = [];\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, y)).isPainted())\n\t\t\t\t\t++painted;\n\t\t\t\telse if (map.element(cc.p(x, y)).isBadPainted())\n\t\t\t\t\t++badPainted;\n\t\t\t\telse if (map.element(cc.p(x, y)).isTargetPainted())\n\t\t\t\t\t++targetPainted;\n\t\t\t}\n\t\t}\n\n\t\tif (!(badPainted === 0 && painted === this.data[mapIndex] && targetPainted === map._paintTargetElements.length))\n\t\t{\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).getType() === KumirMapElementType.UnpaintedGrass)\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\t\t\t\t\telse if (map.element(cc.p(x, y)).isBadPainted())\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\t\t\t\t\telse if(map.element(cc.p(x, y))._paintTarget && !map.element(cc.p(x, y)).isTargetPainted())\n\t\t\t\t\t\tretArray.push(map.element(cc.p(x, y)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = data;\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D robot for {@link pm.data.KumirLevel}.
\n * Has a paint element native function.\n * @implements PlayerRobot4\n */\npm.data.KumirRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.KumirRobot# */{\n\ttypeName: \"KumirRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.Paint] = new pm.NativeFunction(this, this._paint);\n\n\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.MoveUp] = new pm.NativeFunction(this, this._moveUp);\n\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.MoveDown] = new pm.NativeFunction(this, this._moveDown);\n\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.MoveLeft] = new pm.NativeFunction(this, this._moveLeft);\n\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.MoveRight] = new pm.NativeFunction(this, this._moveRight);\n\n\t\tif (pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t{\n\t\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.Temperature] = new pm.NativeFunction(this, this._getTemperature, 0, 1);\n\t\t\tthis.nativeFunctionMap[pm.data.KumirRobot.NativeMethod.Radiation] = new pm.NativeFunction(this, this._getRadiation, 0, 1);\n\t\t}\n\n\t\tthis.nativeFunctions.push(pm.data.KumirRobot.NativeMethod.MoveUp, pm.data.KumirRobot.NativeMethod.MoveDown, pm.data.KumirRobot.NativeMethod.MoveLeft,\n\t\t\tpm.data.KumirRobot.NativeMethod.MoveRight, pm.data.KumirRobot.NativeMethod.Paint);\n\n\t\tif (pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t\tthis.nativeFunctions.push(pm.data.KumirRobot.NativeMethod.Temperature, pm.data.KumirRobot.NativeMethod.Radiation);\n\n\t\tthis.conditions.push(pm.data.KumirRobot.Condition.GrassIsPainted);\n\t\tthis.conditions.push(pm.data.KumirRobot.Condition.ClearUp);\n\t\tthis.conditions.push(pm.data.KumirRobot.Condition.ClearDown);\n\t\tthis.conditions.push(pm.data.KumirRobot.Condition.ClearLeft);\n\t\tthis.conditions.push(pm.data.KumirRobot.Condition.ClearRight);\n\n\t\tthis.conditionOpposites.push(pm.data.KumirRobot.Condition.GrassIsNotPainted);\n\t\tthis.conditionOpposites.push(pm.data.KumirRobot.Condition.WallUp);\n\t\tthis.conditionOpposites.push(pm.data.KumirRobot.Condition.WallDown);\n\t\tthis.conditionOpposites.push(pm.data.KumirRobot.Condition.WallLeft);\n\t\tthis.conditionOpposites.push(pm.data.KumirRobot.Condition.WallRight);\n\t},\n\n\tgetDirectionCount: function() { return 4; },\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new KumirRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_paint: function()\n\t{\n\t\tthis.playAnimation(KumirRobotAnimation.Paint, this._endPaint, 0);\n\t},\n\n\t_unpaint: function()\n\t{\n\t\tthis.playAnimation(KumirRobotAnimation.Paint, this._endUnpaint, 0);\n\t},\n\n\t_endPaint: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.paintElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endUnpaint: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.unpaintElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_moveUp: function()\n\t{\n\t\tthis.direction = 2;\n\n\t\tvar target = cc.p(this.position.x, this.position.y - 1);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Up);\n\t},\n\n\t_moveDown: function()\n\t{\n\t\tthis.direction = 0;\n\n\t\tvar target = cc.p(this.position.x, this.position.y + 1);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Down);\n\t},\n\n\t_moveLeft: function()\n\t{\n\t\tthis.direction = 3;\n\n\t\tvar target = cc.p(this.position.x - 1, this.position.y);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Left);\n\t},\n\n\t_moveRight: function()\n\t{\n\t\tthis.direction = 1;\n\n\t\tvar target = cc.p(this.position.x + 1, this.position.y);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Right);\n\t},\n\n\t_getTemperature: function()\n\t{\n\t\treturn this.parentLevel.activeMap.element(this.position).getTemperature();\n\t},\n\n\t_getRadiation: function()\n\t{\n\t\treturn this.parentLevel.activeMap.element(this.position).getRadiation();\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\tvar map = this.getMap();\n\n\t\treturn !map.element(target).walls[(direction + this.getDirectionCount()/2) % this.getDirectionCount()];\n\t},\n\n\t_checkConditionInternal: function(condition, args)\n\t{\n\t\tvar map = this.getMap();\n\n\t\tif (condition === pm.data.KumirRobot.Condition.GrassIsPainted)\n\t\t{\n\t\t\treturn map.element(this.position).getType() === KumirMapElementType.BlueGrass\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.GrassIsNotPainted)\n\t\t{\n\t\t\treturn map.element(this.position).getType() === KumirMapElementType.LightBlueGrass\n\t\t\t\t|| map.element(this.position).getType() === KumirMapElementType.UnpaintedGrass\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.WallUp)\n\t\t{\n\t\t\treturn this._isNearWall(MapDirection4.Up);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.ClearUp)\n\t\t{\n\t\t\treturn !this._isNearWall(MapDirection4.Up);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.WallDown)\n\t\t{\n\t\t\treturn this._isNearWall(MapDirection4.Down);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.ClearDown)\n\t\t{\n\t\t\treturn !this._isNearWall(MapDirection4.Down);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.WallLeft)\n\t\t{\n\t\t\treturn this._isNearWall(MapDirection4.Left);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.ClearLeft)\n\t\t{\n\t\t\treturn !this._isNearWall(MapDirection4.Left);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.WallRight)\n\t\t{\n\t\t\treturn this._isNearWall(MapDirection4.Right);\n\t\t}\n\t\telse if (condition === pm.data.KumirRobot.Condition.ClearRight)\n\t\t{\n\t\t\treturn !this._isNearWall(MapDirection4.Right);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_isNearWall: function (direction)\n\t{\n\t\treturn this.getMap().element(this.position).walls[direction];\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tposition: this.position,\n\t\t\tdirection: this.direction,\n\t\t\tanimation: this.getLastAnimation()\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state.direction !== this.direction)\n\t\t\tthis.direction = state.direction;\n\n\t\tif (state.position !== this.position || this.isBroken())\n\t\t\tthis._moveTo(state.position, true);\n\t\telse if (state.animation === KumirRobotAnimation.Paint)\n\t\t\tthis._unpaint();\n\t},\n\n\tgetType: function() { return pm.KumirLevelModule.RobotType; }\n});\n\npm.data.KumirRobot.Condition =\n{\n\tGrassIsPainted: \"kumir_gib\",\n\tGrassIsNotPainted: \"kumir_ginb\",\n\n\tWallUp: \"kumir_wall_up\",\n\tWallDown: \"kumir_wall_down\",\n\tWallLeft: \"kumir_wall_left\",\n\tWallRight: \"kumir_wall_right\",\n\n\tClearUp: \"kumir_clear_up\",\n\tClearDown: \"kumir_clear_down\",\n\tClearLeft: \"kumir_clear_left\",\n\tClearRight: \"kumir_clear_right\"\n};\n\npm.data.KumirRobot.NativeMethod =\n{\n\tPaint: \"kumir_paint\",\n\tUnpaint: \"kumir_unpaint\",\n\tMoveUp: \"kumir_move_up\",\n\tMoveDown: \"kumir_move_down\",\n\tMoveLeft: \"kumir_move_left\",\n\tMoveRight: \"kumir_move_right\",\n\tRadiation: \"kumir_radiation\",\n\tTemperature: \"kumir_temperature\"\n};\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n/**\n * Animation type for paint robot.\n * @enum {String}\n * @readonly\n */\nvar KumirRobotAnimation = {Paint: \"paint\"};\n\n/**\n * @class 2D Sprite for {@link pm.data.KumirRobot}\n * @implements pm.IsoRobotSprite\n */\nvar KumirRobotSprite = pm.IsoRobotSprite.extend(/** @lends KumirRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/kumir_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-broken.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-paint.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(24, 26);\n\t\tthis._maxPoint = cc.p(24, 26);\n\n\t\tthis._commandsSprite.setOpacity(0);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(24, 57);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(24, 25);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"kumir_robot0.png\";\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_i_0\";\n\t},\n\n\t//getRealPosition: function(x,y)\n\t//{\n\t// return this.mapLayer.realPosition(x, y, -35, 35);\n\t//},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase KumirRobotAnimation.Paint: this._paint(args, callback, target); break;\n\t\t\tdefault: pm.IsoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_paint: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(\"kumir_robot_p_0\");\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar turnEnd = new cc.CallFunc(endCallback, target);\n\t\tthis.getSprite().runAction( new cc.Sequence(animate, turnEnd));\n\t},\n\n\tsetActive: function(flag)\n\t{\n\t\tthis._activeCircleSprite.setVisible(flag);\n\t\tthis._activeSprite.setVisible(flag);\n\t},\n\n\tshowCommands: function(flag, count)\n\t{\n\t\tif (flag && MethodStackLayer.opened)\n\t\t\treturn;\n\n\t\tif (flag)\n\t\t\tthis._commandsCount.setString(count);\n\n\t\tthis._commandsSprite.setVisible(flag);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Functions for KumirLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.KumirLevelModule = pm.ModuleInfo.extend(/** @lends pm.KumirLevelModule# */{\n\n\tname: \"Kumir\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.KumirLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.KumirMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = KumirMapElementType.LightBlueGrass;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.KumirLevel();\n\n\t\tlevel.name = \"Новый Робот\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.KumirRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.KumirLevelModule.Type] = new pm.data.KumirTask(level);\n\t\tlevel.taskList.tasks[pm.KumirLevelModule.Type].data[0] = 0;\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.KumirLevelModule.RobotType] = \"kumir_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/kumir_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new KumirRobotSettingsLayer(object);\n\t},\n\n\tgetExtraMapSettings: function (target)\n\t{\n\t\tif (pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t{\n\t\t\tvar separator = cc.size(5, 5);\n\t\t\tvar cellSize = cc.size(64, 64);\n\n\t\t\tvar elementMenu = new ccui.Layout();\n\t\t\telementMenu.setLayoutType(ccui.Layout.RELATIVE);\n\t\t\telementMenu.setVisible(false);\n\n\t\t\tvar elementLabel = new ccui.Text(\"\", pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\tlabelAlign.setRelativeName(\"label\");\n\t\t\telementLabel.setLayoutParameter(labelAlign);\n\n\t\t\tvar elementRadiationLabel = new ccui.Text(LocalizedString(\"Radiation\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar radiationLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t\tradiationLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tradiationLabelAlign.setRelativeName(\"radiationLabel\");\n\t\t\tradiationLabelAlign.setRelativeToWidgetName(\"label\");\n\t\t\tradiationLabelAlign.setMargin(0, 10, 0, 0);\n\t\t\telementRadiationLabel.setLayoutParameter(radiationLabelAlign);\n\n\t\t\tvar elementRadiationInput = new pmui.TextInput(\"\", 0, pm.settings.fontSize, 40);\n\n\t\t\tvar radiationInputAlign = new ccui.RelativeLayoutParameter();\n\t\t\tradiationInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tradiationInputAlign.setRelativeToWidgetName(\"radiationLabel\");\n\t\t\tradiationInputAlign.setMargin(5, 0, 0, 0);\n\t\t\telementRadiationInput.setLayoutParameter(radiationInputAlign);\n\n\t\t\tvar elementTemperatureLabel = new ccui.Text(LocalizedString(\"Temperature\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar temperatureLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttemperatureLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\ttemperatureLabelAlign.setRelativeName(\"temperatureLabel\");\n\t\t\ttemperatureLabelAlign.setRelativeToWidgetName(\"radiationLabel\");\n\t\t\ttemperatureLabelAlign.setMargin(0, 15, 0, 0);\n\t\t\telementTemperatureLabel.setLayoutParameter(temperatureLabelAlign);\n\n\t\t\tvar elementTemperatureInput = new pmui.TextInput(\"\", 0, pm.settings.fontSize, 40);\n\n\t\t\tvar temperatureInputAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttemperatureInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\ttemperatureInputAlign.setRelativeToWidgetName(\"temperatureLabel\");\n\t\t\ttemperatureInputAlign.setMargin(5, 0, 0, 0);\n\t\t\telementTemperatureInput.setLayoutParameter(temperatureInputAlign);\n\n\t\t\telementMenu.setContentSize(Math.max(elementLabel.width, elementRadiationLabel.width + elementRadiationInput.width + 5,\n\t\t\t\telementTemperatureLabel.width + elementTemperatureInput.width + 5), elementLabel.height + Math.max(elementRadiationLabel.height,\n\t\t\t\telementRadiationInput.height) + Math.max(elementTemperatureLabel.height, elementTemperatureInput.height) + 25);\n\n\t\t\telementMenu.addChild(elementLabel, 0, pm.data.KumirMapElement.LABEL_TAG);\n\t\t\telementMenu.addChild(elementRadiationLabel);\n\t\t\telementMenu.addChild(elementRadiationInput, 0, pm.data.KumirMapElement.RADIATION_TAG);\n\t\t\telementMenu.addChild(elementTemperatureLabel);\n\t\t\telementMenu.addChild(elementTemperatureInput, 0, pm.data.KumirMapElement.TEMPERATURE_TAG);\n\n\t\t\tvar elementParamsTable = new pmui.SelectTableView(cellSize, separator, 1, 2);\n\n\t\t\telementParamsTable.addSelectEventListener(function (selectedMapElement)\n\t\t\t{\n\t\t\t\ttarget.mapElementsTable.deselectAll();\n\n\t\t\t\tif (selectedMapElement)\n\t\t\t\t{\n\t\t\t\t\tif (selectedMapElement.y === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, pm.data.KumirMapElement.START_ELEMENT_POS);\n\t\t\t\t\t}\n\t\t\t\t\tif (selectedMapElement.y === 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, {\n\t\t\t\t\t\t\tevent: pm.data.KumirMapElement.SELECT_ELEMENT_PARAMS,\n\t\t\t\t\t\t\tmenu: elementMenu\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\telementMenu.setVisible(false);\n\t\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, undefined);\n\t\t\t\t}\n\t\t\t}.bind(this), this);\n\n\t\t\telementParamsTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\t\telementParamsTable.setFitObjectsSizes(true);\n\n\t\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(0), ccui.Widget.PLIST_TEXTURE);\n\t\t\telementParamsTable.setCell(0, 0, element);\n\n\t\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(1), ccui.Widget.PLIST_TEXTURE);\n\t\t\telementParamsTable.setCell(0, 1, element);\n\n\t\t\telementParamsTable.setContentSize(2 * cellSize.width + 3 * separator.width, cellSize.height + 2 * separator.height);\n\n\t\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\ttableAlign.setRelativeName(\"table\");\n\t\t\telementParamsTable.setLayoutParameter(tableAlign);\n\n\t\t\tvar menuAlign = new ccui.RelativeLayoutParameter();\n\t\t\tmenuAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\t\tmenuAlign.setRelativeToWidgetName(\"table\");\n\t\t\tmenuAlign.setMargin(10, 0, 0, 0);\n\t\t\telementMenu.setLayoutParameter(menuAlign);\n\n\t\t\tvar layout = new ccui.Layout();\n\t\t\tlayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\tlayout.setContentSize(elementParamsTable.width + elementMenu.width + 10, Math.max(elementParamsTable.height, elementMenu.height));\n\n\t\t\tlayout.addChild(elementParamsTable);\n\t\t\tlayout.addChild(elementMenu);\n\n\t\t\treturn {\n\t\t\t\tlayout: layout,\n\t\t\t\tcallback: function ()\n\t\t\t\t{\n\t\t\t\t\telementParamsTable.deselectAll();\n\t\t\t\t\telementMenu.setVisible(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar separator = cc.size(5, 5);\n\t\t\tvar cellSize = cc.size(64, 64);\n\n\t\t\tvar startElementPos = new pmui.SelectTableView(cellSize, separator, 1, 1);\n\t\t\tstartElementPos.addSelectEventListener(function(selectedMapElement)\n\t\t\t{\n\t\t\t\ttarget.mapElementsTable.deselectAll();\n\n\t\t\t\tif (selectedMapElement)\n\t\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, pm.data.KumirMapElement.START_ELEMENT_POS);\n\t\t\t\telse\n\t\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, undefined);\n\t\t\t}.bind(this), this);\n\n\t\t\tstartElementPos.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\t\tstartElementPos.setFitObjectsSizes(true);\n\n\t\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(1, pm.NORMAL_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tstartElementPos.setCell(0, 0, element);\n\t\t\tstartElementPos.setContentSize(cellSize.width + 2 * separator.width, cellSize.height + 2 * separator.height);\n\n\t\t\tvar layout = new ccui.Layout();\n\t\t\tlayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\tlayout.setContentSize(startElementPos.width, startElementPos.height);\n\n\t\t\tlayout.addChild(startElementPos);\n\n\t\t\treturn {layout: layout};\n\t\t}\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn KumirMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Kumir\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/kumir_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/kumir_robot-methods.plist\",\n\t\t\t\"Conditions/kumir_robot-conditions.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.KumirRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Kumir\": \"Robot\",\n\t\t\t\t\t\"KumirLevelType\": \"Robot level\",\n\t\t\t\t\t\"KumirTask\": \"Robot task\",\n\t\t\t\t\t\"NeedToPaintPattern\": \"Need to paint: {0}\",\n\t\t\t\t\t\"Radiation\": \"Radiation\",\n\t\t\t\t\t\"Temperature\": \"Temperature\",\n\t\t\t\t\t\"KumirLevel\": \"Kumir\",\n\t\t\t\t\t\"kumir_paint\" : \"paint\",\n\t\t\t\t\t\"kumir_move_up\" : \"move up\",\n\t\t\t\t\t\"kumir_move_down\" : \"move down\",\n\t\t\t\t\t\"kumir_move_left\" : \"move left\",\n\t\t\t\t\t\"kumir_move_right\" : \"move right\",\n\t\t\t\t\t\"kumir_gib\" : \"is cell painted\",\n\t\t\t\t\t\"kumir_ginb\" : \"isnt cell painted\",\n\n\t\t\t\t\t\"kumir_wall_up\" : \"is wall up\",\n\t\t\t\t\t\"kumir_wall_down\" : \"is wall down\",\n\t\t\t\t\t\"kumir_wall_left\" : \"is wall left\",\n\t\t\t\t\t\"kumir_wall_right\" : \"is wall right\",\n\n\t\t\t\t\t\"kumir_clear_up\" : \"is up cell empty\",\n\t\t\t\t\t\"kumir_clear_down\" : \"is down cell empty\",\n\t\t\t\t\t\"kumir_clear_left\" : \"is left cell empty\",\n\t\t\t\t\t\"kumir_clear_right\" : \"is right cell empty\",\n\n\t\t\t\t\t\"kumir_temperature\" : \"temp\",\n\t\t\t\t\t\"kumir_radiation\" : \"rad\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Kumir\": \"Робот\",\n\t\t\t\t\t\"KumirLevelType\": \"Робот\",\n\t\t\t\t\t\"KumirTask\": \"Задание покраски\",\n\t\t\t\t\t\"NeedToPaintPattern\": \"Нужно покрасить: {0}\",\n\t\t\t\t\t\"Radiation\": \"Радиация\",\n\t\t\t\t\t\"Temperature\": \"Температура\",\n\t\t\t\t\t\"kumir_gib\" : \"клетка закрашена\",\n\t\t\t\t\t\"kumir_ginb\" : \"клетка чистая\",\n\t\t\t\t\t\"KumirLevel\": \"Робот\",\n\t\t\t\t\t\"kumir_paint\" : \"закрасить\",\n\t\t\t\t\t\"kumir_move_up\" : \"вверх\",\n\t\t\t\t\t\"kumir_move_down\" : \"вниз\",\n\t\t\t\t\t\"kumir_move_left\" : \"влево\",\n\t\t\t\t\t\"kumir_move_right\" : \"вправо\",\n\t\t\t\t\t\"kumir_wall_up\" : \"сверху стена\",\n\t\t\t\t\t\"kumir_wall_down\" : \"снизу стена\",\n\t\t\t\t\t\"kumir_wall_left\" : \"слева стена\",\n\t\t\t\t\t\"kumir_wall_right\" : \"справа стена\",\n\n\t\t\t\t\t\"kumir_clear_up\" : \"сверху свободно\",\n\t\t\t\t\t\"kumir_clear_down\" : \"снизу свободно\",\n\t\t\t\t\t\"kumir_clear_left\" : \"слева свободно\",\n\t\t\t\t\t\"kumir_clear_right\" : \"справа свободно\",\n\n\t\t\t\t\t\"kumir_temperature\" : \"темп\",\n\t\t\t\t\t\"kumir_radiation\" : \"рад\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new KumirTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"KumirTask\";\n\t},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.KumirTask(level);\n\n\t\tfor(var i = 0; i < level.maps.length;++i)\n\t\t{\n\t\t\tvar paintValue = 0;\n\t\t\tvar map = level.maps[i];\n\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t\t{\n\t\t\t\t\tif (map.element(cc.p(x, y)).originalType === KumirMapElementType.UnpaintedGrass)\n\t\t\t\t\t\t++paintValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttask.fillWithInitialData(i, paintValue);\n\t\t}\n\n\t\tlevel.taskList.addTask(pm.KumirLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function() {},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function(a, b) {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.KumirLevelModule.RobotType = \"kumir-robot\";\npm.KumirLevelModule.Type = \"kumir\";\npm.KumirLevelModule.ObjectTypes = {};\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\nvar KumirMapEditorLayer = KumirMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.KumirMapElement();\n\t\tel.originalType = KumirMapElementType.LightBlueGrass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\t_drawMapElement: function (pos)\n\t{\n\t\tif (pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t{\n\t\t\tvar sprite = this._map.element(pos).generateTerrainSprite(this._previewDraw);\n\t\t\tsprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\t\t\tthis.addTerrainObject(sprite, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tSquarableMapEditorLayerHelper._drawMapElement.call(this, pos);\n\t\t}\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor(var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite(this._previewDraw);\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\t\tif (this._map.element(p).walls[MapDirection4.Right])\n\t\t\t\t{\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Right);\n\t\t\t\t\tthis._drawWall(p, type);\n\t\t\t\t}\n\t\t\t\tif (this._map.element(p).walls[MapDirection4.Down])\n\t\t\t\t{\n\t\t\t\t\tvar type = this._getWallType(MapDirection4.Down);\n\t\t\t\t\tthis._drawWall(p, type);\n\t\t\t\t}\n\n\t\t\t\tif(this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\n\t\t\t\tif (this._map.element(p)._paintTarget)\n\t\t\t\t\tthis._map.element(p)._notCompletedSprite.setVisible(true);\n\t\t\t}\n\t\t}\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.ChangeMapElement)\n\t\t{\n\t\t\tif (this._selectedObjectForTapType === pm.data.KumirMapElement.START_ELEMENT_POS)\n\t\t\t{\n\t\t\t\tvar element = this._map.element(pos);\n\n\t\t\t\tif(element._paintTarget)\n\t\t\t\t{\n\t\t\t\t\telement._notCompletedSprite.setVisible(false);\n\t\t\t\t\telement._paintTarget = false;\n\t\t\t\t\tthis._map._paintTargetElements.splice(this._map._paintTargetElements.indexOf(pos), 1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\telement._notCompletedSprite.setVisible(true);\n\t\t\t\t\telement._paintTarget = true;\n\t\t\t\t\tthis._map._paintTargetElements.push(pos);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!cc.isNumber(this._selectedObjectForTapType) && pm.appUtils.useExtraMethodsInKumirRobot())\n\t\t\t{\n\t\t\t\tvar posY = this._map.height - 1 - pos.y;\n\n\t\t\t\tvar label = this._selectedObjectForTapType.menu.getChildByTag(pm.data.KumirMapElement.LABEL_TAG);\n\t\t\t\tlabel.setString(\"x: \" + pos.x + \" y: \" + posY);\n\n\t\t\t\tvar radiation = this._selectedObjectForTapType.menu.getChildByTag(pm.data.KumirMapElement.RADIATION_TAG);\n\n\t\t\t\tradiation.setString(this._map.element(pos).getRadiation());\n\t\t\t\tradiation.setInsertTextCallback(this, function() {\n\t\t\t\t\tthis._map.element(pos).setRadiation(Number(radiation.getString()));\n\t\t\t\t}.bind(this));\n\n\t\t\t\tvar temperature = this._selectedObjectForTapType.menu.getChildByTag(pm.data.KumirMapElement.TEMPERATURE_TAG);\n\n\t\t\t\ttemperature.setString(this._map.element(pos).getTemperature());\n\t\t\t\ttemperature.setInsertTextCallback(this, function() {\n\t\t\t\t\tthis._map.element(pos).setTemperature(Number(temperature.getString()));\n\t\t\t\t}.bind(this));\n\n\t\t\t\tthis._selectedObjectForTapType.menu.setVisible(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar element = this._map.element(pos);\n\n\t\t\t\telement.setType(this._selectedObjectForTapType);\n\t\t\t\telement.originalType = this._selectedObjectForTapType;\n\t\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t\t}\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddObject)\n\t\t{\n\t\t\tif (this._map.element(pos).getObjectCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tif (!pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, pos))\n\t\t\t\tthis._addObject(pos, pm.moduleUtils.generateObject(this._map.getType(), this._selectedObjectForTapType));\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = KumirMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = KumirMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = KumirMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = KumirMapElementType.LightBlueGrass;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for kumir robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar KumirRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends KumirRobotSettingsLayer# */{\n\t// _paintLabel: null,\n\t// _paintValue: 0,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Kumir\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for kumir task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.KumirTask} task\n */\n\nvar KumirTaskLayer = TaskLayer.extend(/** @lends KumirTaskLayer# */{\n\n\t// _paintLabel: null,\n\t// _paintValue: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"KumirTask\"), level, task, pm.KumirLevelModule.Type);\n\n\t\tvar height = this.height;\n\n\t\t// this._paintLabel = new ccui.Text(\"0\", pm.settings.fontName, pm.settings.fontSize);\n\t\t//\n\t\t// var paintLabelAlign = new ccui.LinearLayoutParameter();\n\t\t// paintLabelAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t// paintLabelAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t// this._paintLabel.setLayoutParameter(paintLabelAlign);\n\n\t\t// this.addChild(this._paintLabel);\n\t\t// height += this._paintLabel.height;\n\n\t\tthis.setContentSize(this.width, height);\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateTaskData.bind(this), this);\n\n\t\t// var map = this._level.activeMap;\n\t\t//\n\t\t// if (this._task.data[this._level.getActiveMapIndex()])\n\t\t// {\n\t\t// \tthis._paintValue = this._task.data[this._level.getActiveMapIndex()];\n\t\t// \tthis._paintLabel.setString(LocalizedString(\"NeedToPaintPattern\").format(this._paintValue));\n\t\t// }\n\t},\n\n\t_updateTaskData: function()\n\t{\n\t\tthis._allRepairValue = 0;\n\n\t\tvar map = this._level.activeMap;\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < map.height; ++y)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, y)).originalType === RepairMapElementType.BrokenGrass)\n\t\t\t\t\t++this._allRepairValue;\n\t\t\t}\n\t\t}\n\n\t\tthis._task.data[this._level.getActiveMapIndex()] = this._allRepairValue;\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._updateTaskData();\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @extends pm.AbstractLevel\n */\npm.data.AquariusLevel = pm.AbstractLevel.extend(/** @lends pm.data.AquariusLevel# */{\n\ttypeName: \"AquariusLevel\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.AquariusLevelModule.Type; },\n\n\tobjectsPlayingAnimation: function ()\n\t{\n\t\treturn this.activeMap.tankA.isPlayingAnimation() || this.activeMap.tankB.isPlayingAnimation() || this.activeMap.tankC.isPlayingAnimation();\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\npm.data.AquariusTank = pm.Class.extend(/** @lends pm.Tank# */{\n\n\ttypeName: \"AquariusTank\",\n\n\tavailableCapacity: 0,\n\tcurrentCapacity: 0,\n\tstartCapacity: 0,\n\n\tmapLayer: null,\n\tsprite: {},\n\t_name: \"\",\n\n\tctor: function(name)\n\t{\n\t\tthis._addNonEnumerableProps(\"sprite\", \"mapLayer\", \"_isPlayingAnimation\");\n\n\t\tthis._super();\n\n\t\tthis._isPlayingAnimation = false;\n\t\tthis._name = name;\n\t},\n\n\tgenerateSprite: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!previewDraw)\n\t\t\t{\n\t\t\t\tthis.sprite = new AquariusTankSprite(this._name, this.availableCapacity, this.startCapacity);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.sprite = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_{0}_Back.png\".format(this._name)));\n\t\t\t\tvar frontSprite = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_{0}_Front.png\".format(this._name)));\n\n\t\t\t\tfrontSprite.setAnchorPoint(cc.p(0, 0));\n\t\t\t\tfrontSprite.setPosition(0, -25);\n\n\t\t\t\tthis.sprite.addChild(frontSprite);\n\t\t\t\tthis.sprite.setAnchorPoint(cc.p(0, 0));\n\t\t\t}\n\n\t\t\tthis.sprite.setScale(pm.appUtils.getAquariusTankScale());\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tsetAvailableCapacity: function(capacity)\n\t{\n\t\tthis.availableCapacity = capacity;\n\t\tthis.sprite.setAvailableCapacity(capacity);\n\n\t\tthis.mapLayer.updateTankPosition();\n\t},\n\n\tsetCurrentCapacity: function(capacity, withoutAnimation)\n\t{\n\t\tthis.currentCapacity = capacity;\n\n\t\tif (!CORE_BUILD &&( withoutAnimation || pm.settings.isAnimationDisabled()))\n\t\t{\n\t\t\tthis.sprite.setCurrentCapacity(capacity);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._isPlayingAnimation = true;\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tthis.sprite.setCurrentCapacity(capacity, this._endChangingCurrentCapacity, this);\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._endChangingCurrentCapacity.call(this);\n\t\t\t}\n\t\t}\n\t},\n\n\tsetStartCapacity: function(capacity)\n\t{\n\t\tthis.currentCapacity = capacity;\n\t\tthis.startCapacity = capacity;\n\t\tthis.sprite.setCurrentCapacity(capacity);\n\t},\n\n\tisPlayingAnimation: function ()\n\t{\n\t\treturn this._isPlayingAnimation;\n\t},\n\n\t_endChangingCurrentCapacity: function()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t},\n\n\tstopAnimation: function()\n\t{\n\t\tthis._isPlayingAnimation = false;\n\t\tif(!CORE_BUILD)\n\t\t\tthis.sprite.stopAllActions();\n\t},\n\n\tsetNotCompleted: function(flag){}\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\nvar AquariusTankSprite = ccui.Layout.extend(/** @lends pm.Tank# */{\n\n\t_innerColumn: null,\n\t_extraColumn: null,\n\n\t_frontLayout: null,\n\t_topWater: null,\n\t_bottomWater: null,\n\n\t_scaleLayer: null,\n\n\t_frontFloat: null,\n\t_backFloat: null,\n\n\t_currentArrow: null,\n\t_currentCircle: null,\n\n\t_currentLabel: null,\n\t_currentAlign: null,\n\t_availableLabel: null,\n\t_availableAlign: null,\n\n\tctor: function(name, availableCapacity, currentCapacity)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImage(\"ATS_{0}_Back.png\".format(name), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(35, 75, 40, 150));\n\t\tthis.setContentSize(AquariusTankSprite.INNER_WIDTH, availableCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.BACK_ADDITION);\n\n\t\tif (!availableCapacity || availableCapacity < 2)\n\t\t\tthis.setVisible(false);\n\n\t\tthis._frontLayout = new ccui.Layout();\n\t\tthis._frontLayout.setCascadeOpacityEnabled(true);\n\t\tthis._frontLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._frontLayout.setBackGroundImage(\"ATS_{0}_Front.png\".format(name), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._frontLayout.setBackGroundImageCapInsets(cc.rect(35, 35, 40, 165));\n\t\tthis._frontLayout.setContentSize(AquariusTankSprite.INNER_WIDTH, availableCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FRONT_ADDITION);\n\n\t\tvar frontAlign = new ccui.RelativeLayoutParameter();\n\t\tfrontAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tfrontAlign.setMargin(0, 0, 0, -AquariusTankSprite.FRONT_SHIFT);\n\t\tthis._frontLayout.setLayoutParameter(frontAlign);\n\n\t\tthis.addChild(this._frontLayout, 2);\n\n\t\tthis._topWater = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_Top.png\"));\n\n\t\tthis._topWater.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis._topWater.setPosition(this.width / 2, currentCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.TOP_MARGIN);\n\n\t\tthis._topWater.setVisible(currentCapacity);\n\n\t\tthis.addChild(this._topWater, 1);\n\n\t\tthis._bottomWater = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_Bottom.png\"));\n\n\t\tthis._bottomWater.setAnchorPoint(cc.p(0.5, 0));\n\t\tthis._bottomWater.setPosition(this.width / 2, AquariusTankSprite.BOTTOM_MARGIN);\n\n\t\tthis._bottomWater.setVisible(currentCapacity);\n\n\t\tthis.addChild(this._bottomWater);\n\n\t\tvar nameLabel = new ccui.Text(name, pm.settings.fontName, pm.settings.fontSize);\n\t\tnameLabel.setColor(this.getNameColor(name));\n\n\t\tvar nameAlign = new ccui.RelativeLayoutParameter();\n\t\tnameAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tnameAlign.setMargin(0, 0, 0, -AquariusTankSprite.NAME_SHIFT);\n\t\tnameLabel.setLayoutParameter(nameAlign);\n\n\t\tthis.addChild(nameLabel, 3);\n\n\t\tif (currentCapacity === availableCapacity)\n\t\t{\n\t\t\tvar frontFloatName = \"ATS_Top_Float_Front.png\";\n\t\t\tvar backFloatName = \"ATS_Top_Float_Back.png\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar frontFloatName = \"ATS_Float_Front.png\";\n\t\t\tvar backFloatName = \"ATS_Float_Back.png\";\n\t\t}\n\n\t\tthis._frontFloat = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(frontFloatName));\n\n\t\tthis._frontFloat.setAnchorPoint(cc.p(0.5, 1));\n\t\tthis._frontFloat.setPosition(this.width / 2, currentCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\tthis.addChild(this._frontFloat, 5);\n\n\t\tthis._backFloat = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(backFloatName));\n\n\t\tthis._backFloat.setAnchorPoint(cc.p(0.5, 0));\n\t\tthis._backFloat.setPosition(this.width / 2, currentCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\tif (currentCapacity === availableCapacity)\n\t\t\tthis.addChild(this._backFloat, 5);\n\t\telse\n\t\t\tthis.addChild(this._backFloat, -1);\n\n\t\tthis._currentArrow = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_Arrow.png\"));\n\n\t\tthis._currentArrow.setAnchorPoint(cc.p(0, 0.5));\n\t\tthis._currentArrow.setPosition(this.width, currentCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\tthis.addChild(this._currentArrow);\n\n\t\tthis._currentCircle = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(\"ATS_Circle.png\"));\n\n\t\tthis._currentCircle.setAnchorPoint(cc.p(0, 0.5));\n\t\tthis._currentCircle.setPosition(this.width + AquariusTankSprite.CIRCLE_SEPARATOR, currentCapacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\tthis.addChild(this._currentCircle);\n\n\t\tthis._currentLabel = new ccui.Text(currentCapacity, pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._currentLabel.setColor(this.getLabelColor(AquariusTankSprite.TEXT_COLOR));\n\t\tthis._currentLabel.setAnchorPoint(cc.p(0.5, 0.6));\n\t\tthis._currentLabel.setPosition(this._currentCircle.width / 2, this._currentCircle.height / 2);\n\n\t\tthis._currentCircle.addChild(this._currentLabel);\n\n\t\tthis._availableLabel = new ccui.Text(availableCapacity, pm.settings.fontName, pm.settings.fontSize);\n\t\tthis._availableLabel.setColor(this.getLabelColor(AquariusTankSprite.TEXT_COLOR));\n\n\t\tthis._availableAlign = new ccui.RelativeLayoutParameter();\n\t\tthis._availableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tthis._availableAlign.setMargin(0, AquariusTankSprite.LABEL_MARGIN, 0, 0);\n\t\tthis._availableLabel.setLayoutParameter(this._availableAlign);\n\n\t\tthis.addChild(this._availableLabel);\n\n\t\tthis._innerColumn = new ccui.Layout();\n\n\t\tthis._innerColumn.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._innerColumn.setBackGroundColor(cc.color.BLUE);\n\t\tthis._innerColumn.setContentSize(AquariusTankSprite.WATER_WIDTH, AquariusTankSprite.UNIT_HEIGHT);\n\t\tthis._innerColumn.setOpacity(200);\n\t\tthis._innerColumn.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tthis._innerColumn.setScale(1, currentCapacity);\n\n\t\tvar innerAlign = new ccui.RelativeLayoutParameter();\n\t\tinnerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tinnerAlign.setMargin(0, 0, 0, AquariusTankSprite.INNER_MARGIN);\n\t\tthis._innerColumn.setLayoutParameter(innerAlign);\n\n\t\tthis.addChild(this._innerColumn);\n\n\t\tthis._extraColumn = new ccui.Layout();\n\n\t\tthis._extraColumn.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._extraColumn.setBackGroundColor(cc.color.BLUE);\n\t\tthis._extraColumn.setContentSize(AquariusTankSprite.WATER_WIDTH, AquariusTankSprite.EXTRA_HEIGHT);\n\t\tthis._extraColumn.setOpacity(200);\n\t\tthis._extraColumn.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tthis._extraColumn.setVisible(currentCapacity);\n\n\t\tvar extraAlign = new ccui.RelativeLayoutParameter();\n\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tthis._extraColumn.setLayoutParameter(extraAlign);\n\n\t\tthis.addChild(this._extraColumn);\n\n\t\tthis._scaleLayer = new ccui.Layout();\n\n\t\tvar scaleAlign = new ccui.RelativeLayoutParameter();\n\t\tscaleAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tscaleAlign.setMargin(0, 0, 9, AquariusTankSprite.SCALE_MARGIN);\n\t\tthis._scaleLayer.setLayoutParameter(scaleAlign);\n\n\t\tthis.addChild(this._scaleLayer, 4);\n\n\t\tthis._updateScaleLayer(availableCapacity);\n\t},\n\n\t_updateScaleLayer: function(availableCapacity)\n\t{\n\t\tthis._scaleLayer.removeAllChildren();\n\t\tthis._scaleLayer.setContentSize(AquariusTankSprite.INNER_WIDTH, availableCapacity * AquariusTankSprite.UNIT_HEIGHT);\n\n\t\tfor (var i = 1; i < availableCapacity; ++i)\n\t\t{\n\t\t\tvar spriteName = i % AquariusTankSprite.SCALE_STEP === 0 ? \"ATS_Full_Scale.png\" : \"ATS_Scale.png\";\n\n\t\t\tvar mark = new cc.Sprite(cc.spriteFrameCache.getSpriteFrame(spriteName));\n\n\t\t\tmark.setAnchorPoint(cc.p(1, 0.5));\n\t\t\tmark.setPosition(this._scaleLayer.width, i * AquariusTankSprite.UNIT_HEIGHT);\n\t\t\tthis._scaleLayer.addChild(mark);\n\t\t}\n\t},\n\n\tsetAvailableCapacity: function(capacity)\n\t{\n\t\tif (capacity && capacity > 1)\n\t\t{\n\t\t\tthis.setVisible(true);\n\n\t\t\tthis.setContentSize(AquariusTankSprite.INNER_WIDTH, capacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.BACK_ADDITION);\n\n\t\t\tthis._frontLayout.setContentSize(AquariusTankSprite.INNER_WIDTH, capacity * AquariusTankSprite.UNIT_HEIGHT + AquariusTankSprite.FRONT_ADDITION);\n\n\t\t\tthis._updateScaleLayer(capacity);\n\n\t\t\tthis._availableLabel.setString(capacity);\n\n\t\t\tthis.forceDoLayout();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setVisible(false);\n\t\t}\n\t},\n\n\tsetCurrentCapacity: function(capacity, callback, target)\n\t{\n\t\tif (callback === undefined && target === undefined)\n\t\t{\n\t\t\tif (capacity === Number(this._availableLabel.getString()))\n\t\t\t{\n\t\t\t\tthis._frontFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Top_Float_Front.png\"));\n\t\t\t\tthis._backFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Top_Float_Back.png\"));\n\t\t\t\tthis._backFloat.setLocalZOrder(5);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._frontFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Float_Front.png\"));\n\t\t\t\tthis._backFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Float_Back.png\"));\n\t\t\t\tthis._backFloat.setLocalZOrder(-1);\n\t\t\t}\n\n\t\t\tvar posY = capacity * AquariusTankSprite.UNIT_HEIGHT;\n\n\t\t\tthis._innerColumn.setScale(1, capacity);\n\t\t\tthis._topWater.setPosition(this.width / 2, posY + AquariusTankSprite.TOP_MARGIN);\n\t\t\tthis._frontFloat.setPosition(this.width / 2, posY + AquariusTankSprite.FLOAT_MARGIN);\n\t\t\tthis._backFloat.setPosition(this.width / 2, posY + AquariusTankSprite.FLOAT_MARGIN);\n\t\t\tthis._currentArrow.setPosition(this.width, posY + AquariusTankSprite.FLOAT_MARGIN);\n\t\t\tthis._currentCircle.setPosition(this.width + AquariusTankSprite.CIRCLE_SEPARATOR, posY + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\t\tthis._currentLabel.setString(capacity);\n\t\t\tthis._topWater.setVisible(capacity);\n\t\t\tthis._bottomWater.setVisible(capacity);\n\t\t\tthis._extraColumn.setVisible(capacity);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (capacity)\n\t\t\t{\n\t\t\t\tthis._topWater.setVisible(capacity);\n\t\t\t\tthis._bottomWater.setVisible(capacity);\n\t\t\t\tthis._extraColumn.setVisible(capacity);\n\t\t\t}\n\n\t\t\tif (Number(this._currentLabel.getString()) === Number(this._availableLabel.getString())\n\t\t\t\t&& capacity !== Number(this._currentLabel.getString()))\n\t\t\t{\n\t\t\t\tthis._frontFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Float_Front.png\"));\n\t\t\t\tthis._backFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Float_Back.png\"));\n\t\t\t\tthis._backFloat.setLocalZOrder(-1);\n\t\t\t}\n\n\t\t\tvar animationSpeed = pm.settings.getAnimationSpeed() * Math.abs(capacity - Number(this._currentLabel.getString()));\n\t\t\tvar moveToY = capacity * AquariusTankSprite.UNIT_HEIGHT;\n\n\t\t\tvar scaleLayer = cc.scaleTo(animationSpeed, 1, capacity);\n\t\t\tvar moveWater = cc.moveTo(animationSpeed, this.width / 2, moveToY + AquariusTankSprite.TOP_MARGIN);\n\t\t\tvar moveFloat = cc.moveTo(animationSpeed, this.width / 2, moveToY + AquariusTankSprite.FLOAT_MARGIN);\n\t\t\tvar moveArrow = cc.moveTo(animationSpeed, this.width, moveToY + AquariusTankSprite.FLOAT_MARGIN);\n\t\t\tvar moveCircle = cc.moveTo(animationSpeed, this.width + AquariusTankSprite.CIRCLE_SEPARATOR, moveToY + AquariusTankSprite.FLOAT_MARGIN);\n\n\t\t\tvar scaleTargeted = cc.targetedAction(this._innerColumn, scaleLayer);\n\t\t\tvar moveTargeted = cc.targetedAction(this._topWater, moveWater);\n\t\t\tvar moveFrontTargeted = cc.targetedAction(this._frontFloat, moveFloat);\n\t\t\tvar moveBackTargeted = cc.targetedAction(this._backFloat, moveFloat.clone());\n\t\t\tvar moveArrowTargeted = cc.targetedAction(this._currentArrow, moveArrow);\n\t\t\tvar moveCircleTargeted = cc.targetedAction(this._currentCircle, moveCircle);\n\n\t\t\tvar changingEnd = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._currentLabel.setString(capacity);\n\n\t\t\t\tif (!capacity)\n\t\t\t\t{\n\t\t\t\t\tthis._topWater.setVisible(capacity);\n\t\t\t\t\tthis._bottomWater.setVisible(capacity);\n\t\t\t\t\tthis._extraColumn.setVisible(capacity);\n\t\t\t\t}\n\t\t\t\tcallback.call(target);\n\t\t\t}, this);\n\n\t\t\tif (capacity === Number(this._availableLabel.getString()))\n\t\t\t{\n\t\t\t\tvar changingTexture = cc.callFunc(function()\n\t\t\t\t{\n\t\t\t\t\tthis._frontFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Top_Float_Front.png\"));\n\t\t\t\t\tthis._backFloat.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame(\"ATS_Top_Float_Back.png\"));\n\t\t\t\t\tthis._backFloat.setLocalZOrder(5);\n\t\t\t\t}, this);\n\n\t\t\t\tchangingEnd = cc.sequence(changingTexture, changingEnd);\n\t\t\t}\n\n\t\t\tthis.runAction(cc.sequence(cc.spawn(scaleTargeted, moveTargeted, moveFrontTargeted, moveBackTargeted, moveArrowTargeted, moveCircleTargeted), changingEnd));\n\t\t}\n\n\t\tthis.forceDoLayout();\n\t},\n\n\tgetNameColor: function(name)\n\t{\n\t\tswitch(name)\n\t\t{\n\t\t\tcase \"A\": return this.getLabelColor(cc.color(239, 91, 48));\n\t\t\tcase \"B\": return this.getLabelColor(cc.color(35, 88, 167));\n\t\t\tcase \"C\": return this.getLabelColor(cc.color(29, 155, 82));\n\t\t}\n\t},\n\n\tgetLabelColor: function(color)\n\t{\n\t\tvar shift = 0;\n\n\t\tif (cc.sys.isNative)\n\t\t\tshift = AquariusTankSprite.COLOR_DIFF;\n\n\t\treturn cc.color(color.r - shift, color.g - shift, color.b - shift);\n\t}\n});\n\nAquariusTankSprite.SEPARATOR = 15;\nAquariusTankSprite.UNIT_HEIGHT = 25;\nAquariusTankSprite.WATER_WIDTH = 70;\nAquariusTankSprite.LABEL_MARGIN = 7;\nAquariusTankSprite.BACK_ADDITION = 80;\nAquariusTankSprite.FRONT_ADDITION = 57;\nAquariusTankSprite.FRONT_SHIFT = 35;\nAquariusTankSprite.NAME_SHIFT = 26;\nAquariusTankSprite.SCALE_STEP = 5;\nAquariusTankSprite.FLOAT_MARGIN = 20;\nAquariusTankSprite.CIRCLE_SEPARATOR = 10;\nAquariusTankSprite.TEXT_COLOR = cc.color(150, 150, 150);\nAquariusTankSprite.COLOR_DIFF = 25;\nAquariusTankSprite.INNER_WIDTH = 109;\nAquariusTankSprite.INNER_MARGIN = 20;\nAquariusTankSprite.BOTTOM_MARGIN = 4;\nAquariusTankSprite.TOP_MARGIN = 20;\nAquariusTankSprite.SCALE_MARGIN = 10;\nAquariusTankSprite.EXTRA_HEIGHT = 20;\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\npm.data.AquariusMap = pm.AbstractMap.extend(/** @lends pm.data.AquariusMap# */{\n\ttypeName: \"AquariusMap\",\n\n\ttankA: null,\n\ttankB: null,\n\ttankC: null,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function ()\n\t{\n\t\treturn pm.AquariusLevelModule.Type;\n\t},\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new AquariusMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new AquariusMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tload: function()\n\t{\n\t\tthis.tankA.currentCapacity = this.tankA.startCapacity;\n\t\tthis.tankB.currentCapacity = this.tankB.startCapacity;\n\t\tthis.tankC.currentCapacity = this.tankC.startCapacity;\n\n\t\tthis.parentLevel.getCurrentRobot().updateNativeFunctions(this);\n\t},\n\n\tplaceRobots: function (flag) {},\n\n\tgetState: function(){},\n\n\tsetState: function(){}\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class Layer for {@link pm.data.AquariusMap}.\n * @implements MapLayer\n */\nvar AquariusMapLayer = pm.MapLayer.extend(/** @lends AquariusMapLayer#*/{\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\n\t\tpm.registerCustomEventListener(pm.COMMANDS_CHANGED, this.updateTankPosition.bind(this), this);\n\t},\n\n\tdrawMap: function(previewDraw)\n\t{\n\t\tthis._previewDraw = previewDraw;\n\n\t\tvar tankA = this._map.tankA;\n\t\tvar tankB = this._map.tankB;\n\t\tvar tankC = this._map.tankC;\n\n\t\ttankA.mapLayer = this;\n\t\ttankB.mapLayer = this;\n\t\ttankC.mapLayer = this;\n\n\t\tvar tankSpriteA = tankA.generateSprite(previewDraw);\n\t\tvar tankSpriteB = tankB.generateSprite(previewDraw);\n\t\tvar tankSpriteC = tankC.generateSprite(previewDraw);\n\n\t\tthis.updateTankPosition();\n\n\t\tthis.addChild(tankSpriteA);\n\t\tthis.addChild(tankSpriteB);\n\t\tthis.addChild(tankSpriteC);\n\t},\n\n\tupdateTankPosition: function()\n\t{\n\t\tvar visibleTanks = [];\n\n\t\tif (this._map.tankA.sprite.isVisible())\n\t\t\tvisibleTanks.push(this._map.tankA.sprite);\n\n\t\tif (this._map.tankB.sprite.isVisible())\n\t\t\tvisibleTanks.push(this._map.tankB.sprite);\n\n\t\tif (this._map.tankC.sprite.isVisible())\n\t\t\tvisibleTanks.push(this._map.tankC.sprite);\n\n\t\tvar realWidth = this.width - MethodStackLayer.INNER_WIDTH - AquariusMapLayer.FRONT_SHIFT;\n\n\t\tvar firstTank = visibleTanks[0];\n\t\tvar secondTank = visibleTanks[1];\n\t\tvar thirdTank = visibleTanks[2];\n\n\t\tif (visibleTanks.length === 1)\n\t\t{\n\t\t\tfirstTank.setPosition(cc.p(AquariusMapLayer.FRONT_SHIFT + (realWidth - firstTank.width * firstTank.scale) / 2, (this.height - firstTank.height) / 2));\n\t\t}\n\n\t\tif (visibleTanks.length === 2)\n\t\t{\n\t\t\tvar maxHeight = Math.max(firstTank.height, secondTank.height);\n\t\t\tfirstTank.setPosition(cc.p(AquariusMapLayer.FRONT_SHIFT - firstTank.width * firstTank.scale / 2 + (realWidth + AquariusMapLayer.BORDER) / 3, (this.height - maxHeight) / 2));\n\t\t\tsecondTank.setPosition(cc.p(firstTank.getPosition().x + (realWidth - AquariusMapLayer.BORDER) / 3 * secondTank.scale, firstTank.getPosition().y));\n\t\t}\n\n\t\tif (visibleTanks.length === 3)\n\t\t{\n\t\t\tvar maxHeight = Math.max(firstTank.height, secondTank.height, thirdTank.height);\n\t\t\tsecondTank.setPosition(cc.p(AquariusMapLayer.FRONT_SHIFT + (realWidth - secondTank.width * secondTank.scale) / 2, (this.height - maxHeight) / 2));\n\t\t\tfirstTank.setPosition(cc.p(secondTank.getPosition().x - (realWidth - AquariusMapLayer.BORDER) * firstTank.scale / 4, secondTank.getPosition().y));\n\t\t\tthirdTank.setPosition(cc.p(secondTank.getPosition().x + (realWidth - AquariusMapLayer.BORDER) * thirdTank.scale / 4, secondTank.getPosition().y));\n\t\t}\n\t},\n\n\tclean: function()\n\t{\n\t\tthis._map.tankA.stopAnimation();\n\t\tthis._map.tankB.stopAnimation();\n\t\tthis._map.tankC.stopAnimation();\n\n\t\tthis._map.tankA.setCurrentCapacity(this._map.tankA.startCapacity, true);\n\t\tthis._map.tankB.setCurrentCapacity(this._map.tankB.startCapacity, true);\n\t\tthis._map.tankC.setCurrentCapacity(this._map.tankC.startCapacity, true);\n\t},\n\n\tcontainsPoint: function(point)\n\t{\n\t\treturn !pm.settings.isEditorMode;\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn false;\n\t}\n});\n\nAquariusMapLayer.BORDER = 150;\nAquariusMapLayer.FRONT_SHIFT = 75;\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class pm.Task for painting elements.
\n * Contains number of elements to paint.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.AquariusTask = pm.Task.extend(/** @lends pm.data.AquariusTask*/ {\n\ttypeName: \"AquariusTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar map = this._level.maps[mapIndex];\n\t\tvar retArray = [];\n\n\t\tif (!(map.tankA.currentCapacity === this.data[mapIndex] && map.tankB.currentCapacity === 0 && map.tankC.currentCapacity === 0\n\t\t\t|| map.tankB.currentCapacity === this.data[mapIndex] && map.tankA.currentCapacity === 0 && map.tankC.currentCapacity === 0\n\t\t\t|| map.tankC.currentCapacity === this.data[mapIndex] && map.tankA.currentCapacity === 0 && map.tankB.currentCapacity === 0))\n\t\t{\n\t\t\tretArray.push(map.tankA);\n\t\t\tretArray.push(map.tankB);\n\t\t\tretArray.push(map.tankC);\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = data;\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class 2D robot for {@link pm.data.AquariusLevel}.
\n * Has a paint element native function.\n * @implements PlayerRobot4\n */\npm.data.AquariusRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.AquariusRobot# */{\n\ttypeName: \"AquariusRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.AToB] = new pm.NativeFunction(this, this._AToB);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.BToA] = new pm.NativeFunction(this, this._BToA);\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.BToC] = new pm.NativeFunction(this, this._BToC);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.CToB] = new pm.NativeFunction(this, this._CToB);\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.AToC] = new pm.NativeFunction(this, this._AToC);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.CToA] = new pm.NativeFunction(this, this._CToA);\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.FullA] = new pm.NativeFunction(this, this._fullA);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.EmptyA] = new pm.NativeFunction(this, this._emptyA);\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.FullB] = new pm.NativeFunction(this, this._fullB);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.EmptyB] = new pm.NativeFunction(this, this._emptyB);\n\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.FullC] = new pm.NativeFunction(this, this._fullC);\n\t\tthis.nativeFunctionMap[pm.data.AquariusRobot.NativeMethod.EmptyC] = new pm.NativeFunction(this, this._emptyC);\n\n\t\tthis.nativeFunctions.push(pm.data.AquariusRobot.NativeMethod.AToB, pm.data.AquariusRobot.NativeMethod.BToC, pm.data.AquariusRobot.NativeMethod.AToC,\n\t\t\tpm.data.AquariusRobot.NativeMethod.FullA, pm.data.AquariusRobot.NativeMethod.FullB, pm.data.AquariusRobot.NativeMethod.FullC,\n\t\t\tpm.data.AquariusRobot.NativeMethod.BToA, pm.data.AquariusRobot.NativeMethod.CToB, pm.data.AquariusRobot.NativeMethod.CToA,\n\t\t\tpm.data.AquariusRobot.NativeMethod.EmptyA, pm.data.AquariusRobot.NativeMethod.EmptyB, pm.data.AquariusRobot.NativeMethod.EmptyC);\n\t},\n\n\tupdateNativeFunctions: function(map)\n\t{\n\t\tif (map === undefined)\n\t\t\tmap = this.parentLevel.activeMap;\n\n\t\tthis.nativeFunctions = [];\n\t\tthis.nativeFunctions.push(pm.data.AquariusRobot.NativeMethod.AToB, pm.data.AquariusRobot.NativeMethod.BToC, pm.data.AquariusRobot.NativeMethod.AToC,\n\t\t\tpm.data.AquariusRobot.NativeMethod.FullA, pm.data.AquariusRobot.NativeMethod.FullB, pm.data.AquariusRobot.NativeMethod.FullC,\n\t\t\tpm.data.AquariusRobot.NativeMethod.BToA, pm.data.AquariusRobot.NativeMethod.CToB, pm.data.AquariusRobot.NativeMethod.CToA,\n\t\t\tpm.data.AquariusRobot.NativeMethod.EmptyA, pm.data.AquariusRobot.NativeMethod.EmptyB, pm.data.AquariusRobot.NativeMethod.EmptyC);\n\n\t\tif (map.tankA.availableCapacity < 2)\n\t\t{\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.AToB);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.BToA);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.AToC);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.CToA);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.FullA);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.EmptyA);\n\t\t}\n\n\t\tif (map.tankB.availableCapacity < 2)\n\t\t{\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.BToA);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.AToB);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.BToC);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.CToB);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.FullB);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.EmptyB);\n\t\t}\n\n\t\tif (map.tankC.availableCapacity < 2)\n\t\t{\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.CToA);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.AToC);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.CToB);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.BToC);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.FullC);\n\t\t\tthis._deleteNativeFunction(pm.data.AquariusRobot.NativeMethod.EmptyC);\n\t\t}\n\n\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED, this.parentLevel);\n\t},\n\n\t_deleteNativeFunction: function(functionID)\n\t{\n\t\tvar index = this.nativeFunctions.indexOf(functionID);\n\t\tif (index !== -1)\n\t\t\tthis.nativeFunctions.splice(index, 1);\n\t},\n\n\t_tank1ToTank2: function(tank1, tank2)\n\t{\n\t\tvar currentCapacity1 = tank1.currentCapacity;\n\t\tvar currentCapacity2 = tank2.currentCapacity;\n\t\tvar availableCapacity2 = tank2.availableCapacity;\n\n\t\tvar dif = 0;\n\n\t\tif (currentCapacity1 + currentCapacity2 > availableCapacity2)\n\t\t{\n\t\t\tdif = availableCapacity2 - currentCapacity2;\n\t\t\tcurrentCapacity1 -= dif;\n\t\t\tcurrentCapacity2 += dif;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcurrentCapacity2 += currentCapacity1;\n\t\t\tcurrentCapacity1 = 0;\n\t\t}\n\n\t\ttank1.setCurrentCapacity(currentCapacity1);\n\t\ttank2.setCurrentCapacity(currentCapacity2);\n\t},\n\n\t_fullTank: function(tank)\n\t{\n\t\ttank.setCurrentCapacity(tank.availableCapacity);\n\t},\n\n\t_emptyTank: function(tank)\n\t{\n\t\ttank.setCurrentCapacity(0);\n\t},\n\n\t_AToB: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankA, this.parentLevel.activeMap.tankB)\n\t},\n\n\t_BToA: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankB, this.parentLevel.activeMap.tankA)\n\t},\n\n\t_BToC: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankB, this.parentLevel.activeMap.tankC)\n\t},\n\n\t_CToB: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankC, this.parentLevel.activeMap.tankB)\n\t},\n\n\t_AToC: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankA, this.parentLevel.activeMap.tankC)\n\t},\n\n\t_CToA: function()\n\t{\n\t\tthis._tank1ToTank2(this.parentLevel.activeMap.tankC, this.parentLevel.activeMap.tankA)\n\t},\n\n\t_fullA: function()\n\t{\n\t\tthis._fullTank(this.parentLevel.activeMap.tankA);\n\t},\n\n\t_emptyA: function()\n\t{\n\t\tthis._emptyTank(this.parentLevel.activeMap.tankA);\n\t},\n\n\t_fullB: function()\n\t{\n\t\tthis._fullTank(this.parentLevel.activeMap.tankB);\n\t},\n\n\t_emptyB: function()\n\t{\n\t\tthis._emptyTank(this.parentLevel.activeMap.tankB);\n\t},\n\n\t_fullC: function()\n\t{\n\t\tthis._fullTank(this.parentLevel.activeMap.tankC);\n\t},\n\n\t_emptyC: function()\n\t{\n\t\tthis._emptyTank(this.parentLevel.activeMap.tankC);\n\t},\n\n\tneedToPlayAnimation: function()\n\t{\n\t\treturn false;\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tcapacityA: this.parentLevel.activeMap.tankA.currentCapacity,\n\t\t\tcapacityB: this.parentLevel.activeMap.tankB.currentCapacity,\n\t\t\tcapacityC: this.parentLevel.activeMap.tankC.currentCapacity\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tthis.parentLevel.activeMap.tankA.setCurrentCapacity(state.capacityA);\n\t\tthis.parentLevel.activeMap.tankB.setCurrentCapacity(state.capacityB);\n\t\tthis.parentLevel.activeMap.tankC.setCurrentCapacity(state.capacityC);\n\t},\n\n\tgetType: function() { return pm.AquariusLevelModule.RobotType; }\n});\n\npm.data.AquariusRobot.NativeMethod =\n{\n\tAToB: \"aquarius_AToB\",\n\tBToC: \"aquarius_BToC\",\n\tAToC: \"aquarius_AToC\",\n\tFullA: \"aquarius_fullA\",\n\tFullB: \"aquarius_fullB\",\n\tFullC: \"aquarius_fullC\",\n\tBToA: \"aquarius_BToA\",\n\tCToB: \"aquarius_CToB\",\n\tCToA: \"aquarius_CToA\",\n\tEmptyA: \"aquarius_emptyA\",\n\tEmptyB: \"aquarius_emptyB\",\n\tEmptyC: \"aquarius_emptyC\"\n};\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class Functions for AquariusLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.AquariusLevelModule = pm.ModuleInfo.extend(/** @lends pm.AquariusLevelModule# */{\n\n\tname: \"Aquarius\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.AquariusLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.AquariusMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tmap.tankA = new pm.data.AquariusTank(\"A\");\n\t\tmap.tankA.availableCapacity = 3;\n\t\tmap.tankA.startCapacity = 0;\n\t\tmap.tankA.currentCapacity = 0;\n\n\t\tmap.tankB = new pm.data.AquariusTank(\"B\");\n\t\tmap.tankB.availableCapacity = 3;\n\t\tmap.tankB.startCapacity = 0;\n\t\tmap.tankB.currentCapacity = 0;\n\n\t\tmap.tankC = new pm.data.AquariusTank(\"C\");\n\t\tmap.tankC.availableCapacity = 3;\n\t\tmap.tankC.startCapacity = 0;\n\t\tmap.tankC.currentCapacity = 0;\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.AquariusLevel();\n\n\t\tlevel.name = \"Новый Водолей\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.AquariusRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.AquariusLevelModule.Type] = new pm.data.AquariusTask(level);\n\t\tlevel.taskList.tasks[pm.AquariusLevelModule.Type].data[0] = 0;\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn null;\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new AquariusRobotSettingsLayer(object);\n\t},\n\n\tgetExtraMapSettings: function (target)\n\t{\n\t\tvar layout = new ccui.Layout();\n\t\tlayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar availableTankALabel = new pmui.Text(LocalizedString(\"AvailableTankCapacity\") + \"A\", LevelSettings.FONT_SIZE);\n\n\t\tvar availableTankALabelAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankALabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tavailableTankALabelAlign.setRelativeName(\"availableTankALabel\");\n\t\tavailableTankALabel.setLayoutParameter(availableTankALabelAlign);\n\n\t\tvar availableTankA = new pmui.TextInput(target.level.activeMap.tankA.availableCapacity, \"1\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar availableTankAAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankAAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tavailableTankAAlign.setRelativeToWidgetName(\"availableTankALabel\");\n\t\tavailableTankAAlign.setMargin(5, 0, 0, 0);\n\t\tavailableTankA.setLayoutParameter(availableTankAAlign);\n\n\t\tavailableTankA.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankA.setAvailableCapacity(Number(availableTankA.getString()));\n\n\t\t\ttarget.level.getCurrentRobot().updateNativeFunctions();\n\t\t}.bind(this));\n\n\t\tvar currentTankALabel = new pmui.Text(LocalizedString(\"CurrentTankCapacity\") + \"A\", LevelSettings.FONT_SIZE);\n\n\t\tvar currentTankALabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankALabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcurrentTankALabelAlign.setRelativeName(\"currentTankALabel\");\n\t\tcurrentTankALabelAlign.setRelativeToWidgetName(\"availableTankALabel\");\n\t\tcurrentTankALabelAlign.setMargin(0, 15, 0, 0);\n\t\tcurrentTankALabel.setLayoutParameter(currentTankALabelAlign);\n\n\t\tvar currentTankA = new pmui.TextInput(target.level.activeMap.tankA.startCapacity, \"0\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar currentTankAAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankAAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tcurrentTankAAlign.setRelativeToWidgetName(\"currentTankALabel\");\n\t\tcurrentTankAAlign.setMargin(5, 0, 0, 0);\n\t\tcurrentTankA.setLayoutParameter(currentTankAAlign);\n\n\t\tcurrentTankA.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankA.setStartCapacity(Number(currentTankA.getString()));\n\t\t}.bind(this));\n\n\t\tvar availableTankBLabel = new pmui.Text(LocalizedString(\"AvailableTankCapacity\") + \"B\", LevelSettings.FONT_SIZE);\n\n\t\tvar availableTankBLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankBLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tavailableTankBLabelAlign.setRelativeName(\"availableTankBLabel\");\n\t\tavailableTankBLabelAlign.setRelativeToWidgetName(\"currentTankALabel\");\n\t\tavailableTankBLabelAlign.setMargin(0, 15, 0, 0);\n\t\tavailableTankBLabel.setLayoutParameter(availableTankBLabelAlign);\n\n\t\tvar availableTankB = new pmui.TextInput(target.level.activeMap.tankB.availableCapacity, \"1\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar availableTankBAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankBAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tavailableTankBAlign.setRelativeToWidgetName(\"availableTankBLabel\");\n\t\tavailableTankBAlign.setMargin(5, 0, 0, 0);\n\t\tavailableTankB.setLayoutParameter(availableTankBAlign);\n\n\t\tavailableTankB.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankB.setAvailableCapacity(Number(availableTankB.getString()));\n\n\t\t\ttarget.level.getCurrentRobot().updateNativeFunctions();\n\t\t}.bind(this));\n\n\t\tvar currentTankBLabel = new pmui.Text(LocalizedString(\"CurrentTankCapacity\") + \"B\", LevelSettings.FONT_SIZE);\n\n\t\tvar currentTankBLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankBLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcurrentTankBLabelAlign.setRelativeName(\"currentTankBLabel\");\n\t\tcurrentTankBLabelAlign.setRelativeToWidgetName(\"availableTankBLabel\");\n\t\tcurrentTankBLabelAlign.setMargin(0, 15, 0, 0);\n\t\tcurrentTankBLabel.setLayoutParameter(currentTankBLabelAlign);\n\n\t\tvar currentTankB = new pmui.TextInput(target.level.activeMap.tankB.startCapacity, \"0\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar currentTankBAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankBAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tcurrentTankBAlign.setRelativeToWidgetName(\"currentTankBLabel\");\n\t\tcurrentTankBAlign.setMargin(5, 0, 0, 0);\n\t\tcurrentTankB.setLayoutParameter(currentTankBAlign);\n\n\t\tcurrentTankB.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankB.setStartCapacity(Number(currentTankB.getString()));\n\t\t}.bind(this));\n\n\t\tvar availableTankCLabel = new pmui.Text(LocalizedString(\"AvailableTankCapacity\") + \"C\", LevelSettings.FONT_SIZE);\n\n\t\tvar availableTankCLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankCLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tavailableTankCLabelAlign.setRelativeName(\"availableTankCLabel\");\n\t\tavailableTankCLabelAlign.setRelativeToWidgetName(\"currentTankBLabel\");\n\t\tavailableTankCLabelAlign.setMargin(0, 15, 0, 0);\n\t\tavailableTankCLabel.setLayoutParameter(availableTankCLabelAlign);\n\n\t\tvar availableTankC = new pmui.TextInput(target.level.activeMap.tankC.availableCapacity, \"1\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar availableTankCAlign = new ccui.RelativeLayoutParameter();\n\t\tavailableTankCAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tavailableTankCAlign.setRelativeToWidgetName(\"availableTankCLabel\");\n\t\tavailableTankCAlign.setMargin(5, 0, 0, 0);\n\t\tavailableTankC.setLayoutParameter(availableTankCAlign);\n\n\t\tavailableTankC.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankC.setAvailableCapacity(Number(availableTankC.getString()));\n\n\t\t\ttarget.level.getCurrentRobot().updateNativeFunctions();\n\t\t}.bind(this));\n\n\t\tvar currentTankCLabel = new pmui.Text(LocalizedString(\"CurrentTankCapacity\") + \"C\", LevelSettings.FONT_SIZE);\n\n\t\tvar currentTankCLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankCLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcurrentTankCLabelAlign.setRelativeName(\"currentTankCLabel\");\n\t\tcurrentTankCLabelAlign.setRelativeToWidgetName(\"availableTankCLabel\");\n\t\tcurrentTankCLabelAlign.setMargin(0, 15, 0, 0);\n\t\tcurrentTankCLabel.setLayoutParameter(currentTankCLabelAlign);\n\n\t\tvar currentTankC = new pmui.TextInput(target.level.activeMap.tankC.startCapacity, \"0\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar currentTankCAlign = new ccui.RelativeLayoutParameter();\n\t\tcurrentTankCAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tcurrentTankCAlign.setRelativeToWidgetName(\"currentTankCLabel\");\n\t\tcurrentTankCAlign.setMargin(5, 0, 0, 0);\n\t\tcurrentTankC.setLayoutParameter(currentTankCAlign);\n\n\t\tcurrentTankC.setInsertTextCallback(this, function() {\n\t\t\ttarget.level.activeMap.tankC.setStartCapacity(Number(currentTankC.getString()));\n\t\t}.bind(this));\n\n\t\tlayout.addChild(currentTankALabel);\n\t\tlayout.addChild(currentTankA);\n\t\tlayout.addChild(availableTankALabel);\n\t\tlayout.addChild(availableTankA);\n\n\t\tlayout.addChild(currentTankBLabel);\n\t\tlayout.addChild(currentTankB);\n\t\tlayout.addChild(availableTankBLabel);\n\t\tlayout.addChild(availableTankB);\n\n\t\tlayout.addChild(currentTankCLabel);\n\t\tlayout.addChild(currentTankC);\n\t\tlayout.addChild(availableTankCLabel);\n\t\tlayout.addChild(availableTankC);\n\n\t\tlayout.setContentSize(Math.max(currentTankALabel.width + 5 + currentTankA.width, availableTankALabel.width + 5 + availableTankA.width),\n\t\t\t6 * currentTankALabel.height + 75);\n\n\t\treturn {\n\t\t\tlayout: layout\n\t\t}\n\t},\n\n\tgetExtraInfo: function (level)\n\t{\n\t\tif (level.taskList.getTask(pm.AquariusLevelModule.Type))\n\t\t{\n\t\t\tvar layout = new pmui.OvalLayout(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\t\tvar taskLabel = new pmui.Text(LocalizedString(\"AquariusFullTask\").format(level.taskList.getTask(pm.AquariusLevelModule.Type).data[0]), pm.settings.fontSize);\n\n\t\t\tvar taskAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttaskAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\ttaskAlign.setMargin(pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, 0, 0);\n\t\t\ttaskLabel.setLayoutParameter(taskAlign);\n\n\t\t\tlayout.addChild(taskLabel);\n\t\t\tlayout.setContentSizeWithBorder(taskLabel.width + 10, taskLabel.height + 10);\n\n\t\t\treturn layout;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Aquarius\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/aquarius_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/aquarius_robot-methods.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.AquariusRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Aquarius\": \"Aquarius\",\n\t\t\t\t\t\"AquariusLevelType\": \"Aquarius level\",\n\t\t\t\t\t\"AquariusTask\": \"Obtain amount of l.\",\n\t\t\t\t\t\"AquariusFullTask\": \"Obtain: {0} l.\",\n\t\t\t\t\t\"AquariusLevel\": \"Aquarius\",\n\t\t\t\t\t\"EnterAmountOfLiters\": \"Enter amount of liters\",\n\t\t\t\t\t\"CurrentTankCapacity\": \"Cur. capacity of tank \",\n\t\t\t\t\t\"AvailableTankCapacity\": \"Av. capacity of tank \",\n\t\t\t\t\t\"aquarius_AToB\": \"pour from A to B\",\n\t\t\t\t\t\"aquarius_BToC\": \"pour from B to C\",\n\t\t\t\t\t\"aquarius_AToC\": \"pour from A to C\",\n\t\t\t\t\t\"aquarius_fullA\": \"full A\",\n\t\t\t\t\t\"aquarius_fullB\": \"full B\",\n\t\t\t\t\t\"aquarius_fullC\": \"full C\",\n\t\t\t\t\t\"aquarius_BToA\": \"pour from B to A\",\n\t\t\t\t\t\"aquarius_CToB\": \"pour from C to B\",\n\t\t\t\t\t\"aquarius_CToA\": \"pour from C to A\",\n\t\t\t\t\t\"aquarius_emptyA\": \"empty A\",\n\t\t\t\t\t\"aquarius_emptyB\": \"empty B\",\n\t\t\t\t\t\"aquarius_emptyC\": \"empty C\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Aquarius\": \"Водолей\",\n\t\t\t\t\t\"AquariusLevelType\": \"Водолей\",\n\t\t\t\t\t\"AquariusTask\": \"Получить кол-во л.\",\n\t\t\t\t\t\"AquariusFullTask\": \"Получить: {0} л.\",\n\t\t\t\t\t\"AquariusLevel\": \"Водолей\",\n\t\t\t\t\t\"EnterAmountOfLiters\": \"Введите кол-во литров\",\n\t\t\t\t\t\"CurrentTankCapacity\": \"Тек. вм. сосуда \",\n\t\t\t\t\t\"AvailableTankCapacity\": \"Макс. вм. сосуда \",\n\t\t\t\t\t\"aquarius_AToB\": \"перелить из А в В\",\n\t\t\t\t\t\"aquarius_BToC\": \"перелить из В в С\",\n\t\t\t\t\t\"aquarius_AToC\": \"перелить из А в С\",\n\t\t\t\t\t\"aquarius_fullA\": \"наполнить А\",\n\t\t\t\t\t\"aquarius_fullB\": \"наполнить B\",\n\t\t\t\t\t\"aquarius_fullC\": \"наполнить C\",\n\t\t\t\t\t\"aquarius_BToA\": \"перелить из В в А\",\n\t\t\t\t\t\"aquarius_CToB\": \"перелить из С в В\",\n\t\t\t\t\t\"aquarius_CToA\": \"перелить из С в А\",\n\t\t\t\t\t\"aquarius_emptyA\": \"вылить из А\",\n\t\t\t\t\t\"aquarius_emptyB\": \"вылить из B\",\n\t\t\t\t\t\"aquarius_emptyC\": \"вылить из C\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new AquariusTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"AquariusTask\";\n\t},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.AquariusTask(level);\n\n\t\tfor(var i = 0; i < level.maps.length;++i)\n\t\t\ttask.fillWithInitialData(i, 0);\n\n\t\tlevel.taskList.addTask(pm.AquariusLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function() {},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function(a, b) {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.AquariusLevelModule.RobotType = \"aquarius-robot\";\npm.AquariusLevelModule.Type = \"aquarius\";\npm.AquariusLevelModule.ObjectTypes = {};\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\nvar AquariusMapEditorLayer = AquariusMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tdrawMap: function(previewDraw)\n\t{\n\t\tAquariusMapLayer.prototype.drawMap.call(this, previewDraw);\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class Layer for aquarius robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar AquariusRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends AquariusRobotSettingsLayer# */{\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Aquarius\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 22.07.19.\n */\n\n/**\n * @class Layer for aquarius task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.AquariusTask} task\n */\n\nvar AquariusTaskLayer = TaskLayer.extend(/** @lends AquariusTaskLayer# */{\n\n\t_literInput: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"AquariusTask\"), level, task, pm.AquariusLevelModule.Type);\n\n\t\tvar height = this.height;\n\n\t\tthis._literInput = new pmui.TextInput(\"\", LocalizedString(\"0\"), 20, AquariusTaskLayer.TASK_WIDTH);\n\t\tthis._literInput.setAttachCallback(this._updateTaskFromInput, this);\n\n\t\tvar literAlign = new ccui.LinearLayoutParameter();\n\t\tliterAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\t// literAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._literInput.setLayoutParameter(literAlign);\n\n\t\tthis.addChild(this._literInput);\n\n\t\tif (this._task.data[this._level.getActiveMapIndex()] !== undefined && this._task.data[this._level.getActiveMapIndex()] !== null)\n\t\t\tthis._literInput.setString(this._task.data[this._level.getActiveMapIndex()]);\n\n\t\theight += this._literInput.height + 20;\n\n\t\tthis.setContentSize(this.width, height);\n\t},\n\n\t_updateTaskFromInput: function()\n\t{\n\t\tthis._task.data[this._level.getActiveMapIndex()] = Number(this._literInput.getString());\n\t}\n});\n\nAquariusTaskLayer.TASK_WIDTH = 50.0;\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class 2D level where robot can paint some kinds({@link GrasshopperMapElementType}) of elements.\n * @extends pm.AbstractLevel\n */\npm.data.GrasshopperLevel = pm.AbstractLevel.extend(/** @lends pm.data.GrasshopperLevel# */{\n\ttypeName: \"GrasshopperLevel\",\n\t/**\n\t * Number of steps to the left.\n\t * @type {Number}\n\t */\n\tleftStepCount: 1,\n\t/**\n\t * Number of steps to the right.\n\t * @type {Number}\n\t */\n\trightStepCount: 1,\n\t/**\n\t * If start point is editable.\n\t * @type {Boolean}\n\t */\n\tisStartPointEditable: false,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.GrasshopperLevelModule.Type; }\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class 2D map where robot can paint some kinds({@link GrasshopperMapElementType}) of elements.\n * @implements SquarableMapWithWalls\n */\npm.data.GrasshopperMap = SquarableMap.extend(/** @lends pm.data.GrasshopperMap# */{\n\ttypeName: \"GrasshopperMap\",\n\t_startElementPos: 0,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.GrasshopperLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new GrasshopperMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new GrasshopperMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tthis.mapElements.push([]);\n\n\t\tfor(var j = 0; j < width; ++j)\n\t\t\tthis.mapElements[0].push(new pm.data.GrasshopperMapElement());\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\t/**\n * Paints element by element coordinate.\n * @param {Number} position in elements.\n */\n\tpaintElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.paint();\n\t},\n\n\t/**\n * Returns element to broken state by element coordinate.\n * @param {Number} x X-coordinate in elements.\n * @param {Number} y Y-coordinate in elements.\n */\n\tunpaintElement: function(pos)\n\t{\n\t\tvar element = this.element(pos);\n\t\telement.unpaint();\n\n\t},\n\n\tsetStartElementPos: function(pos)\n\t{\n\t\tthis._startElementPos = pos;\n\t},\n\n\tgetStartElementPos: function()\n\t{\n\t\treturn this._startElementPos;\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class Layer for {@link pm.data.GrasshopperMap}.\n * @implements SquarableMapLayerWithWalls\n */\nvar GrasshopperMapLayer = SquarableMapLayer.extend(/** @lends GrasshopperMapLayer#*/{\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Ortho;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t},\n\n\tneedToDrawOrientationOption: function()\n\t{\n\t\treturn true;\n\t},\n\n\tcontainsPoint: function(point)\n\t{\n\t\tvar mapPoint = this.terrainLayer.convertTouchToNodeSpace(point);\n\t\tvar mapSize = this.terrainLayer.getContentSize();\n\n\t\treturn (mapPoint.y >= - 3 * this.getMapElementSize().width && mapPoint.y <= mapSize.height + 3 * this.getMapElementSize().height);\n\t},\n\n\tgetBoundingBox: function(scale)\n\t{\n\t\tvar boundingBox = SquarableMapLayer.prototype.getBoundingBox.call(this);\n\n\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tboundingBox.x -= Math.sqrt(2)*this._mapElementSize.width/2 * this.getScale();\n\t\t\tboundingBox.y -= Math.sqrt(2)*this._mapElementSize.height/2 * this.getScale();\n\t\t}\n\n\t\treturn boundingBox;\n\t},\n\n\thandleTouch: function(touch)\n\t{\n\t\tif (!this._clicksEnabled)\n\t\t\treturn false;\n\n\t\tvar level = this._map.parentLevel;\n\n\t\tvar handles = false;\n\n\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\tif (!(robot.sprite instanceof pm.ObjectSprite2D))\n\t\t\t\tcontinue;\n\n\t\t\tif (robot.sprite.containsPoint(touch))\n\t\t\t{\n\t\t\t\tvar currentRobot = level.getCurrentRobot();\n\n\t\t\t\tif (currentRobot && robot && currentRobot != robot)\n\t\t\t\t{\n\t\t\t\t\tif (pm.settings.isEditorMode)\n\t\t\t\t\t\tthis._activeRobot = robot;\n\n\t\t\t\t\tfor (var i = 0; i < this._map.parentLevel.robots.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar rob = this._map.parentLevel.robots[i];\n\n\t\t\t\t\t\tif (rob.groupID === robot.groupID)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trob.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t\t\t\t\t\t\trob.sprite.setActive(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trob.sprite.setActive(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar startMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(currentRobot.id);\n\t\t\t\t\tvar startMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\t\t\t\tif(startMarkSprite)\n\t\t\t\t\t\tstartMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\t\t\tstartMarkName = pm.MapLayer2D.START_MARK_NAME_PATTERN.format(robot.id);\n\t\t\t\t\tstartMarkSprite = this.terrainLayer.getChildByName(startMarkName);\n\n\t\t\t\t\tif(startMarkSprite)\n\t\t\t\t\t\tstartMarkSprite.setOpacity(255);\n\n\t\t\t\t\tvar posMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(currentRobot.id);\n\t\t\t\t\tvar posMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\t\t\t\tif(posMarkSprite)\n\t\t\t\t\t\tposMarkSprite.setOpacity(pm.MapLayer2D.INACTIVE_ROBOT_OPACITY);\n\n\t\t\t\t\tposMarkName = pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(robot.id);\n\t\t\t\t\tposMarkSprite = this.terrainLayer.getChildByName(posMarkName);\n\n\t\t\t\t\tif(posMarkSprite)\n\t\t\t\t\t\tposMarkSprite.setOpacity(255);\n\t\t\t\t}\n\n\t\t\t\tpm.sendCustomEvent(pm.ROBOT_TOUCH_EVENT_STR, robot);\n\n\t\t\t\thandles = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (level.isStartPointEditable)\n\t\t{\n\t\t\tvar currentRobot = level.getCurrentRobot();\n\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar pos = cc.p(i, 0);\n\t\t\t\tvar element = this._map.element(pos);\n\n\t\t\t\tif (element.containsPoint(touch) && element.getRobotsCount() === 0)\n\t\t\t\t{\n\t\t\t\t\tif (this._map.element(currentRobot.position).startForRobot === currentRobot.id\n\t\t\t\t\t\t&& this._map.element(currentRobot.position).startRobotData.direction === currentRobot.direction)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._map.element(currentRobot.position).startForRobot = pm.MapElement.START_FOR_NO_ROBOT;\n\t\t\t\t\t\tdelete this._map.element(currentRobot.position).startRobotData.direction;\n\n\t\t\t\t\t\tthis._removeRobotStartPositionMark(currentRobot.id);\n\n\t\t\t\t\t\tthis._map.element(pos).startForRobot = currentRobot.id;\n\t\t\t\t\t\tthis._map.element(pos).startRobotData.direction = currentRobot.direction;\n\n\t\t\t\t\t\tcurrentRobot.startPosition = pos;\n\t\t\t\t\t\tcurrentRobot.setPosition(pos, currentRobot.direction);\n\t\t\t\t\t\tcurrentRobot.sprite.setRealPosition(currentRobot.position);\n\n\t\t\t\t\t\tthis.drawRobotStartPositionMark(currentRobot.id, currentRobot.position);\n\n\t\t\t\t\t\thandles = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.ANIMATE_RESTART_BUTTON);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn handles;\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tvar p = cc.p(x, 0);\n\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite(x - this._map.getStartElementPos(), this._previewDraw, this._orientation);\n\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\tif(this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t}\n\n\t\tvar delta = GrasshopperMapLayer.EXTRA_MAP_ELEMENTS_COUNT;\n\n\t\tfor (var x = -delta; x < 0; ++x)\n\t\t{\n\t\t\tvar p = cc.p(x, 0);\n\n\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t}\n\n\t\tfor (var x = this._map.width; x < this._map.width + delta; ++x)\n\t\t{\n\t\t\tvar p = cc.p(x, 0);\n\n\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t}\n\t},\n\n\t_drawIsoLayers: function(previewDraw)\n\t{\n\t\tthis.terrainLayer = new cc.Layer();\n\t\tthis.objectLayer = previewDraw ? new cc.Layer() : new pm.TopologicalSortLayer();\n\t\tthis.depthLayer = new cc.Layer();\n\n\t\tthis.container = new cc.Layer();\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.container.setCascadeOpacityEnabled(true);\n\t\tthis.terrainLayer.setCascadeOpacityEnabled(true);\n\t\tthis.objectLayer.setCascadeOpacityEnabled(true);\n\t\tthis.depthLayer.setCascadeOpacityEnabled(true);\n\n\t\tthis.container.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.terrainLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.objectLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.depthLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\n\t\tthis.terrainLayer.setRotation(-45.0);\n\t\tthis.objectLayer.setRotation(-45.0);\n\t\tthis.container.setScaleY(0.5);\n\n\t\tthis.container.addChild(this.terrainLayer, 0);\n\t\tthis.container.addChild(this.objectLayer, 1);\n\n\t\tthis.addChild(this.depthLayer);\n\t\tthis.addChild(this.container);\n\n\t\tvar rect = this.terrainLayer.getBoundingBox();\n\t\tthis.setContentSize(rect.width, rect.height / 2);\n\n\t\tvar elementRect = cc.rect(0, 0, this.getMapElementSize().width, this.getMapElementSize().height);\n\t\telementRect = cc.rectApplyAffineTransform(elementRect, this.terrainLayer.getNodeToParentTransform());\n\n\t\tthis._containerShift = cc.p((this.width - this.container.width) / 2,\n\t\t\t(this.height - this.container.height) / 2 - elementRect.height / 4);\n\n\t\tthis.container.setPosition(this._containerShift);\n\t\tthis.depthLayer.setPosition(this._containerShift.x, this._containerShift.y + elementRect.height / 4 + 1);\n\t},\n\n\t_drawDepthLines: function()\n\t{\n\t\tvar depthSprite = pm.moduleUtils.getDepthLineSprites(this._map.parentLevel.getType());\n\n\t\tif(depthSprite)\n\t\t{\n\t\t\tif (pm.settings.isEditorMode)\n\t\t\t{\n\t\t\t\tvar depthHorizontal = new cc.Sprite(depthSprite.horizontal);\n\n\t\t\t\tvar pos = cc.p(-this.getMapElementSize().height * this._map.height / 2 + 1.5,\n\t\t\t\t\t-this.getMapElementSize().width - this.getMapElementSize().width * this._map.width / 2 - 1.5);\n\t\t\t\tpos = cc.pointApplyAffineTransform(pos, pm.MapLayer2D.ISO_TRANSFORM);\n\n\t\t\t\tpos.x += this.getMapElementSize().width * this._map.width / 2;\n\t\t\t\tpos.y += this.getMapElementSize().height * this._map.height / 2 + 1;\n\n\t\t\t\tdepthHorizontal.setAnchorPoint(cc.p(0, 1));\n\t\t\t\tdepthHorizontal.setPosition(pos);\n\n\t\t\t\tthis.depthLayer.addChild(depthHorizontal);\n\t\t\t}\n\n\t\t\tvar delta = pm.settings.isEditorMode ? 0 : GrasshopperMapLayer.EXTRA_MAP_ELEMENTS_COUNT;\n\n\t\t\tfor (var j = -delta; j < this._map.width + delta; ++j)\n\t\t\t{\n\t\t\t\tvar depthVertical = new cc.Sprite(depthSprite.vertical);\n\n\t\t\t\tvar pos = cc.p(this.getMapElementSize().height * this._map.height - this.getMapElementSize().height * this._map.height/2,\n\t\t\t\t\tthis.getMapElementSize().width * j - this.getMapElementSize().width * this._map.width/2);\n\t\t\t\tpos = cc.pointApplyAffineTransform(pos, pm.MapLayer2D.ISO_TRANSFORM);\n\n\t\t\t\tpos.x += this.getMapElementSize().width * this._map.width/2 + 1;\n\t\t\t\tpos.y += this.getMapElementSize().height * this._map.height/2;\n\n\t\t\t\tdepthVertical.setAnchorPoint(cc.p(1, 1));\n\t\t\t\tdepthVertical.setPosition(pos);\n\n\t\t\t\tif (j < 0 || j >= this._map.width)\n\t\t\t\t\tdepthVertical.setOpacity(128);\n\n\t\t\t\tthis.depthLayer.addChild(depthVertical);\n\t\t\t}\n\t\t}\n\t}\n});\n\nGrasshopperMapLayer.EXTRA_MAP_ELEMENTS_COUNT = 100;\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * Grasshopper map element types.\n * @enum {Number}\n * @readonly\n */\nvar GrasshopperMapElementType = {\n\tNone: -1,\n\tLightBlueGrass: 0,\n\tBlueGrass: 1,\n\tUnpaintedGrass: 2\n};\n\n/**\n * @class Elements for {@link pm.data.GrasshopperMap}\n * @implements pm.MapElement\n */\npm.data.GrasshopperMapElement = pm.MapElement2D.extend(/** @lends pm.data.GrasshopperMapElement# */{\n\ttypeName: \"GrasshopperMapElement\",\n\n\t_elementNumber: 0,\n\t_paintCount: 0,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_paintCount\", \"_elementNumber\");\n\t\tthis._super();\n\t},\n\n\trestore: function()\n\t{\n\t\tthis._paintCount = 0;\n\t\tpm.MapElement.prototype.restore.call(this);\n\t},\n\n\tgenerateTerrainSprite: function(x, previewDraw, orientation)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(this._type));\n\n\t\t\tthis._notCompletedSprite = new cc.Sprite(\"MapsPics/mapElement_error_selection.png\");\n\n\t\t\tthis._notCompletedSprite.setPosition(cc.p(this.sprite.getSprite().getContentSize().width/2, this.sprite.getSprite().getContentSize().height/2));\n\t\t\tthis._notCompletedSprite.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tthis._notCompletedSprite.setVisible(false);\n\n\t\t\tthis.sprite.getSprite().addChild(this._notCompletedSprite, 10);\n\n\t\t\tthis._elementNumber = new ccui.Text(x, pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tthis._elementNumber.setPosition(cc.p(this.sprite.getSprite().getContentSize().width/2, this.sprite.getSprite().getContentSize().height/2));\n\t\t\tthis._elementNumber.setAnchorPoint(cc.p(0.5, 0.5));\n\n\t\t\tif (orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t{\n\t\t\t\tthis._elementNumber.setRotation(45);\n\t\t\t\tthis._elementNumber.setScaleY(2);\n\t\t\t}\n\n\t\t\tif (!previewDraw)\n\t\t\t\tthis.sprite.getSprite().addChild(this._elementNumber, 10);\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\tupdateElementNumber: function(number)\n\t{\n\t\tthis._elementNumber.setString(number);\n\t},\n\n\t/**\n * Paints element.\n */\n\tpaint: function()\n\t{\n\t\tif(this._type === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\tthis.setType(GrasshopperMapElementType.BlueGrass);\n\t\telse if(this._type === GrasshopperMapElementType.LightBlueGrass)\n\t\t\tthis.setType(GrasshopperMapElementType.BlueGrass);\n\n\t\t++this._paintCount;\n\t},\n\n\t/**\n * Returns element to broken state.\n */\n\tunpaint: function()\n\t{\n\t\t--this._paintCount;\n\n\t\tif(this._paintCount === 0)\n\t\t{\n\t\t\tif (this._type === GrasshopperMapElementType.BlueGrass)\n\t\t\t\tthis.setType(GrasshopperMapElementType.UnpaintedGrass);\n\t\t\telse if (this._type === GrasshopperMapElementType.BlueGrass)\n\t\t\t\tthis.setType(GrasshopperMapElementType.LightBlueGrass);\n\t\t}\n\t},\n\n\t/**\n * Checks is element is painted.\n * @returns {Boolean}\n */\n\tisPainted: function()\n\t{\n\t\treturn this.originalType === GrasshopperMapElementType.UnpaintedGrass && this._type === GrasshopperMapElementType.BlueGrass;\n\t},\n\n\t/**\n\t * Checks is element is bad painted.\n\t * @returns {Boolean}\n\t */\n\tisBadPainted: function()\n\t{\n\t\treturn this.originalType === GrasshopperMapElementType.LightBlueGrass && this._type === GrasshopperMapElementType.BlueGrass;\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tthis.setType(state);\n\t},\n\n\tcontainsPoint: function(touch)\n\t{\n\t\tvar rect = this.sprite.getSprite().getContentSize();\n\t\tvar point = this.sprite.getSprite().convertTouchToNodeSpace(touch);\n\n\t\treturn point.x > 0 && point.y > 0 && point.x < rect.width && point.y < rect.height;\n\t}\n});\n\npm.data.GrasshopperMapElement.START_ELEMENT_POS = \"start_element_pos\";\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class pm.Task for painting elements.
\n * Contains number of elements to paint.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.GrasshopperTask = pm.Task.extend(/** @lends pm.data.GrasshopperTask*/ {\n\ttypeName: \"GrasshopperTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar painted = 0;\n\t\tvar badPainted = 0;\n\n\t\tvar map = this._level.maps[mapIndex];\n\n\t\tvar retArray = [];\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tif(map.element(cc.p(x, 0)).isPainted())\n\t\t\t\t++painted;\n\t\t\telse if(map.element(cc.p(x, 0)).isBadPainted())\n\t\t\t\t++badPainted;\n\t\t}\n\n\t\tif (!(badPainted === 0 && painted === this.data[mapIndex]))\n\t\t{\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, 0)).getType() === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\t\t\tretArray.push(map.element(cc.p(x, 0)));\n\t\t\t\telse if (map.element(cc.p(x, 0)).isBadPainted())\n\t\t\t\t\tretArray.push(map.element(cc.p(x, 0)));\n\t\t\t}\n\t\t}\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif(data === undefined)\n\t\t\tdata = 0;\n\n\t\tthis.data[mapIndex] = data;\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class 2D robot for {@link pm.data.GrasshopperLevel}.
\n * Has a paint element native function.\n * @implements PlayerRobot4\n */\npm.data.GrasshopperRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.GrasshopperRobot# */{\n\ttypeName: \"GrasshopperRobot\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.GrasshopperRobot.NativeMethod.Paint] = new pm.NativeFunction(this, this._paint);\n\n\t\tthis.nativeFunctionMap[pm.data.GrasshopperRobot.NativeMethod.MoveLeft] = new pm.NativeFunction(this, this._moveLeft);\n\t\tthis.nativeFunctionMap[pm.data.GrasshopperRobot.NativeMethod.MoveRight] = new pm.NativeFunction(this, this._moveRight);\n\n\t\tthis.nativeFunctions.push(pm.data.GrasshopperRobot.NativeMethod.MoveLeft, pm.data.GrasshopperRobot.NativeMethod.MoveRight, pm.data.GrasshopperRobot.NativeMethod.Paint);\n\t},\n\n\tgetDirectionCount: function() { return 2; },\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new GrasshopperRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_paint: function()\n\t{\n\t\tthis.playAnimation(GrasshopperRobotAnimation.Paint, this._endPaint, this.direction);\n\t},\n\n\t_unpaint: function()\n\t{\n\t\tthis.playAnimation(GrasshopperRobotAnimation.Paint, this._endUnpaint, this.direction);\n\t},\n\n\t_endPaint: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.paintElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endUnpaint: function()\n\t{\n\t\tvar map = this.getMap();\n\n\t\tmap.unpaintElement(this.position);\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_moveLeft: function()\n\t{\n\t\tvar target = cc.p(this.position.x - this.parentLevel.leftStepCount, this.position.y);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Left);\n\t},\n\n\t_moveRight: function()\n\t{\n\t\tvar target = cc.p(this.position.x + this.parentLevel.rightStepCount, this.position.y);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, MapDirection4.Right);\n\t},\n\n\t_canMoveTo: function(target, direction)\n\t{\n\t\treturn true;\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn {\n\t\t\tposition: this.position,\n\t\t\tanimation: this.getLastAnimation()\n\t\t};\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tif (state.position !== this.position || this.isBroken())\n\t\t\tthis._moveTo(state.position, true);\n\t\telse if (state.animation === GrasshopperRobotAnimation.Paint)\n\t\t\tthis._unpaint();\n\t},\n\n\tgetType: function() { return pm.GrasshopperLevelModule.RobotType; },\n\n\tgetRobotMethodName: function (methodName)\n\t{\n\t\tif(methodName === pm.data.GrasshopperRobot.NativeMethod.MoveLeft)\n\t\t\treturn \"{0} {1}\".format(LocalizedString(methodName) ,this.parentLevel.leftStepCount);\n\t\telse if(methodName === pm.data.GrasshopperRobot.NativeMethod.MoveRight)\n\t\t\treturn \"{0} {1}\".format(LocalizedString(methodName), this.parentLevel.rightStepCount);\n\t\telse\n\t\t\treturn LocalizedString(methodName);\n\t}\n});\n\npm.data.GrasshopperRobot.NativeMethod =\n{\n\tPaint: \"kumir_paint\",\n\tUnpaint: \"kumir_unpaint\",\n\tMoveLeft: \"kumir_move_left\",\n\tMoveRight: \"kumir_move_right\"\n};\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n/**\n * Animation type for paint robot.\n * @enum {String}\n * @readonly\n */\nvar GrasshopperRobotAnimation = {Paint: \"paint\"};\n\n/**\n * @class 2D Sprite for {@link pm.data.GrasshopperRobot}\n * @implements pm.IsoRobotSprite\n */\nvar GrasshopperRobotSprite = pm.IsoRobotSprite.extend(/** @lends GrasshopperRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/kumir_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-broken.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-paint.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(25, 26);\n\t\tthis._maxPoint = cc.p(25, 26);\n\n\t\tthis._commandsSprite.setOpacity(0);\n\t},\n\n\t/**\n\t * Set orientation of sprite\n\t * @param {pm.MapLayer2D.Orientation | Number} orientation\n\t */\n\tsetOrientation: function(orientation)\n\t{\n\t\tthis._orientation = orientation;\n\t\tthis.sprite.setRotation(0);\n\t\tthis.sprite.setScale(1);\n\n\t\tif(this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tthis.sprite.setRotation(90);\n\t\t\tthis._commandsSprite.setScaleY(2);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// this.sprite.setRotation(90);\n\t\t\tthis._commandsSprite.setScaleY(1);\n\t\t}\n\n\t\tif(pm.MapLayer2D.ENABLE_DEBUG_DRAW_BB)\n\t\t\tthis._debugDrawBB();\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(24, 57);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(24, 25);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"kumir_robot0.png\";\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_d_0\";\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_i_0\";\n\t},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase GrasshopperRobotAnimation.Paint: this._paint(args, callback, target); break;\n\t\t\tdefault: pm.IsoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_move: function(pos, endCallback, target)\n\t{\n\t\tvar targetPos = this.getRealPosition(pos);\n\t\tvar callback = cc.callFunc(endCallback, target);\n\t\tvar moveEnd = cc.callFunc(function()\n\t\t{\n\t\t\tthis._needToUpdateZOrder = false;\n\t\t}, this);\n\n\t\tvar oldPos = this.getSprite().getPosition();\n\t\tvar mapElementSize = target.parentLevel.activeMap.mapLayer.getMapElementSize();\n\n\t\tvar diffPosX = (targetPos.x - oldPos.x) / mapElementSize.width;\n\t\tvar diffPosY = (targetPos.y - oldPos.y) / mapElementSize.height;\n\n\t\tvar speedRatio = Math.sqrt(diffPosX * diffPosX + diffPosY * diffPosY);\n\t\tvar height = this._orientation === pm.MapLayer2D.Orientation.Iso ? 50.0 : 110.0;\n\t\tvar moveRobot = cc.jumpTo(1.5 * speedRatio * pm.settings.getAnimationSpeed(), targetPos, height, 1);\n\n\t\tthis._needToUpdateZOrder = true;\n\t\tthis.getSprite().runAction(cc.sequence(moveRobot, moveEnd, callback));\n\t},\n\n\t_paint: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(\"kumir_robot_p_0\");\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar turnEnd = new cc.CallFunc(endCallback, target);\n\t\tthis.getSprite().runAction( new cc.Sequence(animate, turnEnd));\n\t},\n\n\tsetActive: function(flag)\n\t{\n\t\tthis._activeCircleSprite.setVisible(flag);\n\t\tthis._activeSprite.setVisible(flag);\n\t},\n\n\tshowCommands: function(flag, count)\n\t{\n\t\tif (flag && MethodStackLayer.opened)\n\t\t\treturn;\n\n\t\tif (flag)\n\t\t\tthis._commandsCount.setString(count);\n\n\t\tthis._commandsSprite.setVisible(flag);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class Functions for GrasshopperLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.GrasshopperLevelModule = pm.ModuleInfo.extend(/** @lends pm.GrasshopperLevelModule# */{\n\n\tname: \"Grasshopper\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.GrasshopperLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.GrasshopperMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar width = Math.max(3, level.robots.length);\n\n\t\tmap.setSize(width, 1);\n\n\t\tfor (var x = 0; x < width; ++x)\n\t\t\tmap.element(cc.p(x, 0)).originalType = GrasshopperMapElementType.LightBlueGrass;\n\n\t\tmap.element(cc.p(1, 0)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 0)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, 0)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, 0)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1)\n\t\t\t\t++x;\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.GrasshopperLevel();\n\n\t\tlevel.name = \"Новый Кузнечик\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.GrasshopperRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\t\tlevel.taskList.tasks[pm.GrasshopperLevelModule.Type] = new pm.data.GrasshopperTask(level);\n\t\tlevel.taskList.tasks[pm.GrasshopperLevelModule.Type].data[0] = 0;\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.GrasshopperLevelModule.RobotType] = \"kumir_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/kumir_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new GrasshopperRobotSettingsLayer(object);\n\t},\n\n\tgetExtraLevelSettings: function (level)\n\t{\n\t\tvar layout = new ccui.Layout();\n\t\tlayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar leftStepCountLabel = new pmui.Text(LocalizedString(\"LeftStepCount\"), LevelSettings.FONT_SIZE);\n\n\t\tvar leftStepCountLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tleftStepCountLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tleftStepCountLabelAlign.setRelativeName(\"leftStepCountLabel\");\n\t\tleftStepCountLabel.setLayoutParameter(leftStepCountLabelAlign);\n\n\t\tvar leftStepCount = new pmui.TextInput(level.leftStepCount, \"1\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar leftStepCountAlign = new ccui.RelativeLayoutParameter();\n\t\tleftStepCountAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tleftStepCountAlign.setRelativeToWidgetName(\"leftStepCountLabel\");\n\t\tleftStepCountAlign.setMargin(5, 0, 0, 0);\n\t\tleftStepCount.setLayoutParameter(leftStepCountAlign);\n\n\t\tleftStepCount.setInsertTextCallback(this, function() {\n\t\t\tlevel.leftStepCount = Number(leftStepCount.getString());\n\t\t}.bind(this));\n\n\t\tvar rightStepCountLabel = new pmui.Text(LocalizedString(\"RightStepCount\"), LevelSettings.FONT_SIZE);\n\n\t\tvar rightStepCountLabelAlign = new ccui.RelativeLayoutParameter();\n\t\trightStepCountLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\trightStepCountLabelAlign.setRelativeName(\"rightStepCountLabel\");\n\t\trightStepCountLabelAlign.setRelativeToWidgetName(\"leftStepCountLabel\");\n\t\trightStepCountLabelAlign.setMargin(0, 15, 0, 0);\n\t\trightStepCountLabel.setLayoutParameter(rightStepCountLabelAlign);\n\n\t\tvar rightStepCount = new pmui.TextInput(level.rightStepCount, \"1\", LevelSettings.FONT_SIZE, 40);\n\n\t\tvar rightStepCountAlign = new ccui.RelativeLayoutParameter();\n\t\trightStepCountAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\trightStepCountAlign.setRelativeToWidgetName(\"rightStepCountLabel\");\n\t\trightStepCountAlign.setMargin(5, 0, 0, 0);\n\t\trightStepCount.setLayoutParameter(rightStepCountAlign);\n\n\t\trightStepCount.setInsertTextCallback(this, function() {\n\t\t\tlevel.rightStepCount = Number(rightStepCount.getString());\n\t\t}.bind(this));\n\n\t\tvar editableStartPoint = new pmui.CheckBox(LocalizedString(\"EditableStartPoint\"), function (flag)\n\t\t{\n\t\t\tlevel.isStartPointEditable = flag;\n\t\t}, this, LevelSettings.FONT_SIZE, level.isStartPointEditable);\n\n\t\tvar editableStartPointAlign = new ccui.RelativeLayoutParameter();\n\t\teditableStartPointAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\teditableStartPointAlign.setRelativeToWidgetName(\"rightStepCountLabel\");\n\t\teditableStartPointAlign.setMargin(0, 15, 0, 0);\n\t\teditableStartPoint.setLayoutParameter(editableStartPointAlign);\n\n\t\tlayout.addChild(leftStepCountLabel);\n\t\tlayout.addChild(leftStepCount);\n\t\tlayout.addChild(rightStepCountLabel);\n\t\tlayout.addChild(rightStepCount);\n\t\tlayout.addChild(editableStartPoint);\n\t\tlayout.setContentSize(Math.max(leftStepCountLabel.width + 5 + leftStepCount.width, editableStartPoint.width),\n\t\t\t2 * leftStepCount.height + editableStartPoint.height + 7);\n\n\t\treturn layout;\n\t},\n\n\tgetExtraMapSettings: function (target)\n\t{\n\t\tvar separator = cc.size(5, 5);\n\t\tvar cellSize = cc.size(64, 64);\n\n\t\tvar startElementPos = new pmui.SelectTableView(cellSize, separator, 1, 1);\n\t\tstartElementPos.addSelectEventListener(function(selectedMapElement)\n\t\t{\n\t\t\ttarget.mapElementsTable.deselectAll();\n\n\t\t\tif (selectedMapElement)\n\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, pm.data.GrasshopperMapElement.START_ELEMENT_POS);\n\t\t\telse\n\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, undefined);\n\t\t}.bind(this), this);\n\n\t\tstartElementPos.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tstartElementPos.setFitObjectsSizes(true);\n\n\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(1), ccui.Widget.PLIST_TEXTURE);\n\n\t\tstartElementPos.setCell(0, 0, element);\n\t\tstartElementPos.setContentSize(cellSize.width + 2 * separator.width, cellSize.height + 2 * separator.height);\n\n\t\treturn {\n\t\t\tlayout: startElementPos,\n\t\t\tcallback: function() {\n\t\t\t\tstartElementPos.deselectAll();\n\t\t\t}\n\t\t}\n\t},\n\n\tgetExtraInfo: function (level)\n\t{\n\t\tvar layout = new pmui.OvalLayout(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tvar leftStepCountLabel = new pmui.Text(LocalizedString(\"LeftStepCount\") + \": \" + level.leftStepCount, pm.settings.fontSize);\n\t\tvar width = leftStepCountLabel.width;\n\t\tvar height = leftStepCountLabel.height + 5;\n\n\t\tvar leftStepCountLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tleftStepCountLabelAlign.setRelativeName(\"leftStepCountLabel\");\n\n\t\tif (level.isStartPointEditable)\n\t\t{\n\t\t\tvar taskLabel = new pmui.Text(LocalizedString(\"FindStartPoint\"), 24);\n\t\t\twidth = Math.max(taskLabel.width, width);\n\t\t\theight += taskLabel.height + 14;\n\n\t\t\tvar taskLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttaskLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\ttaskLabelAlign.setRelativeName(\"taskLabel\");\n\t\t\ttaskLabelAlign.setMargin(pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, 0, 0);\n\t\t\ttaskLabel.setLayoutParameter(taskLabelAlign);\n\n\t\t\tleftStepCountLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tleftStepCountLabelAlign.setRelativeToWidgetName(\"taskLabel\");\n\t\t\tleftStepCountLabelAlign.setMargin(0, 14, 0, 0);\n\n\t\t\tlayout.addChild(taskLabel);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tleftStepCountLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\tleftStepCountLabelAlign.setMargin(pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, pmui.OvalLayout.SLIM_BORDER_RADIUS + 5, 0, 0);\n\t\t}\n\n\t\tleftStepCountLabel.setLayoutParameter(leftStepCountLabelAlign);\n\n\t\tvar rightStepCountLabel = new pmui.Text(LocalizedString(\"RightStepCount\") + \": \" + level.rightStepCount, pm.settings.fontSize);\n\t\twidth = Math.max(rightStepCountLabel.width, width);\n\t\theight += rightStepCountLabel.height + 12;\n\n\t\tvar rightStepCountLabelAlign = new ccui.RelativeLayoutParameter();\n\t\trightStepCountLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\trightStepCountLabelAlign.setRelativeName(\"rightStepCountLabel\");\n\t\trightStepCountLabelAlign.setRelativeToWidgetName(\"leftStepCountLabel\");\n\t\trightStepCountLabelAlign.setMargin(0, 7, 0, 0);\n\t\trightStepCountLabel.setLayoutParameter(rightStepCountLabelAlign);\n\n\t\tlayout.addChild(leftStepCountLabel);\n\t\tlayout.addChild(rightStepCountLabel);\n\t\tlayout.setContentSizeWithBorder(width + 10, height);\n\n\t\treturn layout;\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn GrasshopperMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Grasshopper\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/grasshopper_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/kumir_robot-methods.plist\",\n\t\t\t\"Conditions/kumir_robot-conditions.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.GrasshopperRobot();\n\t},\n\n\tstopResizingHeight: function (map, side)\n\t{\n\t\treturn true;\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tgetAffineVector: function(dif)\n\t{\n\t\treturn cc.p(dif.x / Math.sqrt(2) + dif.y / (Math.sqrt(2) * 2), dif.x / Math.sqrt(2) - dif.y / (Math.sqrt(2) * 2));\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Grasshopper\": \"Grasshopper\",\n\t\t\t\t\t\"GrasshopperLevelType\": \"Grasshopper level\",\n\t\t\t\t\t\"GrasshopperTask\": \"Grasshopper task\",\n\t\t\t\t\t\"EditableStartPoint\": \"Editable start point\",\n\t\t\t\t\t\"FindStartPoint\": \"Find start point\",\n\t\t\t\t\t\"GrasshopperLevel\": \"Grasshopper\",\n\t\t\t\t\t\"LeftStepCount\" : \"Left step count\",\n\t\t\t\t\t\"RightStepCount\" : \"Right step count\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Grasshopper\": \"Кузнечик\",\n\t\t\t\t\t\"GrasshopperLevelType\": \"Кузнечик\",\n\t\t\t\t\t\"GrasshopperTask\": \"Задание покраски\",\n\t\t\t\t\t\"EditableStartPoint\": \"Ред. точки старта\",\n\t\t\t\t\t\"FindStartPoint\": \"Отметить точку старта\",\n\t\t\t\t\t\"GrasshopperLevel\": \"Кузнечик\",\n\t\t\t\t\t\"LeftStepCount\" : \"Шаг влево\",\n\t\t\t\t\t\"RightStepCount\" : \"Шаг вправо\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new GrasshopperTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"GrasshopperTask\";\n\t},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.GrasshopperTask(level);\n\n\t\tfor (var i = 0; i < level.maps.length;++i)\n\t\t{\n\t\t\tvar paintValue = 0;\n\t\t\tvar map = level.maps[i];\n\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, 0)).originalType === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\t\t\t++paintValue;\n\t\t\t}\n\n\t\t\ttask.fillWithInitialData(i, paintValue);\n\t\t}\n\n\t\tlevel.taskList.addTask(pm.GrasshopperLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function()\n\t{\n\t\treturn {\n\t\t\thorizontal: pm.spriteUtils.getMapTileFrame(\"grasshopper-depth_horizontal\"),\n\t\t\tvertical: pm.spriteUtils.getMapTileFrame(\"grasshopper-depth_vertical\")\n\t\t};\n\t},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function(a, b) {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.GrasshopperLevelModule.RobotType = \"grasshopper-robot\";\npm.GrasshopperLevelModule.Type = \"grasshopper\";\npm.GrasshopperLevelModule.ObjectTypes = {};\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\nvar GrasshopperMapEditorLayer = GrasshopperMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.GrasshopperMapElement();\n\t\tel.originalType = GrasshopperMapElementType.LightBlueGrass;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\t_drawMapElement: function (pos)\n\t{\n\t\tvar sprite = this._map.element(pos).generateTerrainSprite(pos.x - this._map.getStartElementPos(), this._previewDraw, this._orientation);\n\t\tsprite.getSprite().setPosition(this.realPosition(pos, cc.p(0, 0)));\n\n\t\tthis.addTerrainObject(sprite, 0);\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tvar p = cc.p(x, 0);\n\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite(x - this._map.getStartElementPos(), this._previewDraw, this._orientation);\n\n\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\tif (this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t}\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.ChangeMapElement)\n\t\t{\n\t\t\tif (this._selectedObjectForTapType === pm.data.GrasshopperMapElement.START_ELEMENT_POS)\n\t\t\t{\n\t\t\t\tthis._map.setStartElementPos(pos.x);\n\n\t\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar element = this._map.element(cc.p(i, 0));\n\t\t\t\t\telement.updateElementNumber(i - pos.x);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar element = this._map.element(pos);\n\t\t\t\telement.setType(this._selectedObjectForTapType);\n\t\t\t\telement.originalType = this._selectedObjectForTapType;\n\t\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t\t}\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddObject)\n\t\t{\n\t\t\tif (this._map.element(pos).getObjectCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tif (!pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, pos))\n\t\t\t\tthis._addObject(pos, pm.moduleUtils.generateObject(this._map.getType(), this._selectedObjectForTapType));\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tthis._onAddRobot(robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\tmoveElementsUp: function () {},\n\n\tmoveElementsDown: function () {},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tvar elementType = this._map.element(cc.p(i, 0)).getType();\n\n\t\t\tthis._map.element(cc.p(i + 1, 0)).setType(elementType);\n\t\t\tthis._map.element(cc.p(i + 1, 0)).originalType = elementType;\n\n\t\t\tvar type = GrasshopperMapElementType.LightBlueGrass;\n\t\t\tthis._map.element(cc.p(i, 0)).setType(type);\n\t\t\tthis._map.element(cc.p(i, 0)).originalType = type;\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tvar elementType = this._map.element(cc.p(i, 0)).getType();\n\n\t\t\tthis._map.element(cc.p(i - 1, 0)).setType(elementType);\n\t\t\tthis._map.element(cc.p(i - 1, 0)).originalType = elementType;\n\n\t\t\tvar type = GrasshopperMapElementType.LightBlueGrass;\n\t\t\tthis._map.element(cc.p(i, 0)).setType(type);\n\t\t\tthis._map.element(cc.p(i, 0)).originalType = type;\n\t\t}\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class Layer for grasshopper robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar GrasshopperRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends GrasshopperRobotSettingsLayer# */{\n\t_paintSlider: null,\n\t_paintLabel: null,\n\t_paintValue: 0,\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Grasshopper\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 19.07.19.\n */\n\n/**\n * @class Layer for grasshopper task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.GrasshopperTask} task\n */\n\nvar GrasshopperTaskLayer = TaskLayer.extend(/** @lends GrasshopperTaskLayer# */{\n\n\t_paintLabel: null,\n\t_paintSlider: null,\n\t_paintValue: null,\n\t_allPaintValue: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"GrasshopperTask\"), level, task, pm.GrasshopperLevelModule.Type);\n\n\t\tvar height = this.height;\n\n\t\tthis._paintLabel = new ccui.Text(\"0\", pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar paintLabelAlign = new ccui.LinearLayoutParameter();\n\t\tpaintLabelAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\tpaintLabelAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._paintLabel.setLayoutParameter(paintLabelAlign);\n\n\t\tthis.addChild(this._paintLabel);\n\t\theight += this._paintLabel.height;\n\n\t\tthis._paintSlider = new ccui.Slider();\n\t\tthis._paintSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._paintSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._paintSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._paintSlider.addEventListener(this._paintSliderValueChanged.bind(this));\n\n\t\tvar paintAlign = new ccui.LinearLayoutParameter();\n\t\tpaintAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\tpaintAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._paintSlider.setLayoutParameter(paintAlign);\n\n\t\tthis.addChild(this._paintSlider);\n\t\theight += this._paintSlider.height + 20;\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updatePaintSliderValue.bind(this), this);\n\n\t\tthis.setContentSize(this.width, height);\n\n\t\tvar map = this._level.activeMap;\n\n\t\tif (this._task.data[this._level.getActiveMapIndex()])\n\t\t{\n\t\t\tthis._allPaintValue = 0;\n\n\t\t\tfor (var x = 0; x < map.width; ++x)\n\t\t\t{\n\t\t\t\tif (map.element(cc.p(x, 0)).originalType === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\t\t\t++this._allPaintValue;\n\t\t\t}\n\n\t\t\tthis._paintValue = this._task.data[this._level.getActiveMapIndex()];\n\t\t\tthis._paintSlider.setPercent(this._paintValue/this._allPaintValue * 100);\n\t\t\tthis._paintLabel.setString(LocalizedString(\"NeedToPaintPattern\").format(this._paintValue));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._createPaintSliderValue();\n\t\t}\n\t},\n\n\t_createPaintSliderValue: function ()\n\t{\n\t\tthis._allPaintValue = 0;\n\n\t\tvar map =this._level.activeMap;\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tif (map.element(cc.p(x, 0)).originalType === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\t\t++this._allPaintValue;\n\t\t}\n\n\t\tthis._paintSlider.setPercent(100);\n\n\t\tthis._paintLabel.setString(LocalizedString(\"NeedToPaintPattern\").format(this._allPaintValue));\n\n\t\tthis._task.data[this._level.getActiveMapIndex()] = this._allPaintValue;\n\t},\n\n\t_updatePaintSliderValue: function()\n\t{\n\t\tthis._allPaintValue = 0;\n\n\t\tvar map =this._level.activeMap;\n\n\t\tfor (var x = 0; x < map.width; ++x)\n\t\t{\n\t\t\tif (map.element(cc.p(x, 0)).originalType === GrasshopperMapElementType.UnpaintedGrass)\n\t\t\t\t++this._allPaintValue;\n\t\t}\n\n\t\tif (this._paintSlider.getPercent() === 100)\n\t\t{\n\t\t\tthis._paintSlider.setPercent(100);\n\t\t\tthis._paintLabel.setString(LocalizedString(\"NeedToPaintPattern\").format(this._allPaintValue));\n\t\t\tthis._task.data[this._level.getActiveMapIndex()] = this._allPaintValue;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._paintSlider.setPercent(Math.floor(this._task.data[this._level.getActiveMapIndex()] / this._allPaintValue * 100));\n\t\t}\n\t},\n\n\t_paintSliderValueChanged: function (target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tvar paintValue = Math.floor(this._paintSlider.getPercent() / 100 * this._allPaintValue);\n\n\t\t\tif (this._paintSlider.getPercent() !== 0 && paintValue !== this._allPaintValue)\n\t\t\t\t++paintValue;\n\n\t\t\tthis._paintLabel.setString(LocalizedString(\"NeedToPaintPattern\").format(paintValue));\n\t\t\tthis._task.data[this._level.getActiveMapIndex()] = paintValue;\n\t\t}\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._updatePaintSliderValue();\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D level where robot can paint some kinds({@link DraftsmanMapElementType}) of elements.\n * @extends pm.AbstractLevel\n */\npm.data.DraftsmanLevel = pm.AbstractLevel.extend(/** @lends pm.data.DraftsmanLevel# */{\n\ttypeName: \"DraftsmanLevel\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.useMethodStack = false;\n\t},\n\n\tgetType: function() { return pm.DraftsmanLevelModule.Type; }\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D map where robot can paint some kinds({@link DraftsmanMapElementType}) of elements.\n * @implements SquarableMap\n */\npm.data.DraftsmanMap = SquarableMap.extend(/** @lends pm.data.DraftsmanMap# */{\n\ttypeName: \"DraftsmanMap\",\n\t_startElementPos: cc.p(),\n\tlines: [],\n\tbadLines: [],\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.DraftsmanLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new DraftsmanMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new DraftsmanMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tsetNotCompleted: function(flag)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.mapLayer.setNotCompleted(flag);\n\t\telse if(!flag)\n\t\t\tthis.badLines = [];\n\t},\n\n\tclean: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.mapLayer.setNotCompleted(false);\n\t\tthis.lines = [];\n\t\tMap2D.prototype.clean.call(this);\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tfor(var i = 0; i < height; ++i)\n\t\t{\n\t\t\tthis.mapElements.push([]);\n\n\t\t\tfor(var j = 0; j < width; ++j)\n\t\t\t\tthis.mapElements[i].push(new pm.data.DraftsmanMapElement());\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\tsetStartElementPos: function(pos)\n\t{\n\t\tthis._startElementPos = pos;\n\t},\n\n\tgetStartElementPos: function()\n\t{\n\t\treturn this._startElementPos;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for {@link pm.data.DraftsmanMap}.\n * @implements SquarableMapLayer\n */\nvar DraftsmanMapLayer = SquarableMapLayer.extend(/** @lends DraftsmanMapLayer#*/{\n\n\tdrawLayer: null,\n\tbadDrawLayer: null,\n\ttaskDrawLayer: null,\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Ortho;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\n\t\tpm.registerCustomEventListener(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR, this._updateMapElementsNumbers.bind(this), this);\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn false;\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor(var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite();\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\t\tif(this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t\t}\n\t\t}\n\n\t\tthis._updateMapElementsNumbers();\n\n\t\tif (this._previewDraw)\n\t\t\treturn;\n\n\t\tvar delta = DraftsmanMapLayer.EXTRA_MAP_ELEMENTS_COUNT;\n\n\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor (var y = -delta; y < 0; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\n\t\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t}\n\n\t\t\tfor (var y = this._map.height; y < this._map.height + delta; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\n\t\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t}\n\t\t}\n\n\t\tfor (var y = -delta; y < this._map.height + delta; ++y)\n\t\t{\n\t\t\tfor (var x = -delta; x < 0; ++x)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\n\t\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t}\n\n\t\t\tfor (var x = this._map.width; x < this._map.width + delta; ++x)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\n\t\t\t\tvar terrainSprite = new pm.TerrainSprite(pm.spriteUtils.getMapGrassTileFrame(0));\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tterrainSprite.getSprite().setOpacity(128);\n\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\t\t\t}\n\t\t}\n\n\t\tthis.drawTask();\n\t},\n\n\t_updateMapElementsNumbers: function()\n\t{\n\t\tif (this._previewDraw)\n\t\t\treturn;\n\n\t\tvar startElementPos = this._map.getStartElementPos();\n\n\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tthis._map.element(p).updateElementNumber(cc.p(x - startElementPos.x, startElementPos.y - y));\n\t\t\t}\n\t\t}\n\t},\n\n\t_drawOrthoLayers: function(previewDraw)\n\t{\n\t\tpm.MapLayer2D.prototype._drawOrthoLayers.call(this, previewDraw);\n\n\t\tthis.drawLayer = new cc.Layer();\n\n\t\tthis.drawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.drawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.drawLayer.setPosition(this._containerShift);\n\n\t\tthis.badDrawLayer = new cc.DrawNode();\n\n\t\tthis.badDrawLayer.setVisible(false);\n\t\tthis.badDrawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.badDrawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.badDrawLayer.setPosition(this._containerShift);\n\n\t\tthis.taskDrawLayer = new cc.DrawNode();\n\n\t\tthis.taskDrawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.taskDrawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.taskDrawLayer.setPosition(this._containerShift);\n\n\t\tthis.objectLayer.setLocalZOrder(2);\n\t\tthis.addChild(this.taskDrawLayer, 1);\n\t\tthis.addChild(this.drawLayer, 1);\n\t\tthis.addChild(this.badDrawLayer, 1);\n\t},\n\n\tsetNotCompleted: function(flag)\n\t{\n\t\tif (flag)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.badLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar line = this._map.badLines[i];\n\t\t\t\tthis.badDrawLayer.drawSegment(this.realPosition(line.oldPos, cc.p(0, 0)),\n\t\t\t\t\tthis.realPosition(line.newPos, cc.p(0, 0)), DraftsmanMapLayer.LINE_WIDTH, cc.color.RED);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.badDrawLayer.clear();\n\t\t\tthis._map.badLines = [];\n\t\t}\n\n\t\tthis.badDrawLayer.setVisible(flag);\n\t},\n\n\tdrawTask: function ()\n\t{\n\t\tvar task = this._map.parentLevel.taskList.getTask(pm.DraftsmanLevelModule.Type);\n\n\t\tif (!task)\n\t\t\treturn;\n\n\t\tvar mapIndex = this._map.parentLevel.getActiveMapIndex();\n\n\t\tfor (var i = 0; i < task.data[mapIndex].length; ++i)\n\t\t{\n\t\t\tvar line = task.data[mapIndex][i];\n\t\t\tthis.taskDrawLayer.drawSegment(this.realPosition(line.oldPos, cc.p(0, 0)),\n\t\t\t\tthis.realPosition(line.newPos, cc.p(0, 0)), DraftsmanMapLayer.LINE_WIDTH, DraftsmanMapLayer.TASK_LINE_COLOR);\n\t\t}\n\t},\n\n\tclean: function()\n\t{\n\t\tpm.MapLayer2D.prototype.clean.call(this);\n\n\t\tthis.drawLayer.removeAllChildren();\n\t}\n});\n\nDraftsmanMapLayer.LINE_WIDTH = 4;\nDraftsmanMapLayer.TASK_LINE_COLOR = cc.color(0,75,255);\nDraftsmanMapLayer.EXTRA_MAP_ELEMENTS_COUNT = 0;\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * Painr map element types.\n * @enum {Number}\n * @readonly\n */\nvar DraftsmanMapElementType = {\n\tNone: -1,\n\tGreen: 0\n};\n\n/**\n * @class Elements for {@link pm.data.DraftsmanMap}\n * @implements pm.MapElement\n */\npm.data.DraftsmanMapElement = pm.MapElement2D.extend(/** @lends pm.data.DraftsmanMapElement# */{\n\ttypeName: \"DraftsmanMapElement\",\n\t_elementNumber: null,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_elementNumber\");\n\t\tthis._super();\n\t},\n\n\tupdateElementNumber: function(pos)\n\t{\n\t\tif (this.sprite.getSprite().getChildByTag(pm.data.DraftsmanMapElement.ELEMENT_NUMBER_TAG))\n\t\t{\n\t\t\tthis.sprite.getSprite().removeChildByTag(pm.data.DraftsmanMapElement.ELEMENT_NUMBER_TAG);\n\t\t\tthis._elementNumber = null;\n\t\t}\n\n\t\tif (pos.x !== 0 && pos.y !== 0)\n\t\t\treturn;\n\n\t\tthis._elementNumber = new ccui.Text(pos.x + pos.y, pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._elementNumber.setPosition(cc.p(this.sprite.getSprite().getContentSize().width / 2, this.sprite.getSprite().getContentSize().height / 2));\n\t\tthis._elementNumber.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tthis.sprite.getSprite().addChild(this._elementNumber, 10, pm.data.DraftsmanMapElement.ELEMENT_NUMBER_TAG);\n\t},\n\n\tgetState: function ()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\tthis.setType(state);\n\t}\n});\n\npm.data.DraftsmanMapElement.START_ELEMENT_POS = \"start_element_pos\";\npm.data.DraftsmanMapElement.ELEMENT_NUMBER_TAG = 1552;\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class pm.Task for painting elements.
\n * Contains number of elements to paint.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.DraftsmanTask = pm.Task.extend(/** @lends pm.data.DraftsmanTask*/ {\n\ttypeName: \"DraftsmanTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar drawnLines = this._level.maps[mapIndex].lines;\n\t\tvar taskLines = this.data[mapIndex];\n\n\t\tvar retArray = [];\n\t\tvar badLines = [];\n\n\t\tif (taskLines.length === 0 && drawnLines.length === 0)\n\t\t{\n\t\t\treturn retArray;\n\t\t}\n\t\telse if (drawnLines.length > 0 && taskLines.length === 0)\n\t\t{\n\t\t\tbadLines = drawnLines;\n\t\t}\n\t\telse if (drawnLines.length === 0 && taskLines.length > 0)\n\t\t{\n\t\t\tbadLines = taskLines;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = 0; i < taskLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar from = taskLines[i].oldPos;\n\t\t\t\tvar to = taskLines[i].newPos;\n\n\t\t\t\tvar result = drawnLines.filter(function(el)\n\t\t\t\t{\n\t\t\t\t\treturn el.oldPos.x === from.x && el.oldPos.y === from.y && el.newPos.x === to.x && el.newPos.y === to.y;\n\t\t\t\t}.bind(this));\n\n\t\t\t\tif (result.length === 0)\n\t\t\t\t\tbadLines.push(taskLines[i]);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < drawnLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar from = drawnLines[i].oldPos;\n\t\t\t\tvar to = drawnLines[i].newPos;\n\n\t\t\t\tvar result = taskLines.filter(function(el)\n\t\t\t\t{\n\t\t\t\t\treturn el.oldPos.x === from.x && el.oldPos.y === from.y && el.newPos.x === to.x && el.newPos.y === to.y;\n\t\t\t\t}.bind(this));\n\n\t\t\t\tif (result.length === 0)\n\t\t\t\t\tbadLines.push(drawnLines[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._level.maps[mapIndex].badLines = badLines;\n\n\t\tif (badLines.length > 0)\n\t\t\tretArray.push(this._level.maps[mapIndex]);\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif (data === undefined)\n\t\t\tdata = [];\n\n\t\tthis.data[mapIndex] = data;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class 2D robot for {@link pm.data.DraftsmanLevel}.
\n * Has a paint element native function.\n * @implements PlayerRobot4\n */\npm.data.DraftsmanRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.DraftsmanRobot# */{\n\ttypeName: \"DraftsmanRobot\",\n\t_penFlag: false,\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_penFlag\");\n\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.DraftsmanRobot.NativeMethod.MoveToPoint] = new pm.NativeFunction(this, this._moveToPoint, 2);\n\t\tthis.nativeFunctionMap[pm.data.DraftsmanRobot.NativeMethod.MoveToVector] = new pm.NativeFunction(this, this._moveToVector, 2);\n\n\t\tthis.nativeFunctionMap[pm.data.DraftsmanRobot.NativeMethod.PenDown] = new pm.NativeFunction(this, this._penDown);\n\t\tthis.nativeFunctionMap[pm.data.DraftsmanRobot.NativeMethod.PenUp] = new pm.NativeFunction(this, this._penUp);\n\n\t\tthis.nativeFunctions.push(pm.data.DraftsmanRobot.NativeMethod.MoveToPoint, pm.data.DraftsmanRobot.NativeMethod.MoveToVector,\n\t\t\tpm.data.DraftsmanRobot.NativeMethod.PenDown, pm.data.DraftsmanRobot.NativeMethod.PenUp);\n\t},\n\n\tgetDirectionCount: function() { return 4; },\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new DraftsmanRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_penDown: function()\n\t{\n\t\tthis.setPenFlag(true);\n\t\t// this.setStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\t// this.playAnimation(KumirRobotAnimation.Paint, this._endPaint, 0);\n\t},\n\n\t_endPenDown: function()\n\t{\n\t\t// this.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_penUp: function()\n\t{\n\t\tthis.setPenFlag(false);\n\t\t// this.setStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endPenUp: function()\n\t{\n\t\t// this.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tsetPenFlag: function(flag)\n\t{\n\t\tthis._penFlag = flag;\n\t},\n\n\tgetPenFlag: function()\n\t{\n\t\treturn this._penFlag;\n\t},\n\n\t_moveToPoint: function(x1, x2)\n\t{\n\t\tvar startElementPos = this.parentLevel.activeMap.getStartElementPos();\n\t\tvar target = cc.p(startElementPos.x + x1, startElementPos.y - x2);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false);\n\t},\n\n\t_moveToVector: function(x1, x2)\n\t{\n\t\tvar target = cc.p(this.position.x + x1, this.position.y - x2);\n\n\t\tif (target.x < 0 || target.y < 0 || target.x >= this.getMap().width || target.y >= this.getMap().height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false);\n\t},\n\n\t_endMove: function()\n\t{\n\t\tif (this._penFlag)\n\t\t{\n\t\t\tthis.parentLevel.activeMap.lines.push({\n\t\t\t\toldPos: this._oldPosition,\n\t\t\t\tnewPos: this.position\n\t\t\t});\n\t\t}\n\n\t\tif (!CORE_BUILD && !this.needToPlayAnimation() && this._penFlag)\n\t\t{\n\t\t\tvar oldPos = this.sprite.getRealPosition(this._oldPosition);\n\t\t\tvar targetPos = this.sprite.getRealPosition(this.position);\n\n\t\t\tvar length = Math.sqrt((targetPos.x - oldPos.x) * (targetPos.x - oldPos.x) + (targetPos.y - oldPos.y) * (targetPos.y - oldPos.y));\n\t\t\tvar rotationAngle = cc.radiansToDegrees(Math.acos((targetPos.x - oldPos.x) / length));\n\n\t\t\tif (targetPos.y - oldPos.y > 0)\n\t\t\t\trotationAngle *= -1;\n\n\t\t\tvar line = new cc.Scale9Sprite(\"System/Line.png\");\n\n\t\t\tline.setAnchorPoint(cc.p(0, 0.5));\n\t\t\tline.setRotation(rotationAngle);\n\t\t\tline.setPosition(cc.p(oldPos.x - (targetPos.x - oldPos.x) / length,oldPos.y - (targetPos.y - oldPos.y) / length));\n\t\t\tline.setScale((length + 2) / line.width, 1);\n\t\t\tthis.parentLevel.activeMap.mapLayer.drawLayer.addChild(line);\n\n\t\t\tthis.updateSprite();\n\t\t}\n\n\t\tpm.PlayerRobot2D.prototype._endMove.call(this);\n\t},\n\n\treset: function()\n\t{\n\t\tthis.setPenFlag(false);\n\t\tPlayerRobot4.prototype.reset.call(this);\n\t},\n\n\tgetState: function ()\n\t{\n\t\t// return {\n\t\t// \tposition: this.position,\n\t\t// \tdirection: this.direction,\n\t\t// \tanimation: this.getLastAnimation()\n\t\t// };\n\t},\n\n\tsetState: function (state)\n\t{\n\t\t// if (state.direction !== this.direction)\n\t\t// \tthis.direction = state.direction;\n\t\t//\n\t\t// if (state.position !== this.position || this.isBroken())\n\t\t// \tthis._moveTo(state.position, true);\n\t\t// else if (state.animation === DraftsmanRobotAnimation.Paint)\n\t\t// \tthis._unpaint();\n\t},\n\n\tgetType: function() { return pm.DraftsmanLevelModule.RobotType; }\n});\n\npm.data.DraftsmanRobot.NativeMethod =\n{\n\tMoveToPoint: \"draftsman_move_to_point\",\n\tMoveToVector: \"draftsman_move_to_vector\",\n\tPenDown: \"draftsman_pen_down\",\n\tPenUp: \"draftsman_pen_up\"\n};\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n/**\n * Animation type for paint robot.\n * @enum {String}\n * @readonly\n */\nvar DraftsmanRobotAnimation = {Paint: \"paint\"};\n\n/**\n * @class 2D Sprite for {@link pm.data.DraftsmanRobot}\n * @implements pm.IsoRobotSprite\n */\nvar DraftsmanRobotSprite = pm.IsoRobotSprite.extend(/** @lends DraftsmanRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/kumir_robot-animations.plist\");\n\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-broken.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-paint.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(25, 25);\n\t\tthis._maxPoint = cc.p(25, 25);\n\n\t\tthis._commandsSprite.setOpacity(0);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(25, 57);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(25, 25);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"kumir_robot0.png\";\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_d_{0}\".format(direction);\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_i_0\";\n\t},\n\n\t//getRealPosition: function(x,y)\n\t//{\n\t// return this.mapLayer.realPosition(x, y, -35, 35);\n\t//},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase DraftsmanRobotAnimation.Paint: this._paint(args, callback, target); break;\n\t\t\tdefault: pm.IsoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_paint: function(direction, endCallback, target)\n\t{\n\t\tvar animation = cc.animationCache.getAnimation(\"kumir_robot_p_0\");\n\t\tanimation.setDelayPerUnit(pm.settings.getAnimationSpeed()/animation.getTotalDelayUnits());\n\t\tvar animate = new cc.Animate(animation);\n\n\t\tvar turnEnd = new cc.CallFunc(endCallback, target);\n\t\tthis.getSprite().runAction( new cc.Sequence(animate, turnEnd));\n\t},\n\n\t_move: function(pos, endCallback, target)\n\t{\n\t\tif (!target.getPenFlag())\n\t\t{\n\t\t\tpm.RobotSprite2D.prototype._move.call(this, pos, endCallback, target);\n\t\t\treturn;\n\t\t}\n\n\t\tvar targetPos = this.getRealPosition(pos);\n\t\tvar callback = cc.callFunc(endCallback, target);\n\t\tvar moveEnd = cc.callFunc(function()\n\t\t{\n\t\t\tthis._needToUpdateZOrder = false;\n\t\t}, this);\n\n\t\tvar oldPos = this.getSprite().getPosition();\n\t\tvar mapElementSize = target.parentLevel.activeMap.mapLayer.getMapElementSize();\n\n\t\tvar diffPosX = (targetPos.x - oldPos.x) / mapElementSize.width;\n\t\tvar diffPosY = (targetPos.y - oldPos.y) / mapElementSize.height;\n\n\t\tvar speedRatio = Math.sqrt(diffPosX * diffPosX + diffPosY * diffPosY);\n\t\tvar moveRobot = cc.moveTo(speedRatio * pm.settings.getAnimationSpeed(), targetPos);\n\n\t\tvar length = Math.sqrt((targetPos.x - oldPos.x) * (targetPos.x - oldPos.x) + (targetPos.y - oldPos.y) * (targetPos.y - oldPos.y));\n\t\tvar rotationAngle = cc.radiansToDegrees(Math.acos((targetPos.x - oldPos.x) / length));\n\n\t\tif (targetPos.y - oldPos.y > 0)\n\t\t\trotationAngle *= -1;\n\n\t\tvar line = new cc.Scale9Sprite(\"System/Line.png\");\n\n\t\tline.setAnchorPoint(cc.p(0, 0.5));\n\t\tline.setRotation(rotationAngle);\n\t\tline.setPosition(cc.p(oldPos.x - (targetPos.x - oldPos.x) / length,oldPos.y - (targetPos.y - oldPos.y) / length));\n\t\ttarget.parentLevel.activeMap.mapLayer.drawLayer.addChild(line);\n\n\t\tvar scaleLine = cc.scaleTo(speedRatio * pm.settings.getAnimationSpeed(), (length + 2) / line.width, 1);\n\n\t\tvar moveAction = cc.targetedAction(this.getSprite(), moveRobot);\n\t\tvar scaleAction = cc.targetedAction(line, scaleLine);\n\n\t\tthis._needToUpdateZOrder = true;\n\t\tthis.getSprite().runAction(cc.sequence(cc.spawn(moveAction, scaleAction), moveEnd, callback));\n\t},\n\n\tsetActive: function(flag)\n\t{\n\t\tthis._activeCircleSprite.setVisible(flag);\n\t\tthis._activeSprite.setVisible(flag);\n\t},\n\n\tshowCommands: function(flag, count)\n\t{\n\t\tif (flag && MethodStackLayer.opened)\n\t\t\treturn;\n\n\t\tif (flag)\n\t\t\tthis._commandsCount.setString(count);\n\n\t\tthis._commandsSprite.setVisible(flag);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Functions for DraftsmanLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.DraftsmanLevelModule = pm.ModuleInfo.extend(/** @lends pm.DraftsmanLevelModule# */{\n\n\tname: \"Draftsman\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.DraftsmanLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.DraftsmanMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\t\tmap.setStartElementPos(cc.p(0, map.height - 1));\n\n\t\tfor(var x = 0; x < sqrtCount; ++x)\n\t\t{\n\t\t\tfor(var y = 0; y < sqrtCount; ++y)\n\t\t\t\tmap.element(cc.p(x, y)).originalType = DraftsmanMapElementType.Green;\n\t\t}\n\n\t\tmap.element(cc.p(1, 1)).startForRobot = level.robots[0].id;\n\t\tmap.element(cc.p(1, 1)).startRobotData.direction = 0;\n\n\t\tvar x = 0;\n\t\tvar y = 0;\n\n\t\tfor (var i = 1; i < level.robots.length; ++i)\n\t\t{\n\t\t\tmap.element(cc.p(x, y)).startForRobot = level.robots[i].id;\n\t\t\tmap.element(cc.p(x, y)).startRobotData.direction = 0;\n\n\t\t\t++x;\n\n\t\t\tif (x === 1 && y === 1)\n\t\t\t\t++x;\n\n\t\t\tif (x >= sqrtCount)\n\t\t\t{\n\t\t\t\t++y;\n\t\t\t\tx = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.DraftsmanLevel();\n\n\t\tlevel.name = \"Новый Чертежник\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.DraftsmanRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.DraftsmanLevelModule.RobotType] = \"kumir_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/kumir_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new DraftsmanRobotSettingsLayer(object);\n\t},\n\n\tgetExtraMapSettings: function (target)\n\t{\n\t\tvar separator = cc.size(5, 5);\n\t\tvar cellSize = cc.size(64, 64);\n\n\t\tvar startElementPos = new pmui.SelectTableView(cellSize, separator, 1, 1);\n\t\tstartElementPos.addSelectEventListener(function(selectedMapElement)\n\t\t{\n\t\t\ttarget.mapElementsTable.deselectAll();\n\n\t\t\tif (selectedMapElement)\n\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, pm.data.DraftsmanMapElement.START_ELEMENT_POS);\n\t\t\telse\n\t\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, undefined);\n\t\t}.bind(this), this);\n\n\t\tstartElementPos.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tstartElementPos.setFitObjectsSizes(true);\n\n\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(0), ccui.Widget.PLIST_TEXTURE);\n\n\t\tstartElementPos.setCell(0, 0, element);\n\t\tstartElementPos.setContentSize(cellSize.width + 2 * separator.width, cellSize.height + 2 * separator.height);\n\n\t\treturn {\n\t\t\tlayout: startElementPos,\n\t\t\tcallback: function() {\n\t\t\t\tstartElementPos.deselectAll();\n\t\t\t}\n\t\t}\n\t},\n\n\tgetMapElementsType: function()\n\t{\n\t\treturn DraftsmanMapElementType;\n\t},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Draftsman\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/draftsman_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/draftsman_robot-methods.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.DraftsmanRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tcanUseMethodStack: function()\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Draftsman\": \"Draftsman\",\n\t\t\t\t\t\"DraftsmanLevelType\": \"Draftsman level\",\n\t\t\t\t\t\"DraftsmanTask\": \"Draw figure\",\n\t\t\t\t\t\"DraftsmanLevel\": \"Draftsman\",\n\t\t\t\t\t\"draftsman_move_to_point\": \"move to point\",\n\t\t\t\t\t\"draftsman_move_to_vector\": \"move to vector\",\n\t\t\t\t\t\"draftsman_pen_down\": \"pen down\",\n\t\t\t\t\t\"draftsman_pen_up\": \"pen up\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Draftsman\": \"Чертежник\",\n\t\t\t\t\t\"DraftsmanLevelType\": \"Чертежник\",\n\t\t\t\t\t\"DraftsmanTask\": \"Нарисовать фигуру\",\n\t\t\t\t\t\"DraftsmanLevel\": \"Чертежник\",\n\t\t\t\t\t\"draftsman_move_to_point\": \"сместиться в точку\",\n\t\t\t\t\t\"draftsman_move_to_vector\": \"сместиться на вектор\",\n\t\t\t\t\t\"draftsman_pen_down\": \"опустить перо\",\n\t\t\t\t\t\"draftsman_pen_up\": \"поднять перо\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new DraftsmanTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"DraftsmanTask\";\n\t},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.DraftsmanTask(level);\n\n\t\tfor (var i = 0; i < level.maps.length; ++i)\n\t\t{\n\t\t\tvar lines = level.maps[i].lines;\n\t\t\ttask.fillWithInitialData(i, lines);\n\t\t}\n\n\t\tlevel.taskList.addTask(pm.DraftsmanLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function() {},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function(a, b) {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.DraftsmanLevelModule.RobotType = \"draftsman-robot\";\npm.DraftsmanLevelModule.Type = \"draftsman\";\npm.DraftsmanLevelModule.ObjectTypes = {};\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\nvar DraftsmanMapEditorLayer = DraftsmanMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function ()\n\t{\n\t\tvar el = null;\n\t\tel = new pm.data.DraftsmanMapElement();\n\t\tel.originalType = DraftsmanMapElementType.Green;\n\t\tel.initElement();\n\t\treturn el;\n\t},\n\n\tresizeContainer: function()\n\t{\n\t\tSquarableMapEditorLayerHelper.resizeContainer.call(this);\n\n\t\tthis.taskDrawLayer.clear();\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this._map.height; ++y)\n\t\t\t{\n\t\t\t\tvar p = cc.p(x, y);\n\t\t\t\tvar terrainSprite = this._map.element(p).generateTerrainSprite();\n\n\t\t\t\tterrainSprite.getSprite().setPosition(this.realPosition(p, cc.p(0, 0)));\n\t\t\t\tthis.addTerrainObject(terrainSprite, 0);\n\n\t\t\t\tif (this._map.element(p).startForRobot !== pm.MapElement.START_FOR_NO_ROBOT)\n\t\t\t\t\tthis.drawRobotStartPositionMark(this._map.element(p).startForRobot, p);\n\t\t\t}\n\t\t}\n\n\t\tthis._updateMapElementsNumbers();\n\n\t\tthis.drawTask();\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.ChangeMapElement)\n\t\t{\n\t\t\tif (this._selectedObjectForTapType === pm.data.DraftsmanMapElement.START_ELEMENT_POS)\n\t\t\t{\n\t\t\t\tthis._map.setStartElementPos(pos);\n\n\t\t\t\tfor (var x = 0; x < this._map.width; ++x)\n\t\t\t\t{\n\t\t\t\t\tfor (var y = 0; y < this._map.height; ++y)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar element = this._map.element(cc.p(x, y));\n\t\t\t\t\t\telement.updateElementNumber(cc.p(x - pos.x, pos.y - y));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar element = this._map.element(pos);\n\t\t\t\telement.setType(this._selectedObjectForTapType);\n\t\t\t\telement.originalType = this._selectedObjectForTapType;\n\t\t\t\tpm.sendCustomEvent(pme.MAP_GRASS_COUNT_CHANGED_EVENT_STR);\n\t\t\t}\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT, robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddObject)\n\t\t{\n\t\t\tif (this._map.element(pos).getObjectCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tif (!pm.moduleUtils.canNotDragOrAddObject(this._map.getType(), this._map, pos))\n\t\t\t\tthis._addObject(pos, pm.moduleUtils.generateObject(this._map.getType(), this._selectedObjectForTapType));\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tif (this._map.element(pos).getRobotsCount() !== 0)\n\t\t\t\treturn;\n\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT, robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\tmoveElementsUp: function ()\n\t{\n\t\tfor (var j = this._map.height - 2; j >= 0; --j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j + 1)).originalType = elementType;\n\n\t\t\t\tvar type = DraftsmanMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsDown: function ()\n\t{\n\t\tfor (var j = 1; j < this._map.height; ++j)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.width; ++i)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i, j - 1)).originalType = elementType;\n\n\t\t\t\tvar type = DraftsmanMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsLeft: function ()\n\t{\n\t\tfor (var i = this._map.width - 2; i >= 0; --i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i + 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = DraftsmanMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t},\n\n\tmoveElementsRight: function ()\n\t{\n\t\tfor (var i = 1; i < this._map.width; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._map.height; ++j)\n\t\t\t{\n\t\t\t\tvar elementType = this._map.element(cc.p(i, j)).getType();\n\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).setType(elementType);\n\t\t\t\tthis._map.element(cc.p(i - 1, j)).originalType = elementType;\n\n\t\t\t\tvar type = DraftsmanMapElementType.Green;\n\t\t\t\tthis._map.element(cc.p(i, j)).setType(type);\n\t\t\t\tthis._map.element(cc.p(i, j)).originalType = type;\n\t\t\t}\n\t\t}\n\t}\n\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for draftsman robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar DraftsmanRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends DraftsmanRobotSettingsLayer# */{\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Draftsman\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 12.07.19.\n */\n\n/**\n * @class Layer for draftsman task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.DraftsmanTask} task\n */\n\nvar DraftsmanTaskLayer = TaskLayer.extend(/** @lends DraftsmanTaskLayer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"DraftsmanTask\"), level, task, pm.DraftsmanLevelModule.Type);\n\n\t\tvar updateButton = new pmui.Button(pm.spriteUtils.getIconName(\"updateWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tupdateButton.addClickEventListener(this._updateTask.bind(this));\n\n\t\tvar updateButtonAlign = new ccui.LinearLayoutParameter();\n\t\tupdateButtonAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\tupdateButtonAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tupdateButton.setLayoutParameter(updateButtonAlign);\n\n\t\tthis.addChild(updateButton);\n\t\tthis.setContentSize(this.width, this.height + updateButton.height + LevelSettingsLayer.SEPARATOR);\n\t},\n\n\t_updateTask: function()\n\t{\n\t\tthis._task.data[this._level.getActiveMapIndex()] = this._level.activeMap.lines;\n\n\t\tthis._level.activeMap.mapLayer.taskDrawLayer.clear();\n\t\tthis._level.activeMap.mapLayer.drawTask();\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class 2D level where robot can paint some figures.\n * @extends pm.AbstractLevel\n */\npm.data.TurtleLevel = pm.AbstractLevel.extend(/** @lends pm.data.TurtleLevel# */{\n\ttypeName: \"TurtleLevel\",\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.useMethodStack = false;\n\t},\n\n\tgetType: function() { return pm.TurtleLevelModule.Type; }\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class 2D map where robot can paint some figures.\n * @implements Map2D\n */\npm.data.TurtleMap = Map2D.extend(/** @lends pm.data.TurtleMap# */{\n\ttypeName: \"TurtleMap\",\n\tlines: [],\n\tbadLines: [],\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tgetType: function() { return pm.TurtleLevelModule.Type; },\n\n\tgenerateMapLayer: function(previewDraw)\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tif (!pm.settings.isEditorMode)\n\t\t\t\tthis.mapLayer = new TurtleMapLayer(this);\n\t\t\telse\n\t\t\t\tthis.mapLayer = new TurtleMapEditorLayer(this);\n\n\t\t\tthis.mapLayer.drawMap(previewDraw);\n\n\t\t\treturn this.mapLayer;\n\t\t}\n\t},\n\n\tload: function() {},\n\n\tplaceRobots: function(firstPlace)\n\t{\n\t\tvar level = this.parentLevel;\n\n\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\trobot.setPosition(robot.startPosition, robot.startDirection);\n\t\t\tif(!CORE_BUILD)\n\t\t\t\tthis.mapLayer._setRobotStartPositionMarkPosition(robot.id, robot.position);\n\t\t}\n\n\t\tpm.AbstractMap.prototype.placeRobots.call(this, firstPlace);\n\t},\n\n\tremoveRobots: function()\n\t{\n\t\tpm.AbstractMap.prototype.removeRobots.call(this);\n\t},\n\n\tsetSize: function(width, height)\n\t{\n\t\tthis.mapElements.length = 0;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t},\n\n\tclean: function()\n\t{\n\t\tvar level = this.parentLevel;\n\n\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t{\n\t\t\tvar robot = level.robots[i];\n\n\t\t\trobot.setPosition(robot.startPosition, robot.startDirection);\n\t\t}\n\t\tif(!CORE_BUILD)\n\t\t\tthis.setNotCompleted(false);\n\n\t\tthis.lines = [];\n\t\tpm.AbstractMap.prototype.clean.call(this);\n\n\t},\n\n\tgetState: function ()\n\t{\n\t\tvar state = {\n\t\t\tmapElementsStates: {},\n\t\t\tobjectsStates: {}\n\t\t};\n\n\t\t// var max = Math.max(this.width, this.height);\n\t\t//\n\t\t// for (var x = 0; x < this.width; ++x)\n\t\t// {\n\t\t// \tfor (var y = 0; y < this.height; ++y)\n\t\t// \t{\n\t\t// \t\tvar element = this.element(cc.p(x, y));\n\t\t// \t\tstate.mapElementsStates[x * max + y] = element.getState();\n\t\t// \t}\n\t\t// }\n\n\t\tfor (var i = 0; i < this.objects.length; ++i)\n\t\t\tstate.objectsStates[i] = this.objects[i].getState();\n\n\t\treturn state;\n\t},\n\n\tsetState: function (state)\n\t{\n\t\t// var max = Math.max(this.width, this.height);\n\t\t//\n\t\t// for (var x = 0; x < this.width; ++x)\n\t\t// {\n\t\t// \tfor (var y = 0; y < this.height; ++y)\n\t\t// \t{\n\t\t// \t\tvar element = this.element(cc.p(x, y));\n\t\t// \t\telement.setState(state.mapElementsStates[x * max + y]);\n\t\t// \t}\n\t\t// }\n\n\t\tfor (var i = 0; i < this.objects.length; ++i)\n\t\t\tthis.objects[i].setState(state.objectsStates[i]);\n\t},\n\n\tsetNotCompleted: function(flag)\n\t{\n\t\tif (!CORE_BUILD)\n\t\t\tthis.mapLayer.setNotCompleted(flag);\n\t\tif(!flag)\n\t\t\tthis.badLines = [];\n\t},\n\n\telement: function (pos)\n\t{\n\t\treturn null;\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class Layer for {@link pm.data.TurtleMap}.\n * @implements SquarableMapLayer\n */\nvar TurtleMapLayer = pm.MapLayer2D.extend(/** @lends TurtleMapLayer#*/{\n\n\tdrawLayer: null,\n\tbadDrawLayer: null,\n\ttaskDrawLayer: null,\n\tbackgroundLayer: null,\n\n\tctor: function(map)\n\t{\n\t\tthis._super(map);\n\t\tthis._orientation = pm.MapLayer2D.Orientation.Ortho;\n\t\tthis._mapElementSize = cc.size(64, 64);\n\t},\n\n\thasChangeOrientationOption: function()\n\t{\n\t\treturn false;\n\t},\n\n\trealPosition: function(pos, del)\n\t{\n\t\treturn cc.p(pos.x + del.x, pos.y + del.y);\n\t},\n\n\tpositionFromReal: function(pos)\n\t{\n\t\tvar X = Math.floor(pos.x + 0.5);\n\t\tif (X < 0) X = 0;\n\t\tif (X >= (this._map.width - 1) * this.getMapElementSize().width) X = (this._map.width - 1) * this.getMapElementSize().width;\n\n\t\tvar Y = Math.floor(pos.y + 0.5);\n\t\tif (Y < this.getMapElementSize().height) Y = this.getMapElementSize().height;\n\t\tif (Y >= this._map.height * this.getMapElementSize().height) Y = this._map.height * this.getMapElementSize().height;\n\t\treturn cc.p(X, Y);\n\t},\n\n\t_drawMapElements: function()\n\t{\n\t\tvar robots = this._map.parentLevel.robots;\n\n\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t{\n\t\t\tvar robot = robots[i];\n\t\t\tthis.drawRobotStartPositionMark(robot.id, robot.startPosition);\n\t\t}\n\n\t\tthis.drawTask();\n\t},\n\n\t_drawOrthoLayers: function(previewDraw)\n\t{\n\t\tpm.MapLayer2D.prototype._drawOrthoLayers.call(this, previewDraw);\n\n\t\tthis.drawLayer = new cc.Layer();\n\n\t\tthis.drawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.drawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.drawLayer.setPosition(this._containerShift);\n\n\t\tthis.badDrawLayer = new cc.DrawNode();\n\n\t\tthis.badDrawLayer.setVisible(false);\n\t\tthis.badDrawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.badDrawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.badDrawLayer.setPosition(this._containerShift);\n\n\t\tthis.taskDrawLayer = new cc.DrawNode();\n\n\t\tthis.taskDrawLayer.setCascadeOpacityEnabled(true);\n\t\tthis.taskDrawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.taskDrawLayer.setPosition(this._containerShift);\n\n\t\tthis.backgroundLayer = new cc.LayerColor(TurtleMapLayer.BACKGROUND_COLOR, this.getRealWidth(), this.getRealHeight());\n\t\tthis.backgroundLayer.setCascadeOpacityEnabled(true);\n\n\t\tthis.objectLayer.setLocalZOrder(2);\n\t\tthis.addChild(this.taskDrawLayer, 1);\n\t\tthis.addChild(this.drawLayer, 1);\n\t\tthis.addChild(this.badDrawLayer, 1);\n\t\tthis.addChild(this.backgroundLayer, -1);\n\t},\n\n\tsetNotCompleted: function(flag)\n\t{\n\t\tif (flag)\n\t\t{\n\t\t\tfor (var i = 0; i < this._map.badLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar line = this._map.badLines[i];\n\t\t\t\tthis.badDrawLayer.drawSegment(line.oldPos, line.newPos, TurtleMapLayer.LINE_WIDTH, cc.color.RED);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.badDrawLayer.clear();\n\t\t}\n\n\t\tthis.badDrawLayer.setVisible(flag);\n\t},\n\n\tdrawTask: function ()\n\t{\n\t\tvar task = this._map.parentLevel.taskList.getTask(pm.TurtleLevelModule.Type);\n\n\t\tif (!task)\n\t\t\treturn;\n\n\t\tvar mapIndex = this._map.parentLevel.getActiveMapIndex();\n\n\t\tfor (var i = 0; i < task.data[mapIndex].length; ++i)\n\t\t{\n\t\t\tvar line = task.data[mapIndex][i];\n\t\t\tthis.taskDrawLayer.drawSegment(line.oldPos, line.newPos, TurtleMapLayer.LINE_WIDTH, TurtleMapLayer.TASK_LINE_COLOR);\n\t\t}\n\t},\n\n\tclean: function()\n\t{\n\t\tpm.MapLayer2D.prototype.clean.call(this);\n\t\tthis.drawLayer.removeAllChildren();\n\t}\n});\n\nTurtleMapLayer.LINE_WIDTH = 4;\nTurtleMapLayer.TASK_LINE_COLOR = cc.color(0,150,255);\nTurtleMapLayer.BACKGROUND_COLOR = cc.color(255, 213, 0);\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class pm.Task for painting elements.
\n * Contains number of elements to paint.\n * @implements pm.Task\n * @constructor\n * @param {pm.AbstractLevel} level\n */\npm.data.TurtleTask = pm.Task.extend(/** @lends pm.data.TurtleTask*/ {\n\ttypeName: \"TurtleTask\",\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\t},\n\n\tgetNotCompletedObjects: function (mapIndex)\n\t{\n\t\tvar drawnLines = this._level.maps[mapIndex].lines;\n\t\tvar taskLines = this.data[mapIndex];\n\n\t\tvar retArray = [];\n\t\tvar badLines = [];\n\n\t\tif (taskLines.length === 0 && drawnLines.length === 0)\n\t\t{\n\t\t\treturn retArray;\n\t\t}\n\t\telse if (drawnLines.length > 0 && taskLines.length === 0)\n\t\t{\n\t\t\tbadLines = drawnLines;\n\t\t}\n\t\telse if (drawnLines.length === 0 && taskLines.length > 0)\n\t\t{\n\t\t\tbadLines = taskLines;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = 0; i < taskLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar from = taskLines[i].oldPos;\n\t\t\t\tvar to = taskLines[i].newPos;\n\n\t\t\t\tvar result = drawnLines.filter(function(el)\n\t\t\t\t{\n\t\t\t\t\treturn el.oldPos.x === from.x && el.oldPos.y === from.y && el.newPos.x === to.x && el.newPos.y === to.y;\n\t\t\t\t}.bind(this));\n\n\t\t\t\tif (result.length === 0)\n\t\t\t\t\tbadLines.push(taskLines[i]);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < drawnLines.length; ++i)\n\t\t\t{\n\t\t\t\tvar from = drawnLines[i].oldPos;\n\t\t\t\tvar to = drawnLines[i].newPos;\n\n\t\t\t\tvar result = taskLines.filter(function(el)\n\t\t\t\t{\n\t\t\t\t\treturn el.oldPos.x === from.x && el.oldPos.y === from.y && el.newPos.x === to.x && el.newPos.y === to.y;\n\t\t\t\t}.bind(this));\n\n\t\t\t\tif (result.length === 0)\n\t\t\t\t\tbadLines.push(drawnLines[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._level.maps[mapIndex].badLines = badLines;\n\n\t\tif (badLines.length > 0)\n\t\t\tretArray.push(this._level.maps[mapIndex]);\n\n\t\treturn retArray;\n\t},\n\n\tfillWithInitialData: function(mapIndex, data)\n\t{\n\t\tif (data === undefined)\n\t\t\tdata = [];\n\n\t\tthis.data[mapIndex] = data;\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class 2D robot for {@link pm.data.TurtleLevel}.
\n * Has a paint element native function.\n * @implements PlayerRobot4\n */\npm.data.TurtleRobot = pm.PlayerRobot2D.extend(/** @lends pm.data.TurtleRobot# */{\n\ttypeName: \"TurtleRobot\",\n\t_tailFlag: false,\n\n\tstartDirection: 0,\n\tstartPosition: cc.p(),\n\n\tctor: function()\n\t{\n\t\tthis._addNonEnumerableProps(\"_tailFlag\");\n\n\t\tthis._super();\n\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.MoveForward] = new pm.NativeFunction(this, this._moveForward, 1);\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.MoveBackward] = new pm.NativeFunction(this, this._moveBackward, 1);\n\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.TurnLeft] = new pm.NativeFunction(this, this._turnLeft, 1);\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.TurnRight] = new pm.NativeFunction(this, this._turnRight, 1);\n\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.TailDown] = new pm.NativeFunction(this, this._tailDown);\n\t\tthis.nativeFunctionMap[pm.data.TurtleRobot.NativeMethod.TailUp] = new pm.NativeFunction(this, this._tailUp);\n\n\t\tthis.nativeFunctions.push(pm.data.TurtleRobot.NativeMethod.MoveForward, pm.data.TurtleRobot.NativeMethod.MoveBackward,\n\t\t\tpm.data.TurtleRobot.NativeMethod.TurnLeft, pm.data.TurtleRobot.NativeMethod.TurnRight,\n\t\t\tpm.data.TurtleRobot.NativeMethod.TailDown, pm.data.TurtleRobot.NativeMethod.TailUp);\n\t},\n\n\tgetDirectionCount: function() { return 360; },\n\n\tgenerateRobotSprite: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t{\n\t\t\tthis.sprite = new TurtleRobotSprite();\n\n\t\t\treturn this.sprite;\n\t\t}\n\t},\n\n\t_tailDown: function()\n\t{\n\t\tthis.setTailFlag(true);\n\t\t// this.setStateFlag(pm.RobotState.PlayingAnimation);\n\n\t\t// this.playAnimation(KumirRobotAnimation.Paint, this._endPaint, 0);\n\t},\n\n\t_endTailDown: function()\n\t{\n\t\t// this.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_tailUp: function()\n\t{\n\t\tthis.setTailFlag(false);\n\t\t// this.setStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_endTailUp: function()\n\t{\n\t\t// this.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tsetTailFlag: function(flag)\n\t{\n\t\tthis._tailFlag = flag;\n\t},\n\n\tgetTailFlag: function()\n\t{\n\t\treturn this._tailFlag;\n\t},\n\n\t_moveForward: function(count)\n\t{\n\t\tvar target = cc.p(this.position.x + count * Math.sin(cc.degreesToRadians(360 - this.direction)),\n\t\t\tthis.position.y + count * Math.cos(cc.degreesToRadians(360 - this.direction)));\n\n\t\tvar mapElementSize = null;\n\t\tif(!CORE_BUILD)\n\t\t\tmapElementSize = this.parentLevel.activeMap.mapLayer.getMapElementSize();\n\t\telse\n\t\t\tmapElementSize = cc.size(64, 64);\n\n\t\tif (Math.round(target.x) < 0 || Math.round(target.y) < mapElementSize.height ||\n\t\t\tMath.round(target.x) > (this.getMap().width - 1) * mapElementSize.width ||\n\t\t\tMath.round(target.y) > this.getMap().height * mapElementSize.height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, this.direction);\n\t},\n\n\t_moveBackward: function(count)\n\t{\n\t\tvar target = cc.p(this.position.x - count * Math.sin(cc.degreesToRadians(360 - this.direction)),\n\t\t\tthis.position.y - count * Math.cos(cc.degreesToRadians(360 - this.direction)));\n\n\t\tvar mapElementSize = this.parentLevel.activeMap.mapLayer.getMapElementSize();\n\n\t\tif (Math.round(target.x) < 0 || Math.round(target.y) < mapElementSize.height ||\n\t\t\tMath.round(target.x) > (this.getMap().width - 1) * mapElementSize.width ||\n\t\t\tMath.round(target.y) > this.getMap().height * mapElementSize.height)\n\t\t\ttarget = null;\n\n\t\tthis._moveTo(target, false, this.direction - 360);\n\t},\n\n\t_moveTo: function(target, reverse, initialDirection)\n\t{\n\t\tif(this.isBroken())\n\t\t{\n\t\t\tif(reverse)\n\t\t\t\tthis.clearStateFlag(pm.RobotState.Broken);\n\n\t\t\tthis.updateSprite();\n\t\t\treturn;\n\t\t}\n\n\t\t// var map = this.getMap();\n\n\t\tvar move = true;\n\n\t\tif(!target)\n\t\t{\n\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t\treturn;\n\t\t}\n\n\t\t// for(var i in map.element(target)._robotsHere)\n\t\t// {\n\t\t// \tvar r = map.element(target)._robotsHere[i];\n\t\t//\n\t\t// \tif(!(r instanceof pm.AbstractRobot))\n\t\t// \t\tcontinue;\n\t\t//\n\t\t// \tif(!r.canMoveOn())\n\t\t// \t{\n\t\t// \t\tif(!r.interactable())\n\t\t// \t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\t\t//\n\t\t// \t\tmove = false;\n\t\t// \t\tbreak;\n\t\t// \t}\n\t\t// }\n\n\t\tif(move)\n\t\t{\n\t\t\tif (initialDirection === undefined)\n\t\t\t\tinitialDirection = this.direction;\n\n\t\t\tvar direction = reverse ? (initialDirection + this.getDirectionCount()/2) % this.getDirectionCount() : initialDirection;\n\n\t\t\tif(!this._canMoveTo(target, direction) && !reverse)\n\t\t\t{\n\t\t\t\tthis.setStateFlag(pm.RobotState.Broken);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._oldPosition = this.position;\n\t\t\tthis.position = target;\n\n\t\t\tif(!this.isBroken())\n\t\t\t\tthis.playAnimation(RobotAnimation2D.Move, this._endMove, this.position);\n\t\t}\n\t\telse if(!this.isBroken())\n\t\t{\n\t\t\t// for(var i in map.element(target)._robotsHere)\n\t\t\t// {\n\t\t\t// \tvar r = map.element(target)._robotsHere[i];\n\t\t\t//\n\t\t\t// \tif(!(r instanceof pm.AbstractRobot))\n\t\t\t// \t\tcontinue;\n\t\t\t//\n\t\t\t// \tr.interact(this, this._endInteract);\n\t\t\t// }\n\t\t}\n\t},\n\n\t_endMove: function()\n\t{\n\t\tif (this._tailFlag)\n\t\t{\n\t\t\tthis.parentLevel.activeMap.lines.push({\n\t\t\t\toldPos: this._oldPosition,\n\t\t\t\tnewPos: this.position\n\t\t\t});\n\t\t}\n\n\t\tif (!CORE_BUILD && !this.needToPlayAnimation() && this._tailFlag)\n\t\t{\n\t\t\tvar oldPos = this.sprite.getRealPosition(this._oldPosition);\n\t\t\tvar targetPos = this.sprite.getRealPosition(this.position);\n\n\t\t\tvar length = Math.sqrt((targetPos.x - oldPos.x) * (targetPos.x - oldPos.x) + (targetPos.y - oldPos.y) * (targetPos.y - oldPos.y));\n\t\t\tvar rotationAngle = cc.radiansToDegrees(Math.acos((targetPos.x - oldPos.x) / length));\n\n\t\t\tif (targetPos.y - oldPos.y > 0)\n\t\t\t\trotationAngle *= -1;\n\n\t\t\tvar line = new cc.Scale9Sprite(\"System/Line.png\");\n\n\t\t\tline.setAnchorPoint(cc.p(0, 0.5));\n\t\t\tline.setRotation(rotationAngle);\n\t\t\tline.setPosition(cc.p(oldPos.x - (targetPos.x - oldPos.x) / length,oldPos.y - (targetPos.y - oldPos.y) / length));\n\t\t\tline.setScale((length + 2) / line.width, 1);\n\t\t\tthis.parentLevel.activeMap.mapLayer.drawLayer.addChild(line);\n\n\t\t\tthis.updateSprite();\n\t\t}\n\n\t\t// var map = this.getMap();\n\t\t//\n\t\t// for(var i in map.element(this.position)._robotsHere)\n\t\t// {\n\t\t// \tvar r = map.element(this.position)._robotsHere[i];\n\t\t//\n\t\t// \tif(!(r instanceof pm.AbstractRobot))\n\t\t// \t\tcontinue;\n\t\t//\n\t\t// \tr.interact(this, this._endInteract);\n\t\t// }\n\t\t//\n\t\t// this._removeFromOldPosition();\n\n\t\tthis._oldPosition = this.position;\n\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\t_turnLeft: function(angle)\n\t{\n\t\tvar newDirection = (this.direction + angle) % this.getDirectionCount();\n\n\t\tthis.playAnimation(RobotAnimation2D.Turn, this._endTurn, [{angle: angle, clockwise: false}, newDirection]);\n\n\t\tthis.direction = newDirection;\n\t},\n\n\t_turnRight: function(angle)\n\t{\n\t\tvar newDirection = (this.direction + this.getDirectionCount() - angle) % this.getDirectionCount();\n\n\t\tthis.playAnimation(RobotAnimation2D.Turn, this._endTurn, [{angle: angle, clockwise: true}, newDirection]);\n\n\t\tthis.direction = newDirection;\n\t},\n\n\t_endTurn: function()\n\t{\n\t\tif(!CORE_BUILD)\n\t\t\tthis.updateSprite();\n\t\tthis.clearStateFlag(pm.RobotState.PlayingAnimation);\n\t},\n\n\tsetPosition: function(point, direction)\n\t{\n\t\tthis._oldPosition = point;\n\t\tthis.position = point;\n\t\tthis.direction = direction;\n\t},\n\n\treset: function()\n\t{\n\t\tthis.setTailFlag(false);\n\t\tPlayerRobot4.prototype.reset.call(this);\n\t},\n\n\tgetState: function ()\n\t{\n\t\t// return {\n\t\t// \tposition: this.position,\n\t\t// \tdirection: this.direction,\n\t\t// \tanimation: this.getLastAnimation()\n\t\t// };\n\t},\n\n\tsetState: function (state)\n\t{\n\t\t// if (state.direction !== this.direction)\n\t\t// \tthis.direction = state.direction;\n\t\t//\n\t\t// if (state.position !== this.position || this.isBroken())\n\t\t// \tthis._moveTo(state.position, true);\n\t\t// else if (state.animation === TurtleRobotAnimation.Paint)\n\t\t// \tthis._unpaint();\n\t},\n\n\tgetType: function() { return pm.TurtleLevelModule.RobotType; }\n});\npm.data.TurtleRobot.NativeMethod =\n{\n\tMoveForward: \"turtle_move_forward\",\n\tMoveBackward: \"turtle_move_backward\",\n\tTurnLeft: \"turtle_turn_left\",\n\tTurnRight: \"turtle_turn_right\",\n\tTailDown: \"turtle_tail_down\",\n\tTailUp: \"turtle_tail_up\"\n};\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n/**\n * Animation type for paint robot.\n * @enum {String}\n * @readonly\n */\nvar TurtleRobotAnimation = {Paint: \"paint\"};\n\n/**\n * @class 2D Sprite for {@link pm.data.TurtleRobot}\n * @implements pm.IsoRobotSprite\n */\nvar TurtleRobotSprite = pm.OrthoRobotSprite.extend(/** @lends TurtleRobotSprite# */{\n\tctor: function()\n\t{\n\t\tcc.animationCache.addAnimations(\"Robot/kumir_robot-animations.plist\");\n\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Robot/turtle_robot.plist\"); // TODO registerTempSpriteFrames\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir-indicate.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-broken.plist\");\n\t\tpm.spriteUtils.registerTempSpriteFrames(\"Robot/kumir_robot-paint.plist\");\n\n\t\tthis._super(cc.spriteFrameCache.getSpriteFrame(this._getFrameName(0)));\n\n\t\tthis._minPoint = cc.p(25, 25);\n\t\tthis._maxPoint = cc.p(25, 25);\n\n\t\tthis._commandsSprite.setOpacity(0);\n\t},\n\n\t_getActiveSpritePosition: function()\n\t{\n\t\treturn cc.p(25, 57);\n\t},\n\n\t_getCommandsSpritePosition: function()\n\t{\n\t\treturn cc.p(25, 25);\n\t},\n\n\t_getFrameName: function(direction)\n\t{\n\t\treturn \"turtle_robot0.png\";\n\t},\n\n\t_getDestroyAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_d_2\";\n\t},\n\n\t_getIndicateAnimationName: function(direction)\n\t{\n\t\treturn \"kumir_robot_i_0\";\n\t},\n\n\t//getRealPosition: function(x,y)\n\t//{\n\t// return this.mapLayer.realPosition(x, y, -35, 35);\n\t//},\n\n\tplayAnimation: function(callback, target, type, args)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase TurtleRobotAnimation.Paint: this._paint(args, callback, target); break;\n\t\t\tdefault: pm.OrthoRobotSprite.prototype.playAnimation.call(this, callback, target, type, args); break;\n\t\t}\n\t},\n\n\t_turn: function(params, curDirection, endCallback, target)\n\t{\n\t\tvar speedRatio = Math.abs(params.angle) / 90;\n\n\t\tvar turn = cc.rotateBy(speedRatio * pm.settings.getAnimationSpeed(), params.angle);\n\t\tif (!params.clockwise)\n\t\t\tturn = turn.reverse();\n\n\t\tvar turnEnd = cc.callFunc(endCallback, target);\n\t\tthis.sprite.runAction(cc.sequence(turn, turnEnd));\n\n\t\tthis._commandsSprite.runAction(cc.rotateTo(speedRatio * pm.settings.getAnimationSpeed(), -this._getTurnAngle(curDirection)));\n\t},\n\n\t_move: function(pos, endCallback, target)\n\t{\n\t\tif (!target.getTailFlag())\n\t\t{\n\t\t\tpm.RobotSprite2D.prototype._move.call(this, pos, endCallback, target);\n\t\t\treturn;\n\t\t}\n\n\t\tvar targetPos = this.getRealPosition(pos);\n\t\tvar callback = cc.callFunc(endCallback, target);\n\t\tvar moveEnd = cc.callFunc(function()\n\t\t{\n\t\t\tthis._needToUpdateZOrder = false;\n\t\t}, this);\n\n\t\tvar oldPos = this.getSprite().getPosition();\n\t\tvar mapElementSize = target.parentLevel.activeMap.mapLayer.getMapElementSize();\n\n\t\tvar diffPosX = (targetPos.x - oldPos.x) / mapElementSize.width;\n\t\tvar diffPosY = (targetPos.y - oldPos.y) / mapElementSize.height;\n\n\t\tvar speedRatio = Math.sqrt(diffPosX * diffPosX + diffPosY * diffPosY);\n\t\tvar moveRobot = cc.moveTo(speedRatio * pm.settings.getAnimationSpeed(), targetPos);\n\n\t\tvar length = Math.sqrt((targetPos.x - oldPos.x) * (targetPos.x - oldPos.x) + (targetPos.y - oldPos.y) * (targetPos.y - oldPos.y));\n\t\tvar rotationAngle = cc.radiansToDegrees(Math.acos((targetPos.x - oldPos.x) / length));\n\n\t\tif (targetPos.y - oldPos.y > 0)\n\t\t\trotationAngle *= -1;\n\n\t\tvar line = new cc.Scale9Sprite(\"System/Line.png\");\n\n\t\tline.setAnchorPoint(cc.p(0, 0.5));\n\t\tline.setRotation(rotationAngle);\n\t\tline.setPosition(cc.p(oldPos.x - (targetPos.x - oldPos.x) / length,oldPos.y - (targetPos.y - oldPos.y) / length));\n\t\ttarget.parentLevel.activeMap.mapLayer.drawLayer.addChild(line);\n\n\t\tvar scaleLine = cc.scaleTo(speedRatio * pm.settings.getAnimationSpeed(), (length + 2) / line.width, 1);\n\n\t\tvar moveAction = cc.targetedAction(this.getSprite(), moveRobot);\n\t\tvar scaleAction = cc.targetedAction(line, scaleLine);\n\n\t\tthis._needToUpdateZOrder = true;\n\t\tthis.getSprite().runAction(cc.sequence(cc.spawn(moveAction, scaleAction), moveEnd, callback));\n\t},\n\n\t_getTurnAngle: function(direction)\n\t{\n\t\treturn 360 - direction;\n\t},\n\n\tsetActive: function(flag)\n\t{\n\t\tthis._activeCircleSprite.setVisible(flag);\n\t\tthis._activeSprite.setVisible(flag);\n\t},\n\n\tshowCommands: function(flag, count)\n\t{\n\t\tif (flag && MethodStackLayer.opened)\n\t\t\treturn;\n\n\t\tif (flag)\n\t\t\tthis._commandsCount.setString(count);\n\n\t\tthis._commandsSprite.setVisible(flag);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class Functions for TurtleLevel module.\n * @interface\n * @extends pm.ModuleInfo\n */\n\npm.TurtleLevelModule = pm.ModuleInfo.extend(/** @lends pm.TurtleLevelModule# */{\n\n\tname: \"Turtle\",\n\n\tgetType: function()\n\t{\n\t\treturn pm.TurtleLevelModule.Type;\n\t},\n\n\tgenerateEmptyMap: function (level)\n\t{\n\t\tvar map = new pm.data.TurtleMap();\n\n\t\tmap.parentLevel = level;\n\n\t\tvar sqrtCount = Math.max(3, Math.floor(Math.sqrt(level.robots.length))+1);\n\n\t\tmap.setSize(sqrtCount, sqrtCount);\n\n\t\tlevel.robots[0].startPosition = cc.p(0, 64);\n\t\tlevel.robots[0].startDirection = 0;\n\n\t\t// var x = 0;\n\t\t// var y = 64;\n\t\t//\n\t\t// for (var i = 1; i < level.robots.length; ++i)\n\t\t// {\n\t\t// \tvar robot = level.robots[i];\n\t\t//\n\t\t// \trobot.startPosition = cc.p(x, y);\n\t\t// \trobot.startDirection = 0;\n\t\t//\n\t\t// \tx += 64;\n\t\t//\n\t\t// \tif (x === 0 && y === 1)\n\t\t// \t\tx += 64;\n\t\t//\n\t\t// \tif (x >= sqrtCount)\n\t\t// \t{\n\t\t// \t\ty += 64;\n\t\t// \t\tx = 0;\n\t\t// \t}\n\t\t// }\n\n\t\treturn map;\n\t},\n\n\tgenerateEmptyLevel: function ()\n\t{\n\t\tvar level = new pm.data.TurtleLevel();\n\n\t\tlevel.name = \"Новая Черепаха\";\n\t\tlevel.hint = new pm.data.GlobalHint();\n\t\tlevel.hint.text = \"\";\n\t\tlevel.robots.push(new pm.data.TurtleRobot());\n\n\t\tthis._fillLevelData(level);\n\n\t\tlevel.taskList = new pm.data.TaskList();\n\t\tlevel.taskList.tasks = new pm.data.MapClass();\n\n\t\treturn level;\n\t},\n\n\tgetObjectsInfo: function()\n\t{\n\t\treturn {};\n\t},\n\n\tgetRobotsInfo: function ()\n\t{\n\t\tvar ret = {};\n\t\tret[pm.TurtleLevelModule.RobotType] = \"turtle_robot0.png\";\n\t\treturn ret;\n\t},\n\n\tgetRobotSpriteSheet: function (robotType)\n\t{\n\t\treturn \"Robot/turtle_robot.plist\";\n\t},\n\n\tgetSettings: function (robotType, object)\n\t{\n\t\treturn new TurtleRobotSettingsLayer(object);\n\t},\n\n\tgetMapElementsType: function() {},\n\n\tgetRobotDisplayedName: function (robotType)\n\t{\n\t\treturn LocalizedString(\"Turtle\");\n\t},\n\n\tgetDisplayedNames: function()\n\t{\n\t\treturn LocalizedString(this.name);\n\t},\n\n\tgetMapTileset: function (tileset)\n\t{\n\t\treturn \"MapsPics/draftsman_level-tileset{0}.plist\".format(tileset);\n\t},\n\n\tgetResources: function ()\n\t{\n\t\treturn [\n\t\t\t\"Robot Methods/turtle_robot-methods.plist\"\n\t\t];\n\t},\n\n\tgenerateRobot: function (robotType)\n\t{\n\t\treturn new pm.data.TurtleRobot();\n\t},\n\n\tcanNotDragOrAddObject: function (map, point)\n\t{\n\t\treturn false;\n\t},\n\n\tcanUseMethodStack: function()\n\t{\n\t\treturn false;\n\t},\n\n\tgetLocalization: function(language)\n\t{\n\t\tswitch (language)\n\t\t{\n\t\t\tcase cc.sys.LANGUAGE_ENGLISH:\n\t\t\t\treturn {\n\t\t\t\t\t\"Turtle\": \"Turtle\",\n\t\t\t\t\t\"TurtleLevelType\": \"Turtle level\",\n\t\t\t\t\t\"TurtleTask\": \"Draw figure\",\n\t\t\t\t\t\"TurtleLevel\": \"Turtle\",\n\t\t\t\t\t\"turtle_move_forward\": \"forward\",\n\t\t\t\t\t\"turtle_move_backward\": \"backward\",\n\t\t\t\t\t\"turtle_turn_left\": \"left\",\n\t\t\t\t\t\"turtle_turn_right\": \"right\",\n\t\t\t\t\t\"turtle_tail_down\": \"tail down\",\n\t\t\t\t\t\"turtle_tail_up\": \"tail up\"\n\t\t\t\t};\n\t\t\tcase cc.sys.LANGUAGE_RUSSIAN:\n\t\t\t\treturn {\n\t\t\t\t\t\"Turtle\": \"Черепаха\",\n\t\t\t\t\t\"TurtleLevelType\": \"Черепаха\",\n\t\t\t\t\t\"TurtleTask\": \"Нарисовать фигуру\",\n\t\t\t\t\t\"TurtleLevel\": \"Черепаха\",\n\t\t\t\t\t\"turtle_move_forward\": \"вперед\",\n\t\t\t\t\t\"turtle_move_backward\": \"назад\",\n\t\t\t\t\t\"turtle_turn_left\": \"влево\",\n\t\t\t\t\t\"turtle_turn_right\": \"вправо\",\n\t\t\t\t\t\"turtle_tail_down\": \"опустить хвост\",\n\t\t\t\t\t\"turtle_tail_up\": \"поднять хвост\"\n\t\t\t\t};\n\t\t}\n\t},\n\n\tgenerateTaskLayer: function (level, task)\n\t{\n\t\treturn new TurtleTaskLayer(level, task);\n\t},\n\n\tgetTaskLabel: function ()\n\t{\n\t\treturn \"TurtleTask\";\n\t},\n\n\tneedToRotateRobot: function()\n\t{\n\t\treturn false;\n\t},\n\n\taddLevelTask: function (level)\n\t{\n\t\tvar task = new pm.data.TurtleTask(level);\n\n\t\tfor (var i = 0; i < level.maps.length; ++i)\n\t\t{\n\t\t\tvar lines = level.maps[i].lines;\n\t\t\ttask.fillWithInitialData(i, lines);\n\t\t}\n\n\t\tlevel.taskList.addTask(pm.TurtleLevelModule.Type, task);\n\n\t\treturn task;\n\t},\n\n\taddExtraMethods: function(robot, functions) {},\n\n\tgetDepthLineSprites: function() {},\n\n\tgetChangeableConditions: function(robot, callback, target) {},\n\n\tcompareConditions: function(a, b) {},\n\n\tgetLessonMapLayer: function()\n\t{\n\t\treturn null;\n\t}\n});\n\npm.TurtleLevelModule.RobotType = \"turtle-robot\";\npm.TurtleLevelModule.Type = \"turtle\";\npm.TurtleLevelModule.ObjectTypes = {};\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\nvar TurtleMapEditorLayer = TurtleMapLayer.extend(SquarableMapEditorLayerHelper).extend({\n\n\tcreateMapElement: function () {},\n\n\tresizeContainer: function()\n\t{\n\t\tSquarableMapEditorLayerHelper.resizeContainer.call(this);\n\n\t\tthis.taskDrawLayer.clear();\n\t\tthis.drawLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t\tthis.backgroundLayer.setContentSize(this.getRealWidth(), this.getRealHeight());\n\t},\n\n\tmoveElementsUp: function () {},\n\n\tmoveElementsDown: function () {},\n\n\tmoveElementsLeft: function () {},\n\n\tmoveElementsRight: function () {},\n\n\t_resizeHeightRight: function (sgn)\n\t{\n\t\tif (pm.moduleUtils.stopResizingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\treturn;\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.y > (this._map.height - 1) * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].y > (this._map.height - 1) * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.y > (this._map.height - 1) * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopDecreasingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tif (this._map.height === 1)\n\t\t\t\treturn;\n\n\t\t\tthis._map.height--;\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tthis._map.height++;\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_resizeHeightLeft: function (sgn)\n\t{\n\t\tif (pm.moduleUtils.stopResizingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\treturn;\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.y < 2 * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].y < 2 * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.y < 2 * this._map.mapLayer.getMapElementSize().height)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopDecreasingHeight(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar map = this._map;\n\n\t\t\tif (map.height === 1)\n\t\t\t\treturn;\n\n\t\t\tthis.moveElementsUp();\n\n\t\t\tthis._map.height--;\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.y -= this._map.mapLayer.getMapElementSize().height;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\ttask.data[mapIndex][robots[i].id].y -= this._map.mapLayer.getMapElementSize().height;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(task.data[mapIndex][robots[i].id]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].startPosition.y -= this._map.mapLayer.getMapElementSize().height;\n\t\t\t\tobjects[i].setPosition(objects[i].startPosition);\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t}\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tthis._map.height++;\n\n\t\t\tthis.moveElementsDown();\n\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.y += this._map.mapLayer.getMapElementSize().height;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].sprite.setRealPosition(robots[i].position);\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\ttask.data[mapIndex][robots[i].id].y += this._map.mapLayer.getMapElementSize().height;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].startPosition.y += this._map.mapLayer.getMapElementSize().height;\n\t\t\t\tobjects[i].setPosition(objects[i].startPosition);\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_resizeWidthRight: function (sgn)\n\t{\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.x > (this._map.width - 2) * this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].x > (this._map.width - 2) * this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.x > (this._map.width - 2) * this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopResizingWidth(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Right))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tif (this._map.width === 1)\n\t\t\t\treturn;\n\n\t\t\tthis._map.width--;\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tthis._map.width++;\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_resizeWidthLeft: function (sgn)\n\t{\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (robots[i].position.x < this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (task && task.data[mapIndex][robots[i].id].x < this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tif (objects[i].position && objects[i].position.x < this._map.mapLayer.getMapElementSize().width)\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (pm.moduleUtils.stopResizingWidth(this._map.getType(), this._map, SquarableMapEditor_resizeSide.Left))\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (sgn === -1)\n\t\t{\n\t\t\tif (this._map.width === 1)\n\t\t\t\treturn;\n\n\t\t\tthis.moveElementsRight();\n\n\t\t\tthis._map.width--;\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.x -= this._map.mapLayer.getMapElementSize().width;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\ttask.data[mapIndex][robots[i].id].x -= this._map.mapLayer.getMapElementSize().width;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].position.x -= this._map.mapLayer.getMapElementSize().width;\n\t\t\t\tobjects[i].setPosition(objects[i].startPosition);\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t}\n\t\t}\n\t\telse if (sgn === 1)\n\t\t{\n\t\t\tvar map = this._map;\n\n\t\t\tmap.width++;\n\n\t\t\tthis.moveElementsLeft();\n\n\t\t\tvar robots = this._map.parentLevel.robots;\n\n\t\t\tvar level = this._map.parentLevel;\n\t\t\tvar task = level.taskList.getTask(pm.GlobalTaskType.Position4);\n\t\t\tvar mapIndex = level.getActiveMapIndex();\n\n\t\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\t{\n\t\t\t\trobots[i].position.x += this._map.mapLayer.getMapElementSize().width;\n\t\t\t\trobots[i].setPosition(robots[i].position, robots[i].direction);\n\t\t\t\trobots[i].updateSprite();\n\n\t\t\t\tvar newPos = cc.p(robots[i].position.x, robots[i].position.y);\n\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robots[i].id, newPos);\n\n\t\t\t\tif (task)\n\t\t\t\t{\n\t\t\t\t\ttask.data[mapIndex][robots[i].id].x += this._map.mapLayer.getMapElementSize().width;\n\n\t\t\t\t\tvar pos = cc.p(task.data[mapIndex][robots[i].id].x, task.data[mapIndex][robots[i].id].y);\n\n\t\t\t\t\tthis._removePositionMark(robots[i].id);\n\t\t\t\t\tthis._drawPositionMark(robots[i].id, pos);\n\n\t\t\t\t\tif (robots[i] === this._activeRobot)\n\t\t\t\t\t\tthis._setMarkPosition(robots[i].id, pos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar objects = this._map.objects;\n\t\t\tfor (var i = 0; i < objects.length; ++i)\n\t\t\t{\n\t\t\t\tobjects[i].position.x += this._map.mapLayer.getMapElementSize().width;\n\t\t\t\tobjects[i].updateSprite();\n\t\t\t}\n\t\t}\n\n\t\tthis._update();\n\t},\n\n\t_touchBegan: function (touch, pEvent)\n\t{\n\t\tif (this._map.parentLevel.activeMap !== this._map || this._disableEditing)\n\t\t\treturn false;\n\n\t\tvar level = this._map.parentLevel;\n\n\t\t// resize\n\n\t\tvar p = this._resizeSprite.convertTouchToNodeSpace(touch);\n\t\tthis._startPoint = touch.getLocation();\n\n\t\tvar l = this._resizeLeftSprite.convertTouchToNodeSpace(touch);\n\n\t\tvar rect = this._resizeSprite.getContentSize();\n\t\tvar rectL = this._resizeLeftSprite.getContentSize();\n\n\t\tif (p.x > -20 && p.y > -20 && p.x < rect.width + 20 && p.y < rect.height + 20)\n\t\t{\n\t\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].isPlayingAnimation() || level.robots[i].isEndedWork())\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._touchType = SquarableMapEditor_touchType.Resize;\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (l.x > -20 && l.y > -20 && l.x < rectL.width + 20 && l.y < rectL.height + 20)\n\t\t{\n\t\t\tfor(var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].isPlayingAnimation() || level.robots[i].isEndedWork())\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._touchType = SquarableMapEditor_touchType.ResizeLeft;\n\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!this.containsPoint(touch))\n\t\t\treturn false;\n\n\t\t// drag robot\n\n\t\tif (!level.robotsPlayingAnimation())\n\t\t{\n\t\t\tfor (var i = 0; i < level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (level.robots[i].sprite.containsPoint(touch) && level.robots[i].getType() !== pm.PlayerRobotType.Counter)\n\t\t\t\t{\n\t\t\t\t\tif (level.robots[i].position === level.robots[i].startPosition &&\n\t\t\t\t\t\tlevel.robots[i].direction === level.robots[i].startDirection)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.dragedRobot = i;\n\t\t\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragRobot;\n\t\t\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\t\t\t\tthis._startDragPoint = this.objectLayer.convertTouchToNodeSpace(touch);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.ANIMATE_RESTART_BUTTON);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//drag objects\n\t\tfor(var i = 0; i < level.activeMap.objects.length; ++i)\n\t\t{\n\t\t\tif (level.activeMap.objects[i].sprite.containsPoint(touch))\n\t\t\t{\n\t\t\t\tthis._dragedObject = i;\n\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragObject;\n\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\t\t\tthis._startDragPoint = this.objectLayer.convertTouchToNodeSpace(touch);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// drag startPoint\n\t\tvar startPoint = this.terrainLayer.getChildByName(pm.MapLayer2D.POSITION_MARK_NAME_PATTERN.format(this._activeRobot.id));\n\n\t\tif (startPoint !== null)\n\t\t{\n\t\t\tp = startPoint.convertTouchToNodeSpace(touch);\n\t\t\trect = startPoint.getContentSize();\n\n\t\t\tif (p.x > 0 && p.y > 0 && p.x < rect.width && p.y < rect.height)\n\t\t\t{\n\t\t\t\tthis._dragedObject = this._activeRobot;\n\t\t\t\tthis._touchType = SquarableMapEditor_touchType.DragStartPoint;\n\t\t\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tthis._startPoint = this.convertTouchToNodeSpace(touch);\n\t\tthis._touchType = SquarableMapEditor_touchType.EditMap;\n\t\treturn true;\n\t},\n\n\t_dragRobotMoved: function (touch, pEvent)\n\t{\n\t\tvar level = this._map.parentLevel;\n\t\tvar robot = level.robots[this.dragedRobot];\n\n\t\tif (level.robotsEndedWork())\n\t\t\treturn;\n\n\t\tvar p = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar p_normal = this.positionFromReal(p);\n\n\t\tif (!(robot.direction >= 0 && robot.direction < robot.getDirectionCount()))\n\t\t{\n\t\t\tcc.log(\"Incorrect robot4 direction\");\n\t\t\trobot.direction = 0;\n\t\t}\n\n\t\trobot.startPosition = p_normal;\n\t\trobot.setPosition(p_normal, robot.direction);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis._setRobotStartPositionMarkPosition(robot.id, robot.position);\n\n\t\tvar opacity = 255;\n\n\t\tif (this._positionOutOfMap(p))\n\t\t\topacity = 50;\n\n\t\trobot.sprite.getSprite().setOpacity(opacity);\n\t},\n\n\t_touchEnded: function (touch, pEvent)\n\t{\n\t\tvar p = this.objectLayer.convertTouchToNodeSpace(touch);\n\t\tvar p_normal = this.positionFromReal(p);\n\t\tvar level = this._map.parentLevel;\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.DragRobot)\n\t\t{\n\t\t\tvar robot = level.robots[this.dragedRobot];\n\n\t\t\tif (!level.robotsEndedWork())\n\t\t\t{\n\t\t\t\trobot.startPosition = robot.position;\n\t\t\t\tthis._setRobotStartPositionMarkPosition(robot.id, robot.position);\n\t\t\t}\n\n\t\t\tvar start = this._startPoint;\n\t\t\tvar end = this.convertTouchToNodeSpace(touch);\n\n\t\t\tvar dif = cc.pSub(start, end);\n\t\t\tdif = cc.pCompOp(dif, Math.abs);\n\n\t\t\tif (dif.x < 10 && dif.y < 10)\n\t\t\t{\n\t\t\t\tif (this._activeRobot.id === robot.id && !level.robotsEndedWork())\n\t\t\t\t{\n\t\t\t\t\tif (!(robot.direction >= 0 && robot.direction < robot.getDirectionCount()))\n\t\t\t\t\t{\n\t\t\t\t\t\tcc.log(\"Incorrect robot4 direction\");\n\t\t\t\t\t\trobot.direction = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pm.moduleUtils.needToRotateRobot(this._map.getType()))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar newDirection = (robot.direction + 1) % robot.getDirectionCount();\n\n\t\t\t\t\t\trobot.setPosition(robot.position, newDirection);\n\t\t\t\t\t\trobot.startDirection = robot.direction;\n\t\t\t\t\t\trobot.sprite.setDirection(newDirection);\n\t\t\t\t\t\trobot.sprite.setRealPosition(robot.position);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._setActiveRobot(robot);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this._positionOutOfMap(p) && level.robots.length > 1)\n\t\t\t{\n\t\t\t\tif(robot.id === this._activeRobot.id)\n\t\t\t\t{\n\t\t\t\t\tvar activeIndex = level.robots.indexOf(robot);\n\t\t\t\t\tfor (var t = 0; t < level.robots.length; ++t)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (t !== activeIndex)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis._setActiveRobot(level.robots[t]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.removeObject(robot.sprite, false);\n\t\t\t\tthis._removeRobotStartPositionMark(robot.id);\n\t\t\t\tthis._removePositionMark(robot.id);\n\n\t\t\t\tpm.sendCustomEvent(pme.REMOVE_ROBOT, robot);\n\n\t\t\t\tlevel.robots.splice(this.dragedRobot, 1);\n\n\t\t\t\tfor (var r = this.dragedRobot; r < level.robots.length; ++r)\n\t\t\t\t{\n\t\t\t\t\tvar markSprite = this.terrainLayer.getChildByName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(level.robots[r].id));\n\n\t\t\t\t\tlevel.robots[r].id--;\n\n\t\t\t\t\tmarkSprite.setName(pm.MapLayer2D.START_MARK_NAME_PATTERN.format(level.robots[r].id));\n\t\t\t\t}\n\n\t\t\t\tthis._setActiveRobot(this._activeRobot);\n\n\t\t\t\tif (this._map.parentLevel.robots.length === 1)\n\t\t\t\t\tthis._activeRobot.sprite.setActive(false);\n\n\t\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.forceUpdate();\n\n\t\t\t}\n\n\t\t\tif (this._map.parentLevel.robots.length > 1 && this._positionOutOfMap(p) && this.dragedRobot === this._map.parentLevel.startRobotIndex)\n\t\t\t\trobot.sprite.setActive(robot.id === this._activeRobot.id);\n\t\t}\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.DragObject)\n\t\t{\n\t\t\tif (this._positionOutOfMap(p))\n\t\t\t{\n\t\t\t\tvar object = level.activeMap.objects[this._dragedObject];\n\n\t\t\t\tthis._removeObject(object);\n\n\t\t\t\tif (this._orientation === pm.MapLayer2D.Orientation.Iso)\n\t\t\t\t\tthis.objectLayer.forceUpdate();\n\t\t\t}\n\t\t}\n\n\t\tif(this._touchType === SquarableMapEditor_touchType.EditMap &&\n\t\t\t!this._changeWallsForTouch(touch) &&\n\t\t\tthis._selectedObjectForTapType !== undefined &&\n\t\t\tthis._selectedObjectForTapType !== null)\n\t\t{\n\t\t\tthis._mapElementClicked(p_normal);\n\t\t}\n\t},\n\n\t_mapElementClicked: function (pos)\n\t{\n\t\tif (this._tapType === EditorTapsType.AddRobot)\n\t\t{\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._selectedObjectForTapType);\n\t\t\tthis._addRobot(pos, robot);\n\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT, robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t\telse if (this._tapType === EditorTapsType.AddClone)\n\t\t{\n\t\t\tvar robot = pm.moduleUtils.generateRobot(this._map.getType(), this._activeRobot.getType());\n\t\t\tthis._addClone(pos, robot);\n\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT, robot);\n\n\t\t\tthis._setActiveRobot(robot);\n\t\t}\n\t},\n\n\t_addRobot: function (pos, robot)\n\t{\n\t\tvar groupID = 0;\n\t\tvar isFound = false;\n\t\tvar indexes = [];\n\t\tvar robots = this._map.parentLevel.robots;\n\n\t\tfor (var i = 0; i < robots.length; ++i)\n\t\t\tindexes[i] = robots[i].groupID;\n\n\t\tindexes.sort();\n\n\t\tfor (var i = 1; i < indexes.length; ++i)\n\t\t{\n\t\t\tif (indexes[i] - indexes[i-1] > 1)\n\t\t\t{\n\t\t\t\tgroupID = indexes[i-1] + 1;\n\t\t\t\tisFound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (robots.length > 0 && !isFound)\n\t\t\tgroupID = indexes[indexes.length-1] + 1;\n\n\t\trobot.childRobot = null;\n\t\trobot.childRobotID = -1;\n\t\trobot.parentLevel = this._map.parentLevel;\n\n\t\tthis._map.parentLevel.robots.push(robot);\n\t\trobot.id = this._map.parentLevel.robots.indexOf(robot);\n\n\t\trobot.groupID = groupID;\n\n\t\trobot.parentLevel.programData[robot.groupID] = new pm.data.ProgramInfo();\n\t\trobot.parentLevel.programData[robot.groupID].currentIndex = 0;\n\t\trobot.parentLevel.programData[robot.groupID].programDataArray[0] = pm.appUtils.generateProgramData();\n\n\t\trobot.setPosition(pos, MapDirection4.Down);\n\t\trobot.startPosition = pos;\n\t\trobot.startDirection = 0;\n\n\t\trobot.generateRobotSprite();\n\n\t\trobot.sprite.mapLayer = this._map.mapLayer;\n\t\trobot.sprite.setDirection(robot.direction);\n\t\trobot.sprite.setOrientation(this._orientation);\n\n\t\tthis.addObject(robot.sprite);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis.drawRobotStartPositionMark(robot.id, robot.position);\n\n\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t},\n\n\t_addClone: function(pos, robot)\n\t{\n\t\trobot.childRobot = null;\n\t\trobot.childRobotID = -1;\n\t\trobot.parentLevel = this._map.parentLevel;\n\n\t\tthis._map.parentLevel.robots.push(robot);\n\t\trobot.id = this._map.parentLevel.robots.indexOf(robot);\n\n\t\trobot.groupID = this._activeRobot.groupID;\n\n\t\trobot.setPosition(pos, this._activeRobot.direction);\n\t\trobot.startPosition = pos;\n\t\trobot.startDirection = robot.direction;\n\n\t\trobot.generateRobotSprite();\n\n\t\trobot.sprite.mapLayer = this._map.mapLayer;\n\t\trobot.sprite.setDirection(robot.direction);\n\t\trobot.sprite.setOrientation(this._orientation);\n\n\t\tthis.addObject(robot.sprite);\n\t\trobot.sprite.setRealPosition(robot.position);\n\n\t\tthis.drawRobotStartPositionMark(robot.id, robot.position);\n\n\t\trobot.sprite.setSpriteColor(this.getRobotIndex(robot.groupID));\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class Layer for turtle robot settings.\n * @extends PlayerRobotSettingsLayer\n * @constructor\n * @param {pm.AbstractRobot} robot Robot which settings need to display.\n */\nvar TurtleRobotSettingsLayer = PlayerRobotSettingsLayer.extend(/** @lends TurtleRobotSettingsLayer# */{\n\n\tctor: function(robot)\n\t{\n\t\tthis._super(robot);\n\n\t\tthis._label.setString(LocalizedString(\"Turtle\") + \" \" + robot.id + \", \" + LocalizedString(\"Pattern\") + \" \" + robot.parentLevel.programData[robot.groupID].currentIndex);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 09.08.19.\n */\n\n/**\n * @class Layer for turtle task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.TurtleTask} task\n */\n\nvar TurtleTaskLayer = TaskLayer.extend(/** @lends TurtleTaskLayer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"TurtleTask\"), level, task, pm.TurtleLevelModule.Type);\n\n\t\tvar updateButton = new pmui.Button(pm.spriteUtils.getIconName(\"updateWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tupdateButton.addClickEventListener(this._updateTask.bind(this));\n\n\t\tvar updateButtonAlign = new ccui.LinearLayoutParameter();\n\t\tupdateButtonAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\tupdateButtonAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tupdateButton.setLayoutParameter(updateButtonAlign);\n\n\t\tthis.addChild(updateButton);\n\t\tthis.setContentSize(this.width, this.height + updateButton.height + LevelSettingsLayer.SEPARATOR);\n\t},\n\n\t_updateTask: function()\n\t{\n\t\tthis._task.fillWithInitialData(this._level.getActiveMapIndex(), this._level.activeMap.lines);\n\n\t\tthis._level.activeMap.mapLayer.taskDrawLayer.clear();\n\t\tthis._level.activeMap.mapLayer.drawTask();\n\t}\n});\n","/**\n * Created by danilaeremin on 12.08.15.\n */\n\n/**\n * @class This class is wrapper for scrollview for handling touch events\n * @extends ccui.ScrollView\n */\nvar ScrollViewTouchWrapper = pm.ScrollViewTouchWrapper || ccui.ScrollView.extend({\n\n\t_clickDepth: 0,\n\n\t_callback: null,\n\n\tctor: function (clickDepth)\n\t{\n\t\tthis._super();\n\n\t\tthis._clickDepth = clickDepth;\n\n\t\tthis.setTouchEnabled(true);\n\t},\n\n\t/**\n * Sets callback for click\n * @param {pmui.SelectTableView~selectCallback} callback\n */\n\tsetClickEventCallback: function(callback)\n\t{\n\t\tthis._callback = callback;\n\t},\n\n\t/**\n * Intercept touch event, handle its child's touch event.\n * @param {Number} event\n * @param {ccui.Widget} sender\n * @param {cc.Touch} touch\n */\n\tinterceptTouchEvent: function (event, sender, touch)\n\t{\n\t\tccui.ScrollView.prototype.interceptTouchEvent.call(this, event, sender, touch);\n\n\t\tif (!this._touchEnabled)\n\t\t\treturn;\n\n\t\tif (event === ccui.Widget.TOUCH_ENDED)\n\t\t{\n\t\t\tvar parent = sender;\n\t\t\tvar clickDepth = 0;\n\n\t\t\twhile (parent)\n\t\t\t{\n\t\t\t\t++clickDepth;\n\t\t\t\tif (parent && parent.getParent() === this._innerContainer)\n\t\t\t\t\tbreak;\n\n\t\t\t\tparent = parent.getParent();\n\t\t\t}\n\t\t\tif (clickDepth <= this._clickDepth && sender.isHighlighted() && this._callback)\n\t\t\t\tthis._callback(sender);\n\t\t}\n\t}\n\n});\n\n/**\n * @class This class represents a table with fixed cell size.
\n * Supported operations with rows and cols.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Size} cellSize Size of cells.\n * @param {cc.Size} cellSeparator Dimensions of cell separators.\n * @param {Number} [rowCount = 1] Number of rows.\n * @param {Number} [columnCount = 1] Number of columns.\n */\npmui.TableView = ccui.Layout.extend(/** @lends pmui.TableView# */{\n\t_cellSize: null,\n\t_cellSeparator: null,\n\n\t_rowCount: 1,\n\t_columnCount: 1,\n\n\t_fitObjectSizes: false,\n\n\t_cells: [],\n\n\t_placeholderRows: [],\n\n\t_fixed: true,\n\t_scroll: null,\n\t_innerLayout: null,\n\n\tctor: function (cellSize, cellSeparator, rowCount, columnCount, fixed)\n\t{\n\t\tthis._super();\n\n\t\tif (fixed === undefined)\n\t\t\tfixed = true;\n\n\t\tthis._fixed = fixed;\n\n\t\tthis._cellSize = cellSize;\n\t\tthis._cellSeparator = cellSeparator;\n\n\t\tif (columnCount !== undefined)\n\t\t\tthis._columnCount = columnCount;\n\t\telse\n\t\t\tthis._columnCount = 1;\n\n\t\tif (rowCount !== undefined)\n\t\t\tthis._rowCount = rowCount;\n\t\telse\n\t\t\tthis._rowCount = 1;\n\n\t\tthis._cells = [];\n\t\tthis._placeholderRows = [];\n\n\t\tthis._fitObjectSizes = false;\n\n\t\tfor (var i = 0; i < this._rowCount; ++i)\n\t\t{\n\t\t\tthis._cells.push([]);\n\t\t\tfor (var j = 0; j < this._columnCount; ++j)\n\t\t\t\tthis._cells[i].push(null);\n\t\t}\n\n\t\tif (!fixed)\n\t\t{\n\t\t\tthis._scroll = new ScrollViewTouchWrapper(2); // click depth for inner container of table view\n\n\t\t\tthis._scroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\t\tthis._scroll.setBounceEnabled(true);\n\t\t\tthis._scroll.setInertiaScrollEnabled(true);\n\t\t\tthis._scroll.setScrollBarEnabled(false);\n\t\t\tthis._scroll.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\tthis._innerLayout = new ccui.Layout();\n\t\t\tthis._scroll.addChild(this._innerLayout);\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\n\t\t\tthis._innerLayout.setLayoutParameter(align);\n\n\t\t\tthis.addChild(this._scroll);\n\t\t}\n\n\t\tthis._updateSize();\n\t},\n\n\tsetContentSize: function(contentSize, height)\n\t{\n\t\tccui.Layout.prototype.setContentSize.call(this, contentSize, height);\n\n\t\tif(!this._fixed)\n\t\t\tthis._scroll.setContentSize(contentSize, height);\n\t},\n\n\t_updateCells: function ()\n\t{\n\t\tfor (var i = 0; i < this._rowCount; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._columnCount; ++j)\n\t\t\t{\n\t\t\t\tif (this._cells[i][j])\n\t\t\t\t{\n\t\t\t\t\tif (this._fitObjectSizes)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar scaleX = this._cellSize.width / this._cells[i][j].getContentSize().width;\n\t\t\t\t\t\tvar scaleY = this._cellSize.height / this._cells[i][j].getContentSize().height;\n\n\t\t\t\t\t\tthis._cells[i][j].setScale(scaleX < scaleY ? scaleX : scaleY);\n\t\t\t\t\t}\n\t\t\t\t\telse if (this._cells[i][j].getScale() !== 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._cells[i][j].setScale(1);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._cells[i][j].setPosition(this._cellPosition(i, j));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_updateSize: function ()\n\t{\n\t\tvar height = this._cellSize.height * this._rowCount + this._cellSeparator.height * (this._rowCount + 1);\n\t\tvar width = this._cellSize.width * this._columnCount + this._cellSeparator.width * (this._columnCount + 1);\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t\theight -= this._cellSize.height - this._placeholderRows[i].height;\n\n\t\tif (!this._fixed)\n\t\t{\n\t\t\tthis._scroll.setContentSize(this.getContentSize());\n\t\t\tthis._scroll.setInnerContainerSize(cc.size(width, height));\n\t\t\tthis._innerLayout.setContentSize(width, height);\n\n\t\t\tthis._scroll.getInnerContainer().forceDoLayout();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setContentSize(width, height);\n\t\t}\n\t},\n\n\t_cellPosition: function (i, j)\n\t{\n\t\tvar height = this._fixed ? this.height : this._innerLayout.height;\n\n\t\tvar placeholderSumHeight = 0;\n\n\t\tfor (var t = 0; t < this._placeholderRows.length; ++t)\n\t\t{\n\t\t\tif (this._placeholderRows[t].row <= i)\n\t\t\t\tplaceholderSumHeight += this._cellSize.height - this._placeholderRows[t].height;\n\t\t}\n\n\t\theight += placeholderSumHeight;\n\n\t\treturn cc.p(this._cellSize.width * j + this._cellSeparator.width * (j + 1),\n\t\t\theight - (this._cellSize.height * i + this._cellSeparator.height * (i + 1)));\n\t},\n\n\t/**\n * Sets fit of object size to cell size.
\n * Object will be scaled. Original scale of object will be ignored.\n * @param {Boolean} flag\n */\n\tsetFitObjectsSizes: function (flag)\n\t{\n\t\tthis._fitObjectSizes = flag;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t_getCellContainer: function ()\n\t{\n\t\treturn this._fixed ? this : this._innerLayout;\n\t},\n\n\t/**\n * Sets object of cell. If object is null old object will be removed.
\n * Returns true if row and col in table range.\n * @param {Number} row\n * @param {Number} col\n * @param {?cc.Node} node\n * @returns {Boolean}\n */\n\tsetCell: function (row, col, widget)\n\t{\n\t\tif (row < 0 || row >= this._rowCount ||\n col < 0 || col >= this._columnCount )\n\t\t\treturn false;\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (this._placeholderRows[i].row === row)\n\t\t\t\treturn false;\n\t\t}\n\n\t\tif (this._cells[row][col])\n\t\t\tthis._getCellContainer().removeChild(this._cells[row][col]);\n\n\t\tthis._cells[row][col] = widget;\n\n\t\tif (widget)\n\t\t{\n\t\t\twidget.setAnchorPoint(cc.p(0, 1) );\n\t\t\twidget.setPosition(this._cellPosition(row, col));\n\n\t\t\tif (this._fitObjectSizes)\n\t\t\t{\n\t\t\t\tvar scaleX = this._cellSize.width / widget.getContentSize().width;\n\t\t\t\tvar scaleY = this._cellSize.height / widget.getContentSize().height;\n\n\t\t\t\twidget.setScale(scaleX < scaleY ? scaleX : scaleY);\n\t\t\t}\n\n\t\t\tthis._getCellContainer().addChild(widget);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns object by row and col. Returns null if not in range.\n\t * @param {Number} row\n\t * @param {Number} col\n\t * @returns {cc.Point}\n\t */\n\tgetCellPosition: function (row, col)\n\t{\n\t\treturn this._cellPosition(row, col);\n\t},\n\n\t/**\n * Returns object by row and col. Returns null if not in range.\n * @param {Number} row\n * @param {Number} col\n * @returns {?cc.Node}\n */\n\tgetCell: function (row, col)\n\t{\n\t\tif (arguments.length === 1 && cc.isObject(row))\n\t\t{\n\t\t\tcol = row.y;\n\t\t\trow = row.x;\n\t\t}\n\n\t\tif ( row < 0 || row >= this._rowCount ||\n col < 0 || col >= this._columnCount )\n\t\t\treturn null;\n\n\t\treturn this._cells[row][col];\n\t},\n\n\t/**\n * Sets cell size.\n * @param {cc.Size} cellSize\n */\n\tsetCellSize: function (cellSize)\n\t{\n\t\tthis._cellSize = cellSize;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Sets cell separator dimensions.\n * @param {cc.Size} cellSeparator\n */\n\tsetCellSeparator: function (cellSeparator)\n\t{\n\t\tthis._cellSeparator = cellSeparator;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Returns cell size.\n * @returns {cc.Size}\n */\n\tgetCellSize: function ()\n\t{\n\t\treturn this._cellSize;\n\t},\n\n\t/**\n * Reruns cell separator dimensions.\n * @returns {cc.Size}\n */\n\tgetCellSeparator: function ()\n\t{\n\t\treturn this._cellSeparator;\n\t},\n\n\t/**\n * Inserts row. If values presented they will be inserted.\n * @param {Number} row\n * @param {...cc.Node|Array} [values]\n */\n\tinsertRow: function (row, values)\n\t{\n\t\tif(row > this._rowCount)\n\t\t\treturn;\n\n\t\tvar rowArray = [];\n\t\tvar insertLength = 0;\n\n\t\tif(arguments.length === 2 && cc.isArray(arguments[1]))\n\t\t{\n\t\t\tinsertLength = Math.min(this._columnCount, arguments[1].length);\n\t\t\tfor (var i = 0; i < insertLength; ++i )\n\t\t\t\trowArray.push(arguments[1][i]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tinsertLength = Math.min(this._columnCount, arguments.length - 1);\n\n\t\t\tfor (var i = 1; i < arguments.length; ++i )\n\t\t\t\trowArray.push(arguments[i]);\n\t\t}\n\n\t\tfor (var j = insertLength; j < this._columnCount; ++j )\n\t\t\trowArray.push(null);\n\n\t\tthis._cells.splice(row, 0, rowArray);\n\n\t\tthis._rowCount++;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\tinsertPlaceholderRow: function (row, height)\n\t{\n\t\tif(row > this._rowCount)\n\t\t\treturn;\n\n\t\tvar rowArray = [];\n\n\t\tfor (var j = 0; j < this._columnCount; ++j )\n\t\t\trowArray.push(null);\n\n\t\tthis._cells.splice(row, 0, rowArray);\n\n\t\tthis._placeholderRows.push(new RowPlaceholderCell(row + 1, height));\n\n\t\tthis._placeholderRows.sort(function(a, b)\n\t\t{\n\t\t\treturn a.row - b.row;\n\t\t});\n\n\t\tthis._rowCount++;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\tsetPlaceholderRow: function (row, height)\n\t{\n\t\tif(row > this._rowCount)\n\t\t\treturn;\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (this._placeholderRows[i].row === row)\n\t\t\t\treturn;\n\t\t}\n\n\t\tfor (var j = 0; j < this._columnCount; ++j )\n\t\t{\n\t\t\tif(this._cells[row][j])\n\t\t\t{\n\t\t\t\tthis._getCellContainer().removeChild(this._cells[row][j]);\n\t\t\t\tthis._cells[row][j] = null;\n\t\t\t}\n\t\t}\n\n\t\tthis._placeholderRows.push(new RowPlaceholderCell(row, height));\n\n\t\tthis._placeholderRows.sort(function(a, b)\n\t\t{\n\t\t\treturn a.row - b.row;\n\t\t});\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Deletes row.\n * @param {Number} row\n */\n\tdeleteRow: function (row)\n\t{\n\t\tif(row >= this._rowCount)\n\t\t\treturn;\n\n\t\tvar deleteIndex = -1;\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (this._placeholderRows[i].row === row)\n\t\t\t{\n\t\t\t\tdeleteIndex = row;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (deleteIndex !== -1)\n\t\t\tthis._placeholderRows.splice(deleteIndex, 1);\n\n\t\tfor (var j = 0; j < this._columnCount; ++j )\n\t\t{\n\t\t\tif (this._cells[row][j])\n\t\t\t\tthis._getCellContainer().removeChild(this._cells[row][j]);\n\t\t}\n\n\t\tthis._cells[row].length = 0;\n\t\tthis._cells.splice(row, 1);\n\n\t\tthis._rowCount--;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Sets row count. New rows will be empty.\n * @param {Number} rowCount\n */\n\tsetRowCount: function (rowCount)\n\t{\n\t\tif (this._rowCount > rowCount)\n\t\t{\n\t\t\tfor (var i = rowCount; i < this._rowCount; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = 0; j < this._columnCount; ++j )\n\t\t\t\t{\n\t\t\t\t\tif (this._cells[i][j])\n\t\t\t\t\t\tthis._getCellContainer().removeChild(this._cells[i][j]);\n\t\t\t\t}\n\n\t\t\t\tthis._cells[i].length = 0;\n\n\t\t\t\tvar deleteIndex = -1;\n\n\t\t\t\tfor (var t = 0; t < this._placeholderRows.length; ++t)\n\t\t\t\t{\n\t\t\t\t\tif (this._placeholderRows[t].row === i)\n\t\t\t\t\t{\n\t\t\t\t\t\tdeleteIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (deleteIndex !== -1)\n\t\t\t\t\tthis._placeholderRows.splice(deleteIndex, 1);\n\t\t\t}\n\n\t\t\tthis._cells.splice(rowCount, this._rowCount - rowCount);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = this._rowCount; i < rowCount; ++i)\n\t\t\t{\n\t\t\t\tthis._cells.push([]);\n\n\t\t\t\tfor (var j = 0; j < this._columnCount; ++j )\n\t\t\t\t\tthis._cells[i].push(null);\n\t\t\t}\n\t\t}\n\n\t\tthis._rowCount = rowCount;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Sets column count. New columns will be empty.\n * @param {Number} columnCount\n */\n\tsetColumnCount: function (columnCount)\n\t{\n\t\tif (this._columnCount > columnCount)\n\t\t{\n\t\t\tfor (var i = 0; i < this._rowCount; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = columnCount; j < this._columnCount; ++j )\n\t\t\t\t{\n\t\t\t\t\tif (this._cells[i][j])\n\t\t\t\t\t\tthis._getCellContainer().removeChild(this._cells[i][j]);\n\t\t\t\t}\n\n\t\t\t\tthis._cells[i].splice(columnCount, this._columnCount - columnCount);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfor (var i = 0; i < this._rowCount; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = this._columnCount; j < columnCount; ++j )\n\t\t\t\t\tthis._cells[i].push(null);\n\t\t\t}\n\t\t}\n\n\t\tthis._columnCount = columnCount;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Returns row count.\n */\n\tgetRowCount: function()\n\t{\n\t\treturn this._rowCount;\n\t},\n\n\t/**\n * Returns column count.\n */\n\tgetColumnCount: function()\n\t{\n\t\treturn this._columnCount;\n\t},\n\n\t/**\n * Inserts column. If values presented they will be inserted.\n * @param {Number} col\n * @param {...cc.Node|Array} [values]\n */\n\tinsertColumn: function (col, values)\n\t{\n\t\tif(col > this._columnCount)\n\t\t\treturn;\n\n\t\tvar insertLength = 0;\n\n\t\tif(arguments.length === 2 && cc.isArray(arguments[1]))\n\t\t{\n\t\t\tinsertLength = Math.min(this._rowCount, arguments[1].length);\n\t\t\tfor (var i = 0; i < insertLength; ++i )\n\t\t\t\tthis._cells[i].splice(col, 0, arguments[1][i]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tinsertLength = Math.min(this._rowCount, arguments.length - 1);\n\n\t\t\tfor (var i = 1; i < arguments.length; ++i )\n\t\t\t\tthis._cells[i].splice(col, 0, arguments[i]);\n\t\t}\n\n\t\tfor (var i = insertLength; i < this._rowCount; ++i)\n\t\t\tthis._cells[i].splice(col, 0, null);\n\n\t\tthis._columnCount++;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Deletes column by index.\n * @param {Number} col\n */\n\tdeleteColumn: function (col)\n\t{\n\t\tfor (var i = 0; i < this._rowCount; ++i)\n\t\t{\n\t\t\tif (this._cells[i][col])\n\t\t\t\tthis._getCellContainer().removeChild(this._cells[i][col]);\n\n\t\t\tthis._cells[i].splice(col, 1);\n\t\t}\n\n\t\tthis._columnCount--;\n\n\t\tthis._updateSize();\n\t\tthis._updateCells();\n\t},\n\n\t/**\n * Returns cell indexes by table view coordinates.\n * @param {cc.Point} pos\n * @returns {?cc.Point}\n */\n\tcellAtPosition: function (pos)\n\t{\n\t\tvar posY = pos.y;\n\t\tvar height = this._cellSize.height * this._rowCount + this._cellSeparator.height * (this._rowCount + 1);\n\n\t\tvar heightBelowPos = this._cellSeparator.height;\n\t\tvar prevPlaceholderRow = this._rowCount;\n\n\t\tvar abovePlaceholderIndex = -1;\n\n\t\tfor (var t = this._placeholderRows.length-1; t >=0; --t)\n\t\t{\n\t\t\tvar rowDiff = prevPlaceholderRow - this._placeholderRows[t].row - 1;\n\t\t\theightBelowPos += rowDiff * (this._cellSize.height + this._cellSeparator.height);\n\n\t\t\tif (heightBelowPos >= pos.y)\n\t\t\t{\n\t\t\t\tabovePlaceholderIndex = t;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\theightBelowPos += this._placeholderRows[t].height + this._cellSeparator.height;\n\t\t\tprevPlaceholderRow = this._placeholderRows[t].row;\n\t\t}\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (i > abovePlaceholderIndex)\n\t\t\t\tposY += this._cellSize.height - this._placeholderRows[i].height;\n\t\t}\n\n\t\tvar x = Math.floor(pos.x / (this._cellSize.width + this._cellSeparator.width));\n\t\tvar y = Math.floor((height - posY) / (this._cellSize.height + this._cellSeparator.height));\n\n\t\tif (x < 0 || x >= this._columnCount ||\n y < 0 || y >= this._rowCount )\n\t\t\treturn null;\n\t\telse\n\t\t\treturn cc.p(y, x);\n\t},\n\n\t/**\n * Returns cell indexes by touch.\n * @param {cc.Touch} touch\n * @returns {?cc.Point}\n */\n\tcellAtTouch: function (touch)\n\t{\n\t\tvar pos = this._getCellContainer().convertTouchToNodeSpace(touch);\n\n\t\treturn this.cellAtPosition(pos);\n\t}\n});\n\nvar RowPlaceholderCell = cc.Class.extend({\n\n\theight: 0,\n\trow: -1,\n\n\tctor: function(row, height)\n\t{\n\t\tthis.height = height;\n\t\tthis.row = row;\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 11.08.17.\n */\n\npmui.SelectionListView = ccui.Layout.extend({\n\n\t_selectedIndex: -1,\n\t_selectedLayer: null,\n\t_callback: null,\n\t_target: null,\n\t_items: [],\n\t_listView: null,\n\n\tctor: function (items, layoutSize)\n\t{\n\t\tthis._super();\n\t\tthis._items = items;\n\n\t\tthis._listView = new ccui.ListView();\n\t\tthis._listView.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._listView.setItemsMargin(pmui.SelectionListView.LIST_ITEM_SEPARATOR);\n\t\tthis._listView.setScrollBarEnabled(true);\n\t\tthis._listView.setScrollBarOpacity(255 * 0.9);\n\t\tthis._listView.setScrollBarWidth(pmui.SelectionListView.SCROLL_BAR_WIDTH);\n\n\t\tthis.setContentSize(layoutSize.width, layoutSize.height);\n\t\tthis._listView.setContentSize(layoutSize.width, layoutSize.height);\n\n\t\tthis.addChild(this._listView);\n\n\t\tthis._fillList();\n\n\t\tthis._selectedLayer = new cc.LayerColor(cc.color(144, 144, 144, 144));\n\n\t\tthis._selectedLayer.setVisible(false);\n\t\tthis.addChild(this._selectedLayer, -1);\n\n\t\tthis._listView.addEventListener(this._onSelectStep.bind(this));\n\t},\n\n\tsetIndexCallback: function (callback, target)\n\t{\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\t},\n\n\tgetSelectedItemIndex: function()\n\t{\n\t\treturn this._selectedIndex;\n\t},\n\n\taddItem: function(item)\n\t{\n\t\tthis._items.push(item);\n\n\t\tvar cutNumber = item.length;\n\t\twhile ((new ccui.Text(item.substring(0, cutNumber), pm.settings.fontName, pm.settings.fontSize)).width > this.width)\n\t\t\tcutNumber--;\n\n\t\tvar child = new ccui.Text(item.substring(0, cutNumber), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar width = Math.max(this.width, child.width);\n\n\t\tchild.setTouchEnabled(true);\n\t\tthis._listView.pushBackCustomItem(child);\n\n\t\tthis.setContentSize(width, this.height);\n\t\tthis._listView.setContentSize(width, this.height);\n\t},\n\n\tremoveItem: function(index)\n\t{\n\t\tthis._items.splice(index, 1);\n\t\tthis._listView.removeItem(index);\n\t},\n\n\t_fillList: function()\n\t{\n\t\tvar width = this.width;\n\n\t\tfor(var i = 0 ; i < this._items.length; ++i)\n\t\t{\n\t\t\tvar cutNumber = this._items[i].length;\n\t\t\twhile ((new ccui.Text(this._items[i].substring(0, cutNumber), pm.settings.fontName, pm.settings.fontSize)).width > this.width)\n\t\t\t\tcutNumber--;\n\n\t\t\tvar child = new ccui.Text(this._items[i].substring(0, cutNumber), pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\twidth = Math.max(width, child.width);\n\n\t\t\tchild.setTouchEnabled(true);\n\t\t\tthis._listView.pushBackCustomItem(child);\n\t\t}\n\n\t\tthis.setContentSize(width, this.height);\n\t\tthis._listView.setContentSize(width, this.height);\n\t},\n\n\t_onSelectStep: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tif (this._selectedIndex !== this._listView.getCurSelectedIndex())\n\t\t\t{\n\t\t\t\tthis._selectedIndex = this._listView.getCurSelectedIndex();\n\n\t\t\t\tthis._moveSelectionLayer();\n\t\t\t}\n\t\t}\n\t},\n\n\t_moveSelectionLayer: function()\n\t{\n\t\tif(this._selectedIndex === -1)\n\t\t\treturn;\n\n\t\tvar item = this._listView.getItem(this._selectedIndex);\n\n\t\tthis._selectedLayer.setContentSize(cc.size(\n\t\t\tthis.width,\n\t\t\titem.height + pmui.SelectionListView.LIST_ITEM_SEPARATOR\n\t\t));\n\n\t\tvar itemPosInLayout = this.convertToNodeSpace(item.convertToWorldSpace(cc.p(0, 0)));\n\n\t\tthis._selectedLayer.setPosition(cc.p(\n\t\t\t0,\n\t\t\titemPosInLayout.y - pmui.SelectionListView.LIST_ITEM_SEPARATOR/2\n\t\t));\n\n\t\tthis._selectedLayer.setVisible(true);\n\n\t\tif(this._callback)\n\t\t\tthis._callback.call(this._target, this._selectedIndex);\n\t},\n\n\tclearSelection: function()\n\t{\n\t\tthis._selectedIndex = -1;\n\n\t\tthis._selectedLayer.setVisible(false);\n\t}\n});\n\npmui.SelectionListView.SCROLL_BAR_WIDTH = 5;\npmui.SelectionListView.LIST_ITEM_SEPARATOR = 10;\npmui.SelectionListView.START_CUT_NUMBER = 45;\npmui.SelectionListView.BORDER = 30;\n","/**\n * Created by danilaeremin on 12.08.15.\n */\n\n/**\n * This callback is used on select cell of pmui.TableView.
\n * If clicked selected cell - cell will be deselected and callback called with null parameter.\n * @callback pmui.SelectTableView~selectCallback\n * @param {?cc.Point} cell Coordinates of selected cell.\n */\n\n/**\n * @class This class represents a table with selected possibility.\n * @extends pmui.TableView\n * @property {Boolean} canDeselectCell Can selected cell be deselected.\n * @constructor\n * @param {cc.Size} cellSize Size of cells.\n * @param {cc.Size} cellSeparator Dimensions of cell separators.\n * @param {Number} [rowCount = 1] Number of rows.\n * @param {Number} [columnCount = 1] Number of columns.\n */\npmui.SelectTableView = pmui.TableView.extend(/** @lends pmui.SelectTableView# */{\n\t_callback: null,\n\t_target: null,\n\t_selectFrame: null,\n\t_selectFrameScale9: false,\n\t_selectedCell: null,\n\t_startTouchSelectedCell: null,\n\tcanDeselectCell: true,\n\n\tctor: function (cellSize, cellSeparator, rowCount, columnCount)\n\t{\n\t\tthis._super(cellSize, cellSeparator, rowCount, columnCount, false);\n\n\t\tthis._scroll.setClickEventCallback(this._onSelectItem.bind(this));\n\t},\n\n\t/**\n * Sets select frame image.\n * @param {ccui.Image|cc.SpriteFrame} frameOrImage If scale9Sprite use cc.SpriteFrame else ccui.Image.\n * @param {Boolean} scale9Sprite Is image Scale9Sprite.\n */\n\tsetSelectFrame: function(frameOrImage, scale9Sprite)\n\t{\n\t\tthis._selectFrameScale9 = scale9Sprite;\n\n\t\tif(scale9Sprite)\n\t\t{\n\t\t\tif(frameOrImage instanceof cc.SpriteFrame)\n\t\t\t\tthis._selectFrame = new ccui.Scale9Sprite(frameOrImage);\n\t\t}\n\t\telse\n\t\tif(frameOrImage instanceof ccui.ImageView)\n\t\t{ this._selectFrame = frameOrImage; }\n\n\t\tif(this._selectFrame)\n\t\t{\n\t\t\tthis._selectFrame.setVisible(false);\n\t\t\tthis._selectFrame.setAnchorPoint(cc.p(0, 1));\n\t\t\tthis._getCellContainer().addChild(this._selectFrame, 0);\n\t\t\tthis._updateSelection();\n\t\t}\n\t},\n\n\t/**\n * Adds listener in select action.\n * @param {pmui.SelectTableView~selectCallback} callback\n * @param {cc.Node} target\n */\n\taddSelectEventListener: function(callback, target)\n\t{\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\t},\n\n\t_updateSelection: function ()\n\t{\n\t\tif(!this._selectFrame)\n\t\t\treturn;\n\n\t\tif(this._selectFrameScale9)\n\t\t{\n\t\t\tvar size = cc.size(this._cellSize.width, this._cellSize.height);\n\t\t\tsize.width += this._cellSeparator.width;\n\t\t\tsize.height += this._cellSeparator.height;\n\n\t\t\tthis._selectFrame.setPreferredSize(size);\n\t\t}\n\t\tthis._updateSelectionPosition();\n\t},\n\n\t_updateSelectionPosition: function()\n\t{\n\t\tif (this._selectedCell)\n\t\t{\n\t\t\tvar dx = this._cellSize.width - this._selectFrame.getContentSize().width;\n\t\t\tvar dy = this._cellSize.height - this._selectFrame.getContentSize().height;\n\t\t\tvar pos = this._cellPosition(this._selectedCell.x, this._selectedCell.y);\n\n\t\t\tpos.x += dx / 2;\n\t\t\tpos.y -= dy / 2;\n\t\t\tthis._selectFrame.setPosition(pos);\n\t\t}\n\t},\n\n\tsetCellSize: function (cellSize)\n\t{\n\t\tpmui.TableView.prototype.setCellSize.call(this, cellSize);\n\n\t\tthis._updateSelection();\n\t},\n\n\tsetCellSeparator: function (cellSeparator)\n\t{\n\t\tpmui.TableView.prototype.setCellSize.call(this, cellSeparator);\n\n\t\tthis._updateSelection();\n\t},\n\n\t/**\n * Selects cell by row and col.\n * @param {Number} row\n * @param {Number} col\n */\n\tselectCell: function (row, col)\n\t{\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (this._placeholderRows[i].row === row)\n\t\t\t\treturn;\n\t\t}\n\n\t\tthis._selectCell(row, col);\n\t},\n\n\t_selectCell: function (row, col)\n\t{\n\t\tthis._selectFrame.setVisible(true);\n\t\tthis._selectedCell = cc.p(row, col);\n\n\t\tthis._updateSelectionPosition();\n\t},\n\n\t/**\n * Returns selected cell position.\n * @returns {cc.Point}\n */\n\tgetSelectedCell: function ()\n\t{\n\t\treturn this._selectedCell;\n\t},\n\n\t/**\n * Removes selection from all items.\n */\n\tdeselectAll: function ()\n\t{\n\t\tif(!this.canDeselectCell)\n\t\t\treturn;\n\n\t\tthis._selectFrame.setVisible(false);\n\t\tthis._selectedCell = null;\n\t},\n\n\t_onSelectItem: function(sender)\n\t{\n\t\tvar pos = this.cellAtPosition(sender.getPosition());\n\n\t\tif (!pos)\n\t\t\treturn;\n\n\t\tfor (var i = 0; i < this._placeholderRows.length; ++i)\n\t\t{\n\t\t\tif (this._placeholderRows[i].row === pos.y)\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (!this._selectedCell || this._selectedCell.x !== pos.x || this._selectedCell.y !== pos.y)\n\t\t\tthis._selectCell(pos.x, pos.y);\n\t\telse if (this.canDeselectCell)\n\t\t\tthis.deselectAll();\n\n\t\tif (this._callback)\n\t\t\tthis._callback.call(this._target, this._selectedCell);\n\t},\n\n\tsetCell: function (row, col, widget)\n\t{\n\t\tvar result = pmui.TableView.prototype.setCell.call(this, row, col, widget);\n\n\t\tif(result)\n\t\t\twidget.setTouchEnabled(true);\n\n\t\treturn result;\n\t},\n\n\tsetInertiaScrollEnabled: function (flag)\n\t{\n\t\tthis._scroll.setInertiaScrollEnabled(flag);\n\t},\n\n\tsetBounceEnabled: function (flag)\n\t{\n\t\tthis._scroll.setBounceEnabled(flag);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 20.11.14.\n */\n/**\n * This callback is used by combobox on show and close.\n * @callback pmui.ComboBox~callback\n */\n\n/**\n * This callback is used by combobox on select object.\n * @callback pmui.ComboBox~selectCallback\n * @param {Number} index Index f selected element.\n */\n\n/**\n * @class pmui.ComboBox is a drop-down list of strings with select possibility.\n * @extends ccui.Layout\n * @constructor\n * @param {Array} values List of string value to init combobox.\n * @param {Object} target Target for callbacks.\n * @param {pmui.ComboBox~selectCallback} onSelect On select callback.\n * @param {pmui.ComboBox~callback} [onClose] On close callback.\n * @param {pmui.ComboBox~callback} [onShow] On show callback.\n */\npmui.ComboBox = ccui.Layout.extend(/** @lends pmui.ComboBox#*/{\n\t_onShow: null,\n\t_onSelect: null,\n\t_onClose: null,\n\n\t_target: null,\n\n\t_dropDownList: null,\n\t_selectedLabel: null,\n\t_selectedObject: 0,\n\t_backgroundSprite: null,\n\t_fontSize: null,\n\t_extraBorder: null,\n\n\t_objects: [],\n\t_objectsHeight: 0,\n\n\t_startPoint: cc.p(),\n\n\t_maxDropDownViewHeight: 0,\n\n\t_height: 0,\n\n\t_itemsSeparator: 0,\n\n\tctor: function(values, target, onSelect, fontSize, extraBorder, onShow, onClose)\n\t{\n\t\tthis._onShow = onShow;\n\t\tthis._onSelect = onSelect;\n\t\tthis._onClose = onClose;\n\t\tthis._target = target;\n\t\tthis._fontSize = fontSize;\n\n\t\tif (extraBorder === undefined)\n\t\t\textraBorder = 0;\n\n\t\tthis._extraBorder = extraBorder;\n\n\t\tthis._height = pmui.ComboBox.DEFAULT_HEIGHT;\n\t\tthis._itemsSeparator = pmui.ComboBox.SEPARATOR;\n\n\t\tif (this._extraBorder !== 0)\n\t\t{\n\t\t\tthis._height += 40;\n\t\t\tthis._itemsSeparator /= 2;\n\t\t}\n\n\t\tthis._super();\n\n\t\tthis.setValueList(values);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t/**\n *\n * @param {Array} values List of string values to set in combobox.\n */\n\tsetValueList: function(values)\n\t{\n\t\tthis.removeAllChildren(true);\n\n\t\tthis._selectedObject = 0;\n\t\tthis._objects = [];\n\n\t\tvar width = 0, maxHeight = 0;\n\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar string = new ccui.Text(values[i], pm.settings.fontBoldName, this._fontSize);\n\t\t\tstring.setTextColor(cc.color(41, 171, 226));\n\n\t\t\tthis._objects.push(string);\n\n\t\t\tif(this._objects[i].getContentSize().width > width)\n\t\t\t\twidth = this._objects[i].getContentSize().width;\n\n\t\t\tif(this._objects[i].getContentSize().height > maxHeight)\n\t\t\t\tmaxHeight = this._objects[i].getContentSize().height;\n\t\t}\n\n\t\tif(values.length === 0)\n\t\t{\n\t\t\twidth = pmui.ComboBox.DEFAULT_WIDTH;\n\t\t\tmaxHeight = this._height;\n\t\t}\n\n\t\tvar buttonSprite = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(\"comboboxArrow\"));\n\n\t\tif (this._extraBorder === 0)\n\t\t\tbuttonSprite.setScale(0.7);\n\n\t\twidth += this._extraBorder;\n\n\t\tif (this._extraBorder === 0)\n\t\t\twidth += buttonSprite.width + 20;\n\n\t\tthis._objectsHeight = maxHeight + this._itemsSeparator;\n\n\t\tbuttonSprite.setAnchorPoint(cc.p(0, 0));\n\n\t\tif (this._extraBorder !== 0)\n\t\t\tbuttonSprite.setPosition(cc.p(width - pmui.ComboBox.BOUND_X - buttonSprite.width - 10, (this._height + 2 * pmui.ComboBox.BOUND_Y - buttonSprite.height)/2));\n\t\telse\n\t\t\tbuttonSprite.setPosition(cc.p(width - buttonSprite.width, (this._height + 2 * pmui.ComboBox.BOUND_Y - buttonSprite.height)/2 + 5));\n\n\t\tthis.addChild(buttonSprite, 10);\n\n\t\tif(values.length > 0)\n\t\t\tthis._selectedLabel = new ccui.Text(values[0], pm.settings.fontBoldName, this._fontSize);\n\t\telse\n\t\t\tthis._selectedLabel = new ccui.Text(LocalizedString(\"ComboboxNoValue\"), pm.settings.fontBoldName, this._fontSize);\n\n\t\tthis._selectedLabel.setTextColor(cc.color(63, 63, 150));\n\n\t\tif (this._extraBorder !== 0)\n\t\t\tthis._selectedLabel.setPosition(cc.p(pmui.ComboBox.BOUND_X + (width-this._selectedLabel.width)/2 - 20, pmui.ComboBox.BOUND_Y + (this._height-this._selectedLabel.height)/2));\n\t\telse\n\t\t\tthis._selectedLabel.setPosition(cc.p(pmui.ComboBox.BOUND_X, pmui.ComboBox.BOUND_Y + (this._height-this._selectedLabel.height)/2));\n\n\t\tthis._selectedLabel.setAnchorPoint(cc.p(0, 0));\n\n\t\tthis.addChild(this._selectedLabel, 5);\n\n\t\tif (this._extraBorder !== 0)\n\t\t\tthis._backgroundSprite = new cc.Scale9Sprite(pm.spriteUtils.getInterfaceElementFrame(\"comboboxBack2\"));\n\t\telse\n\t\t\tthis._backgroundSprite = new cc.Scale9Sprite(pm.spriteUtils.getInterfaceElementFrame(\"comboboxBack\"));\n\n\t\tthis._backgroundSprite.setContentSize(cc.size(width, this._height + 2 * pmui.ComboBox.BOUND_Y));\n\t\tthis._backgroundSprite.setAnchorPoint( cc.p(0, 1) );\n\t\tthis._backgroundSprite.setPosition( cc.p(0, this._backgroundSprite.height) );\n\n\t\tif (this._extraBorder !== 0)\n\t\t\tthis._backgroundSprite.setCapInsets(cc.rect(45, 45, 45, 45));\n\t\telse\n\t\t\tthis._backgroundSprite.setCapInsets(cc.rect(25, 25, 25, 25));\n\n\t\tthis.addChild(this._backgroundSprite, -2);\n\n\t\tthis.setContentSize(this._backgroundSprite.getContentSize().width, this._height + 2 * pmui.ComboBox.BOUND_Y);\n\n\t\tthis._dropDownList = new ccui.ListView();\n\n\t\tthis._dropDownList.setPropagateTouchEvents(false);\n\t\tthis._dropDownList.setBounceEnabled(true);\n\t\tthis._dropDownList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._dropDownList.setScrollBarEnabled(false);\n\t\tthis._dropDownList.setItemsMargin(this._itemsSeparator);\n\t\tthis._dropDownList.addEventListener(this._onSelectObject.bind(this));\n\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tthis._objects[i].setTouchEnabled(true);\n\t\t\tthis._objects[i].setColor(cc.color.WHITE);\n\t\t\tthis._dropDownList.pushBackCustomItem(this._objects[i]);\n\t\t}\n\n\t\tvar dropDownHeight = Math.min(this._objectsHeight * (values.length) - this._itemsSeparator, pm.settings.getScreenSize().height * 0.7);\n\n\t\tthis._dropDownList.setContentSize(this._backgroundSprite.getContentSize().width - 2 * pmui.ComboBox.SCROLL_BORDER, dropDownHeight);\n\t\tthis._dropDownList.setAnchorPoint(cc.p(0, 0));\n\n\t\tif (this._extraBorder !== 0)\n\t\t\tthis._dropDownList.setPosition(this._selectedLabel.getPosition().x, -dropDownHeight + pmui.ComboBox.SCROLL_BORDER);\n\t\telse\n\t\t\tthis._dropDownList.setPosition(this._selectedLabel.getPosition().x, -dropDownHeight + pmui.ComboBox.SCROLL_BORDER/2);\n\n\t\tthis.addChild(this._dropDownList, -1);\n\n\t\tthis._updateDropDownViewSize();\n\n\t\tthis._dropDownList.setVisible(false);\n\t},\n\n\tgetValueList: function()\n\t{\n\t\treturn this._objects;\n\t},\n\n\t_updateDropDownViewSize: function ()\n\t{\n\t\tvar labelHeight = this._selectedLabel.getContentSize().height;\n\n\t\tvar preferredScrollSize = this._maxDropDownViewHeight - labelHeight;\n\n\t\tif(this._maxDropDownViewHeight !== 0 && this._dropDownList.height > preferredScrollSize)\n\t\t{\n\t\t\tthis._dropDownList.setContentSize(this._dropDownList.width, preferredScrollSize);\n\t\t\tthis._dropDownList.setPosition(0, -preferredScrollSize);\n\t\t}\n\t},\n\n\t/**\n * Sets maximum view height in drop down state(with selected object element).
\n * If height === 0 then there is no limits.\n * @param {Number} height\n */\n\tsetMaximumDropDownViewHeight: function(height)\n\t{\n\t\tthis._maxDropDownViewHeight = height;\n\t\tthis._updateDropDownViewSize();\n\t},\n\n\t/**\n * Returns size of drop-down part.\n * @returns {cc.Size}\n */\n\tgetDropdownSize: function()\n\t{\n\t\treturn cc.size(this._dropDownList.getContentSize().width + 2*pmui.ComboBox.SCROLL_BORDER,\n\t\t\tthis._dropDownList.getContentSize().height + 2*pmui.ComboBox.SCROLL_BORDER);\n\t},\n\n\t/**\n * Selects object by index.\n * @param {Number} index\n */\n\tselectObject: function(index)\n\t{\n\t\tthis._selectedObject = index;\n\n\t\tif(index < this._objects.length)\n\t\t\tthis._selectedLabel.setString(this._objects[this._selectedObject].getString());\n\t},\n\n\t/**\n * Returns string value in list of selected object.\n * @returns {?String}\n */\n\tgetSelectedObjectValue: function()\n\t{\n\t\tif(this._selectedObject < this._objects.length)\n\t\t\treturn this._objects[this._selectedObject].getString();\n\t\telse\n\t\t\treturn null;\n\t},\n\n\t/**\n * Returns selected object index.\n * @returns {Number}\n */\n\tgetSelectedIndex: function()\n\t{\n\t\treturn this._selectedObject;\n\t},\n\n\t_onSelectObject: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tvar selectedObject = this._dropDownList.getCurSelectedIndex();\n\n\t\t\tif(this._selectedObject !== selectedObject)\n\t\t\t{\n\t\t\t\tthis._selectedObject = selectedObject;\n\n\t\t\t\tthis._selectedLabel.setString(this._objects[this._selectedObject].getString());\n\n\t\t\t\tthis._onSelect.call(this._target, this._selectedObject);\n\t\t\t}\n\t\t\telse if(this._onClose)\n\t\t\t{\n\t\t\t\tthis._onClose.call(this._target);\n\t\t\t}\n\n\t\t\tvar width = this._backgroundSprite.width;\n\t\t\tvar height = this._backgroundSprite.height - this._dropDownList.height - pmui.ComboBox.SCROLL_BORDER;\n\n\t\t\tthis._backgroundSprite.setContentSize(width, height);\n\n\t\t\tthis._backgroundSprite.setPosition( cc.p(0, this.height) );\n\n\t\t\tthis._dropDownList.setVisible(false);\n\t\t}\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\tif(!this.enabled)\n\t\t\treturn false;\n\n\t\tif(!this.isClippingParentContainsPoint(touch.getLocation()))\n\t\t\treturn false;\n\n\t\tif(!this._dropDownList.isVisible())\n\t\t{\n\t\t\tvar touchPoint = this.getParent().convertTouchToNodeSpace(touch);\n\n\t\t\treturn cc.rectContainsPoint(this.getBoundingBox(), touchPoint);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\treturn !cc.rectContainsPoint(this._dropDownList.getBoundingBox(), touchPoint);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_touchMoved: function(touch, event) {},\n\n\t_touchEnded: function()\n\t{\n\t\tif(!this._dropDownList.isVisible())\n\t\t{\n\t\t\tvar width = this._backgroundSprite.width;\n\t\t\tvar height = this._backgroundSprite.height + this._dropDownList.height + pmui.ComboBox.SCROLL_BORDER;\n\n\t\t\tthis._backgroundSprite.setContentSize(width, height);\n\n\t\t\tthis._backgroundSprite.setPosition( cc.p(0, this.height) );\n\n\t\t\tthis._dropDownList.setVisible(true);\n\n\t\t\tif(this._onShow)\n\t\t\t\tthis._onShow.call(this._target);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar width = this._backgroundSprite.width;\n\t\t\tvar height = this._backgroundSprite.height - this._dropDownList.height - pmui.ComboBox.SCROLL_BORDER;\n\n\t\t\tthis._backgroundSprite.setContentSize(width, height);\n\n\t\t\tthis._backgroundSprite.setPosition( cc.p(0, this.height) );\n\n\t\t\tthis._dropDownList.setVisible(false);\n\n\t\t\tif(this._onClose)\n\t\t\t\tthis._onClose.call(this._target);\n\t\t}\n\t}\n});\n\n/**\n * Bound of text in {@link pmui.ComboBox} by x.\n * @const\n * @default\n * @type {Number}\n */\npmui.ComboBox.BOUND_X = 10.0;\n/**\n * Bound of text in {@link pmui.ComboBox} by y.\n * @const\n * @default\n * @type {Number}\n */\npmui.ComboBox.BOUND_Y = 5.0;\n/**\n * Separator between objects in drop down of {@link pmui.ComboBox}.\n * @const\n * @default\n * @type {Number}\n */\npmui.ComboBox.SEPARATOR = 10.0;\n/**\n * Default width of {@link pmui.ComboBox}.\n * @const\n * @default\n * @type {Number}\n */\npmui.ComboBox.DEFAULT_WIDTH = 130.0;\n/**\n * Default height of {@link pmui.ComboBox}.\n * @const\n * @default\n * @type {Number}\n */\npmui.ComboBox.DEFAULT_HEIGHT = 40.0;\n\npmui.ComboBox.SCROLL_BORDER = 10;\n","/**\n * Created by Nikita Besshaposhnikov on 01.12.14.\n */\n\n/**\n * @class Allows to input text in field.\n * @extends ccui.Layout\n * @constructor\n * @param {String} string Initial string of input.\n * @param {String} placeholder Placeholder.\n * @param {Number} fontSize Font size of input.\n * @param {Number} [width] Width of text input. If not passed, width will be width of string.\n */\npmui.TextInput = ccui.Layout.extend(/** @lends pmui.TextInput# */{\n\t_editing: false,\n\t_input: null,\n\t_cursor: null,\n\t_cursorShowingTime: 0,\n\t_cursorPosition: 0,\n\n\t_strings: [],\n\t_isMultiLine: false,\n\n\t_placeholder: \"\",\n\n\t_target: null,\n\t_insertTextCallback: null,\n\n\t_oldText: \"\",\n\n\t_attachCallback: null,\n\t_attachCallbackTarget: null,\n\n\tctor: function(string, placeholder, fontSize, width, multiLineHeight)\n\t{\n\t\tthis._super();\n\n\t\tthis._placeholder = placeholder;\n\n\t\tthis.setBackGroundImage(pm.spriteUtils.getInterfaceElementName(\"textBack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\n\t\tthis._input = new pm.TextFieldWrapper(placeholder, pm.settings.fontName, fontSize);\n\t\tthis._input.setTextColor(pmui.TextInput.TEXT_COLOR);\n\t\tthis._input.setPlaceHolderColor(pmui.TextInput.PLACEHOLDER_COLOR);\n\n\t\tthis._input.setString(string);\n\t\tthis._input.addEventListener(this._handleInputEvent, this);\n\n\t\tthis._input.setAnchorPoint(cc.p(0, 0));\n\n\t\tif (width === undefined)\n\t\t\twidth = this._input.width + 2 * pmui.TextInput.BORDER_X;\n\n\t\tif (width < pmui.TextInput.DEFAULT_WIDTH)\n\t\t\twidth = pmui.TextInput.DEFAULT_WIDTH;\n\n\t\tif(multiLineHeight === undefined)\n\t\t\tmultiLineHeight = 0;\n\n\t\tvar height = this._input.height;\n\n\t\tif(multiLineHeight > 0)\n\t\t{\n\t\t\tthis._isMultiLine = true;\n\t\t\tthis._lineWidth = width - 2 * pmui.TextInput.BORDER_X;\n\t\t\tthis._lineHeight = height;\n\n\t\t\theight = multiLineHeight;\n\t\t}\n\n\t\tvar bordersY = pmui.TextInput.BORDER_TOP + pmui.TextInput.BORDER_BOTTOM;\n\n\t\tthis.setContentSize(width, height + bordersY);\n\n\t\tvar clipping = new ccui.Layout();\n\n\t\tclipping.setContentSize(width - 2 * pmui.TextInput.BORDER_X, height);\n\t\tclipping.setPosition(pmui.TextInput.BORDER_X, pmui.TextInput.BORDER_BOTTOM);\n\t\tclipping.setAnchorPoint(cc.p(0, 0));\n\n\t\tclipping.setClippingEnabled(true);\n\n\t\tclipping.addChild(this._input);\n\n\t\tthis._input.setTouchAreaEnabled(true);\n\t\tthis._input.setTouchSize(clipping.getContentSize());\n\n\t\tif(multiLineHeight > 0)\n\t\t\tthis._input.getVirtualRenderer().setDimensions(clipping.width, 0);\n\n\t\tthis._input.setPosition(0, 0);\n\t\tthis.addChild(clipping);\n\n\t\tif(!cc.sys.isNative)\n\t\t{\n\t\t\tthis._cursor = new cc.LabelTTF(\"|\", pm.settings.fontLightName, fontSize);\n\t\t\tthis._cursor.setAnchorPoint(0, 0);\n\t\t\tthis._cursor.setPosition(this._input.width, 0);\n\t\t\tthis._cursor.setFontFillColor(pmui.TextInput.TEXT_COLOR);\n\n\t\t\tthis._cursor.setOpacity(0);\n\n\t\t\tclipping.addChild(this._cursor);\n\n\t\t\tthis._cursorPosition = string.length;\n\t\t\tthis._oldText = string;\n\n\t\t\tthis._input.setPasswordStyleText(\"*\");\n\n\t\t\tif(this._isMultiLine)\n\t\t\t{\n\t\t\t\tthis._warpMultilineText();\n\n\t\t\t\t//Workaround for input height, because it's real height will be calculated on next tick\n\t\t\t\tvar inputHeight = this._lineHeight * this._strings.length;\n\t\t\t\tthis._input.setPosition(0, (this.height - bordersY) - inputHeight);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._input.setCursorEnabled(true);\n\t\t}\n\t},\n\n\t/**\n * Set callback for insert text event.str\n */\n\tsetInsertTextCallback: function(target, callback)\n\t{\n\t\tthis._target = target;\n\t\tthis._insertTextCallback = callback;\n\t},\n\n\t/**\n * Sets string of input.\n * @param {String} str\n */\n\tsetString: function(str)\n\t{\n\t\tthis._input.setString(str);\n\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tthis._oldText = str;\n\t\t\tthis._cursorPosition = str.length;\n\t\t}\n\t},\n\n\t/**\n * Returns current input value.\n * @returns {String}\n */\n\tgetString: function()\n\t{\n\t\treturn this._input.getString();\n\t},\n\n\t/**\n * Sets input to password style.\n * @param {Boolean} flag\n */\n\tsetPasswordInput: function(flag)\n\t{\n\t\tthis._input.setPasswordEnabled(flag);\n\t},\n\n\t/**\n * Sets callback for attach/detach event\n * @param {pm.TextInput~attachCallback} callback\n * @param {Object} target\n */\n\tsetAttachCallback: function(callback, target)\n\t{\n\t\tthis._attachCallback = callback;\n\t\tthis._attachCallbackTarget = target;\n\t},\n\n\tcloseKeyboard: function()\n\t{\n\t\tthis._input.didNotSelectSelf();\n\t},\n\n\t_warpMultilineText: function()\n\t{\n\t\tif(!cc.sys.isNative && this._isMultiLine)\n\t\t{\n\t\t\tvar scale = cc.director.getContentScaleFactor();\n\t\t\tvar strings = [this._input.getString()];\n\n\t\t\tfor (var i = 0; i < strings.length; ++i)\n\t\t\t\tthis._input.getVirtualRenderer()._renderCmd._checkWarp(strings, i, this._input.width * scale);\n\n\t\t\tthis._strings = strings;\n\t\t}\n\t},\n\n\t_getStringLength: function(str)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\treturn 0.0;\n\t\telse //Some magic of cocos2d-html5 to determine text real length\n\t\t\treturn this._input.getVirtualRenderer()._renderCmd._measure(str) / cc.director.getContentScaleFactor();\n\t},\n\n\t_getCursorPosition: function(str)\n\t{\n\t\tif(!cc.sys.isNative) //Some very black deep magic of cocos2d-html5 to determine word warp and real cursor position\n\t\t{\n\t\t\tif(this._isMultiLine)\n\t\t\t{\n\t\t\t\tvar line = this._strings.length;\n\t\t\t\tvar y = this.height - line * this._lineHeight - pmui.TextInput.BORDER_TOP - pmui.TextInput.CURSOR_CORRECTION;\n\n\t\t\t\tvar x = 0;\n\t\t\t\tvar strLength = 0;\n\n\t\t\t\tfor(var i = 0 ; i < this._strings.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tif(this._cursorPosition <= strLength + this._strings[i].length)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar pos = this._cursorPosition - strLength;\n\t\t\t\t\t\tx = this._getStringLength(this._strings[i].substr(0, pos));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstrLength += this._strings[i].length;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn cc.p(x, Math.max(pmui.TextInput.CURSOR_CORRECTION, y));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar stringLength = this._getStringLength(str.substr(0, this._cursorPosition));\n\t\t\t\treturn cc.p(Math.min(stringLength, this.width - 3 * pmui.TextInput.BORDER_X), pmui.TextInput.CURSOR_CORRECTION);\n\t\t\t}\n\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn cc.p();\n\t\t}\n\t},\n\n\t_handleInputEvent: function(sender, type)\n\t{\n\t\tvar bordersY = pmui.TextInput.BORDER_TOP + pmui.TextInput.BORDER_BOTTOM;\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase ccui.TextField.EVENT_INSERT_TEXT:\n\t\t\tcase ccui.TextField.EVENT_DELETE_BACKWARD:\n\t\t\t\tvar string = this._input.getString();\n\n\t\t\t\tif(string === this._oldText)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (this._insertTextCallback)\n\t\t\t\t\tthis._insertTextCallback.call(this._target, string);\n\n\t\t\t\tif(this._cursor)\n\t\t\t\t{\n\t\t\t\t\tvar maxCompLength = type === ccui.TextField.EVENT_INSERT_TEXT ? this._oldText.length : string.length;\n\n\t\t\t\t\tthis._cursorPosition = 0;\n\n\t\t\t\t\tfor (var i = 0; i < string.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (i < maxCompLength && this._oldText[i] !== string[i])\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tthis._cursorPosition = i + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(this._isMultiLine)\n\t\t\t\t\t\tthis._warpMultilineText();\n\t\t\t\t}\n\n\t\t\t\tthis._oldText = string;\n\n\t\t\tcase ccui.TextField.EVENT_ATTACH_WITH_IME:\n\t\t\t{\n\t\t\t\tvar x = 0;\n\t\t\t\tvar y = 0;\n\n\t\t\t\tif(sender.width > this.width - 2*pmui.TextInput.BORDER_X)\n\t\t\t\t\tx = -2*pmui.TextInput.BORDER_X + this.width - sender.width - 5;\n\n\t\t\t\tif(this._isMultiLine)\n\t\t\t\t{\n\n\t\t\t\t\tif(sender.height <= this.height - bordersY)\n\t\t\t\t\t\ty = (this.height - bordersY) - sender.height;\n\t\t\t\t}\n\n\t\t\t\tsender.setPosition(x, y);\n\n\t\t\t\tif(type === ccui.TextField.EVENT_ATTACH_WITH_IME)\n\t\t\t\t{\n\t\t\t\t\tsender.setPlaceHolder(\"\");\n\n\t\t\t\t\tif(this._cursor)\n\t\t\t\t\t\tthis.scheduleUpdate();\n\n\t\t\t\t\tif(this._attachCallback && this._attachCallbackTarget)\n\t\t\t\t\t\tthis._attachCallback.call(this._attachCallbackTarget, this, true);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ccui.TextField.EVENT_DETACH_WITH_IME:\n\t\t\t{\n\t\t\t\tsender.setPosition(0, (this.height - bordersY) - this._input.height);\n\t\t\t\tsender.setPlaceHolder(this._placeholder);\n\n\t\t\t\tif(this._attachCallback && this._attachCallbackTarget)\n\t\t\t\t\tthis._attachCallback.call(this._attachCallbackTarget, this, false);\n\n\t\t\t\tif(this._cursor)\n\t\t\t\t{\n\t\t\t\t\tthis._cursor.setOpacity(0);\n\t\t\t\t\tthis.unscheduleUpdate();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t},\n\n\tupdate: function(delta)\n\t{\n\t\tif (this._cursor)\n\t\t{\n\t\t\tthis._cursorShowingTime -= delta;\n\n\t\t\tif (this._cursorShowingTime < -pmui.TextInput.CURSOR_TIME_SHOW_HIDE)\n\t\t\t\tthis._cursorShowingTime = pmui.TextInput.CURSOR_TIME_SHOW_HIDE;\n\n\t\t\tif (this._cursorShowingTime >= 0.0)\n\t\t\t\tthis._cursor.setOpacity(255);\n\t\t\telse\n\t\t\t\tthis._cursor.setOpacity(0);\n\n\t\t\tvar text = \"\";\n\n\t\t\tif(this._input.isPasswordEnabled())\n\t\t\t{\n\t\t\t\tvar length = this._input.getString().length;\n\t\t\t\tvar symbol = this._input.getPasswordStyleText();\n\n\t\t\t\tfor(var i = 0; i < length; ++i)\n\t\t\t\t\ttext += symbol;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttext = this._input.getString();\n\t\t\t}\n\n\t\t\tthis._cursor.setPosition(this._getCursorPosition(text));\n\t\t}\n\t}\n});\n\n/**\n * This callback is used when load of world is completed\n * @callback pmui.TextInput~attachCallback\n * @param {pmui.TextInput} sender Who sent attach callback\n * @param {Boolean} flag Flag if attached or detached\n */\n\n/**\n * Default width of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.DEFAULT_WIDTH = 28;\n\n/**\n * Text border by x of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_X = 8.0;\n\n/**\n * Text border by top y of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_TOP = 6.0;\n\n/**\n * Text border by bottom y of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_BOTTOM = 4.0;\n\n/**\n * Cursor correction for web version of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.CURSOR_CORRECTION = 2.0;\n\n/**\n * Placeholder color of {@link pmui.TextInput}\n * @const\n * @default\n * @type {cc.Color}\n */\npmui.TextInput.PLACEHOLDER_COLOR = cc.color(127, 194, 232);\n/**\n * Text color of {@link pmui.TextInput}\n * @const\n * @default\n * @type {cc.Color}\n */\npmui.TextInput.TEXT_COLOR = cc.color(41, 171, 226);\n/**\n * Show hide time of cursor for {@link pmui.TextInput} in HTML5 version\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.CURSOR_TIME_SHOW_HIDE = 0.5;\n","/**\n * Created by Nikita Besshaposhnikov on 01.12.14.\n */\n\n/**\n * @class Allows to input text in field.\n * @extends ccui.Layout\n * @constructor\n * @param {String} string Initial string of input.\n * @param {String} placeholder Placeholder.\n * @param {Number} fontSize Font size of input.\n * @param {Number} [width] Width of text input. If not passed, width will be width of string.\n */\npmui.NumberTextInput = ccui.Layout.extend(/** @lends pmui.TextInput# */{\n\t_editing: false,\n\t_input: null,\n\t_cursor: null,\n\t_cursorShowingTime: 0,\n\t_cursorPosition: 0,\n\n\t_strings: [],\n\t_isMultiLine: false,\n\n\t_placeholder: \"\",\n\n\t_target: null,\n\t_insertTextCallback: null,\n\n\t_oldText: \"\",\n\n\t_attachCallback: null,\n\t_attachCallbackTarget: null,\n\n\tctor: function(string, placeholder, fontSize, width, multiLineHeight)\n\t{\n\t\tthis._super();\n\n\t\tthis._placeholder = placeholder;\n\n\t\tthis.setBackGroundImage(pm.spriteUtils.getInterfaceElementName(\"number-round-normal\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\n\t\tthis._input = new pm.TextFieldWrapper(placeholder, pm.settings.fontName, fontSize);\n\t\tthis._input.setTextColor(pmui.TextInput.TEXT_COLOR);\n\t\tthis._input.setPlaceHolderColor(pmui.TextInput.PLACEHOLDER_COLOR);\n\t\tthis._input.setString(string);\n\t\tthis._input.addEventListener(this._handleInputEvent, this);\n\t\tthis._input.setAnchorPoint(cc.p(0, 0));\n\n\t\tif (width === undefined)\n\t\t\twidth = this._input.width + 2 * pmui.TextInput.BORDER_X;\n\n\t\tif (width < pmui.NumberTextInput.DEFAULT_WIDTH)\n\t\t\twidth = pmui.NumberTextInput.DEFAULT_WIDTH;\n\n\t\tif(multiLineHeight === undefined)\n\t\t\tmultiLineHeight = 0;\n\n\t\tvar height = this._input.height;\n\n\t\tif (height < pmui.NumberTextInput.DEFAULT_HEIGHT)\n\t\t\theight = pmui.NumberTextInput.DEFAULT_HEIGHT;\n\n\n\t\tvar bordersY = pmui.TextInput.BORDER_TOP + pmui.TextInput.BORDER_BOTTOM;\n\n\t\tthis.setContentSize(width, height);\n\n\t\tvar clipping = new ccui.Layout();\n\n\t\tclipping.setContentSize(width - 2 * pmui.TextInput.BORDER_X, height);\n\t\tclipping.setPosition(pmui.TextInput.BORDER_X, pmui.TextInput.BORDER_BOTTOM);\n\t\tclipping.setAnchorPoint(cc.p(0, 0));\n\n\t\tclipping.setClippingEnabled(true);\n\n\t\tclipping.addChild(this._input);\n\n\t\tthis._input.setTouchAreaEnabled(true);\n\t\tthis._input.setTouchSize(clipping.getContentSize());\n\t\tthis._input.setPosition(0, 0);\n\t\tthis.addChild(clipping);\n\n\t\tif(!cc.sys.isNative)\n\t\t{\n\t\t\tthis._cursor = new cc.LabelTTF(\"|\", pm.settings.fontLightName, fontSize);\n\t\t\tthis._cursor.setAnchorPoint(0, 0);\n\t\t\tthis._cursor.setPosition(this._input.width, 0);\n\t\t\tthis._cursor.setFontFillColor(pmui.TextInput.TEXT_COLOR);\n\n\t\t\tthis._cursor.setOpacity(0);\n\n\t\t\tclipping.addChild(this._cursor);\n\n\t\t\tthis._cursorPosition = string.length;\n\t\t\tthis._oldText = string;\n\n\t\t\tthis._input.setPasswordStyleText(\"*\");\n\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._input.setCursorEnabled(true);\n\t\t}\n\t},\n\n\t/**\n\t * Set callback for insert text event.str\n\t */\n\tsetInsertTextCallback: function(target, callback)\n\t{\n\t\tthis._target = target;\n\t\tthis._insertTextCallback = callback;\n\t},\n\n\t/**\n\t * Sets string of input.\n\t * @param {String} str\n\t */\n\tsetString: function(str)\n\t{\n\t\tthis._input.setString(str);\n\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tthis._oldText = str;\n\t\t\tthis._cursorPosition = str.length;\n\t\t}\n\t},\n\n\t/**\n\t * Returns current input value.\n\t * @returns {String}\n\t */\n\tgetString: function()\n\t{\n\t\treturn this._input.getString();\n\t},\n\n\t/**\n\t * Sets input to password style.\n\t * @param {Boolean} flag\n\t */\n\tsetPasswordInput: function(flag)\n\t{\n\t\tthis._input.setPasswordEnabled(flag);\n\t},\n\n\t/**\n\t * Sets callback for attach/detach event\n\t * @param {pm.TextInput~attachCallback} callback\n\t * @param {Object} target\n\t */\n\tsetAttachCallback: function(callback, target)\n\t{\n\t\tthis._attachCallback = callback;\n\t\tthis._attachCallbackTarget = target;\n\t},\n\n\tcloseKeyboard: function()\n\t{\n\t\tthis._input.didNotSelectSelf();\n\t},\n\n\t_warpMultilineText: function()\n\t{\n\t\tif(!cc.sys.isNative && this._isMultiLine)\n\t\t{\n\t\t\tvar scale = cc.director.getContentScaleFactor();\n\t\t\tvar strings = [this._input.getString()];\n\n\t\t\tfor (var i = 0; i < strings.length; ++i)\n\t\t\t\tthis._input.getVirtualRenderer()._renderCmd._checkWarp(strings, i, this._input.width * scale);\n\n\t\t\tthis._strings = strings;\n\t\t}\n\t},\n\n\t_getStringLength: function(str)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\treturn 0.0;\n\t\telse //Some magic of cocos2d-html5 to determine text real length\n\t\t\treturn this._input.getVirtualRenderer()._renderCmd._measure(str) / cc.director.getContentScaleFactor();\n\t},\n\n\t_getCursorPosition: function(str)\n\t{\n\t\tif(!cc.sys.isNative) //Some very black deep magic of cocos2d-html5 to determine word warp and real cursor position\n\t\t{\n\t\t\tif(this._isMultiLine)\n\t\t\t{\n\t\t\t\tvar line = this._strings.length;\n\t\t\t\tvar y = this.height - line * this._lineHeight - pmui.TextInput.BORDER_TOP - pmui.TextInput.CURSOR_CORRECTION;\n\n\t\t\t\tvar x = 0;\n\t\t\t\tvar strLength = 0;\n\n\t\t\t\tfor(var i = 0 ; i < this._strings.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tif(this._cursorPosition <= strLength + this._strings[i].length)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar pos = this._cursorPosition - strLength;\n\t\t\t\t\t\tx = this._getStringLength(this._strings[i].substr(0, pos));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstrLength += this._strings[i].length;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn cc.p(x, Math.max(pmui.TextInput.CURSOR_CORRECTION, y));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar stringLength = this._getStringLength(str.substr(0, this._cursorPosition));\n\t\t\t\treturn cc.p(Math.min(stringLength, this.width - 3 * pmui.TextInput.BORDER_X), pmui.TextInput.CURSOR_CORRECTION);\n\t\t\t}\n\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn cc.p();\n\t\t}\n\t},\n\n\t_handleInputEvent: function(sender, type)\n\t{\n\t\tvar bordersY = pmui.TextInput.BORDER_TOP + pmui.TextInput.BORDER_BOTTOM;\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase ccui.TextField.EVENT_INSERT_TEXT:\n\t\t\tcase ccui.TextField.EVENT_DELETE_BACKWARD:\n\t\t\t\tvar string = this._input.getString();\n\n\t\t\t\tif(string === this._oldText)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (this._insertTextCallback)\n\t\t\t\t\tthis._insertTextCallback.call(this._target, string);\n\n\t\t\t\tif(this._cursor)\n\t\t\t\t{\n\t\t\t\t\tvar maxCompLength = type === ccui.TextField.EVENT_INSERT_TEXT ? this._oldText.length : string.length;\n\n\t\t\t\t\tthis._cursorPosition = 0;\n\n\t\t\t\t\tfor (var i = 0; i < string.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (i < maxCompLength && this._oldText[i] !== string[i])\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tthis._cursorPosition = i + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(this._isMultiLine)\n\t\t\t\t\t\tthis._warpMultilineText();\n\t\t\t\t}\n\n\t\t\t\tthis._oldText = string;\n\n\t\t\tcase ccui.TextField.EVENT_ATTACH_WITH_IME:\n\t\t\t{\n\t\t\t\tvar x = 0;\n\t\t\t\tvar y = 0;\n\n\t\t\t\tif(sender.width > this.width - 2*pmui.TextInput.BORDER_X)\n\t\t\t\t\tx = -2*pmui.TextInput.BORDER_X + this.width - sender.width - 5;\n\n\t\t\t\t//sender.setPosition(x, y);\n\n\t\t\t\tif(type === ccui.TextField.EVENT_ATTACH_WITH_IME)\n\t\t\t\t{\n\t\t\t\t\tsender.setPlaceHolder(\"\");\n\n\t\t\t\t\tif(this._cursor)\n\t\t\t\t\t\tthis.scheduleUpdate();\n\n\t\t\t\t\tif(this._attachCallback && this._attachCallbackTarget)\n\t\t\t\t\t\tthis._attachCallback.call(this._attachCallbackTarget, this, true);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ccui.TextField.EVENT_DETACH_WITH_IME:\n\t\t\t{\n\t\t\t\t//sender.setPosition(0, (this.height) - this._input.height);\n\t\t\t\tsender.setPlaceHolder(this._placeholder);\n\n\t\t\t\tif(this._attachCallback && this._attachCallbackTarget)\n\t\t\t\t\tthis._attachCallback.call(this._attachCallbackTarget, this, false);\n\n\t\t\t\tif(this._cursor)\n\t\t\t\t{\n\t\t\t\t\tthis._cursor.setOpacity(0);\n\t\t\t\t\tthis.unscheduleUpdate();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t},\n\n\tupdate: function(delta)\n\t{\n\t\tif (this._cursor)\n\t\t{\n\t\t\tthis._cursorShowingTime -= delta;\n\n\t\t\tif (this._cursorShowingTime < -pmui.TextInput.CURSOR_TIME_SHOW_HIDE)\n\t\t\t\tthis._cursorShowingTime = pmui.TextInput.CURSOR_TIME_SHOW_HIDE;\n\n\t\t\tif (this._cursorShowingTime >= 0.0)\n\t\t\t\tthis._cursor.setOpacity(255);\n\t\t\telse\n\t\t\t\tthis._cursor.setOpacity(0);\n\n\t\t\tvar text = \"\";\n\n\t\t\tif(this._input.isPasswordEnabled())\n\t\t\t{\n\t\t\t\tvar length = this._input.getString().length;\n\t\t\t\tvar symbol = this._input.getPasswordStyleText();\n\n\t\t\t\tfor(var i = 0; i < length; ++i)\n\t\t\t\t\ttext += symbol;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttext = this._input.getString();\n\t\t\t}\n\n\t\t\tthis._cursor.setPosition(this._getCursorPosition(text));\n\t\t}\n\t}\n});\n\n/**\n * This callback is used when load of world is completed\n * @callback pmui.TextInput~attachCallback\n * @param {pmui.TextInput} sender Who sent attach callback\n * @param {Boolean} flag Flag if attached or detached\n */\n\n/**\n * Default width of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.NumberTextInput.DEFAULT_WIDTH = 40;\n/**\n * Default width of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.NumberTextInput.DEFAULT_HEIGHT = 40;\n\n/**\n * Text border by x of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_X = 8.0;\n\n/**\n * Text border by top y of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_TOP = 6.0;\n\n/**\n * Text border by bottom y of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.BORDER_BOTTOM = 4.0;\n\n/**\n * Cursor correction for web version of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.CURSOR_CORRECTION = 2.0;\n\n/**\n * Placeholder color of {@link pmui.TextInput}\n * @const\n * @default\n * @type {cc.Color}\n */\npmui.TextInput.PLACEHOLDER_COLOR = cc.color(127, 194, 232);\n/**\n * Text color of {@link pmui.TextInput}\n * @const\n * @default\n * @type {cc.Color}\n */\npmui.TextInput.TEXT_COLOR = cc.color(41, 171, 226);\n/**\n * Show hide time of cursor for {@link pmui.TextInput} in HTML5 version\n * @const\n * @default\n * @type {Number}\n */\npmui.TextInput.CURSOR_TIME_SHOW_HIDE = 0.5;\n","/**\n * Created by Nikita Besshaposhnikov on 23.07.15.\n */\n\n/**\n * Wrapper for cocos UIButton.\n * @class\n * @extends ccui.Button\n * @constructor\n * @param {String} normalImage\n * @param {String} [selectedImage=\"\"]\n * @param {String} [disableImage=\"\"]\n * @param {Number} [texType=ccui.Widget.LOCAL_TEXTURE]\n */\npmui.Button = ccui.Button.extend(/** @lends pmui.Button# */{\n\n\t_locked: false,\n\t_originalState: true,\n\n\tctor: function(normalImage, selectedImage, disableImage, texType)\n\t{\n\t\tthis._super(normalImage, selectedImage, disableImage, texType);\n\t},\n\n\tsetEnabled: function(flag)\n\t{\n\t\tthis.setBright(flag);\n\n\t\tthis._originalState = flag;\n\n\t\tif(this._locked)\n\t\t\treturn;\n\n\t\tccui.Button.prototype.setEnabled.call(this, flag);\n\t},\n\n\t/**\n * Sets click on button enabled.\n * @param {Boolean} flag\n * @private\n */\n\t_setClickEnabled: function(flag)\n\t{\n\t\tif(this._locked)\n\t\t\treturn;\n\n\t\tvar isHighlighted = this.isHighlighted();\n\t\tvar isBright = this.isBright();\n\n\t\tccui.Button.prototype.setEnabled.call(this, flag);\n\n\t\tthis.setBright(isBright);\n\t\tthis.setHighlighted(isHighlighted);\n\n\t},\n\n\t/**\n * Locks layout click state. Layout don't changes it's state until 'unlock' is called\n */\n\tlock: function()\n\t{\n\t\tthis._originalState = this.enabled;\n\n\t\tthis._setClickEnabled(false);\n\n\t\tthis._locked = true;\n\t},\n\n\t/**\n * Unlocks layout clcik state && restores original state\n */\n\tunlock: function()\n\t{\n\t\tthis._locked = false;\n\n\t\tthis._setClickEnabled(this._originalState);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 30.08.18.\n */\n\n/**\n * Button with selection\n * @class\n * @extends pmui.Button\n * @constructor\n * @param {String} normalImage\n * @param {String} [selectedImage=\"\"]\n * @param {String} [disableImage=\"\"]\n * @param {Number} [texType=ccui.Widget.LOCAL_TEXTURE]\n */\npmui.SelectionButton = pmui.Button.extend(/** @lends pmui.Button# */{\n\n\t_locked: false,\n\t_originalState: true,\n\n\t_normalImage: null,\n\t_selectedImage: null,\n\t_texType: null,\n\tselected: false,\n\n\tctor: function(normalImage, selectedImage, disableImage, texType)\n\t{\n\t\tthis._super(normalImage, selectedImage, disableImage, texType);\n\n\t\tthis._normalImage = normalImage;\n\t\tthis._selectedImage = selectedImage;\n\t\tthis._texType = texType;\n\t},\n\n\tsetSelectedTexture: function()\n\t{\n\t\tthis.loadTextureNormal(this._selectedImage, this._texType);\n\t\tthis.selected = true;\n\t},\n\n\tsetNormalTexture: function()\n\t{\n\t\tthis.loadTextureNormal(this._normalImage, this._texType);\n\t\tthis.selected = false;\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 27.09.16.\n */\n\n/**\n * Wrapper for cocos Layout.\n * @class\n * @extends ccui.Layout\n */\npmui.Layout = ccui.Layout.extend(/** @lends pmui.Layout# */{\n\n\t_locked: false,\n\t_originalState: true,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t},\n\n\tsetEnabled: function(flag)\n\t{\n\t\tif(this._locked)\n\t\t\treturn;\n\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\t},\n\n\t/**\n * Locks layout enabled state. Layout don't changes it's state until 'unlock' is called\n */\n\tlock: function()\n\t{\n\t\tthis._locked = true;\n\n\t\tthis._originalState = this.enabled;\n\n\t\tccui.Layout.prototype.setEnabled.call(this, false);\n\t},\n\n\t/**\n * Unlocks layout enabled state && restores original state\n */\n\tunlock: function()\n\t{\n\t\tthis._locked = false;\n\n\t\tccui.Layout.prototype.setEnabled.call(this, this._originalState);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 23.07.15.\n */\n\n/**\n * @class Colored layout with circle bounds.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Size} [size] Size of layer.\n * @param {Number} [borderRadius=pmui.OvalLayout.STANDARD_BORDER_RADIUS] Border radius.\n */\npmui.OvalLayout = ccui.Layout.extend(/** @lends pmui.OvalLayout# */{\n\n\t_borderRadius: 0,\n\n\t_gradientLayer: null,\n\n\tctor: function(size, borderRadius, type)\n\t{\n\t\tthis._super();\n\n\t\t//because of new design\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tif (type === undefined)\n\t\t\ttype = pmui.OvalLayout.Type.THIN;\n\n\t\tif(borderRadius === undefined || borderRadius === null || borderRadius === 0)\n\t\t\tborderRadius = pmui.OvalLayout.STANDARD_BORDER_RADIUS;\n\n\t\tthis._borderRadius = borderRadius;\n\n\t\tvar image = \"\";\n\t\tif (type === pmui.OvalLayout.Type.SLIM)\n\t\t{\n\t\t\timage = \"System/interfaceSmallBG.png\";\n\t\t\tthis._borderRadius = 2;\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(14, 14, 14, 14));\n\t\t}\n\t\telse\n\t\t{\n\t\t\timage = \"System/interfaceBG.png\";\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(89, 89, 72, 72));\n\t\t}\n\n\t\tthis._gradientLayer = new ccui.Layout();\n\t\tthis._gradientLayer.setContentSize(this.width - 2 * this._borderRadius, this.height - 2 * this._borderRadius);\n\t\tthis._gradientLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_GRADIENT);\n\t\tthis._gradientLayer.setBackGroundColorVector(cc.p(0, -1));\n\t\tthis._gradientLayer.setBackGroundColor(pmui.OvalLayout.GRAD_START_COLOR, pmui.OvalLayout.GRAD_END_COLOR);\n\n\t\tvar gradientLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tgradientLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgradientLayerAlign.setRelativeName(\"gradient\");\n\t\tgradientLayerAlign.setMargin(this._borderRadius, this._borderRadius, 0, 0);\n\t\tthis._gradientLayer.setLayoutParameter(gradientLayerAlign);\n\n\t\tthis.addChild(this._gradientLayer, -1);\n\n\t\tthis.setBackGroundImage(image);\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tif(size)\n\t\t\tthis.setContentSizeWithBorder(size);\n\t},\n\n\tsetContentSizeWithBorder: function(size, height)\n\t{\n\t\tvar width = size;\n\t\tif (height === undefined)\n\t\t{\n\t\t\twidth = size.width + 2 * this._borderRadius;\n\t\t\theight = size.height + 2 * this._borderRadius;\n\t\t}\n\t\telse\n\t\t{\n\t\t\twidth += 2 * this._borderRadius;\n\t\t\theight += 2 * this._borderRadius;\n\t\t}\n\n\t\tthis.setContentSize(width, height);\n\n\t\tthis._gradientLayer.setContentSize(this.width - 2 * this._borderRadius, this.height - 2 * this._borderRadius);\n\t}\n});\n\n/**\n * Standard border radius.\n * @const\n * @default\n * @type {Number}\n */\npmui.OvalLayout.STANDARD_BORDER_RADIUS = 14;\npmui.OvalLayout.SLIM_BORDER_RADIUS = 2;\npmui.OvalLayout.GRAD_START_COLOR = cc.color(18, 145, 204);\npmui.OvalLayout.GRAD_END_COLOR = cc.color(99, 61, 165);\npmui.OvalLayout.Type = {\n\tSLIM: 0,\n\tTHIN: 1\n};\n","/**\n * Created by Antony Orlovsky on 12.03.20.\n */\n\n/**\n * @class Colored layout with circle bounds for dialog.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Size} [size] Size of layer.\n */\nvar DialogLayout = ccui.Layout.extend(/** @lends pmui.DialogLayout# */{\n\n\t_gradientLayer: null,\n\t_scroll: null,\n\t_text: null,\n\n\tctor: function(size, text)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setBackGroundImage(\"System/BL_Background.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(89, 89, 72, 72));\n\n\t\tthis._gradientLayer = new ccui.Layout();\n\t\tthis._gradientLayer.setContentSize(this.width - 4 * DialogLayout.BORDER_RADIUS, this.height - 2 * DialogLayout.BORDER_RADIUS);\n\t\tthis._gradientLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_GRADIENT);\n\t\tthis._gradientLayer.setBackGroundColorVector(cc.p(0, -1));\n\t\tthis._gradientLayer.setBackGroundColor(pmui.OvalLayout.GRAD_START_COLOR, pmui.OvalLayout.GRAD_END_COLOR);\n\n\t\tvar gradientLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tgradientLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tgradientLayerAlign.setRelativeName(\"gradient\");\n\t\tgradientLayerAlign.setMargin(0, DialogLayout.BORDER_RADIUS, DialogLayout.BORDER_RADIUS, 0);\n\t\tthis._gradientLayer.setLayoutParameter(gradientLayerAlign);\n\n\t\tthis.addChild(this._gradientLayer, -1);\n\n\t\tthis._scroll = new ccui.ListView();\n\n\t\tthis._scroll.setBounceEnabled(true);\n\t\tthis._scroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._scroll.setScrollBarEnabled(false);\n\n\t\tvar scrollAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tscrollAlign.setRelativeName(\"scroll\");\n\t\tscrollAlign.setMargin(0, 2 * DialogLayout.BORDER_RADIUS, 2 * DialogLayout.BORDER_RADIUS, 0);\n\t\tthis._scroll.setLayoutParameter(scrollAlign);\n\n\t\tthis.addChild(this._scroll);\n\n\t\tthis._text = new ccui.Text(text || \"\", pm.settings.fontName, 20);\n\t\tthis._text.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\n\t\tthis._scroll.pushBackCustomItem(this._text);\n\n\t\tif(size)\n\t\t\tthis.setContentSizeWithBorder(size);\n\t},\n\n\tsetContentSizeWithBorder: function(size, height)\n\t{\n\t\tvar width = size;\n\t\tif (height === undefined)\n\t\t{\n\t\t\twidth = size.width + 4 * DialogLayout.BORDER_RADIUS;\n\t\t\theight = size.height + 2 * DialogLayout.BORDER_RADIUS;\n\t\t}\n\t\telse\n\t\t{\n\t\t\twidth += 4 * DialogLayout.BORDER_RADIUS;\n\t\t\theight += 2 * DialogLayout.BORDER_RADIUS;\n\t\t}\n\n\t\tthis.setContentSize(width, height);\n\n\t\tthis._gradientLayer.setContentSize(this.width - 4 * DialogLayout.BORDER_RADIUS, this.height - 2 * DialogLayout.BORDER_RADIUS);\n\t\tthis._text.setTextAreaSize(cc.size(this.width - 6 * DialogLayout.BORDER_RADIUS, 0));\n\t\tthis._scroll.setContentSize(this.width - 6 * DialogLayout.BORDER_RADIUS, this.height - 4 * DialogLayout.BORDER_RADIUS);\n\n\t},\n\n\tsetText: function(text)\n\t{\n\t\tthis._text.setText(text);\n\t}\n});\n\nDialogLayout.BORDER_RADIUS = 14;","/**\n * Created by Kirill Mashchenko on 07.09.2018.\n */\n\nvar MovingAfterKeyboardLayout = pmui.OvalLayout.extend(/** @lends MovingAfterKeybordLayer# */{\n\n\t_attached: false,\n\t_attachedInput: null,\n\n\tctor: function(size, borderRadius, type)\n\t{\n\t\tthis._super(size, borderRadius, type);\n\t},\n\n\tsetInputAttach: function(input)\n\t{\n\t\tif(cc.sys.isMobile)\n\t\t\tinput.setAttachCallback(this._textInputAttach, this);\n\t},\n\n\t_textInputAttach: function(sender, attached)\n\t{\n\t\tif (this._attached === attached)\n\t\t{\n\t\t\tthis._attachedInput = sender;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!attached && sender !== this._attachedInput)\n\t\t\treturn;\n\t\telse if (!attached)\n\t\t\tthis._attachedInput = null;\n\t\telse\n\t\t\tthis._attachedInput = sender;\n\n\t\tthis._attached = attached;\n\n\t\tif (attached)\n\t\t\tthis.runAction(cc.moveBy(1 / 2 * pm.SYSTEM_ANIMATION_DELAY, 0, pm.settings.getScreenSize().height / 4));\n\t\telse\n\t\t\tthis.runAction(cc.moveBy(1 / 2 * pm.SYSTEM_ANIMATION_DELAY, 0, -pm.settings.getScreenSize().height / 4));\n\t},\n\n\tcloseAttachKeyboard: function()\n\t{\n\t\tif(this._attachedInput)\n\t\t{\n\t\t\tthis._attachedInput.closeKeyboard();\n\t\t\tthis._attachedInput = null;\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 24.07.15.\n */\n\n/**\n * Callback called on layer hide.\n * @callback pmui.PopupLayer~hideCallback\n */\n\n/**\n * @class Popup oval layer with auto-removing.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\npmui.PopupLayer = pmui.OvalLayout.extend(/** @lends pmui.PopupLayer#*/{\n\n\t_callback: null,\n\t_target: null,\n\n\tctor: function(hideDuration)\n\t{\n\t\tthis._super(cc.size(0, 0), 0, pmui.OvalLayout.Type.SLIM);\n\n\t\tif(hideDuration === undefined)\n\t\t\thideDuration = pmui.PopupLayer.STANDARD_HIDE_DURATION;\n\n\t\tif(hideDuration !== pmui.PopupLayer.HIDE_DURATION_NEVER)\n\t\t\tthis._startSelfRemove(hideDuration);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis.addClickEventListener(this._selfRemove.bind(this));\n\t},\n\n\t/**\n * Sets callback on layer hide.\n * @param {pmui.PopupLayer~hideCallback} callback\n * @param {cc.Node} target Callback target\n */\n\tsetHideCallback: function(callback, target)\n\t{\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\t},\n\n\tremoveLayer: function()\n\t{\n\t\tthis.stopAllActions();\n\t\tthis._selfRemove();\n\t},\n\n\t_selfRemove: function()\n\t{\n\t\tthis.removeFromParent(true);\n\n\t\tif(this._callback)\n\t\t\tthis._callback.call(this._target);\n\t},\n\n\t_startSelfRemove: function(duration)\n\t{\n\t\tvar delay = new cc.DelayTime(duration);\n\t\tvar fadeLayer = new cc.FadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\t\t//var fadeColorLayer = new cc.TargetedAction(this.layerColor, fadeLayer);\n\t\tvar end = new cc.CallFunc(this._selfRemove, this);\n\n\t\tthis.runAction( new cc.Sequence(delay, fadeLayer, end) );\n\t}\n});\n\npmui.PopupLayer.HIDE_DURATION_NEVER = -1;\npmui.PopupLayer.STANDARD_HIDE_DURATION = 10;\n","/**\n * Created by Nikita Besshaposhnikov on 01.12.14.\n */\n\n/**\n * This callback is used by checkbox on click.\n * @callback pmui.CheckBox~clickCallback\n * @param {Boolean} state State of checkbox.\n */\n\n/**\n * @class pmui.CheckBox with label.\n * @extends ccui.Layout\n * @constructor\n * @param {String} text Label text.\n * @param {pmui.CheckBox~clickCallback} clickCallback Click callback.\n * @param {cc.Node} target Target for callback.\n * @param {Number} [fontSize] Size of font used by checkbox label.\n * @param {Boolean} [state=false] Start state of checkbox.\n */\npmui.CheckBox = ccui.Layout.extend(/** @lends pmui.CheckBox# */{\n\t_clickCallback: null,\n\t_target: null,\n\t_checkBox: null,\n\n\tctor: function(text, clickCallback, target, fontSize, state)\n\t{\n\t\tthis._super();\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tif(state === undefined)\n\t\t\tstate = false;\n\n\t\tif(fontSize === undefined)\n\t\t\tfontSize = pm.settings.fontDefinition.fontSize;\n\n\t\tthis._clickCallback = clickCallback;\n\t\tthis._target = target;\n\n\t\tthis._checkBox = new ccui.CheckBox(\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked-selected\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked-disabled\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked-disabled\"),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tthis._checkBox.setSelected(state);\n\t\tthis._checkBox.setAnchorPoint(cc.p(0, 0));\n\t\tthis._checkBox.addEventListener(this._checkBoxClicked, this);\n\n\t\tthis.setTouchEnabled(true);\n\t\tthis.addClickEventListener(this._clicked.bind(this));\n\n\t\tthis.addChild(this._checkBox);\n\n\t\tvar label = new ccui.Text(text, pm.settings.fontName, fontSize);\n\t\tlabel.setPosition(cc.p(this._checkBox.width + 5, 0));\n\t\tlabel.setAnchorPoint(cc.p(0, 0));\n\n\t\tthis.addChild(label);\n\n\t\tvar height = Math.max(label.height, this._checkBox.height);\n\n\t\tthis.setContentSize(this._checkBox.width + 5 + label.width, height);\n\n\t},\n\n\tgetChecked: function()\n\t{\n\t\treturn this._checkBox.isSelected();\n\t},\n\n\tsetChecked: function(state)\n\t{\n\t\tthis._checkBox.setSelected(state);\n\t},\n\n\t_checkBoxClicked: function(target, event)\n\t{\n\t\tif(this._clickCallback)\n\t\t\tthis._clickCallback.call(this._target, event === ccui.CheckBox.EVENT_SELECTED);\n\t},\n\n\t_clicked: function()\n\t{\n\t\tvar value = this._checkBox.isSelected();\n\t\tthis._checkBox.setSelected(!value);\n\n\t\tif(this._clickCallback)\n\t\t\tthis._clickCallback.call(this._target, !value);\n\t}\n});\n","/**\n * Created by danilaeremin on 27.10.15.\n */\n\n/**\n* @class pmui.Text Label with default font.\n* @extends ccui.Text\n* @constructor\n* @param {String} text Label text.\n* @param {Number} [fontSize] Size of font for label.\n*/\npmui.Text = ccui.Text.extend(/** @lends pmui.Text */{\n\tctor: function(text, fontSize)\n\t{\n\t\tif (fontSize === undefined)\n\t\t\tfontSize = pm.settings.fontSize;\n\n\t\tthis._super(text, pm.settings.fontName, fontSize);\n\t}\n});\n","/**\n * Created by danilaeremin on 24.02.15.\n */\n\n/**\n * This callback is used by pmui.TextInputDialog on \"OK\" button pressed.\n * @callback pmui.TextInputDialog~okCallback\n * @param {String} value Value of input.\n */\n\n/**\n * This callback is used by pmui.TextInputDialog on \"Cancel\" button pressed.\n * @callback pmui.TextInputDialog~cancelCallback\n */\n\n/**\n * @class Dialog for input string value.\n * @extends MovingAfterKeyboardLayout\n * @constructor\n * @param {String} labelStr String of input label.\n * @param {String} defaultValue Default value of input.\n * @param {String} placeholder Placeholder of input.\n */\npmui.TextInputDialog = MovingAfterKeyboardLayout.extend(/** @lends pmui.TextInputDialog#*/{\n\t_input: null,\n\t_target: null,\n\t_okCallback: null,\n\t_cancelCallback: null,\n\n\tctor: function(labelStr, defaultValue, placeholder)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tvar label = new ccui.Text(labelStr, pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tthis.addChild(label);\n\n\t\twidth = label.width;\n\t\theight += label.height;\n\n\t\tthis._input = new pmui.TextInput(defaultValue, placeholder, 20, pmui.TextInputDialog.INPUT_WIDTH);\n\n\t\tvar inputAlign = new ccui.RelativeLayoutParameter();\n\t\tinputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tinputAlign.setMargin(0, pmui.TextInputDialog.SEPARATOR, 0, 0);\n\t\tinputAlign.setRelativeName(\"input\");\n\t\tinputAlign.setRelativeToWidgetName(\"label\");\n\t\tthis._input.setLayoutParameter(inputAlign);\n\n\t\twidth = Math.max(width, this._input.width);\n\t\theight += this._input.height + pmui.TextInputDialog.SEPARATOR;\n\n\t\tthis.addChild(this._input);\n\n\t\tthis.setInputAttach(this._input);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tbuttonLayoutAlign.setMargin(0, pmui.TextInputDialog.SEPARATOR, 0, 0);\n\t\tbuttonLayoutAlign.setRelativeToWidgetName(\"input\");\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tbuttonLayout.addChild(okButton);\n\n\t\tvar cancelButton = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(pmui.TextInputDialog.SEPARATOR, 0, 0, 0);\n\t\tcancelButton.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancelButton);\n\n\t\tbuttonLayout.setContentSize(okButton.getContentSize().width + cancelButton.getContentSize().width + 10,\n\t\t\tokButton.getContentSize().height);\n\n\t\twidth = Math.max(width, buttonLayout.width);\n\t\theight += buttonLayout.height + 2 * pmui.TextInputDialog.SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS;\n\n\t\tthis.setContentSizeWithBorder(width + 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS, height);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t/**\n * Set callbacks for dialog.\n * @param target Target for callbacks.\n * @param {pmui.TextInputDialog~okCallback} okCallback On \"OK\" button pressed.\n * @param {pmui.TextInputDialog~cancelCallback} cancelCallback On \"Cancel\" button pressed.\n */\n\tsetCallback: function (target, okCallback, cancelCallback)\n\t{\n\t\tthis._target = target;\n\t\tthis._okCallback = okCallback;\n\t\tthis._cancelCallback = cancelCallback;\n\t},\n\n\t_ok: function(sender)\n\t{\n\t\tthis.closeAttachKeyboard();\n\n\t\tthis._okCallback.call(this._target, this._input.getString());\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancel: function(sender)\n\t{\n\t\tthis.closeAttachKeyboard();\n\n\t\tif (this._cancelCallback)\n\t\t\tthis._cancelCallback.call(this._target);\n\t\tthis.removeFromParent();\n\t}\n});\n\npmui.TextInputDialog.INPUT_WIDTH = 250;\npmui.TextInputDialog.SEPARATOR = 8.0;\n","/**\n * Created by Kirill Mashchenko on 27.08.18.\n */\n\npmui.ConfirmWindow = pmui.OvalLayout.extend(/** @lends pmui.ConfirmWindow#*/{\n\n\t_target: null,\n\t_okCallback: null,\n\t_cancelCallback: null,\n\n\tctor: function(labelStr, extraInformation)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar height = 0;\n\n\t\tvar label = new ccui.Text(LocalizedString(\"ConfirmAction\").format(labelStr), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tlabel.setTextAreaSize(cc.size(pmui.ConfirmWindow.WIDTH, 0));\n\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\tthis.addChild(label);\n\n\t\theight += label.height;\n\n\t\tif (extraInformation !== undefined)\n\t\t{\n\t\t\tvar label = new ccui.Text(extraInformation, pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tlabelAlign.setMargin(0, pmui.ConfirmWindow.SEPARATOR, 0, 0);\n\t\t\tlabelAlign.setRelativeName(\"extraInformation\");\n\t\t\tlabelAlign.setRelativeToWidgetName(\"label\");\n\n\t\t\tlabel.setLayoutParameter(labelAlign);\n\t\t\tlabel.setTextAreaSize(cc.size(pmui.ConfirmWindow.WIDTH, 0));\n\t\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\t\tthis.addChild(label);\n\n\t\t\theight += label.height;\n\t\t}\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tbuttonLayoutAlign.setMargin(0, pmui.ConfirmWindow.SEPARATOR, 0, 0);\n\n\t\tif (extraInformation !== undefined)\n\t\t\tbuttonLayoutAlign.setRelativeToWidgetName(\"extraInformation\");\n\t\telse\n\t\t\tbuttonLayoutAlign.setRelativeToWidgetName(\"label\");\n\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tbuttonLayout.addChild(okButton);\n\n\t\tvar cancelButton = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(pmui.ConfirmWindow.SEPARATOR, 0, 0, 0);\n\t\tcancelButton.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancelButton);\n\n\t\tbuttonLayout.setContentSize(okButton.getContentSize().width + cancelButton.getContentSize().width + 10,\n\t\t\tokButton.getContentSize().height);\n\n\t\theight += buttonLayout.height + 2 * pmui.ConfirmWindow.SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS;\n\n\t\tthis.setContentSizeWithBorder(pmui.ConfirmWindow.WIDTH + 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS, height);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t/**\n * Set callbacks for dialog.\n * @param target Target for callbacks.\n * @param {pmui.ConfirmWindow~okCallback} okCallback On \"OK\" button pressed.\n * @param {pmui.ConfirmWindow~cancelCallback} cancelCallback On \"Cancel\" button pressed.\n */\n\tsetCallback: function (target, okCallback, cancelCallback)\n\t{\n\t\tthis._target = target;\n\t\tthis._okCallback = okCallback;\n\t\tthis._cancelCallback = cancelCallback;\n\t},\n\n\t_ok: function(sender)\n\t{\n\t\tthis._okCallback.call(this._target);\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancel: function(sender)\n\t{\n\t\tif (this._cancelCallback)\n\t\t\tthis._cancelCallback.call(this._target);\n\t\tthis.removeFromParent();\n\t}\n});\n\npmui.ConfirmWindow.WIDTH = 250;\npmui.ConfirmWindow.SEPARATOR = 10.0;\n","/**\n * Created by Kirill Mashchenko on 23.08.18.\n */\n\n/**\n * @class Dialog for changing name of the world.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {String} labelStr String of input label.\n * @param {String} defaultValue Default value of input.\n * @param {String} placeholder Placeholder of input.\n */\npmui.ChangeWorldNameDialog = MovingAfterKeyboardLayout.extend(/** @lends pmui.ChangeWorldNameDialog#*/{\n\n\t_input: null,\n\t_inputDescription: null,\n\t_target: null,\n\t_okCallback: null,\n\t_cancelCallback: null,\n\n\tctor: function(placeholder)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tvar label = new ccui.Text(LocalizedString(\"EnterNewName\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tthis.addChild(label);\n\n\t\twidth = label.width;\n\t\theight += label.height;\n\n\t\tthis._input = new pmui.TextInput(world.name, LocalizedString(\"NewName\"), 20, pmui.ChangeWorldNameDialog.INPUT_WIDTH);\n\n\t\tvar inputAlign = new ccui.RelativeLayoutParameter();\n\t\tinputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tinputAlign.setMargin(0, pmui.TextInputDialog.SEPARATOR, 0, 0);\n\t\tinputAlign.setRelativeName(\"input\");\n\t\tinputAlign.setRelativeToWidgetName(\"label\");\n\t\tthis._input.setLayoutParameter(inputAlign);\n\n\t\twidth = Math.max(width, this._input.width);\n\t\theight += this._input.height + pmui.TextInputDialog.SEPARATOR;\n\n\t\tthis.addChild(this._input);\n\n\t\tvar descriptionLabel = new ccui.Text(LocalizedString(\"EnterNewDescription\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar descriptionLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tdescriptionLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tdescriptionLabelAlign.setMargin(0, pmui.TextInputDialog.SEPARATOR, 0, 0);\n\t\tdescriptionLabelAlign.setRelativeName(\"descriptionLabel\");\n\t\tdescriptionLabelAlign.setRelativeToWidgetName(\"input\");\n\t\tdescriptionLabel.setLayoutParameter(descriptionLabelAlign);\n\t\tthis.addChild(descriptionLabel);\n\n\t\twidth = Math.max(descriptionLabel.width, width);\n\t\theight += descriptionLabel.height + pmui.TextInputDialog.SEPARATOR;\n\n\t\tthis._inputDescription = new pmui.TextInput(\n\t\t\tworld.description,\n\t\t\tLocalizedString(\"Description\"),\n\t\t\t20,\n\t\t\tpmui.ChangeWorldNameDialog.INPUT_WIDTH,\n\t\t\tpmui.ChangeWorldNameDialog.DESCRITPION_HEIGHT\n\t\t);\n\n\t\tvar inputDescriptionAlign = new ccui.RelativeLayoutParameter();\n\t\tinputDescriptionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tinputDescriptionAlign.setMargin(0, pmui.ChangeWorldNameDialog.SEPARATOR, 0, 0);\n\t\tinputDescriptionAlign.setRelativeName(\"inputDescription\");\n\t\tinputDescriptionAlign.setRelativeToWidgetName(\"descriptionLabel\");\n\t\tthis._inputDescription.setLayoutParameter(inputDescriptionAlign);\n\n\t\twidth = Math.max(width, this._inputDescription.width);\n\t\theight += this._inputDescription.height + pmui.ChangeWorldNameDialog.SEPARATOR;\n\n\t\tthis.addChild(this._inputDescription);\n\n\t\tthis.setInputAttach(this._input);\n\t\tthis.setInputAttach(this._inputDescription);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tbuttonLayoutAlign.setMargin(0, pmui.ChangeWorldNameDialog.SEPARATOR, 0, 0);\n\t\tbuttonLayoutAlign.setRelativeToWidgetName(\"inputDescription\");\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tbuttonLayout.addChild(okButton);\n\n\t\tvar cancelButton = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(pmui.ChangeWorldNameDialog.SEPARATOR, 0, 0, 0);\n\t\tcancelButton.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancelButton);\n\n\t\tbuttonLayout.setContentSize(okButton.getContentSize().width + cancelButton.getContentSize().width + 10,\n\t\t\tokButton.getContentSize().height);\n\n\t\twidth = Math.max(width, buttonLayout.width);\n\t\theight += buttonLayout.height + 2 * pmui.ChangeWorldNameDialog.SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS;\n\n\t\tthis.setContentSizeWithBorder(width + 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS, height);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t/**\n * Set callbacks for dialog.\n * @param target Target for callbacks.\n * @param {pmui.ChangeWorldNameDialog~okCallback} okCallback On \"OK\" button pressed.\n * @param {pmui.ChangeWorldNameDialog~cancelCallback} cancelCallback On \"Cancel\" button pressed.\n */\n\tsetCallback: function (target, okCallback, cancelCallback)\n\t{\n\t\tthis._target = target;\n\t\tthis._okCallback = okCallback;\n\t\tthis._cancelCallback = cancelCallback;\n\t},\n\n\t_ok: function(sender)\n\t{\n\t\tthis.closeAttachKeyboard();\n\n\t\tthis._okCallback.call(this._target, this._input.getString(), this._inputDescription.getString());\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancel: function(sender)\n\t{\n\t\tthis.closeAttachKeyboard();\n\n\t\tif (this._cancelCallback)\n\t\t\tthis._cancelCallback.call(this._target);\n\t\tthis.removeFromParent();\n\t}\n});\n\npmui.ChangeWorldNameDialog.INPUT_WIDTH = 350;\npmui.ChangeWorldNameDialog.DESCRITPION_HEIGHT = 250;\n\npmui.ChangeWorldNameDialog.SEPARATOR = 8.0;\n","/**\n * Created by danilaeremin on 25.06.15.\n */\n\n/**\n * This callbacks are used on Ok and Cancel buttons.\n * @callback pmui.MessageBox~actionCallback\n */\n\n/**\n * @class Layout for login in editor.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {cc.Node} object Target for callbacks.\n * @param {String} message Message string.\n * @param {pmui.MessageBox~actionCallback?} ok_callback Called on Ok button clicked.\n * @param {pmui.MessageBox~actionCallback?} cancel_callback Called on Cancel button clicked.\n */\npmui.MessageBox = pmui.OvalLayout.extend(/** @lends pmui.MessageBox# */{\n\tobject: null,\n\tok_callback: null,\n\tcancel_callback: null,\n\n\tctor: function(object, message, ok_callback, cancel_callback)\n\t{\n\t\tthis._super();\n\n\t\tthis.object = object;\n\t\tthis.ok_callback = ok_callback;\n\t\tthis.cancel_callback = cancel_callback;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonLayoutAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS+5);\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tbuttonLayout.addChild(okButton);\n\n\t\tvar cancelButton = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(pmui.MessageBox.SEPARATOR, 0, 0, 0);\n\t\tcancelButton.setLayoutParameter(cancelMargin);\n\n\t\tif (cancel_callback)\n\t\t{\n\t\t\tbuttonLayout.addChild(cancelButton);\n\n\t\t\tbuttonLayout.setContentSize(okButton.getContentSize().width + cancelButton.getContentSize().width + pmui.MessageBox.SEPARATOR,\n\t\t\t\tokButton.getContentSize().height);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbuttonLayout.setContentSize(okButton.getContentSize().width,\n\t\t\t\tokButton.getContentSize().height);\n\t\t}\n\n\t\tvar label = new ccui.Text(message, pm.settings.fontName, pm.settings.fontSize);\n\t\tlabel.ignoreContentAdaptWithSize(false);\n\t\tlabel.getVirtualRenderer().setDimensions(pmui.MessageBox.WIDTH, 0);\n\t\tlabel.setTextAreaSize(label.getVirtualRenderer().getContentSize());\n\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.setContentSizeWithBorder(Math.max(pmui.MessageBox.WIDTH, label.getContentSize().width),\n\t\t\tMath.max(pmui.MessageBox.HEIGHT, okButton.getContentSize().height + label.getContentSize().height + pmui.OvalLayout.STANDARD_BORDER_RADIUS));\n\n\t\tvar textLayout = new ccui.Layout();\n\t\ttextLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\ttextLayout.setContentSize(this.getContentSize().width, this.getContentSize().height - okButton.getContentSize().height);\n\n\t\tvar textLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\ttextLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\ttextLayoutAlign.setMargin(0, 0, 0, 0);\n\n\t\ttextLayout.setLayoutParameter(textLayoutAlign);\n\n\t\ttextLayout.addChild(label);\n\n\t\tthis.addChild(textLayout);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t_ok: function(sender)\n\t{\n\t\tthis.removeFromParent();\n\n\t\tif(this.ok_callback)\n\t\t\tthis.ok_callback.call(this.object);\n\t},\n\n\t_cancel: function(sender)\n\t{\n\t\tthis.removeFromParent();\n\t\tthis.cancel_callback.call(this.object);\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\npmui.MessageBox.WIDTH = 290.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\npmui.MessageBox.HEIGHT = 140.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\npmui.MessageBox.SEPARATOR = 5.0;\n","/**\n * Created by antonded on 10.11.14.\n */\n\n/**\n * @class This is a common interface button.\n * @extends pmui.Button\n * @constructor\n * @param {cocosClickCallback} callback Click Callback.\n * @param {cc.Node} target An object that is callback \"this\" argument.\n * @param {String} text Text on a button.\n * @param {Number} [textFontSize] Font size of text.\n */\npmui.InterfaceButton = pmui.Button.extend(/** @lends pmui.InterfaceButton#*/{\n\n\tctor: function (callback, target, text, textFontSize)\n\t{\n\n\t\tthis._super(pm.spriteUtils.getInterfaceElementName(\"buttonScaleSprite\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"buttonScaleSprite-selected\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"buttonScaleSprite-disabled\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif(textFontSize === undefined)\n\t\t\ttextFontSize = pm.settings.fontSize;\n\n\t\tthis.setScale9Enabled(true);\n\t\tthis.setCapInsets(cc.rect(14, 14, 14, 14));\n\t\tthis.setTitleText(text);\n\t\tthis.setTitleFontName(pm.settings.fontLightName);\n\t\tthis.setTitleFontSize(textFontSize);\n\n\t\tvar titleSize = this.getTitleRenderer().getContentSize();\n\t\ttitleSize.width += 2 * pmui.InterfaceButton.TEXT_PADDING_X;\n\t\ttitleSize.height+= 2 * pmui.InterfaceButton.TEXT_PADDING_Y;\n\n\t\tthis.setContentSize(titleSize);\n\n\t\tthis.addClickEventListener(callback.bind(target));\n\t}\n});\n\n/**\n * Inner x-padding of text in MenuButton\n * @see MenuButton\n * @const\n * @default\n * @type {number}\n */\npmui.InterfaceButton.TEXT_PADDING_X = 13.0;\n/**\n * Inner y-padding of text in MenuButton\n * @see MenuButton\n * @const\n * @default\n * @type {number}\n */\npmui.InterfaceButton.TEXT_PADDING_Y = 9.0;\n","/**\n * Created by Nikita Besshaposhnikov on 28.07.15.\n */\n\n/**\n * This callback is used when dropped item.\n * @callback pmui.DragAndDropLayout~event\n * @param {ccui.Widget} element Element which was dragged.\n * @param {pmui.DragAndDropLayout.Event} eventType Event type.\n * @param {cc.Touch} touch Location of event.\n */\n\n/**\n * @class Interface for layout with drag and drop actions.\n * @interface\n * @extends ccui.Layout\n * @property {Boolean} clickEnabled\n * @property {Boolean} dragEnabled\n * @property {Boolean} dropEnabled\n * @constructor\n * @param {pmui.DragAndDropLayout.Type} type\n * @param {String} [dndName] Name of drag and drop group.
\n * If type is {@link pmui.DragAndDropLayout.Type.DRAG_ONLY} not needed.\n */\npmui.DragAndDropLayout = ccui.Layout.extend(/** @lends pmui.DragAndDropLayout# */{\n\t_type: 0,\n\t_dndName: \"\",\n\t_dropTargets: [],\n\n\t_callback: null,\n\t_callbackTarget: null,\n\n\t_draggedElement: null,\n\t_clonedElement: null,\n\t_startTouchPoint: cc.p(0, 0),\n\t_dragStarted: false,\n\n\t_touchIntercepted: false,\n\tclickEnabled: true,\n\tdragEnabled: true,\n\tdropEnabled: true,\n\tignoreBoundingBox: false,\n\n\tctor: function(type, dndName)\n\t{\n\t\tthis._super();\n\n\t\tthis._type = type;\n\n\t\tif(type !== pmui.DragAndDropLayout.Type.DRAG_ONLY)\n\t\t{\n\t\t\tthis._dndName = dndName;\n\n\t\t\tif(!pmui.DragAndDropLayout._dndLayoutsMap[dndName])\n\t\t\t\tpmui.DragAndDropLayout._dndLayoutsMap[dndName] = [];\n\n\t\t\tpmui.DragAndDropLayout._dndLayoutsMap[dndName].push(this);\n\t\t}\n\n\t\tif(type === pmui.DragAndDropLayout.Type.DRAG_AND_DROP)\n\t\t\tthis._dropTargets.push(dndName);\n\n\t\tvar touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(touchListener, this);\n\t},\n\n\tonExit: function()\n\t{\n\t\tccui.Layout.prototype.onExit.call(this);\n\n\t\tif(this._type !== pmui.DragAndDropLayout.Type.DRAG_ONLY)\n\t\t{\n\t\t\tvar index = pmui.DragAndDropLayout._dndLayoutsMap[this._dndName].indexOf(this);\n\t\t\tpmui.DragAndDropLayout._dndLayoutsMap[this._dndName].splice(index, 1);\n\t\t}\n\t},\n\n\tsetBright: function (flag)\n\t{\n\t\tvar child = this.getChildren();\n\n\t\tfor(var i =0 ; i < this.getChildrenCount(); ++i)\n\t\t\tchild[i].setBright(flag);\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\tif(!this.enabled)\n\t\t\treturn false;\n\n\t\tif(this._dragStarted)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis._touchIntercepted = this._interceptTouchBegan(touch, event);\n\n\t\tif(this._touchIntercepted)\n\t\t\treturn true;\n\n\t\tif(this._type === pmui.DragAndDropLayout.Type.DROP_ONLY)\n\t\t\treturn false;\n\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\tif(!this.ignoreBoundingBox)\n\t\t{\n\t\t\tif (!cc.rectContainsPoint(this.getBoundingBox(), this.getParent().convertTouchToNodeSpace(touch)) ||\n\t\t\t\t!this.isClippingParentContainsPoint(touch.getLocation()))\n\t\t\t\treturn false;\n\t\t}\n\n\t\tvar element = this._findElementByTouch(touch);\n\n\t\tif(!element || !element.isEnabled() || !this._isElementClickable(element))\n\t\t\treturn false;\n\n\t\t//this._dragStarted = false;\n\t\tthis._startTouchPoint = touchPoint;\n\n\t\tif(this.clickEnabled)\n\t\t\telement.setHighlighted(true);\n\n\t\tthis._draggedElement = element;\n\n\t\treturn true;\n\t},\n\n\t_touchMoved: function(touch, event)\n\t{\n\t\tif(this._touchIntercepted)\n\t\t{\n\t\t\tthis._interceptTouchMoved(touch, event);\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.dragEnabled)\n\t\t\treturn;\n\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\tif(!this._dragStarted &&\n this._isElementDraggable(this._draggedElement, touch) &&\n cc.pDistance(this._startTouchPoint, touchPoint) >= pm.TOUCH_CRITICAL_DISTANCE)\n\t\t{\n\t\t\tif(this.clickEnabled)\n\t\t\t\tthis._draggedElement.setHighlighted(true);\n\n\t\t\tthis._clonedElement = this._cloneElement(this._draggedElement, touch);\n\n\t\t\tif(!this._clonedElement)\n\t\t\t\treturn;\n\n\t\t\tvar draggedElementBB = this._draggedElement.getBoundingBoxToWorld();\n\t\t\t//this._clonedElement.setScale(draggedElementBB.width / this._clonedElement.width);\n\n\t\t\tthis._dragStarted = true;\n\n pm.runningSceneUtils.addChild(this._clonedElement);\n\n\t\t\tvar dropTarget = this._findDropTarget(touchPoint);\n\n\t\t\tif(dropTarget && dropTarget._type !== pmui.DragAndDropLayout.Type.DRAG_ONLY)\n\t\t\t{\n\t\t\t\tdropTarget._callback.call(dropTarget._callbackTarget,\n\t\t\t\t\tthis._draggedElement, pmui.DragAndDropLayout.Event.DRAG_START, touch, this._clonedElement);\n\t\t\t}\n\t\t}\n\n\t\tif(this._dragStarted)\n\t\t{\n\t\t\tvar clonedPosition = this.convertToWorldSpace(touchPoint);\n\n\t\t\tthis._clonedElement.setPosition(clonedPosition);\n\t\t\tvar dropTarget = this._findDropTarget(touchPoint);\n\n\t\t\tif(dropTarget && dropTarget._type !== pmui.DragAndDropLayout.Type.DRAG_ONLY)\n\t\t\t{\n\t\t\t\tdropTarget._callback.call(dropTarget._callbackTarget,\n\t\t\t\t\tthis._draggedElement, pmui.DragAndDropLayout.Event.DRAG_START, touch, this._clonedElement);\n\t\t\t}\n\t\t}\n\t},\n\n\t_touchEnded: function(touch, event)\n\t{\n\t\tif(this._touchIntercepted)\n\t\t{\n\t\t\tthis._interceptTouchEnded(touch, event);\n\t\t\treturn;\n\t\t}\n\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\tthis._draggedElement.setHighlighted(false);\n\n\t\tif(this._dragStarted)\n\t\t{\n\t\t\tthis._dragStarted = false;\n\t\t\tvar cancel = false;\n\t\t\tvar dropTarget = this._findDropTarget(touchPoint);\n\n\t\t\tif(!dropTarget || dropTarget._type === pmui.DragAndDropLayout.Type.DRAG_ONLY)\n\t\t\t\tcancel = true;\n\n\t\t\tif(!cancel && dropTarget && !dropTarget._findElementByTouch(touch, this._clonedElement))\n\t\t\t\tcancel = true;\n\n\t\t\tif(cancel)\n\t\t\t{\n\t\t\t\tif(this._callback)\n\t\t\t\t{\n\t\t\t\t\tthis._callback.call(this._callbackTarget, this._draggedElement,\n\t\t\t\t\t\tpmui.DragAndDropLayout.Event.DRAG_CANCELLED, touch);\n\t\t\t\t}\n\n\t\t\t\tvar scaleAction = cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY, 0.01);\n\t\t\t\tvar selfRemove = cc.callFunc(function() { pm.runningSceneUtils.removeChild(this) }, this._clonedElement);\n\n\t\t\t\tthis._clonedElement.runAction(cc.sequence(scaleAction, selfRemove));\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(dropTarget.dropEnabled && dropTarget._callback)\n\t\t\t{\n\t\t\t\tdropTarget._callback.call(dropTarget._callbackTarget, this._draggedElement,\n\t\t\t\t\tpmui.DragAndDropLayout.Event.DROP, touch, this._clonedElement);\n\n\t\t\t\tpm.runningSceneUtils.removeChild(this._clonedElement);\n\t\t\t}\n\n\t\t\tthis._clonedElement = null;\n\t\t}\n\t\telse if(this.clickEnabled && this._callback)\n\t\t{\n\t\t\tthis._callback.call(this._callbackTarget, this._draggedElement,\n\t\t\t\tpmui.DragAndDropLayout.Event.CLICKED, touch);\n\t\t}\n\n\t},\n\n\t_findDropTarget: function(touchPoint)\n\t{\n\t\tvar worldPoint = this.convertToWorldSpace(touchPoint);\n\n\t\tfor(var i = 0; i < this._dropTargets.length; ++i)\n\t\t{\n\t\t\tvar proposedWidgets = pmui.DragAndDropLayout._dndLayoutsMap[this._dropTargets[i]];\n\n\t\t\tif(!proposedWidgets)\n\t\t\t\tcontinue;\n\n\t\t\tfor(var j =0 ;j < proposedWidgets.length; ++j)\n\t\t\t{\n\t\t\t\tvar nodePoint = proposedWidgets[j].getParent().convertToNodeSpace(worldPoint);\n\n\t\t\t\tif(cc.rectContainsPoint(proposedWidgets[j].getBoundingBox(), nodePoint))\n\t\t\t\t\treturn proposedWidgets[j];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n * Add drop target group name.
\n * If type of layer is pmui.DragAndDropLayout.Type.DROP_ONLY do nothing.\n * @param {String} name Drop target group name.\n */\n\taddDropTargetName: function(name)\n\t{\n\t\tif(this._type === pmui.DragAndDropLayout.Type.DROP_ONLY)\n\t\t\treturn;\n\n\t\tthis._dropTargets.push(name);\n\t},\n\n\t_findElementByTouch: function(worldPoint, object) { return null; },\n\n\t/**\n * Returns true if element is draggable\n * @protected\n * @param {ccui.Widget} element\n\t * * @param {ccui.Point} touch\n * @returns {Boolean}\n */\n\t_isElementDraggable: function(element, touch) { return true; },\n\n\t/**\n * Returns true if element is clickable\n * @protected\n * @param {ccui.Widget} element\n * @returns {Boolean}\n */\n\t_isElementClickable: function(element) { return true; },\n\n\t/**\n * Clones element when drag start. Need to override.\n * @protected\n * @param {ccui.Widget} element\n * @returns {ccui.Widget}\n */\n\t_cloneElement: function(element, touch) { return null; },\n\n\t/**\n * Intercepts touch began. Returns true if intercepted\n * @protected\n * @param {cc.Touch} touch\n * @param {cc.Event} event\n * @returns {Boolean}\n */\n\t_interceptTouchBegan: function(touch, event) { return false; },\n\n\t/**\n * Intercepts touch moved.\n * @protected\n * @param {cc.Touch} touch\n * @param {cc.Event} event\n * @returns {Boolean}\n */\n\t_interceptTouchMoved: function(touch, event) {},\n\n\t/**\n * Intercepts touch ended.\n * @protected\n * @param {cc.Touch} touch\n * @param {cc.Event} event\n * @returns {Boolean}\n */\n\t_interceptTouchEnded: function(touch, event) {},\n\n\t/**\n * @param {pmui.DragAndDropLayout~event} callback\n * @param {ccui.Widget} target\n */\n\taddDNDEventListener: function(callback, target)\n\t{\n\t\tthis._callback = callback;\n\t\tthis._callbackTarget = target;\n\t}\n});\n\npmui.DragAndDropLayout._dndLayoutsMap = {};\n\n/**\n * Types of Drag-and-Drop layout\n * @enum {Number}\n */\npmui.DragAndDropLayout.Type = {\n\tDRAG_ONLY: 0,\n\tDROP_ONLY: 1,\n\tDRAG_AND_DROP: 2,\n\tCANCELLED: 3\n};\n\n/**\n * Events of Drag-and-Drop layout\n * @enum {Number}\n */\npmui.DragAndDropLayout.Event = {\n\tDRAG_START: 0,\n\tDROP: 1,\n\tCLICKED: 2,\n\tDRAG_CANCELLED: 3\n};\n","/**\n * Created by Nikita Besshaposhnikov on 24.10.14.\n */\n\n/**\n * This callback is used when some element is clicked.\n * @callback pmui.SlidingMenu~clickCallback\n * @param {Number} index Index of selected element.\n */\n\n/**\n * @class Layer for sliding menu.\n * @example\n * var menu = new pmui.SlidingMenu(clickCallback, this);\n * menu.addMenuElement(new cc.Layer(), \"New Element 1\");\n * menu.addMenuElement(new cc.Layer(), \"New Element 2\");\n * menu.setCurrentElement(1);\n * this.addChild(menu);\n *\n * @extends ccui.ListView\n * @constructor\n * @param {Number} width Width of menu.\n * @param {pmui.SlidingMenu~clickCallback} callback Callback on click some element.\n * @param {cc.Node} target Callback target\n * @param {ccui.ScrollView.DIR_NONE | ccui.ScrollView.DIR_VERTICAL | ccui.ScrollView.DIR_HORIZONTAL | ccui.ScrollView.DIR_BOTH} direction\n */\npmui.SlidingMenu = ccui.ListView.extend(/** @lends pmui.SlidingMenu# */{\n\n\tctor: function (width, height, callback, target, direction)\n\t{\n\t\tthis._super();\n\n\t\tthis._elementCallback = callback;\n\t\tthis._elementCallbackTarget = target;\n\n\t\tthis._viewWidth = width;\n\t\tthis._viewHeight = height;\n\n\t\tthis.setTouchEnabled(true);\n\t\tthis.setBounceEnabled(true);\n\t\tthis.setInertiaScrollEnabled(true);\n\t\tthis.setClippingEnabled(false);\n\n\t\tthis.setScrollBarEnabled(false);\n\t\tthis.setDirection(direction);\n\n\t\tthis.addEventListener(this._onSelectItem.bind(this));\n\t},\n\n\t_viewWidth: 0.0,\n\t_viewHeight: 0.0,\n\n\t_elementCallback: null,\n\t_elementCallbackTarget: null,\n\n\t_onSelectItem: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tvar clickedItem = this.getCurSelectedIndex();\n\t\t\tthis._elementCallback.call(this._elementCallbackTarget, clickedItem);\n\t\t}\n\t},\n\n\t/**\n\t * Adds element to menu with label.\n\t * @param {pmui.SlidingMenuElement} element\n */\n\taddMenuElement: function(element)\n\t{\n\t\tthis.pushBackCustomItem(element);\n\t\tthis._updateContainer();\n\t},\n\t/**\n * Inserts element to menu with label.\n * @param {pmui.SlidingMenuElement} element\n\t * @param {Number} index\n */\n\tinsertMenuElement: function(element, index)\n\t{\n\t\tthis.insertCustomItem(element, index);\n\t\tthis._updateContainer();\n\t},\n\t/**\n\t * Sets focus on element by index.\n\t * @param {Number} index Index of new focused element.\n\t * @param {Boolean} animated Animate scroll action.\n\t */\n\tsetCurrentElement: function(index, animated)\n\t{\n\t\tif(!animated)\n\t\t{\n\t\t\tsetTimeout(function()\n\t\t\t{\n\t\t\t\tthis.jumpToItem(index, cc.p(0.5, 0.5), cc.p(0.5, 0.5));\n\t\t\t}.bind(this), 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.scrollToItem(index, cc.p(0.5, 0.5), cc.p(0.5, 0.5));\n\t\t}\n\t},\n\n\t_updateContainer: function()\n\t{\n\t\tvar childCount = this.getChildrenCount();\n\t\tvar children = this.getChildren();\n\n\t\tfor(var i = 0; i < childCount; ++i)\n\t\t\tthis._viewHeight = Math.max(this._viewHeight, children[i].getContentSize().height);\n\n\t\tthis.setContentSize(this._viewWidth, this._viewHeight);\n\t}\n});\n\npmui.SlidingGameMenu = pmui.SlidingMenu.extend(/** @lends pmui.SlidingGameMenu# */{\n\n\t_selectedItem: null,\n\n\tctor: function(width, height, callback, target)\n\t{\n\t\tthis._super(width, height, callback, target, ccui.ScrollView.DIR_HORIZONTAL);\n\n\t\tthis.setGravity(ccui.ListView.GRAVITY_CENTER_VERTICAL);\n\t\tthis.setMagneticType(ccui.ListView.MAGNETIC_CENTER);\n\t\tthis.setItemsMargin(pmui.SlidingGameMenu.ITEMS_MARGIN);\n\t\tthis.addEventListener(this._onSelectItem.bind(this));\n\n\t\tif (cc.sys.isNative)\n\t\t\tccui.ScrollView.prototype._addEventListener.call(this, this._selectCenterItem.bind(this));\n\t\telse\n\t\t\tccui.ScrollView.prototype.addEventListener.call(this, this._selectCenterItem.bind(this));\n\n\t},\n\n\t_selectCenterItem: function(target, event)\n\t{\n\t\tvar curElem = this.getCenterItemInCurrentView();\n\n\t\tif (this._selectedItem !== curElem)\n\t\t{\n\t\t\tif (this._selectedItem)\n\t\t\t\tthis._selectedItem.runAction(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY / 2, 1));\n\n\t\t\tthis._selectedItem = curElem;\n\n\t\t\tif (this._selectedItem)\n\t\t\t\tthis._selectedItem.runAction(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY / 2, 1.3));\n\t\t}\n\t}\n});\n\npmui.SlidingGameMenu.ITEMS_MARGIN = 50;\n\npmui.SlidingLevelMenu = pmui.SlidingMenu.extend(/** @lends pmui.SlidingGameMenu# */{\n\n\tctor: function(width, callback, target)\n\t{\n\t\tthis._super(width, 0, callback, target, ccui.ScrollView.DIR_HORIZONTAL);\n\t},\n\n\t_onSelectItem: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tvar clickedItem = this.getCurSelectedIndex()-1;\n\t\t\tif (clickedItem >= 0)\n\t\t\t\tthis._elementCallback.call(this._elementCallbackTarget, clickedItem);\n\t\t}\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 28.09.18.\n */\n\n/**\n * @class Element for sliding menu.\n * @extends ccui.Layout\n */\npmui.SlidingMenuElement = ccui.Layout.extend(/** @lends pmui.SlidingMenuElement# */{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.setTouchEnabled(true);\n\t}\n});\n\npmui.SlidingWorldMenuElement = pmui.SlidingMenuElement.extend(/** @lends pmui.SlidingWorldMenuElement# */{\n\n\tctor: function(width, element, isHighlighted)\n\t{\n\t\tthis._super();\n\n\t\tthis.setContentSize(width, pmui.SlidingWorldMenuElement.HEIGHT);\n\n\t\tif (element.number === 0)\n\t\t{\n\t\t\telement.node.setAnchorPoint(cc.p(0, 0.5));\n\t\t\telement.node.setPosition(cc.p(0, this.height / 2));\n\t\t}\n\t\telse\n\t\t{\n\t\t\telement.node.setAnchorPoint(cc.p(1, 0.5));\n\t\t\telement.node.setPosition(cc.p(this.width, this.height / 2));\n\t\t}\n\n\t\tvar textAreaSize = cc.size(this.width - 2 * element.node.width, 0);\n\n\t\tvar name = new ccui.Text(element.label, pm.settings.fontName, pmui.SlidingWorldMenuElement.NAME_SIZE);\n\t\tname.setTextColor(pmui.SlidingWorldMenuElement.TEXT_COLOR);\n\t\tname.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\tname.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tvar text = new ccui.Text(element.description, pm.settings.fontName, pm.settings.fontSize);\n\t\ttext.setTextColor(pmui.SlidingWorldMenuElement.TEXT_COLOR);\n\t\ttext.setTextAreaSize(textAreaSize);\n\t\ttext.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\ttext.setAnchorPoint(cc.p(0.5, 1));\n\n\t\tvar texture = isHighlighted ? \"System/highlight-on.png\" : \"System/highlight-off.png\";\n\t\tvar rect = isHighlighted ? pmui.SlidingWorldMenuElement.HIGHLIGHT_ON_RECT : pmui.SlidingWorldMenuElement.HIGHLIGHT_OFF_RECT;\n\t\tvar highlightSprite = new cc.Scale9Sprite(texture, cc.rect(0, 0, 0, 0), rect);\n\n\t\thighlightSprite.setContentSize(this.width - pmui.SlidingWorldMenuElement.HIGHLIGHT_WIDTH_CORRECTION,\n\t\t\t(name.height + text.height + pmui.SlidingWorldMenuElement.TEXT_SEPARATOR) + pmui.SlidingWorldMenuElement.HIGHLIGHT_HEIGHT_ADDITION);\n\t\thighlightSprite.setAnchorPoint(cc.p(0.5, 0.5));\n\n\t\tif (highlightSprite.height > this.height)\n\t\t\tthis.setContentSize(this.width, highlightSprite.height);\n\n\t\thighlightSprite.setPosition(this.width / 2, this.height / 2);\n\t\tname.setPosition(this.width / 2, (this.height + pmui.SlidingWorldMenuElement.TEXT_SEPARATOR + text.height - name.height) / 2);\n\t\ttext.setPosition(this.width / 2, (this.height - pmui.SlidingWorldMenuElement.TEXT_SEPARATOR + text.height - name.height) / 2);\n\n\t\tthis.addChild(name, 1);\n\t\tthis.addChild(text, 1);\n\t\tthis.addChild(highlightSprite, -1);\n\t\tthis.addChild(element.node);\n\t}\n});\n\npmui.SlidingWorldMenuElement.HIGHLIGHT_HEIGHT_ADDITION = 110;\npmui.SlidingWorldMenuElement.TEXT_SEPARATOR = 16;\npmui.SlidingWorldMenuElement.HIGHLIGHT_WIDTH_CORRECTION = 240;\npmui.SlidingWorldMenuElement.NAME_SIZE = 35;\npmui.SlidingWorldMenuElement.HIGHLIGHT_ON_RECT = cc.rect(650, 110, 30, 5);\npmui.SlidingWorldMenuElement.HIGHLIGHT_OFF_RECT = cc.rect(370, 55, 600, 110);\npmui.SlidingWorldMenuElement.TEXT_COLOR = cc.color(63, 63, 150);\npmui.SlidingWorldMenuElement.HEIGHT = 240;\n\npmui.SlidingLevelMenuElement = pmui.SlidingMenuElement.extend(/** @lends pmui.SlidingLevelMenuElement# */{\n\tlevelID: null,\n\t_starSprite: null,\n\t_completed: true,\n\n\tctor: function(node, labelText, number, levelNumber)\n\t{\n\t\tthis._super();\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar countStars = new ccui.Layout();\n\n\t\tvar border = new cc.Sprite(\"System/Border.png\");\n\n\t\tvar game = world.games[pm.settings.getGame()];\n\n\t\tvar needToDrawDots = true;\n\n\t\tif (number === world.getLevelCount(pm.settings.getGame()))\n\t\t\tneedToDrawDots = false;\n\n\t\tif (levelNumber>=0)\n\t\t{\n\t\t\tvar level = game.levels[levelNumber];\n\n\t\t\tthis.levelID = level.id;\n\n\t\t\tvar completedIcon = \"starIncomplete\";\n\n\t\t\tthis._completed = true;\n\n\t\t\tfor(var i = 0; i < level.maps.length; ++i)\n\t\t\t{\n\t\t\t\tif(pm.userCache.getScore(level, i) === -1)\n\t\t\t\t\tthis._completed = false;\n\t\t\t}\n\n\t\t\tif (this._completed)\n\t\t\t\tcompletedIcon = \"star\";\n\n\t\t\tthis._starSprite = pm.spriteUtils.getIconSprite(completedIcon);\n\t\t\tthis._starSprite.setAnchorPoint(cc.p(1, 1));\n\n\t\t\tvar countLabel = new ccui.Text(levelNumber + 1, pm.settings.fontBoldName, 55);\n\n\t\t\tvar a = 0;\n\t\t\tif (levelNumber === 0 || levelNumber % 10 === 0 || levelNumber % 100 === 0)\n\t\t\t\ta =- 6;\n\n\t\t\tcountLabel.setAnchorPoint(cc.p(1, 1));\n\t\t\tcountLabel.setPosition(cc.p(this._starSprite.width + 60 + 7 + a, Math.max(this._starSprite.height, countLabel.height) + 5));\n\n\t\t\tthis._starSprite.setPosition(this._starSprite.width + 60 + 7 + 45, Math.max(this._starSprite.height, countLabel.height) - 20);\n\n\t\t\tcountStars.addChild(this._starSprite, 4);\n\t\t\tcountStars.addChild(countLabel, 4);\n\n\t\t\tcountStars.setContentSize(this._starSprite.width + 60 + 7, Math.max(this._starSprite.height, countLabel.height) + 5);\n\t\t\t// countStars.setContentSize(countLabel.width + 7, countLabel.height + 5);\n\t\t}\n\n\t\tif (number===0)\n\t\t\tthis.setContentSize(node.width, node.height * 3 + screenBounds.top);\n\t\telse\n\t\t\tthis.setContentSize(node.width + 50, node.height * 3 + screenBounds.top);\n\n\t\tvar borderHeight = 40;\n\n\t\tif (number % 3 === 1)\n\t\t{\n\t\t\tcountStars.setAnchorPoint(cc.p(1, 1));\n\n\t\t\tcountStars.setPosition(cc.p(node.width/2 + 40 - 65 - 15, 100));\n\n\t\t\tnode.setAnchorPoint(cc.p(0, 0));\n\t\t\tnode.setPosition(cc.p(25, borderHeight + screenBounds.top - 10));\n\n\t\t\tborder.setAnchorPoint(cc.p(0, 0));\n\t\t\tborder.setPosition(cc.p(25, borderHeight+ screenBounds.top - 10));\n\n\t\t\tif (needToDrawDots)\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < 11; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar dot = new cc.Sprite(\"WorldPics/dot.png\");\n\n\t\t\t\t\tdot.setAnchorPoint(cc.p(0, 0.5));\n\n\t\t\t\t\tvar scale = cc.random0To1()/2+0.5;\n\t\t\t\t\tdot.setScale(scale);\n\n\t\t\t\t\t// dot.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale * 0.6), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.5 * 255)),\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t\t\t// )));\n\n\t\t\t\t\tdot.setPosition(cc.p(25 + node.width - 35 + i * 10,\n\t\t\t\t\t\tborderHeight + screenBounds.top + 60 + node.height/2 + 14 * i));\n\t\t\t\t\tthis.addChild(dot, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (number % 3 === 0 && number !== 0)\n\t\t{\n\t\t\tnode.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tnode.setPosition(cc.p(node.width/2-20, this.height*0.55));\n\n\t\t\tborder.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tborder.setPosition(cc.p(node.width/2-20, this.height*0.55));\n\n\t\t\tcountStars.setAnchorPoint(cc.p(1, 1));\n\t\t\tcountStars.setPosition(cc.p(node.width/2-20 - 50 - 15, this.height*0.55 - node.height - screenBounds.top + 10 + 60));\n\n\t\t\tif (needToDrawDots)\n\t\t\t{\n\t\t\t\tfor (var i = 1; i <= 7; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar dot = new cc.Sprite(\"WorldPics/dot.png\");\n\n\t\t\t\t\tdot.setAnchorPoint(cc.p(0, 0.5));\n\n\t\t\t\t\tvar scale = cc.random0To1()/2+0.5;\n\t\t\t\t\tdot.setScale(scale);\n\n\t\t\t\t\t// dot.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale * 0.6), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.5 * 255)),\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t\t\t// )));\n\n\t\t\t\t\tdot.setPosition(cc.p(25 + node.width - 50 + i * 13,\n\t\t\t\t\t\tborderHeight + screenBounds.top + 50 + node.height/2 - 5 * i));\n\t\t\t\t\tthis.addChild(dot, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (number % 3 === 2)\n\t\t{\n\t\t\tnode.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tnode.setPosition(cc.p(25 + node.width/2, this.height));\n\n\t\t\tborder.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tborder.setPosition(cc.p(25 + node.width/2, this.height));\n\n\t\t\tcountStars.setAnchorPoint(cc.p(1, 1));\n\t\t\tcountStars.setPosition(cc.p(node.width/2 + 25 - 50 - 15, this.height - node.height - screenBounds.top + 10 + 60));\n\n\t\t\tif (needToDrawDots)\n\t\t\t{\n\t\t\t\tfor (var i = 1; i <= 6; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar dot = new cc.Sprite(\"WorldPics/dot.png\");\n\n\t\t\t\t\tdot.setAnchorPoint(cc.p(0, 0.5));\n\n\t\t\t\t\tvar scale = cc.random0To1()/2+0.5;\n\t\t\t\t\tdot.setScale(scale);\n\n\t\t\t\t\t// dot.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale * 0.6), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.5 * 255)),\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t\t\t// )));\n\n\t\t\t\t\tdot.setPosition(cc.p(25 + node.width - 25 + i * 10,\n\t\t\t\t\t\tborderHeight + screenBounds.top + 225 + node.height/2 - 16* i));\n\t\t\t\t\tthis.addChild(dot, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnode.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tnode.setPosition(cc.p(node.width/2 + 25, this.height*2/3));\n\n\t\t\tborder.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tborder.setPosition(cc.p(node.width/2 + 25, this.height*2/3));\n\n\t\t\tcountStars.setAnchorPoint(cc.p(0.5, 1));\n\t\t\tcountStars.setPosition(cc.p(node.width/2 + 25, this.height*2/3 - node.height - screenBounds.top + 10));\n\n\t\t\tif (needToDrawDots)\n\t\t\t{\n\t\t\t\tfor (var i = 1; i <= 4; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar dot = new cc.Sprite(\"WorldPics/dot.png\");\n\n\t\t\t\t\tdot.setAnchorPoint(cc.p(0, 0.5));\n\n\t\t\t\t\tvar scale = cc.random0To1()/2+0.5;\n\t\t\t\t\tdot.setScale(scale);\n\n\t\t\t\t\t// dot.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale * 0.6), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.5 * 255)),\n\t\t\t\t\t// cc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, scale), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t\t\t// )));\n\n\t\t\t\t\tdot.setPosition(cc.p(25 + node.width - 62 + i * 13,\n\t\t\t\t\t\tborderHeight + screenBounds.top + 260 + node.height/2 - 6 * i));\n\t\t\t\t\tthis.addChild(dot, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.setTouchEnabled(true);\n\t\tthis.addChild(node, 1);\n\n\t\tif (number!==0)\n\t\t{\n\t\t\tthis.addChild(countStars, 5);\n\t\t\tthis.addChild(border, 2);\n\t\t}\n\t},\n\n\tsetMireraCompleted: function(mireraCompleted) {\n\t\tif(this._completed)\n\t\t{\n\t\t\tvar icon = \"star\";\n\n\t\t\tif (mireraCompleted)\n\t\t\t\ticon = \"starMirera\";\n\n\t\t\tvar frame = pm.spriteUtils.getIconSpriteFrame(icon);\n\t\t\tthis._starSprite.setSpriteFrame(frame);\n\t\t}\n\t}\n});\n\npmui.SlidingGameMenuElement = pmui.SlidingMenuElement.extend(/** @lends pmui.SlidingGameMenuElement# */{\n\n\tctor: function(node, labelText, gameNumber, margin)\n\t{\n\t\tthis._super();\n\n\t\tthis.setContentSize(node.width, pm.settings.getScreenSize().height - margin);\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setTouchEnabled(true);\n\n\t\tnode.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tnode.setPosition(cc.p(node.width / 2, pm.settings.getScreenSize().height / 2));\n\n\t\tvar label = new ccui.Text(labelText, pm.settings.fontName, pmui.SlidingGameMenuElement.TEXT_SIZE);\n\n\t\tlabel.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tlabel.setPosition(cc.p(node.width / 2, node.y - node.height / 2 + pmui.SlidingGameMenuElement.TEXT_SEPARATOR));\n\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\tlabel.setTextAreaSize(cc.size(node.width, 0));\n\n\t\tthis.addChild(label, 1);\n\t\tthis.addChild(node);\n\n\t\tvar count = 0;\n\t\tvar completedCount = 0;\n\n\t\tvar game = world.games[gameNumber];\n\n\t\tif (game)\n\t\t{\n\t\t\tfor (var i = 0; i < game.levels.length; ++i)\n\t\t\t{\n\t\t\t\tvar level = game.levels[i];\n\n\t\t\t\t// completedCount += pm.userCache.getCompleteMapCount(level);\n\t\t\t\tvar notCompletedFlag = false;\n\n\t\t\t\tfor (var j = 0; j < level.maps.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (pm.userCache.getScore(level, j) === -1)\n\t\t\t\t\t\tnotCompletedFlag = true;\n\t\t\t\t}\n\n\t\t\t\tif (!notCompletedFlag)\n\t\t\t\t\tcompletedCount++;\n\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\n\t\tvar starName;\n\n\t\tif (completedCount === count)\n\t\t\tstarName = \"star-complete\";\n\t\telse if (completedCount === 0)\n\t\t\tstarName = \"star-incomplete\";\n\t\telse\n\t\t\tstarName = \"star\";\n\n\t\tvar star = new cc.Sprite(pm.spriteUtils.getInterfaceElementFrame(starName));\n\t\tvar countLabel = new ccui.Text(completedCount + \"/\" + count, pm.settings.fontName, pmui.SlidingGameMenuElement.TEXT_SIZE);\n\t\tvar starLayout = new ccui.Layout();\n\n\t\tstarLayout.setContentSize(star.width + countLabel.width + pmui.SlidingGameMenuElement.LABEL_SEPARATOR,\n\t\t\tMath.max(star.height, countLabel.height));\n\t\tstarLayout.setAnchorPoint(cc.p(0.5, 1));\n\t\tstarLayout.setPosition(node.width / 2, label.y - label.height / 2 - pmui.SlidingGameMenuElement.STAR_SEPARATOR);\n\n\t\tstar.setAnchorPoint(cc.p(0, 0.5));\n\t\tstar.setPosition(cc.p(0, starLayout.height / 2));\n\n\t\tcountLabel.setAnchorPoint(cc.p(0, 0.5));\n\t\tcountLabel.setPosition(cc.p(star.width + pmui.SlidingGameMenuElement.LABEL_SEPARATOR, star.y));\n\n\t\tstarLayout.addChild(star, 1);\n\t\tstarLayout.addChild(countLabel, 1);\n\t\tthis.addChild(starLayout);\n\t}\n});\n\npmui.SlidingGameMenuElement.STAR_SEPARATOR = 5;\npmui.SlidingGameMenuElement.LABEL_SEPARATOR = 10;\npmui.SlidingGameMenuElement.TEXT_SEPARATOR = 15;\npmui.SlidingGameMenuElement.TEXT_SIZE = 18;\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class View for replace places on program layer\n * @extends ccui.Layout\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.NodeLayer = pmui.Layout.extend(/** @lends pmui.NodeLayer# */{\n\t_id: 0,\n\ttype: 0,\n\t_treeNode: null,\n\t_selected: false,\n\t_parentNode: null,\n\t_lastNodeId: 0,\n\t_repTypes: [],\n\t_addTypes: [],\n\t_withBorder: false,\n\t_withRoundBorder: false,\n\t_isEditable: true,\n\tisPartlyClonable: false,\n\n\tctor: function (parentNode, treeNode)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\t\tpmui.NodeLayer.SEPARATORY = pmui.NodeLayer.KUMIR_MODE ? 0 : 5;\n\n\t\tthis._treeNode = treeNode;\n\t\tthis._parentNode = parentNode;\n\t\tthis._id = this.getNodeId();\n\n\t\tif(treeNode)\n\t\t{\n\t\t\tthis._treeNode.setNodeView(this);\n\t\t\tthis._treeNode.id = this._id;\n\t\t}\n\t\tpm.registerCustomEventListener(pm.RESET_HIGHLIGHT, function (event)\n\t\t{\n\t\t\tthis.drawBackground();\n\t\t\tthis._selected = false;\n\t\t}.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.DESELECT_NODE, function (event)\n\t\t{\n\t\t\tthis.deSelect();\n\t\t}.bind(this), this);\n\t\tthis.drawBackground();\n\t},\n\n\tdrawBackground: function()\n\t{\n\t\tif (pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tif (this.isEditable() && this._withBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/border.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t\telse if (this.isEditable() && this._withRoundBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/round-border.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(20, 20, 1, 1));\n\t\t}\n\t\telse if (!this.isEditable() && this._withRoundBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/round-blocked.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(19, 19, 2, 2));\n\t\t}\n\t\telse if (!this.isEditable() && this._withBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/blocked.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(10, 10, 20, 20));\n\t\t}\n\t\telse {\n\t\t\tthis.removeBackGroundImage();\n\t\t}\n\t},\n\n\thighlight: function()\n\t{\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tif(this._withRoundBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/round-border-select.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(19, 19, 2, 2));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/highlight.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t},\n\n\thighlightBroken: function()\n\t{\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tif(this._withRoundBorder)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/round-broken.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(19, 19, 2, 2));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/broken.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t},\n\n\tremoveHighlight: function()\n\t{\n\t\tpmui.NodeLayer.KUMIR_MODE ? this.removeBackGroundImage() : this.drawBackground();\n\t},\n\n\tselect: function()\n\t{\n\t\tif(!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tif(this._withRoundBorder)\n\t\t\t{\n\t\t\t\tthis.setBackGroundImage(\"PiktomirK/round-border-select.png\");\n\t\t\t\tthis.setBackGroundImageCapInsets(cc.rect(19, 19, 2, 2));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setBackGroundImage(\"PiktomirK/select-border.png\");\n\t\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\t}\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\tdeSelect: function()\n\t{\n\t\tif(this._selected)\n\t\t{\n\t\t\tthis.drawBackground();\n\t\t\tthis._selected = false;\n\t\t\tthis.setTag(ProgramContainerLayer.NOT_SELECTED_TAG);\n\t\t}\n\t},\n\n\tremoveCallbackAction: function ()\n\t{\n\t\tvar action = cc.moveBy(0.1, cc.p(15, 0));\n\t\tvar revAction = cc.moveBy(0.1, cc.p(-15, 0));\n\n\t\tthis.runAction( new cc.Sequence(revAction, action));\n\t},\n\n\tcalculateSize: function (isPar)\n\t{\n\t\tthis.sizeOfVContainer(this);\n\t\tif(!isPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tcreateText: function(text, color, fontSize)\n\t{\n\t\tvar text = new ccui.Text(\n\t\t\tLocalizedString(text),\n\t\t\tProgramContainerLayer.FONT_NAME,\n\t\t\tfontSize? fontSize : ProgramContainerLayer.FONT_SIZE\n\t\t);\n\t\ttext.setColor(color ? color : pmui.NodeLayer.MAIN_COLOR);\n\t\ttext.setTextVerticalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\treturn text;\n\t},\n\n\tcanAdd: function(element)\n\t{\n\t\tif(this._addTypes.indexOf(element) !== -1 )\n\t\t\treturn true;\n\t\treturn false;\n\t},\n\n\tcanReplace: function(element)\n\t{\n\t\tif(this._repTypes.indexOf(element) !== -1 )\n\t\t\treturn true;\n\t\treturn false;\n\t},\n\n\tsizeOfContainer: function (cont, setSize)\n\t{\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tvar mX = 0;\n\t\tvar mY = 0;\n\t\tcont.getChildren().forEach(function(child)\n\t\t{\n\t\t\tmX = 0;\n\t\t\tmY = 0;\n\t\t\tvar margin = child.getLayoutParameter().getMargin();\n\t\t\tif (margin)\n\t\t\t{\n\t\t\t\tmY = margin.top + margin.bottom;\n\t\t\t\tmX = margin.left + margin.right;\n\t\t\t}\n\t\t\twidth += child.width + mX;\n\t\t\theight = Math.max(height, child.height + mY);\n\t\t});\n\t\tif(!setSize)\n\t\t\tcont.setContentSize(width, height);\n\t\treturn cc.size(width, height);\n\t},\n\n\tsizeOfVContainer: function (cont, setSize)\n\t{\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tvar mX = 0;\n\t\tvar mY = 0;\n\t\tcont.getChildren().forEach(function(child)\n\t\t{\n\t\t\tmX = 0;\n\t\t\tmY = 0;\n\t\t\tvar margin = child.getLayoutParameter().getMargin();\n\t\t\tif (margin)\n\t\t\t{\n\t\t\t\tmY = margin.top + margin.bottom;\n\t\t\t\tmX = margin.left + margin.right;\n\t\t\t}\n\t\t\twidth = Math.max(child.width + mX, width);\n\t\t\theight += child.height + mY;\n\t\t});\n\t\tif(!setSize)\n\t\t\tcont.setContentSize(width, height);\n\t\treturn cc.size(width, height);\n\t},\n\n\t_removeNode: function(node)\n\t{\n\t\tvar parent = node._parentNode._treeNode;\n\t\tparent.removeChild(node._treeNode);\n\t\tthis.removeChild(node);\n\t\tnode = null;\n\t},\n\n\t_removeNodeFromTree: function()\n\t{\n\t\tthis.removeLinks();\n\t\tif (this.isMain() || this.isBody() || this.isProgram())\n\t\t\treturn;\n\n\t\tvar prevNode = this._parentNode._removeNode(this);\n\n\t\tvar focusNode = prevNode ? prevNode : this._parentNode;\n\t\tif(focusNode)\n\t\t\tfocusNode.calculateSize();\n\t\treturn focusNode;\n\t},\n\n\tgetNodeId: function()\n\t{\n\t\treturn this._parentNode._id + \"_\" + this._parentNode._lastNodeId++;\n\t},\n\n\tsetBody: function(node)\n\t{\n\t\tthis._bodyNode.set(node);\n\t\tthis._bodyNode.calculateSize(true);\n\t\treturn this._bodyNode;\n\t},\n\n\tremoveLinks: function ()\n\t{\n\t\tthis.makeCleanUp();\n\t},\n\n\tmakeCleanUp: function()\n\t{\n\t\tthis.getChildrenNodes().forEach(function (node){\n\t\t\tif(node instanceof pmui.NodeLayer)\n\t\t\t\tnode.makeCleanUp();\n\t\t});\n\t},\n\n\tgetTagName: function()\n\t{\n\t\treturn this._treeNode.getTagName();\n\t},\n\n\tcreateALignSome: function(layer, neighbour, name, type, left, top, right, bottom)\n\t{\n\t\tvar align = layer.getLayoutParameter();\n\t\tif(!align)\n\t\t\talign = new ccui.RelativeLayoutParameter();\n\n\t\talign.setAlign(type);\n\t\tif(neighbour !== \"\")\n\t\t\talign.setRelativeToWidgetName( neighbour);\n\t\tif(name !== \"\")\n\t\t\talign.setRelativeName(name);\n\t\tif(top !== undefined)\n\t\t\talign.setMargin(left, top, right, bottom);\n\t\tlayer.setLayoutParameter(align);\n\t},\n\n\tsetNonEditable: function()\n\t{\n\t\tif(pm.settings.isEditorMode)\n\t\t{\n\t\t\tif(this._treeNode) {\n\t\t\t\tthis._treeNode.setNonEditable();\n\t\t\t\tthis.drawBackground();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\telse return false;\n\t\t}\n\t\treturn false;\n\t},\n\n\tisEditable: function()\n\t{\n\t\treturn this._treeNode ? this._treeNode.isEditable() : true;\n\t},\n\n\tisSelected: function ()\n\t{\n\t\treturn this._selected;\n\t},\n\n\tgetChildrenNodes: function() { return [];},\n\n\tisMain: function() { return false;},\n\tisBody: function() { return false;},\n\tisFunction: function () { return false;},\n\tisHorizontalBar: function() { return false;},\n\tisProgram: function() { return false;},\n\tisAlloc: function() {return false;},\n\tisNumber:function() { return false;},\n\tisMethod: function() { return false;},\n\tisEmpty: function() { return false;},\n\tisElseBlock: function() { return false;},\n\tisExpression: function() { return false;},\n\tisReplaceable: function() { return false;},\n\n\t_drawNode: function() {},\n\tclickCallback: function () {},\n\tclone: function() {},\n});\n\npmui.NodeLayer.SEPARATORY = 5;\npmui.NodeLayer.SEPARATORX = 5;\npmui.NodeLayer.IMAGE_TAG = 999;\npmui.NodeLayer.MAIN_COLOR = cc.color(0, 0, 204);\npmui.NodeLayer.CONSTR_COLOR = cc.color(0, 0, 0);\npmui.NodeLayer.CONSTR_COLOR = cc.color(0, 0, 0);\npmui.NodeLayer.ALLOC_COLOR = cc.color(175, 90, 0, 0);\npmui.NodeLayer.CONST_COLOR = cc.color(60,175,255);\npmui.NodeLayer.USE_COLOR = cc.color(0, 178, 0);\npmui.NodeLayer.VAR_COLOR = cc.color(92, 108, 118);\npmui.NodeLayer.KUMIR_MODE = false;\n","/**\n * Created by Diana Agliamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\npmui.StartNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_mainFunc: null,\n\t_globalCont: null,\n\t_funcReplace: null,\n\t_firstFunc: null,\n\t_funcCont: null,\n\t_nextNode: null,\n\n\tctor: function (treeNode, parent, levelType, robotType)\n\t{\n\t\tthis._super(parent, treeNode);\n\t\tvar robotName = this.createText(LocalizedString(pm.moduleUtils.getRobotDisplayedName(levelType, robotType)), pmui.NodeLayer.USE_COLOR);\n\t\tvar robotUsageText = this.createText(\"use\");\n\n\t\tvar hBox = new ccui.HBox();\n\t\thBox.addChild(robotUsageText);\n\t\tvar sep = new ccui.Layout();\n\t\tsep.setContentSize(5,5);\n\t\thBox.addChild(sep);\n\t\thBox.addChild(robotName);\n\n\t\tvar param = new ccui.LinearLayoutParameter();\n\t\tparam.setMargin(pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, 0, 0);\n\t\thBox.setLayoutParameter(param);\n\n\t\tthis.sizeOfContainer(hBox);\n\t\tthis._funcCont = new ccui.Layout();\n\t\tthis._globalCont = new pmui.GlobalBodyNode(this);\n\n\t\tthis.addChild(hBox);\n\t\tthis.addChild(this._globalCont);\n\t\tthis.addChild(this._funcCont);\n\n\t\tthis._addTypes = [FunctionButton.Type.Function];\n\t\tthis._funcCont.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._firstFunc = new pmui.NodeLayer(this, null);\n\t\tthis._firstFunc._id = \"functions_first\";\n\t\tthis.createALignSome(this._firstFunc, \"\", this._firstFunc._id, ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tthis._funcCont.addChild(this._firstFunc);\n\t},\n\n\tsetMain: function (node)\n\t{\n\t\tthis._mainFunc = node;\n\t},\n\n\tgetMain: function()\n\t{\n\t\treturn this._mainFunc;\n\t},\n\n\tsetGlobals: function (treeNode)\n\t{\n\t\treturn this._globalCont.set(treeNode);\n\t},\n\n\tcalculateSize: function (forPar)\n\t{\n\t\tthis.sizeOfVContainer(this._funcCont);\n\n\t\tvar s = this.sizeOfVContainer(this, true);\n\t\tthis.setContentSize(s.width, s.height + 10);\n\t},\n\n\tgetMainBody: function ()\n\t{\n\t\treturn this._mainFunc._bodyNode;\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tvar parent = this._treeNode;\n\t\tparent.removeChild(node._treeNode);\n\t\tvar prevNode = this.getChildByNext(node);\n\t\tif (prevNode !== null)\n\t\t{\n\t\t\tprevNode._nextNode = node._nextNode;\n\t\t\tvar alignPREV = prevNode.getLayoutParameter();\n\t\t\talignPREV.setRelativeToWidgetName(node._nextNode._id);\n\t\t}\n\t\telse\n\t\t\tprevNode = this._funcCont.getChildren().forEach(function (elem){\n\t\t\t\tif(elem._id === node._nextNode._id)\n\t\t\t\t\treturn elem;\n\t\t\t});\n\t\tthis._funcCont.removeChild(node);\n\t\treturn prevNode;\n\t},\n\n\tgetNodeId: function ()\n\t{\n\t\treturn 0;\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tvar selectedNode = this._funcCont.getChildren()[this._funcCont.getChildrenCount() - 1];\n\t\tvar prevNode = this.getChildByNext(selectedNode);\n\t\tvar nextNodeId = selectedNode._id;\n\t\tnode._nextNode = selectedNode;\n\n\t\tthis.createALignSome(node, nextNodeId, node._id, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tthis._funcCont.addChild(node, 2);\n\n\t\tif (prevNode !== null)\n\t\t{\n\t\t\tprevNode._nextNode = node;\n\t\t\tvar alignPREV = prevNode.getLayoutParameter();\n\t\t\talignPREV.setRelativeToWidgetName(node._id);\n\t\t}\n\t\tthis.calculateSize(true);\n\t},\n\n\tgetChildByNext: function (next)\n\t{\n\t\tfor (var i = 0; i < this._funcCont.getChildrenCount(); i++)\n\t\t{\n\t\t\tif (this._funcCont.getChildren()[i]._nextNode === next)\n\t\t\t{\n\t\t\t\treturn this._funcCont.getChildren()[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn this._funcCont.getChildren();\n\t},\n\n\tgetFuncs: function()\n\t{\n\t\treturn this._funcCont.getChildren().slice(1, this._funcCont.getChildrenCount());\n\t},\n\n\tgetChildCont: function ()\n\t{\n\t\treturn this._funcCont;\n\t},\n\n\tisProgram: function ()\n\t{\n\t\treturn true;\n\t},\n\n\thighlight: function()\n\t{}\n});\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.FunctionNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_bodyNode: null,\n\t_params: [],\n\t_name: null,\n\t_paramsNumber: 0,\n\t_cont: null,\n\t_rBrace: null,\n\t_lBrace: null,\n\n\tctor: function (treeNode, parent, name)\n\t{\n\t\tthis.type = FunctionButton.Type.Function;\n\t\tthis.isPartlyClonable = true;\n\t\tthis._name = name;\n\t\tif (name !== undefined)\n\t\t{\n\t\t\tthis._withBorder = true;\n\t\t}\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._cont = new ccui.Layout();\n\t\tthis._cont.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar text = null;\n\t\ttext = this.createText(\"def\",pmui.NodeLayer.CONSTR_COLOR);\n\n\t\tthis.createALignSome(text, \"\", \"def\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tthis._cont.addChild(text);\n\n\t\tif (name !== undefined)\n\t\t{\n\t\t\tvar but = this.createText(LocalizedString(name));\n\t\t\tthis.createALignSome(but, \"def\", \"name\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\t\tthis._cont.addChild(but);\n\t\t}\n\n\t\tvar text1 = this.createText(\"beg\", pmui.NodeLayer.CONSTR_COLOR);\n\n\t\tthis.createALignSome(this._cont, \"\", \"begin_\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis.createALignSome(text1, \"begin_\", \"beg_\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\n\t\tthis.addChild(text1);\n\t\tthis.addChild(this._cont);\n\n\t\tthis._addTypes = [FunctionButton.Type.Alloc];\n\n\t\tvar first = new pmui.NodeLayer(this, null);\n\t\tfirst.setContentSize(100,40);\n\t\tfirst.select = this.paramsSelect;\n\t\tfirst.setName(\"firstElem\" + this._id);\n\t\tfirst._id = this._id + pm.BodyFirstChildTag;\n\t\tthis.createALignSome(first, \"\", \"first\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, 50, 0, 0, -40);\n\n\t\tthis._params = [];\n\t\tthis.addChild(first);\n\t\tthis._params.push(first);\n\n\t\tif(this._name)\n\t\t\tpm.sendCustomEvent(pm.FUNCTION_PARAMS_CHANGED, {name: this._name, params: this._paramsNumber});\n\t},\n\n\taddParameter: function(type)\n\t{\n\n\t},\n\n\tgetBody: function()\n\t{\n\t\treturn this._bodyNode;\n\t},\n\n\tselect: function ()\n\t{\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-func-border.png\");\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tthis.setCascadeOpacityEnabled(false);\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\tremoveLinks: function ()\n\t{\n\t\tpmui.FunctionNode.vals.delete(this._name);\n\t\tpm.sendCustomEvent(pm.FUNCTION_DEFINITION_REMOVED, this._name);\n\t\tthis.makeCleanUp();\n\t},\n\n\tisFunction: function()\n\t{\n\t\treturn true;\n\t},\n\n\tremoveLink: function (link)\n\t{\n\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn this._params.concat([this._bodyNode]);\n\t},\n\n\tclone: function ()\n\t{\n\t\tif (!this.isMain())\n\t\t\treturn new VarFunctionButton(FunctionButton.Type.Function, this._name);\n\t},\n\n\tgetNodeId: function ()\n\t{\n\t\tif (!this._name)\n\t\t\treturn \"main\";\n\t\treturn this._name;\n\t},\n\n\tisMain: function ()\n\t{\n\t\treturn this._treeNode.isMain();\n\t},\n\n\thighlight: function ()\n\t{\n\t\tif (!this.isMain())\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/highlight.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tthis.setCascadeOpacityEnabled(false);\n\t\t}\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tif(node._treeNode.getTagName() === pm.BodyTag\n\t\t\t|| node._treeNode.type === pm.data.Node.Type.Body)\n\t\t{\n\t\t\tthis._bodyNode = node;\n\t\t\tvar text2 = this.createText(\"end\", pmui.NodeLayer.CONSTR_COLOR);\n\t\t\tthis.createALignSome(this._bodyNode, \"beg_\", \"body_\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tthis.createALignSome(text2, \"body_\", \"end_\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, -ProgramContainerLayer.SEPARATOR_SIZEX, 0, 0, pmui.NodeLayer.SEPARATORY);\n\t\t\tthis.addChild(this._bodyNode);\n\t\t\tthis.addChild(text2);\n\t\t\treturn;\n\t\t}\n\t\tif (this._paramsNumber === 0)\n\t\t{\n\t\t\tthis._params.pop();\n\t\t\tthis._lBrace = this.createText(\"(\");\n\t\t\tvar varValueSpace = pmui.NodeLayer.SEPARATORX * 3;\n\t\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\t\tvarValueSpace = 0;\n\t\t\tthis.createALignSome(this._lBrace, \"name\", pmui.FunctionNode.L_BRACE_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t0, 0, 0, 0);\n\t\t\tthis.createALignSome(node, pmui.FunctionNode.L_BRACE_TAG, pm.FuncParamTag + \"0\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\tvarValueSpace, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\n\t\t\tthis._rBrace = this.createText(\")\");\n\t\t\tthis._rBrace.setName(pmui.FunctionNode.R_BRACE_TAG);\n\t\t\tthis.createALignSome(this._rBrace, \"\", pmui.FunctionNode.R_BRACE_TAG, ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL,\n\t\t\t\t0, 0, pmui.NodeLayer.SEPARATORX, 0);\n\n\t\t\tthis._cont.addChild(this._lBrace);\n\t\t\tthis._cont.addChild(this._rBrace);\n\t\t}\n\t\telse//first adding of the second and else elems \", 0\"\n\t\t{\n\t\t\tvar comma = this.createText(\",\");\n\t\t\tthis.createALignSome(comma, pm.FuncParamTag + (this._paramsNumber - 1), pmui.CommandNode.COMMAND_COMMA_TAG + this._paramsNumber, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t0, 0, 0, 0);\n\t\t\tthis._cont.addChild(comma);\n\n\t\t\tthis.createALignSome(node, pmui.CommandNode.COMMAND_COMMA_TAG + this._paramsNumber, pm.FuncParamTag + this._paramsNumber, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\tpmui.NodeLayer.SEPARATORX * 3, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\t\t}\n\t\tthis._cont.addChild(node);\n\t\tthis._params.push(node);\n\t\tthis._paramsNumber++;\n\n\t\tthis.sizeOfContainer(this._cont);\n\t\t//this.calculateSize();\n\n\t\tpm.sendCustomEvent(pm.FUNCTION_PARAMS_CHANGED, {name: this._name, params: this._paramsNumber});\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tvar parent = this._treeNode;\n\t\tparent.removeChild(node._treeNode);\n\t\tthis._cont.removeAllChildren();\n\n\t\tvar text = this.createText(\"def\",pmui.NodeLayer.CONSTR_COLOR);\n\n\t\tthis.createALignSome(text, \"\", \"def\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tthis._cont.addChild(text);\n\n\t\tvar but = this.createText(LocalizedString(this._treeNode.value));\n\t\tthis.createALignSome(but, \"def\", \"name\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis._cont.addChild(but);\n\n\t\tthis._params.splice(this._params.indexOf(node));\n\t\tthis._paramsNumber = 0;\n\t\tthis._treeNode.children.forEach(function (child){\n\t\t\tif(child.type !== pm.data.Node.Type.Body)\n\t\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: child, parent: this});\n\t\t}, this);\n\t\tif(this._params.length === 0)\n\t\t{\n\t\t\tvar first = new pmui.NodeLayer(this, null);\n\t\t\tfirst.setContentSize(100,40);\n\t\t\tfirst.select = this.paramsSelect;\n\t\t\tfirst.setName(\"firstElem\" + this._id);\n\t\t\tfirst._id = this._id + pm.BodyFirstChildTag;\n\t\t\tthis.createALignSome(first, \"\", \"first\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, 50, 0, 0, -40);\n\n\t\t\tthis.addChild(first);\n\t\t\tthis._params.push(first);\n\t\t}\n\t\tpm.sendCustomEvent(pm.FUNCTION_PARAMS_CHANGED, {name: this._name, params: this._paramsNumber});\n\t},\n\n\tcanAdd: function(element)\n\t{\n\t\tif(this.isMain())\n\t\t\treturn false;\n\t\telse {\n\t\t\treturn pmui.NodeLayer.prototype.canAdd.call(this, element);\n\t\t}\n\t},\n\n\tparamsSelect: function ()\n\t{\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-border.png\");\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tthis.setCascadeOpacityEnabled(false);\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\tgetNextParamName: function (type)\n\t{\n\t\tif (type === pm.AllocVals.INT)\n\t\t{\n\t\t\tvar alfabet = \"п\";\n\t\t\tvar name = alfabet + this._paramsNumber;\n\t\t\treturn name;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar alfabet = \"п\";\n\t\t\tvar name = alfabet + this._paramsNumber;\n\t\t\treturn name;\n\t\t}\n\t},\n\n\tisFunction: function ()\n\t{\n\t\treturn true;\n\t},\n\n\tcalculateSize: function (forPar)\n\t{\n\t\tthis.sizeOfContainer(this._cont);\n\t\tvar size = this.sizeOfVContainer(this, true);\n\t\tthis.setContentSize(size.width + ProgramContainerLayer.SEPARATOR_SIZEX, size.height);\n\t\tif (!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t}\n});\n\npmui.FunctionNode.vals = new SetClass([\n]);\npmui.FunctionNode.piktoVals = new SetClass([\n\tpm.CMD_A,\n\tpm.CMD_B,\n\tpm.CMD_C,\n\tpm.CMD_D,\n\tpm.CMD_E\n]);\npmui.FunctionNode.L_BRACE_TAG = \"lbracetag\";\npmui.FunctionNode.R_BRACE_TAG = \"rbracetag\";\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.BodyNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_nextNode: null,\n\t_firstElem: null,\n\n\t_dotSprite: null,\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tvar firstElemAlignType = null;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tthis._dotSprite = new ccui.VBox();\n\t\t\tthis.createALignSome(this._dotSprite, \"\", \"dots\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, 3, 0, 0, 0);\n\t\t\tthis._dotSprite.addChild(this.createText(\".\"));\n\t\t\tthis.addChild(this._dotSprite);\n\t\t\tfirstElemAlignType = ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN;\n\t\t\tProgramContainerLayer.SEPARATOR_SIZEX = 0;\n\t\t\tpmui.BodyNode.FIRST_HEIGHT = 0;\n\t\t\tpmui.BodyNode.FIRST_WIDTH = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._dotSprite = null;\n\t\t\tfirstElemAlignType = ccui.RelativeLayoutParameter.PARENT_TOP_LEFT;\n\t\t\tProgramContainerLayer.SEPARATOR_SIZEX = 40;\n\t\t\tpmui.BodyNode.FIRST_HEIGHT = 20;\n\t\t\tpmui.BodyNode.FIRST_WIDTH = 60;\n\t\t}\n\n\t\tvar align = this.getLayoutParameter();\n\t\tif(!align)\n\t\t\talign = new ccui.RelativeLayoutParameter();\n\t\talign.setMargin(ProgramContainerLayer.SEPARATOR_SIZEX, - pmui.BodyNode.FIRST_HEIGHT + pmui.NodeLayer.SEPARATORY , 0, 0);\n\t\tthis.setLayoutParameter(align);\n\n\t\tthis._addTypes = [FunctionButton.Type.Method, FunctionButton.Type.IfStatement, FunctionButton.Type.Repeater,\n\t\t\t FunctionButton.Type.Alloc, FunctionButton.Type.Statement, FunctionButton.Type.Empty, FunctionButton.Type.MethodList, FunctionButton.Type.HorizontalBar];\n\n\t\tthis._firstElem = new pmui.NodeLayer(this, null);\n\t\tthis._firstElem.select = this._firstElemSelect;\n\t\tthis.createALignSome(this._firstElem, \"dots\", this._id + pm.BodyFirstChildTag, firstElemAlignType,\n\t\t\t0, pmui.NodeLayer.SEPARATORY, 0, 0);\n\t\tthis._firstElem._id = this._id + pm.BodyFirstChildTag;\n\t\tthis._firstElem.setContentSize(pmui.BodyNode.FIRST_WIDTH, pmui.BodyNode.FIRST_HEIGHT);\n\n\t\tthis.addChild(this._firstElem);\n\t},\n\n\t_firstElemSelect: function()\n\t{\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-func-border.png\");\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tthis.setCascadeOpacityEnabled(false);\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\tset: function (treeNode)\n\t{\n\t\tthis._treeNode = treeNode;\n\t\treturn this;\n\t},\n\n\tcalculateSize: function (isPar)\n\t{\n\t\tif(this._dotSprite)\n\t\t{\n\t\t\tthis._dotSprite.removeAllChildren();\n\t\t\tthis._dotSprite.setContentSize(0, 0);\n\t\t\tthis.sizeOfVContainer(this);\n\t\t\tthis._dotSprite.setContentSize(10, this.height);\n\t\t\tvar dot = this.createText(\".\");\n\t\t\t\tfor(var i = 0; i < Math.round(this.height / dot.height);i++)\n\t\t\t\t\tthis._dotSprite.addChild(dot.clone());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.sizeOfVContainer(this);\n\t\t}\n\t\tif (!isPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tif (this._treeNode.getChildren().length > 1)\n\t\t{\n\t\t\tvar prevNode = this.getChildByNext(node);\n\t\t\tif (prevNode !== null)\n\t\t\t{\n\t\t\t\tprevNode._nextNode = node._nextNode;\n\t\t\t\tvar alignPREV = prevNode.getLayoutParameter();\n\t\t\t\talignPREV.setRelativeToWidgetName(node._nextNode._id);\n\t\t\t}\n\t\t\tif (this.getChildren().indexOf(node) !== -1)\n\t\t\t\tthis.removeChild(node);\n\t\t}\n\t\telse if(this._treeNode.getChildren().length === 1)\n\t\t{\n\t\t\tthis.removeChild(node);\n\t\t\tvar treeNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Empty, \"\", node._treeNode);\n\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: treeNode, parent: this});\n\t\t\t// var replace = new pmui.ReplaceNode(this._addTypes,\n\t\t\t// \tthis,\n\t\t\t// \ttreeNode);\n\t\t\t// var param = node.getLayoutParameter().clone();\n\t\t\t// param.setRelativeName(replace._id);\n\t\t\t// replace.setLayoutParameter(param);\n\t\t\t// replace._nextNode = node._nextNode;\n\t\t\t// var prevNode = this.getChildByNext(node);\n\t\t\t// if (prevNode !== null)\n\t\t\t// {\n\t\t\t// \tprevNode._nextNode = replace;\n\t\t\t// \tvar alignPREV = prevNode.getLayoutParameter();\n\t\t\t// \talignPREV.setRelativeToWidgetName(replace._id);\n\t\t\t// }\n\t\t\t// this.removeChild(node);\n\t\t\t// this.addChild(replace);\n\t\t}\n\t\tif (node._treeNode)\n\t\t{\n\t\t\tvar parent = this._treeNode;\n\t\t\tparent.removeChild(node._treeNode);\n\t\t}\n\t\t//this.forceDoLayout();\n\t\treturn prevNode;\n\t},\n\n\tgetNodeId: function ()\n\t{\n\t\treturn this._parentNode._id + \"_body\";\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn this.getChildren();\n\t},\n\n\taddChildNode: function (node, selectedNode)\n\t{\n\t\tif (!selectedNode) // add last child\n\t\t{\n\t\t\tselectedNode = this.getChildren()[this.getChildrenCount() - 1];\n\t\t}\n\t\tvar prevNode = this.getChildByNext(selectedNode);\n\t\tvar nextNodeId = selectedNode._id;\n\t\tnode._nextNode = selectedNode;\n\n\t\tthis.createALignSome(node, nextNodeId, node._id, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, 0, pmui.NodeLayer.SEPARATORY, pmui.NodeLayer.SEPARATORX, 0);\n\t\tthis.addChild(node);\n\n\t\tif (prevNode !== null)\n\t\t{\n\t\t\tprevNode._nextNode = node;\n\t\t\tvar alignPREV = prevNode.getLayoutParameter();\n\t\t\talignPREV.setRelativeToWidgetName(node._id);\n\t\t}\n\t\treturn node;\n\t},\n\n\tgetChildByNext: function (next)\n\t{\n\t\tfor (var i = 0; i < this.getChildrenCount(); i++)\n\t\t{\n\t\t\tif (this.getChildren()[i]._nextNode === next)\n\t\t\t{\n\t\t\t\treturn this.getChildren()[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetFirstChild: function ()\n\t{\n\t\tfor (var i = 0; i < this.getChildrenCount(); i++)\n\t\t{\n\t\t\tif (this.getChildren()[i].getLayoutParameter().getAlign() === ccui.RelativeLayoutParameter.PARENT_TOP_LEFT)\n\t\t\t{\n\t\t\t\treturn this.getChildren()[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tisBody: function ()\n\t{\n\t\treturn true;\n\t},\n\n\tselect: function (node)\n\t{\n\t},\n\n\tdeSelect: function (node)\n\t{\n\t},\n\n\thighlight: function()\n\t{\n\t\tthis._parentNode.highlight();\n\t},\n\n\tremoveHighlight: function()\n\t{\n\t\tthis._parentNode.removeHighlight();\n\t}\n});\n\npmui.BodyNode.FIRST_HEIGHT = 20;\npmui.BodyNode.FIRST_WIDTH = 60;\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.GlobalBodyNode = pmui.BodyNode.extend(/** @lends pmui.NodeLayer# */{\n\n\tctor: function (parent)\n\t{\n\t\tpmui.NodeLayer.prototype.ctor.call(this, parent);\n\t\tthis._repTypes = [FunctionButton.Type.Alloc, FunctionButton.Type.Statement, FunctionButton.Type.Empty];\n\t\tthis._cont = new ccui.Layout();\n\t\tthis._cont.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis._repTypes = [FunctionButton.Type.Alloc, FunctionButton.Type.Statement, FunctionButton.Type.Empty];\n\n\t\tthis._firstElem = new pmui.NodeLayer(this, null);\n\t\tvar firstAlign = new ccui.RelativeLayoutParameter();\n\t\tfirstAlign.setMargin(0,0,0,0);\n\t\tfirstAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tfirstAlign.setRelativeName(this._id + pm.BodyFirstChildTag);\n\t\tthis._firstElem.setLayoutParameter(firstAlign);\n\t\tthis._firstElem._id = this._id + pm.BodyFirstChildTag;\n\t\tthis._firstElem.setContentSize(100,20);\n\n\t\tthis._cont.addChild(this._firstElem);\n\t\tthis.addChild(this._cont);\n\t\tthis.calculateSize(true);\n\t},\n\n\tgetNodeId: function()\n\t{\n\t\treturn \"global_body\";\n\t},\n\n\tgetChildrenNodes: function()\n\t{\n\t\treturn [];\n\t}\n});\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.AllocNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_variableName: \"\",\n\t_variableValue: null,\n\t_typeName: null,\n\t_name: null,\n\t_treeLinks: [],\n\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis._withBorder = true;\n\t\tthis.type = FunctionButton.Type.Alloc;\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tpm.registerCustomEventListener(pm.VARIABLE_VALUE_CHANGED, function (event)\n\t\t{\n\t\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\t\treturn;\n\t\t\tif (this._variableName === event.getUserData().name)\n\t\t\t{\n\t\t\t\tif(this.isInt())\n\t\t\t\t\tthis._variableValue.setString(parseInt(event.getUserData().val));\n\t\t\t\telse\n\t\t\t\t\tthis._variableValue.setString(event.getUserData().val);\n\t\t\t}\n\t\t}.bind(this), this);\n\t},\n\n\taddChildNode: function(node)\n\t{\n\t\tthis._variableName = node.getName();\n\n\t\tthis._typeName = node.getVarType();\n\n\t\tvar typeName = this.createText(node.getVarType(), pmui.NodeLayer.ALLOC_COLOR);\n\t\tthis._name = node;\n\t\tthis._name._repTypes = [];\n\t\tthis._variableValue = this.createText(\"0\");\n\t\tthis._variableValue.setFontSize(16);\n\n\t\tthis.createALignSome(typeName, \"\", \"type\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\t\tthis.createALignSome(this._name, \"type\", \"\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY);\n\t\tif(!pmui.NodeLayer.KUMIR_MODE)\n\t\t\tthis.createALignSome(this._variableValue, \"\", \"\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, -pmui.AllocNode.DEBUG_WIDTH, 0, pmui.NodeLayer.SEPARATORX, 0);\n\n\t\tthis.addChild(typeName);\n\t\tthis.addChild(this._name);\n\t\tif(!pmui.NodeLayer.KUMIR_MODE)\n\t\t\tthis.addChild(this._variableValue);\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn new VarFunctionButton(this.type, this.getVarName(), this.getTypeName());\n\t},\n\n\tmakeCleanUp: function ()\n\t{\n\t\tpm.sendCustomEvent(pm.VARIABLE_DEFINITION_REMOVED, this._variableName);\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this._name];\n\t},\n\n\tcalculateSize: function (forPar)\n\t{\n\t\tvar size = this.sizeOfContainer(this, true);\n\t\tif(!pmui.NodeLayer.KUMIR_MODE && this._variableValue)\n\t\t\tthis.setContentSize(size.width + pmui.AllocNode.DEBUG_WIDTH - this._variableValue.width, size.height);\n\t\telse\n\t\t\tthis.setContentSize(size);\n\t\tif (!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tgetTypeName: function ()\n\t{\n\t\treturn this._typeName;\n\t},\n\n\tsetTypeName: function (type)\n\t{\n\t\treturn this._typeName = type;\n\t},\n\n\tgetVarName: function()\n\t{\n\t\treturn this._variableName;\n\t},\n\n\tisBool: function ()\n\t{\n\t\treturn this._name.isBool();\n\t},\n\n\tisAlloc: function()\n\t{\n\t\treturn true;\n\t},\n\n\tisInt: function ()\n\t{\n\t\treturn this._name.isInt();\n\t},\n\n\tremoveLink: function (link)\n\t{\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\treturn;\n\t}\n});\n\npmui.AllocNode.intVals = [\n\t\"x\",\n\t\"y\",\n\t\"k\",\n\t\"a\",\n\t\"b\",\n\t\"c\"\n];\npmui.AllocNode.boolVals = [\n];\n\npmui.AllocNode.INT_NAMING = \"intName\";\npmui.AllocNode.BOOL_NAMING = \"boolName\";\npmui.AllocNode.DEBUG_WIDTH = 15;\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.CommandNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_params: [],\n\t_prevWidth: 0,\n\t_name: null,\n\t_rBrace: null,\n\t_robotType: null,\n\n\tctor: function (treeNode, parent, commandName, robotType, isIntMethod)\n\t{\n\t\tthis.type = FunctionButton.Type.Method;\n\t\tthis._robotType = robotType;\n\t\tif(isIntMethod)\n\t\t{\n\t\t\tthis._withRoundBorder = true;\n\t\t\tthis.type = FunctionButton.Type.IntMethod;\n\t\t\tthis._repTypes = [FunctionButton.Type.IntMethod];\n\t\t}\n\t\telse\n\t\t\tthis._withBorder = true;\n\n\t\tthis._super(parent, treeNode);\n\t\tif(treeNode)\n\t\t\tthis._params = new Array(treeNode.getChildren().length);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._name = treeNode.value;\n\t\tvar name = this.createText(commandName);\n\n\t\tvar leftMargin = this._params.length === 0 ? Math.max((ProgramLayer.BUTTON_WIDTH - name.width) / 2, pmui.NodeLayer.SEPARATORX) : pmui.NodeLayer.SEPARATORX;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\tleftMargin = pmui.NodeLayer.SEPARATORX;\n\t\tthis.createALignSome(name, \"\", pmui.CommandNode.COMMAND_NAME_TAG, ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL,\n\t\t\tleftMargin, 0, pmui.NodeLayer.SEPARATORX, 0);\n\t\tthis.addChild(name);\n\n\t\tpm.registerCustomEventListener(pm.FUNCTION_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data === this._name)\n\t\t\t\tthis._removeNodeFromTree();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.FUNCTION_PARAMS_CHANGED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data.name === this._name)\n\t\t\t{\n\t\t\t\tthis._removeNodeFromTree();\n\t\t\t}\n\t\t}.bind(this), this);\n\n\t},\n\n\tclone: function ()\n\t{\n\t\tif(this._withRoundBorder)\n\t\t\treturn pm.appUtils.generateFunctionButton(FunctionButton.Type.IntMethod, this._treeNode.value);\n\t\telse if(this._robotType === pm.GlobalRobotType.Output || pmui.FunctionNode.vals.has(this._treeNode.value))\n\t\t\treturn new VarFunctionButton(FunctionButton.Type.Method, this._treeNode.value);\n\t\telse\n\t\t\treturn pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, this._treeNode.value);\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tvar tag = node._treeNode.getTagName();\n\t\tif (tag.indexOf(pm.CommanParamTag) !== -1)\n\t\t{\n\t\t\tvar paramOrder = Number(tag.replace(pm.CommanParamTag, \"\"));\n\t\t\tvar parent = this._treeNode;\n\t\t\tif (!this._params[paramOrder] && paramOrder > 0) //first adding of the second and else elems \", 0\"\n\t\t\t{\n\t\t\t\tvar comma = this.createText(\",\");\n\t\t\t\tthis.createALignSome(comma, pm.CommanParamTag + (paramOrder - 1), pmui.CommandNode.COMMAND_COMMA_TAG + paramOrder, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t\t0, 0, 0, 0);\n\t\t\t\tthis.addChild(comma);\n\n\t\t\t\tthis.createALignSome(node, pmui.CommandNode.COMMAND_COMMA_TAG + paramOrder, tag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t\tpmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\t\t\t}\n\t\t\telse if (paramOrder === 0 && !this._params[paramOrder]) //first adding of first elem \"(0)\"\n\t\t\t{\n\t\t\t\tvar lBrace = this.createText(\"(\");\n\t\t\t\tthis.createALignSome(lBrace, pmui.CommandNode.COMMAND_NAME_TAG, pmui.CommandNode.COMMAND_L_BRACE_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t\t0, 0, 0, 0);\n\n\t\t\t\tthis.createALignSome(node, pmui.CommandNode.COMMAND_L_BRACE_TAG, tag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t\tpmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\n\t\t\t\tthis._rBrace = this.createText(\")\");\n\t\t\t\tthis.createALignSome(this._rBrace, \"\", pmui.CommandNode.COMMAND_R_BRACE_TAG, ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL,\n\t\t\t\t\t0, 0, pmui.NodeLayer.SEPARATORX, 0);\n\n\t\t\t\tthis.addChild(lBrace);\n\t\t\t\tthis.addChild(this._rBrace);\n\t\t\t}\n\t\t\telse if (this._params[paramOrder]) // param replace\n\t\t\t{\n\t\t\t\tvar param = this._params[paramOrder];\n\t\t\t\tparent.removeChild(param._treeNode);\n\t\t\t\tvar align = param.getLayoutParameter().clone();\n\t\t\t\tnode.setLayoutParameter(align);\n\t\t\t\tthis.removeChild(param);\n\t\t\t}\n\t\t\tthis._params[paramOrder] = node;\n\t\t\tthis.addChild(node);\n\t\t}\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tvar treeNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Number, 0);\n\t\ttreeNode.setTagName(node._treeNode.getTagName());\n\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: treeNode, parent: this});\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn this._params;\n\t},\n\n\tcalculateSize: function (notCalculateSize)\n\t{\n\t\tvar size = this.sizeOfContainer(this, true);\n\t\tif(!pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tthis.setContentSize(Math.max(ProgramLayer.BUTTON_WIDTH, size.width), Math.max(ProgramLayer.BUTTON_HEIGHT, size.height));\n\t\t}\n\t\telse\n\t\t\tthis.setContentSize(size);\n\t\tif(!notCalculateSize)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tisMethod: function()\n\t{\n\t\treturn true;\n\t},\n\n\tmakeCleanUp: function()\n\t{\n\t\tpm.sendCustomEvent(pm.COMMAND_REMOVED);\n\t},\n\n\tgetName: function()\n\t{\n\t\treturn this._name;\n\t}\n});\n\n\npmui.CommandNode.COMMAND_NAME_TAG = \"commandName\";\npmui.CommandNode.COMMAND_COMMA_TAG = \"comma\";\npmui.CommandNode.COMMAND_L_BRACE_TAG = \"lBrace\";\npmui.CommandNode.COMMAND_R_BRACE_TAG = \"rBrace\";\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.IfNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\n\t_condition: null,\n\t_thenBody: null,\n\n\tctor: function (treeNode, parent, type)\n\t{\n\t\tthis.isPartlyClonable = true;\n\t\tthis._withBorder = true;\n\t\tthis.type = FunctionButton.Type.IfStatement;\n\t\tthis._super(parent, treeNode);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._type = type;\n\t\tif (this._condition === null)\n\t\t\tthis._condition = new pmui.ReplaceNode([FunctionButton.Type.Bool, FunctionButton.Type.Variable, FunctionButton.Type.LogicExpression], this);\n\n\t\tvar ifText = this.createText(\"if\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tvar thenName = this.createText(\"then\", pmui.NodeLayer.CONSTR_COLOR);\n\n\t\tvar end = this.createText(\"endif\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tend.setTag(pmui.IfNode.END_TAG);\n\t\tthis.createALignSome(ifText, \"\", \"if_text\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, pmui.NodeLayer.SEPARATORX, 2 *pmui.NodeLayer.SEPARATORY, 0, 0);\n\t\tthis.createALignSome(this._condition, \"if_text\", \"cond\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.createALignSome(thenName, \"if_text\", \"then\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, 0, pmui.NodeLayer.SEPARATORY, 0, 0);\n\n\t\tthis.addChild(ifText);\n\t\tifText.setTag(pmui.IfNode.IF_TEXT_TAG);\n\t\tthis.addChild(this._condition);\n\t\tthis.addChild(thenName);\n\t\tthenName.setTag(pmui.IfNode.THEN_TEXT_TAG);\n\t\tthis.addChild(end);\n\t\tend.setTag(pmui.IfNode.END_TAG);\n\n\t\tvar elseBlock = new pmui.NodeLayer(this, null);\n\t\telseBlock.select = this._firstElemSelect;\n\t\telseBlock.setContentSize(pmui.BodyNode.FIRST_WIDTH, pmui.BodyNode.FIRST_HEIGHT);\n\t\telseBlock._repTypes = [FunctionButton.Type.ElseBlock];\n\t\tthis.createALignSome(elseBlock, \"body\", \"elseBlock\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN,\n\t\t\t-ProgramContainerLayer.SEPARATOR_SIZEX, 0, 0, 0);\n\t\tthis.createALignSome(end, \"elseBlock\", \"end\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, 0, 0, 0, 0);\n\t\tthis.addChild(elseBlock);\n\t\telseBlock.setName(pmui.IfNode.ELSE_BLOCK_NAME);\n\t},\n\n\t_firstElemSelect: function()\n\t{\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-func-border.png\");\n\t\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\t\tthis.setCascadeOpacityEnabled(false);\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\taddChildNode: function(node)\n\t{\n\t\tvar tag = node._treeNode.getTagName();\n\t\tif(tag === pm.IFCondTag)\n\t\t{\n\t\t\tvar parent = this._treeNode;\n\t\t\tparent.removeChild(this._condition._treeNode);\n\n\t\t\tvar align = this._condition.getLayoutParameter().clone();\n\t\t\tnode.setLayoutParameter(align);\n\n\t\t\tthis.removeChild(this._condition);\n\t\t\tthis._condition = node;\n\t\t\tthis._condition._treeNode.setTagName(pm.IFCondTag);\n\t\t\tthis.addChild(node);\n\t\t}\n\t\telse if(tag === pm.IFThenTag)\n\t\t{\n\t\t\tthis._thenBody = node;\n\t\t\tthis.createALignSome(this._thenBody, \"then\", \"body\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tthis.addChild(this._thenBody);\n\t\t}\n\t\telse if(tag === pm.IFElseTag)\n\t\t{\n\t\t\tif(this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).isElseBlock())\n\t\t\t\treturn;\n\t\t\tthis.createALignSome(node, \"body\", \"elseBlock\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN,\n\t\t\t\t-ProgramContainerLayer.SEPARATOR_SIZEX, pmui.NodeLayer.SEPARATORY, 0, 0);\n\t\t\tthis.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).removeFromParent();\n\t\t\tnode.setName(pmui.IfNode.ELSE_BLOCK_NAME);\n\t\t\tthis.addChild(node);\n\t\t}\n\t},\n\n\tsetElseBody: function (node)\n\t{\n\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tif (!node._treeNode)\n\t\t\treturn;\n\t\tif (node._treeNode.getTagName() === pm.IFCondTag)\n\t\t{\n\t\t\tvar boolNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\t\t\tboolNode.setTagName(pm.IFCondTag);\n\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: boolNode, parent: this});\n\t\t}\n\t\telse if (node._treeNode.getTagName() === pm.IFElseTag)\n\t\t{\n\t\t\tvar elseBlock = this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME);\n\t\t\tthis._treeNode.removeChild(elseBlock.getBody()._treeNode);\n\t\t\telseBlock.removeFromParent();\n\t\t\tthis._treeNode.value = pm.IfVals.IF_ST;\n\n\t\t\tvar newElseBlock = new pmui.NodeLayer(this, null);\n\t\t\tnewElseBlock.select = this._firstElemSelect;\n\t\t\tnewElseBlock.setContentSize(pmui.BodyNode.FIRST_WIDTH, pmui.BodyNode.FIRST_HEIGHT);\n\t\t\tnewElseBlock._repTypes = [FunctionButton.Type.ElseBlock];\n\t\t\tthis.createALignSome(newElseBlock, \"body\", \"elseBlock\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN,\n\t\t\t\t-ProgramContainerLayer.SEPARATOR_SIZEX, 0, 0, 0);\n\t\t\tthis.addChild(newElseBlock);\n\t\t\tnewElseBlock.setName(pmui.IfNode.ELSE_BLOCK_NAME);\n\t\t}\n\t\telse {\n\t\t\treturn;\n\t\t}\n\t},\n\n\tcalculateSize: function (isPar)\n\t{\n\t\tvar bodyWidth = 0;\n\t\tvar bodyHeight = 0;\n\t\tif(this._thenBody)\n\t\t{\n\t\t\tbodyWidth = this._thenBody.width;\n\t\t\tbodyHeight = this._thenBody.height;\n\t\t}\n\t\tvar width = Math.max(this.getChildByTag(pmui.IfNode.IF_TEXT_TAG).width + pmui.NodeLayer.SEPARATORX + this._condition.width, bodyWidth + ProgramContainerLayer.SEPARATOR_SIZEX);\n\t\tvar height = Math.max(this.getChildByTag(pmui.IfNode.IF_TEXT_TAG).height, this._condition.height)\n\t\t\t+ this.getChildByTag(pmui.IfNode.THEN_TEXT_TAG).height\n\t\t\t+ bodyHeight - pmui.BodyNode.FIRST_HEIGHT\n\t\t\t+ this.getChildByTag(pmui.IfNode.END_TAG).height + pmui.NodeLayer.SEPARATORY;\n\t\tif(this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).isElseBlock())\n\t\t{\n\t\t\tthis.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).calculateSize(true);\n\t\t\theight += pmui.NodeLayer.SEPARATORY;\n\t\t}\n\t\twidth = Math.max(width, this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).width);\n\t\theight += this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME).height;\n\t\tthis.setContentSize(width + 2 * pmui.NodeLayer.SEPARATORX, height + 2 * pmui.NodeLayer.SEPARATORY);\n\t\tthis.forceDoLayout();\n\t\tif (!isPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, this._type);\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\tif (this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME))\n\t\t\treturn [this._condition, this._thenBody, this.getChildByName(pmui.IfNode.ELSE_BLOCK_NAME)];\n\t\telse\n\t\t\treturn [this._condition, this._thenBody];\n\t},\n\n\tcanAdd: function(element)\n\t{\n\t\tif(this._addTypes.indexOf(element) !== -1 )\n\t\t\treturn true;\n\t\treturn false;\n\t}\n});\n\n\npmui.IfNode.vals = [\n\tpm.IfVals.IF_ST,\n\tpm.IfVals.IF_ELSE\n]\npmui.IfNode.ELSE_BLOCK_NAME = \"else_block_name\";\npmui.IfNode.END_TAG = 2;\npmui.IfNode.IF_TEXT_TAG = 3;\npmui.IfNode.IF_COND_TAG = 4;\npmui.IfNode.THEN_TEXT_TAG = 5;\npmui.IfNode.ELSE_WORD_TAG = 3;\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.ElseBlock = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\n\t_elseBody: null,\n\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis.isPartlyClonable = true;\n\n\t\tthis.type = FunctionButton.Type.ElseBlock;\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis._addTypes = [FunctionButton.Type.Method, FunctionButton.Type.IfStatement, FunctionButton.Type.Repeater,\n\t\t\tFunctionButton.Type.Alloc, FunctionButton.Type.Statement, FunctionButton.Type.Empty, FunctionButton.Type.MethodList, FunctionButton.Type.HorizontalBar];\n\n\t\tvar elseName = this.createText(\"else\", pmui.NodeLayer.CONSTR_COLOR);\n\t\telseName.setTag(pmui.IfNode.ELSE_WORD_TAG);\n\t\tthis._elseBody = new pmui.BodyNode(treeNode, parent);\n\t\tthis.addChild(elseName);\n\t\tthis.addChild(this._elseBody);\n\n\t\tthis.createALignSome(elseName, \"\", \"else_text\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, 0, pmui.NodeLayer.SEPARATORY,0,0);\n\t\tthis.createALignSome(this._elseBody, \"else_text\", \"elseBody\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\n\t\tthis.setContentSize(this._elseBody.width, this._elseBody.height + elseName.height);\n\t\tthis._elseBody.set(treeNode);\n\t},\n\n\tgetBody: function()\n\t{\n\t\treturn this._elseBody;\n\t},\n\n\tcalculateSize: function (isPar)\n\t{\n\t\tthis._elseBody.calculateSize(true);\n\t\tvar width = this._elseBody.width + ProgramContainerLayer.SEPARATOR_SIZEX;\n\t\tvar height = this._elseBody.height + this.getChildByTag(pmui.IfNode.ELSE_WORD_TAG).height - pmui.NodeLayer.SEPARATORY;\n\t\tthis.setContentSize(width, height);\n\t\tif (!isPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(FunctionButton.Type.ElseBlock, pm.IfVals.IF_ELSE);\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this._elseBody];\n\t},\n\n\tisElseBlock:function()\n\t{\n\t\treturn true;\n\t},\n\n\taddChildNode: function (node, selectedNode)\n\t{\n\t\tthis._elseBody.addChildNode(node, selectedNode);\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tthis._elseBody._removeNode(node);\n\t}\n});\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.ConditionNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\n\t_condButton: null,\n\n\tctor: function (treeNode, parent, value, levelType)\n\t{\n\t\tthis._super(parent, treeNode);\n\t\tthis.type = FunctionButton.Type.Condition;\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.drawBackground();\n\t\tthis._repTypes = [FunctionButton.Type.Condition, FunctionButton.Type.LogicExpression,\n\t\t\tFunctionButton.Type.Variable];\n\t\t// this._addTypes = [FunctionButton.Type.Condition];\n\n\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\talign.setMargin(15, 10, 15, 0);\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\talign.setMargin(5, 10, 5, 0);\n\t\t}\n\t\tthis._condButton = this.createText(LocalizedString(pm.moduleUtils.getRobotConditionName(levelType, value)));\n\t\tthis._condButton.setLayoutParameter(align);\n\t\tthis.addChild(this._condButton);\n\t},\n\n\tselect: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\thighlight: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tdrawBackground: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (!this.isEditable())\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-blocked.png\");\n\t\telse\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-border.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(false);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tdeSelect: function ()\n\t{\n\t\tthis.drawBackground();\n\t\tthis._selected = false;\n\t\tthis.setTag(ProgramContainerLayer.NOT_SELECTED_TAG);\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(FunctionButton.Type.Condition, this._treeNode.value);\n\t},\n\n\tcalculateSize: function (forPar)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\tthis.setContentSize(this._condButton.width, this._condButton.height);\n\t\telse\n\t\t\tthis.sizeOfContainer(this);\n\t\tif (!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t}\n});\n\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.RepeaterNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_type: null,\n\n\tctor: function (treeNode, parent, type)\n\t{\n\t\tvar topSep = - 10;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\ttopSep = - pmui.BodyNode.FIRST_HEIGHT;\n\t\t}\n\n\t\tthis.type = FunctionButton.Type.Repeater;\n\t\tthis.isPartlyClonable = true;\n\t\tthis._withBorder = true;\n\t\tthis._super(parent, treeNode);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._type = type;\n\t\tvar text = this.createText(\"cb\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tvar end = this.createText(\"cend\", pmui.NodeLayer.CONSTR_COLOR);\n\n\t\tthis.createALignSome(text, \"\", pmui.RepeaterNode.BEGIN_TAG, ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY *2, 0,0);\n\t\tthis.createALignSome(end, pmui.RepeaterNode.BODY_TAG, pmui.RepeaterNode.END_TAG, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN,\n\t\t\t-ProgramContainerLayer.SEPARATOR_SIZEX, -pmui.NodeLayer.SEPARATORY, 0, 0);\n\n\t\tthis.addChild(text);\n\t\tthis.addChild(end);\n\n\t},\n\n\tupdateIteratorVal: function () {}\n});\npmui.RepeaterNode.BEGIN_TAG = \"begin_cycle\";\npmui.RepeaterNode.BODY_TAG = \"cycle_body\";\npmui.RepeaterNode.END_TAG = \"end_cycle\";\npmui.RepeaterNode.vals = [\n\tpm.LoopVals.for,\n\tpm.LoopVals.nTimes,\n\tpm.LoopVals.whileC\n];\n\npmui.RepeaterNode.Constants = [\n\tpm.Constants.One,\n\tpm.Constants.Two,\n\tpm.Constants.Three,\n\tpm.Constants.Four,\n\tpm.Constants.Five,\n\tpm.Constants.Six\n];\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.NTimesRepeaterNode = pmui.RepeaterNode.extend(/** @lends pmui.NodeLayer# */{\n\t_number: null,\n\n\tctor: function (treeNode, parent, type)\n\t{\n\t\tthis._super(treeNode, parent, type);\n\t\tthis._drawNode();\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tif(node._treeNode.getTagName() === pm.BodyTag\n\t\t\t|| node._treeNode.type === pm.data.Node.Type.Body)\n\t\t{\n\t\t\tthis._bodyNode = node;\n\t\t\tthis.createALignSome(this._bodyNode, pmui.RepeaterNode.BEGIN_TAG, pmui.RepeaterNode.BODY_TAG, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tthis.addChild(this._bodyNode);\n\t\t\treturn;\n\t\t}\n\t\tnode._repTypes = [FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression, FunctionButton.Type.Constant, FunctionButton.Type.IntMethod];\n\t\tvar parent = this._treeNode;\n\t\tparent.removeChild(this._number._treeNode);\n\n\t\tvar align = this._number.getLayoutParameter().clone();\n\t\tnode.setLayoutParameter(align);\n\n\t\tthis.removeChild(this._number);\n\t\tthis._number = node;\n\t\tthis._number._treeNode.setTagName(pm.NTimesNumTag);\n\t\tthis.addChild(node);\n\t},\n\n\t_drawNode: function ()\n\t{\n\t\tvar text2 = this.createText(\"times\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tif (this._number === null)\n\t\t\tthis._number = new pmui.ReplaceNode([FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression], this);\n\n\t\tthis.createALignSome(this._number, pmui.RepeaterNode.BEGIN_TAG, pm.NTimesNumTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis.createALignSome(text2, pm.NTimesNumTag, \"\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.addChild(this._number);\n\t\tthis.addChild(text2);\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tif (node._treeNode.getTagName() === pm.NTimesNumTag)\n\t\t{\n\t\t\tvar num = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Number, 0);\n\t\t\tnum.setTagName(pm.NTimesNumTag);\n\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: num, parent: this});\n\t\t}\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this._number, this._bodyNode];\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, pm.LoopVals.nTimes);\n\t},\n\n\tcalculateSize:function (forPar)\n\t{\n\t\tvar sep = pmui.NodeLayer.SEPARATORY;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tsep = pmui.BodyNode.FIRST_HEIGHT;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsep = pmui.BodyNode.FIRST_HEIGHT;\n\t\t}\n\t\tvar bodyWidth = 0;\n\t\tvar bodyHeight = 0;\n\t\tif(this._bodyNode)\n\t\t{\n\t\t\tbodyWidth = this._bodyNode.width;\n\t\t\tbodyHeight = this._bodyNode.height;\n\t\t}\n\t\tthis.setContentSize(\n\t\t\tMath.max(bodyWidth + ProgramContainerLayer.SEPARATOR_SIZEX, this.createText(\"cb\").width + this._number.width + this.createText(\"times\").width + pmui.NodeLayer.SEPARATORX * 2) + pmui.NodeLayer.SEPARATORX * 2,\n\t\t\tMath.max(this.createText(\"cb\").height, this._number.height) + bodyHeight + this.createText(\"cend\").height - sep);\n\t\tif(!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t}\n});\n\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.WhileRepeaterNode = pmui.RepeaterNode.extend(/** @lends pmui.NodeLayer# */{\n\n\t_condition: null,\n\n\tctor: function (treeNode, parent, type)\n\t{\n\t\tthis._super(treeNode, parent, type);\n\n\t\tvar while_text = this.createText(\"while\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tif (this._condition === null)\n\t\t\tthis._condition = new pmui.ReplaceNode([FunctionButton.Type.Bool, FunctionButton.Type.Variable, FunctionButton.Type.LogicExpression], this);\n\n\t\tthis.createALignSome(while_text, pmui.RepeaterNode.BEGIN_TAG,pmui.WhileRepeaterNode.WHILE_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\tpmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis.createALignSome(this._condition, pmui.WhileRepeaterNode.WHILE_TAG, \"\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis.addChild(this._condition);\n\n\t\tthis.addChild(while_text);\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tif (!node._treeNode)\n\t\t\treturn;\n\t\tif (node._treeNode.getTagName() === pm.WhileCondTag)\n\t\t{\n\t\t\tvar boolNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\t\t\tboolNode.setTagName(pm.WhileCondTag);\n\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: boolNode, parent: this});\n\t\t}\n\t},\n\n\taddChildNode: function(node)\n\t{\n\t\tif(node._treeNode.getTagName() === pm.BodyTag\n\t\t\t|| node._treeNode.type === pm.data.Node.Type.Body)\n\t\t{\n\t\t\tthis._bodyNode = node;\n\t\t\tthis.createALignSome(this._bodyNode, pmui.RepeaterNode.BEGIN_TAG, pmui.RepeaterNode.BODY_TAG, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tthis.addChild(this._bodyNode);\n\t\t\treturn;\n\t\t}\n//\t\tnode._repTypes = [FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression];\n\t\tvar parent = this._treeNode;\n\t\tparent.removeChild(this._condition._treeNode);\n\n\t\tvar align = this._condition.getLayoutParameter().clone();\n\t\tnode.setLayoutParameter(align);\n\n\t\tthis.removeChild(this._condition);\n\t\tthis._condition = node;\n\t\tthis._condition._treeNode.setTagName(pm.WhileCondTag);\n\t\tthis.addChild(node);\n\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this._condition, this._bodyNode];\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, pm.LoopVals.whileC);\n\t},\n\n\tcalculateSize:function (forPar)\n\t{\n\t\tvar bodyWidth = 0;\n\t\tvar bodyHeight = 0;\n\t\tif(this._bodyNode)\n\t\t{\n\t\t\tbodyWidth = this._bodyNode.width;\n\t\t\tbodyHeight = this._bodyNode.height;\n\t\t}\n\t\tthis.setContentSize(Math.max(bodyWidth + ProgramContainerLayer.SEPARATOR_SIZEX,\n\t\t\t\t\t\t\t\t\tthis.createText(\"cb\").width + this._condition.width + this.createText(\"while\").width + pmui.NodeLayer.SEPARATORX * 2)\n\t\t\t\t\t\t\t\t+ pmui.NodeLayer.SEPARATORX * 2,\n\t\t\t\t\t\t\tthis._condition.height + bodyHeight + this.createText(\"cend\").height - pmui.BodyNode.FIRST_HEIGHT + pmui.NodeLayer.SEPARATORY);\n\t\tif(!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t}\n\n});\n\npmui.WhileRepeaterNode.WHILE_TAG = \"while\";\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.ForRepeaterNode = pmui.RepeaterNode.extend(/** @lends pmui.NodeLayer# */{\n\t_iterator: null,\n\t_begVal: null,\n\t_endVal: null,\n\t_step: null,\n\n\n\tctor: function (treeNode, parent, type)\n\t{\n\t\tthis._super(treeNode, parent, type);\n\n\t\tthis._drawNode();\n\t\tpm.registerCustomEventListener(pm.VARIABLE_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data === this._iterator.getName())\n\t\t\t\tthis._removeNodeFromTree();\n\t\t}.bind(this), this);\n\t},\n\n\taddChildNode: function(node)\n\t{\n\t\tvar tag = node._treeNode.getTagName();\n\t\tvar parent = this._treeNode;\n\t\tif(tag === pm.ForIteratorTag)\n\t\t{\n\t\t\tparent.removeChild(this._iterator._treeNode);\n\t\t\tthis.removeChild(this._iterator);\n\n\t\t\tthis.createALignSome(node, pmui.ForRepeaterNode.FOR_TAG, pm.ForIteratorTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\tpmui.NodeLayer.SEPARATORX, 0,0,0);\n\t\t\tnode._treeNode.setTagName(pm.ForIteratorTag);\n\t\t\tthis._iterator = node;\n\t\t}\n\t\telse if(tag === pm.ForBegTag)\n\t\t{\n\t\t\tparent.removeChild(this._begVal._treeNode);\n\t\t\tthis.removeChild(this._begVal);\n\n\t\t\tthis.createALignSome(node, pmui.ForRepeaterNode.FROM_TAG, pm.ForBegTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\tpmui.NodeLayer.SEPARATORX, 0,0,0);\n\t\t\tnode._treeNode.setTagName(pm.ForBegTag);\n\t\t\tthis._begVal = node;\n\t\t}\n\t\telse if(tag === pm.ForEndTag)\n\t\t{\n\t\t\tparent.removeChild(this._endVal._treeNode);\n\t\t\tthis.removeChild(this._endVal);\n\n\t\t\tnode._treeNode.setTagName(pm.ForEndTag);\n\t\t\tthis.createALignSome(node, pmui.ForRepeaterNode.TO_TAG, pm.ForEndTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\tpmui.NodeLayer.SEPARATORX, 0,0,0);\n\t\t\tthis._endVal = node;\n\t\t}\n\t\telse if(tag === pmui.ForRepeaterNode.STEP_TAG)\n\t\t{\n\t\t\tthis._step = node;\n\t\t\tnode._treeNode.setTagName(pmui.ForRepeaterNode.STEP_TAG);\n\t\t}\n\t\telse if(tag === pm.BodyTag\n\t\t\t|| node._treeNode.type === pm.data.Node.Type.Body)\n\t\t{\n\t\t\tthis._bodyNode = node;\n\t\t\tthis.createALignSome(this._bodyNode, pmui.RepeaterNode.BEGIN_TAG, pmui.RepeaterNode.BODY_TAG, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t}\n\t\tthis.addChild(node);\n\t},\n\n\t_removeNode: function(node)\n\t{\n\t\tif(tag === pm.ForIteratorTag)\n\t\t\treturn ;\n\t\tvar treeNode = pm.data.SyntaxTree.createNode(this._treeNode,pm.data.Node.Type.Number, 0);\n\t\ttreeNode.setTagName(node._treeNode.getTagName());\n\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: treeNode, parent: this});\n\t},\n\n\t_drawNode: function()\n\t{\n\t\tthis._iterator = new pmui.ReplaceNode([FunctionButton.Type.Variable], this);\n\t\tthis._begVal = new pmui.ReplaceNode([FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression], this);\n\t\tthis._endVal = new pmui.ReplaceNode([FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression], this);\n\n\t\tvar text2 = this.createText(\"for\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tvar text3 = this.createText(\"from\", pmui.NodeLayer.CONSTR_COLOR);\n\t\tvar text4 = this.createText(\"to\", pmui.NodeLayer.CONSTR_COLOR);\n\n\n\t\tthis.createALignSome(text2, pmui.RepeaterNode.BEGIN_TAG, pmui.ForRepeaterNode.FOR_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\tthis.addChild(text2);\n\n\t\tthis.addChild(this._iterator);\n\t\tthis.createALignSome(this._iterator, pmui.ForRepeaterNode.FOR_TAG, pm.ForIteratorTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.addChild(text3);\n\t\tthis.createALignSome(text3, pm.ForIteratorTag, pmui.ForRepeaterNode.FROM_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.addChild(this._begVal);\n\t\tthis.createALignSome(this._begVal, pmui.ForRepeaterNode.FROM_TAG, pm.ForBegTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.addChild(text4);\n\t\tthis.createALignSome(text4, pm.ForBegTag, pmui.ForRepeaterNode.TO_TAG, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.addChild(this._endVal);\n\t\tthis.createALignSome(this._endVal, pmui.ForRepeaterNode.TO_TAG, pm.ForEndTag, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\n\t\tthis.calculateSize(true);\n\t},\n\n\tcalculateSize:function (forPar)\n\t{\n\t\tvar sep = pmui.BodyNode.FIRST_HEIGHT;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tsep = pmui.BodyNode.FIRST_HEIGHT - pmui.NodeLayer.SEPARATORY - 3;\n\t\t}\n\t\tvar bodyWidth = 0;\n\t\tvar bodyHeight = 0;\n\t\tif(this._bodyNode)\n\t\t{\n\t\t\tbodyWidth = this._bodyNode.width;\n\t\t\tbodyHeight = this._bodyNode.height;\n\t\t}\n\t\tthis.setContentSize(Math.max(bodyWidth + ProgramContainerLayer.SEPARATOR_SIZEX,\n\t\t\tthis.createText(\"cb\").width + this.createText(\"for\").width + this.createText(\"from\").width + this.createText(\"to\").width\n\t\t\t+ this._iterator.width + this._begVal.width + this._endVal.width + pmui.NodeLayer.SEPARATORX * 6) + pmui.NodeLayer.SEPARATORX * 2,\n\t\t\tthis._iterator.height + bodyHeight + this.createText(\"cend\").height - sep);\n\t\tif(!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tgetChildrenNodes: function()\n\t{\n\t\treturn [this._iterator, this._begVal, this._endVal, this._bodyNode];\n\t},\n\n\tclone: function()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, pm.LoopVals.for);\n\t},\n\n\tmakeCleanUp: function ()\n\t{\n\t\tpmui.AllocNode.intVals.splice(pmui.AllocNode.intVals.indexOf(this._iterator.getName()));\n\t},\n\n\tupdateIteratorVal: function (num)\n\t{\n\t\tpm.sendCustomEvent(pm.VARIABLE_VALUE_CHANGED, {name: this._iterator.getName(), val: num});\n\t}\n});\n\npmui.ForRepeaterNode.FROM_TAG = \"from\";\npmui.ForRepeaterNode.TO_TAG = \"to\";\n\npmui.ForRepeaterNode.STEP_TAG = \"step\";\npmui.ForRepeaterNode.FOR_TAG = \"for\";\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.NumberNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_number: null,\n\t_repId: 0,\n\t_changeLayout: null,\n\ttext: null,\n\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis._withRoundBorder = true;\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.text = this.createText(this._treeNode.value, pmui.NodeLayer.CONST_COLOR);\n\t\tpmui.NodeLayer.KUMIR_MODE\n\t\t\t? this.createALignSome(this.text, \"\", \"\", ccui.RelativeLayoutParameter.PARENT_TOP_LEFT)\n\t\t\t: this.createALignSome(this.text, \"\", \"\", ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\n\t\tthis.addChild(this.text);\n\t\tthis._repTypes = [FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression, FunctionButton.Type.Constant, FunctionButton.Type.IntMethod];\n\t\tpm.registerCustomEventListener(pm.CHANGE_NUMBER_NODE, function (event)\n\t\t{\n\t\t\tif(this.isSelected())\n\t\t\t{\n\t\t\t\tvar data = event.getUserData();\n\t\t\t\tif(data.code === NumberInputLayer.NUMBER_CODE)\n\t\t\t\t\tthis._addNumber(data.number);\n\t\t\t\telse if(data.code === NumberInputLayer.MINUS_CODE)\n\t\t\t\t\tthis._changeSignNumber();\n\t\t\t\telse if(data.code === NumberInputLayer.REMOVE_CODE)\n\t\t\t\t\tthis._removeNumber();\n\t\t\t}\n\t\t}.bind(this), this);\n\t},\n\n\n\t_addNumber: function (num)\n\t{\n\t\tNumber(this.getValue())\n\t\t\t? this.setValue(this.getValue() + num)\n\t\t\t: this.setValue(num);\n\t},\n\n\t_removeNumber: function ()\n\t{\n\t\tvar str = this.getValue().slice(0, -1);\n\t\tif (str === \"\")\n\t\t\tthis.setValue(0);\n\t\telse if (str === NumberInputLayer.MINUS)\n\t\t\tthis.setValue(NumberInputLayer.MINUS + \"0\");\n\t\telse\n\t\t\tthis.setValue(str);\n\t},\n\n\t_changeSignNumber: function ()\n\t{\n\t\tthis.getValue().charAt(0) === NumberInputLayer.MINUS\n\t\t? this.setValue(this.getValue().slice(1))\n\t\t: this.setValue(NumberInputLayer.MINUS + this.getValue());\n\t},\n\n\tcalculateSize: function(isPar)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tthis.setContentSize(this.text.width, this.text.height);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setContentSize(Math.max(pmui.NumberNode.DEFAULT_WIDTH, this.text.width + pmui.NodeLayer.SEPARATORX * 4), pmui.NumberNode.DEFAULT_HEIGHT);\n\t\t}\n\t\tif (!isPar)\n\t\t{\n\t\t\tthis._parentNode.calculateSize();\n\t\t\tthis._parentNode.forceDoLayout();\n\t\t}\n\t},\n\n\tclickCallback: function ()\n\t{\n\t\tif(!NumberInputLayer.isOpened)\n\t\t{\n\t\t\tProgramContainerLayer.select(this);\n\t\t\tpm.sendCustomEvent(pm.CHANGE_NUMBER_IN_INPUT_NODE, this);\n\t\t}\n\t\telse if(NumberInputLayer.isOpened)\n\t\t{\n\t\t\tif(this._selected)\n\t\t\t{\n\t\t\t\tpm.sendCustomEvent(pm.CLOSE_NUMBER_INPUT_LAYER, this);\n\t\t\t\tProgramContainerLayer.deselect();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tProgramContainerLayer.select(this);\n\t\t\t}\n\t\t}\n\t},\n\n\tsetValue: function (val)\n\t{\n\t\tif(Number(val) > 999999999)\n\t\t\treturn;\n\t\tthis._treeNode.value = Number(val);\n\n\t\tif(this.text.width + pmui.NodeLayer.SEPARATORX * 2 >= pmui.NumberNode.DEFAULT_WIDTH || this.width !== pmui.NumberNode.DEFAULT_WIDTH)\n\t\t{\n\t\t\tthis.text.setString(this._treeNode.value);\n\t\t\tthis.calculateSize();\n\t\t\tvar transform = this.getParent().getNodeToWorldTransform();\n\t\t\tvar objRect = cc.rectApplyAffineTransform(this.getBoundingBox(), transform);\n\t\t\tpm.sendCustomEvent(pm.UPDATE_SCROLL_POS,{height: pmui.NumberNode.DEFAULT_HEIGHT, posY: objRect.y})\n\t\t}\n\t\telse\n\t\t\tthis.text.setString(this._treeNode.value);\n\n\t\treturn this;\n\t},\n\n\tgetValue: function ()\n\t{\n\t\treturn String(this._treeNode.value);\n\t},\n\n\tselect: function()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t this.setBackGroundImage(pm.spriteUtils.getNodeLayerElementName(\"number-round\", pm.SELECTED_STATE),\n\t\t \tccui.Widget.PLIST_TEXTURE);\n\t\tthis.text.setColor(cc.color.WHITE)\n\t\tthis._selected = true;\n\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t},\n\n\tdeSelect: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.text.setColor(pmui.NodeLayer.CONST_COLOR);\n\t\tthis.drawBackground();\n\t\tthis._selected = false;\n\t\tthis.setTag(ProgramContainerLayer.NOT_SELECTED_TAG);\n\t},\n\n\tisNumber:function()\n\t{\n\t\treturn true;\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn new VarFunctionButton(FunctionButton.Type.Constant, this._treeNode.value);\n\t}\n});\n/**\n * Default width of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.NumberNode.DEFAULT_WIDTH = 40;\n/**\n * Default width of {@link pmui.TextInput}\n * @const\n * @default\n * @type {Number}\n */\npmui.NumberNode.DEFAULT_HEIGHT = 40;\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.BoolNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t//_number: null,\n\t_value: 1,\n\ttext: null,\n\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis._withRoundBorder = true;\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\t//this._number = new ccui.ImageView(pm.spriteUtils.getBoolSpriteName( pm.NORMAL_STATE),\n\t\t//ccui.Widget.PLIST_TEXTURE);\n\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\talign.setMargin(15, 5, 15, 5);\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\talign.setMargin(5, 10, 5, 0);\n\t\t}\n\t\tthis.text = this.createText(pm.BoolTrue, pmui.NodeLayer.CONST_COLOR, 18);\n\n\t\tthis.addChild(this.text);\n\t\t//this.createALignSome(this._number, \"\", \"\",ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tthis.text.setLayoutParameter(align);\n\t\tthis._repTypes = [FunctionButton.Type.Variable, FunctionButton.Type.Condition, FunctionButton.Type.LogicExpression];\n\t\t//this.calculateSize(true);\n\t},\n\n\t// select: function()\n\t// {\n\t// \tthis._number.loadTexture(pm.spriteUtils.getBoolSpriteName( pm.SELECTED_STATE),\n\t// \t\tccui.Widget.PLIST_TEXTURE);\n\t// },\n\t//\n\t// deSelect: function()\n\t// {\n\t// \tthis._number.loadTexture(pm.spriteUtils.getBoolSpriteName( pm.NORMAL_STATE),\n\t// \t\tccui.Widget.PLIST_TEXTURE);\n\t// },\n\tselect: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\thighlight: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tdrawBackground: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (!this.isEditable())\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-blocked.png\");\n\t\telse\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-border.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(false);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tclickCallback: function ()\n\t{\n\t\tif(this._value === 1)\n\t\t{\n\t\t\tthis._value = 0;\n\t\t\tthis._treeNode.value = 0;\n\t\t\tthis.text.setString(LocalizedString(pm.BoolFalse));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._value = 1;\n\t\t\tthis._treeNode.value = 1;\n\t\t\tthis.text.setString(LocalizedString(pm.BoolTrue));\n\t\t}\n\t},\n\n\tcalculateSize: function (forParent)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\tthis.setContentSize(this.text.getContentSize());\n\t\telse\n\t\t\tthis.sizeOfContainer(this);\n\n\t\tif(!forParent)\n\t\t\tthis._parentNode.calculateSize();\n\t}\n});\n\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\npmui.ReplaceNode = pmui.NodeLayer.extend(/** @lends ccui.Layout# */{\n\n\t_repId: 0,\n\n\tctor: function (repTypes, parent, treeNode)\n\t{\n\t\tthis._super(parent, treeNode);\n\t\tthis._repTypes = repTypes;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (repTypes[0] === FunctionButton.Type.Condition)\n\t\t{\n\t\t\tvar cond = new EmptyFunctionButton(FunctionButton.Type.Condition);\n\t\t\tthis.addChild(cond);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/replace-button.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t\tthis.setContentSize(40, 40);\n\n\t},\n\n\tdeSelect: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/replace-button.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = false;\n\t\t\tthis.setTag(ProgramContainerLayer.NOT_SELECTED_TAG);\n\t\t}\n\t},\n\n\tselect: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif (!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/replace-button-select.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\tisReplaceable: function()\n\t{\n\t\treturn true;\n\t},\n\n\tgetTagName: function ()\n\t{\n\t\treturn this._repId;\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [];\n\t},\n\n\tcloneImage: function ()\n\t{\n\t\treturn this.clone();\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(FunctionButton.Type.Empty, \"\");\n\t},\n\n\tcalculateSize: function (isPar)\n\t{\n\t\tthis.setContentSize(40, 40);\n\t\tif (!isPar)\n\t\t{\n\t\t\tthis._parentNode.calculateSize();\n\t\t}\n\t},\n\n\tdrawBackground: function ()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif(!this.isEditable())\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/replace-button-select.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/replace-button.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(15, 15, 10, 10));\n\t\t}\n\t},\n\n\tisEmpty:function()\n\t{\n\t\treturn true;\n\t}\n});\npmui.NodeLayer.KUMIR_MODE = false;\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.HorizontalBarNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\n\tctor: function (treeNode, parent, childNumber)\n\t{\n\t\tthis._withBorder = true;\n\t\tthis._super(parent, treeNode);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._addTypes = [FunctionButton.Type.Method];\n\t\tthis.forceDoLayout();\n\t\tthis.calculateSize(true);\n\t},\n\n\taddChildNode: function (node, placementTag)\n\t{\n\t\tif(!placementTag)\n\t\t{\n\t\t\tif(this.getChildrenCount())\n\t\t\t{\n\t\t\t\tvar childCount = this.getChildrenCount();\n\t\t\t\tthis.createALignSome(node, pmui.HorizontalBarNode.CHILD_TAG.format(childCount - 1), pmui.HorizontalBarNode.CHILD_TAG.format(childCount), ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER,\n\t\t\t\t\tpmui.NodeLayer.SEPARATORX, 0,0,0);\n\t\t\t\tnode._treeNode.setTagName(pmui.HorizontalBarNode.CHILD_TAG.format(childCount));\n\t\t\t\tthis.addChild(node);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.createALignSome(node, \"\", pmui.HorizontalBarNode.CHILD_TAG.format(0), ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY,pmui.NodeLayer.SEPARATORX,pmui.NodeLayer.SEPARATORY);\n\t\t\t\tnode._treeNode.setTagName(pmui.HorizontalBarNode.CHILD_TAG.format(0));\n\t\t\t\tthis.addChild(node);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar order = placementTag._treeNode.getTagName().replace(pmui.HorizontalBarNode.CHILD_TAG_name, \"\");\n\t\t\tvar child = placementTag;\n\n\t\t\tvar parent = this._treeNode;\n\n\t\t\tvar align = child.getLayoutParameter().clone();\n\t\t\tnode.setLayoutParameter(align);\n\n\t\t\tnode._treeNode.setTagName(child._treeNode.getTagName());\n\n\t\t\tthis.addChild(node);\n\t\t}\n\t\tthis.calculateSize(true);\n\t\treturn node;\n\t},\n\n\t_removeNode: function (node, isReplaced)\n\t{\n\t\tvar order = node._treeNode.getTagName().replace(pmui.HorizontalBarNode.CHILD_TAG_name, \"\");\n\t\tif(isReplaced === false)\n\t\t{\n\t\t\tvar treeNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Empty, \"\", node._treeNode);\n\t\t\tvar replace = new pmui.ReplaceNode(this._addTypes,\n\t\t\t\tthis,\n\t\t\t\ttreeNode);\n\t\t\tvar align = node.getLayoutParameter().clone();\n\t\t\treplace.setLayoutParameter(align);\n\t\t\ttreeNode.setTagName(node._treeNode.getTagName());\n\t\t\tthis.addChild(replace);\n\t\t}\n\n\t\tvar parent = this._treeNode;\n\t\tparent.removeChild(node._treeNode);\n\t\tthis.removeChild(node);\n\t\tthis.calculateSize(true);\n\t},\n\n\tcalculateSize: function (forParent)\n\t{\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tfor(var i = 0;i < this.getChildrenCount();i++)\n\t\t{\n\t\t\twidth += this.getChildren()[i].width + pmui.NodeLayer.SEPARATORX;\n\t\t\theight = Math.max(height, this.getChildren()[i].height)\n\t\t}\n\t\tthis.setContentSize(width + 30, height + pmui.NodeLayer.SEPARATORY * 2);\n\t\tif (!forParent)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn this.getChildren();\n\t},\n\n\tisHorizontalBar: function()\n\t{\n\t\treturn true;\n\t},\n\n\tclone: function ()\n\t{\n\t\tvar horBar = new pmui.HorizontalBarNode(null, this._parentNode);\n\t\thorBar.setContentSize(this.width, this.height);\n\t\treturn horBar;\n\t},\n\n\tcanAdd: function()\n\t{\n\t\treturn false;\n\t}\n});\n\npmui.HorizontalBarNode.CHILD_TAG = \"hor_bar_kid{0}\";\npmui.HorizontalBarNode.CHILD_TAG_name = \"hor_bar_kid\";\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.VariableNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\n\t_name: null,\n\t_varName: \"\",\n\t_typeName: \"\",\n\n\tctor: function (treeNode, parent, name, typeName)\n\t{\n\t\tthis._withRoundBorder = true;\n\t\tthis._super(parent, treeNode);\n\t\tthis.type = FunctionButton.Type.Variable;\n\t\tthis._repTypes = [FunctionButton.Type.Number, FunctionButton.Type.Variable, FunctionButton.Type.Expression,\n\t\t\tFunctionButton.Type.Constant, FunctionButton.Type.IntMethod];\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._varName = name;\n\t\tthis._typeName = typeName;\n\n\t\tvar nameText = this.createText(name, pmui.NodeLayer.CONSTR_COLOR);\n\t\tthis.createALignSome(nameText,\"\",\"\",ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tthis.addChild(nameText);\n\n\t\tif(!pmui.NodeLayer.KUMIR_MODE)\n\t\t\tthis.setBackGroundImage(pm.spriteUtils.getNodeLayerElementName(\"number-round\", pm.SELECTED_STATE));\n\n\t\tthis.calculateSize(true);\n\t\tpm.registerCustomEventListener(pm.VARIABLE_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data === this._varName && !(this._parentNode instanceof pmui.AllocNode))\n\t\t\t\tthis._removeNodeFromTree();\n\t\t}.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.DESELECT_FUNCTIONBUTTON, function (event)\n\t\t{\n\t\t\tif(this.getChildByTag(pmui.VariableNode.VARTAG))\n\t\t\t\tthis.getChildByTag(pmui.VariableNode.VARTAG).removeFromParent();\n\t\t}.bind(this), this);\n\n\t},\n\n\tcalculateSize: function(notCalculateSize)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tthis.setContentSize(this.createText(this._varName).width, this.createText(this._varName).height);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setContentSize(ProgramLayer.BUTTON_HEIGHT, ProgramLayer.BUTTON_HEIGHT);\n\n\t\t}\n\t\tif(!notCalculateSize)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tclone: function()\n\t{\n\t\tvar but = new VarFunctionButton(FunctionButton.Type.Variable, this._varName, this._typeName, this);\n\t\treturn but;\n\t},\n\n\tgetName: function ()\n\t{\n\t\treturn this._varName;\n\t},\n\n\tisBool: function ()\n\t{\n\t\treturn pmui.AllocNode.boolVals.indexOf(this._varName) !== -1;\n\t},\n\n\tisInt: function ()\n\t{\n\t\treturn pmui.AllocNode.intVals.indexOf(this._varName) !== -1;\n\t},\n\n\tgetVarType: function ()\n\t{\n\t\treturn this._typeName;\n\t},\n\n\tmakeCleanUp: function ()\n\t{\n\t\tif(this.getChildByTag(pmui.VariableNode.VARTAG) === FunctionButton.selectedButton && FunctionButton.selectedButton)\n\t\t\tFunctionButton.deselect();\n\t},\n\n\tdeSelect: function ()\n\t{\n\t\tif(this._selected)\n\t\t{\n\t\t\tthis.drawBackground();\n\t\t\tthis._selected = false;\n\t\t\tthis.setTag(ProgramContainerLayer.NOT_SELECTED_TAG);\n\t\t}\n\t},\n\n\tclickCallback: function ()\n\t{\n\t\tif(!this.getChildByTag(pmui.VariableNode.VARTAG)) {\n\t\t\tvar name = new VarFunctionButton(FunctionButton.Type.Variable, this._varName, this._typeName);\n\t\t\tname.setTag(pmui.VariableNode.VARTAG);\n\t\t\tname.select();\n\t\t\tthis.addChild(name);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getChildByTag(pmui.VariableNode.VARTAG).removeFromParent();\n\t\t\tFunctionButton.selectedButton = null;\n\t\t}\n\t}\n});\n\npmui.VariableNode.VARTAG = 1;\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.StatementNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_name: \"\",\n\n\tctor: function (treeNode, parent)\n\t{\n\t\tthis._withBorder = true;\n\t\tthis._super(parent, treeNode);\n\t\tthis.type = FunctionButton.Type.Statement;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar valReplace = new pmui.ReplaceNode([FunctionButton.Type.Variable, FunctionButton.Type.Number, FunctionButton.Type.Bool, FunctionButton.Type.Expression],\n\t\t\tthis);\n\n\t\tvalReplace._repId = pm.StatementValueTag;\n\n\t\tvar value = valReplace;\n\t\tvar rightAlign = new ccui.RelativeLayoutParameter();\n\t\trightAlign.setMargin(pmui.NodeLayer.SEPARATORX, 0, pmui.NodeLayer.SEPARATORX, 0);\n\t\trightAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL);\n\t\trightAlign.setRelativeName(\"right\");\n\t\tvalue.setLayoutParameter(rightAlign);\n\t\tvalue.setName(pmui.StatementNode.VALUE_TAG);\n\t\tthis.addChild(value);\n\n\t\tpm.registerCustomEventListener(pm.VARIABLE_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data === this._name)\n\t\t\t\tthis._removeNodeFromTree();\n\t\t}.bind(this), this);\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tvar tag = node._treeNode.getTagName();\n\t\tif (tag === pm.StatementVarTag)\n\t\t{\n\t\t\tthis._name = node.getName();\n\t\t\tnode._treeNode.setTagName(pm.StatementVarTag);\n\n\t\t\tnode.setName(pmui.StatementNode.VAR_TAG);\n\t\t\tvar leftAlign = new ccui.RelativeLayoutParameter();\n\t\t\tleftAlign.setMargin(pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORY, 0, pmui.NodeLayer.SEPARATORY);\n\t\t\tleftAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\t\tleftAlign.setRelativeName( \"lOp\");\n\t\t\tnode.setLayoutParameter(leftAlign);\n\t\t\tnode._repTypes = [];\n\n\t\t\tvar sign = this.createText(\":=\");\n\t\t\tthis._sign = sign;\n\n\t\t\tthis._sign.setSwallowTouches(true);\n\t\t\tthis._sign.setPropagateTouchEvents(true);\n\n\t\t\tvar centerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tcenterAlign.setMargin(pmui.NodeLayer.SEPARATORX, 0, 0, 0);\n\t\t\tcenterAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tcenterAlign.setRelativeName(\"center\");\n\t\t\tcenterAlign.setRelativeToWidgetName( \"lOp\");\n\t\t\tsign.setLayoutParameter(centerAlign);\n\t\t\tthis.addChild(sign);\n\t\t\tthis.addChild(node);\n\t\t}\n\t\telse if (tag === pm.StatementValueTag)\n\t\t{\n\t\t\tvar parent = this._treeNode;\n\t\t\tparent.removeChild(this.getChildByName(pmui.StatementNode.VALUE_TAG)._treeNode);\n\n\t\t\tvar align = this.getChildByName(pmui.StatementNode.VALUE_TAG).getLayoutParameter().clone();\n\t\t\tnode.setLayoutParameter(align);\n\t\t\tnode._treeNode.setTagName(pm.StatementValueTag);\n\t\t\tthis.getChildByName(pmui.StatementNode.VALUE_TAG).removeFromParent();\n\t\t\tnode.setName(pmui.StatementNode.VALUE_TAG);\n\t\t\tthis.addChild(node);\n\t\t}\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tif (node._treeNode.getTagName() === pm.StatementValueTag)\n\t\t{\n\t\t\tvar treeNode = this.getChildByName(pmui.StatementNode.VAR_TAG).isInt()\n\t\t\t\t? pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Number, 0)\n\t\t\t\t: pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\n\t\t\ttreeNode.setTagName(pm.StatementValueTag);\n\t\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: treeNode, parent: this});\n\t\t}\n\t},\n\n\tcalculateSize: function (forParent)\n\t{\n\t\tvar size = this.sizeOfContainer(this, true);\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tif(this.getChildByName(pmui.StatementNode.VAR_TAG))\n\t\t\t\tthis.setContentSize(size.width, this.getChildByName(pmui.StatementNode.VAR_TAG).height);\n\t\t}\n\t\telse\n\t\t\tthis.setContentSize(size.width, size.height);\n\t\tif(!forParent)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this.getChildByName(pmui.StatementNode.VAR_TAG), this.getChildByName(pmui.StatementNode.VALUE_TAG)];\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn new VarFunctionButton(this.type, this.getVarName(), this.getChildByName(pmui.StatementNode.VAR_TAG).getVarType());\n\t},\n\n\tcanAdd: function(element)\n\t{\n\t\tif(this._addTypes.indexOf(element) !== -1 )\n\t\t\treturn true;\n\t\treturn false;\n\t},\n\n\tgetVarName: function ()\n\t{\n\t\treturn this.getChildByName(pmui.StatementNode.VAR_TAG)._treeNode.value;\n\t},\n\n\tclickCallback: function ()\n\t{\n\t\tif(this.getChildByName(pmui.StatementNode.VALUE_TAG).isNumber())\n\t\t{\n\t\t\tthis.createExpression(pm.ArythmMethods.Addition);\n\t\t}\n\t\telse if(this.getChildByName(pmui.StatementNode.VALUE_TAG).isExpression())\n\t\t{\n\t\t\tif (this.getChildByName(pmui.StatementNode.VALUE_TAG)._treeNode.value === pm.ArythmMethods.Addition)\n\t\t\t{\n\t\t\t\tthis.createExpression(pm.ArythmMethods.Substraction);\n\t\t\t}\n\t\t\telse if (this.getChildByName(pmui.StatementNode.VALUE_TAG)._treeNode.value === pm.ArythmMethods.Substraction)\n\t\t\t{\n\t\t\t\tthis._removeNode(this.getChildByName(pmui.StatementNode.VALUE_TAG));\n\t\t\t\tthis.getChildByName(pmui.StatementNode.VALUE_TAG).calculateSize();\n\t\t\t}\n\t\t}\n\t},\n\n\tcreateExpression: function(sign)\n\t{\n\t\tvar add = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Expression, sign);\n\t\tadd.setTagName(pm.StatementValueTag);\n\n\t\tvar num = pm.data.SyntaxTree.createNode(add, pm.data.Node.Type.Identifier, this.getChildByName(pmui.StatementNode.VAR_TAG).getName());\n\t\tnum.setTagName(pm.ExpressionLeftTag);\n\n\t\tvar num2 = pm.data.SyntaxTree.createNode(add, pm.data.Node.Type.Number, 1);\n\t\tnum2.setTagName(pm.ExpressionRightTag);\n\t\tpm.sendCustomEvent(pm.PARSE_NODE,{node: add, parent:this});\n\t}\n});\n\npmui.StatementNode.VALUE_TAG = \"value\";\npmui.StatementNode.VAR_TAG = \"variable\";\npmui.StatementNode.vals = new MapClass();\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.ExpressionNode = pmui.NodeLayer.extend(/** @lends pmui.NodeLayer# */{\n\t_lOp: null,\n\t_rOp: null,\n\t_sign: null,\n\n\tctor: function (treeNode, parent, sign)\n\t{\n\t\tthis._super(parent, treeNode);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tif(pmui.NodeLayer.KUMIR_MODE) {\n\t\t\tvar leftBrace = this.createText(\"(\");\n\t\t\tvar rightBrace = this.createText(\")\");\n\t\t\tthis.createALignSome(leftBrace, \"lOp\", \"lbrace\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, 0, 0, 0, 0);\n\t\t\tthis.createALignSome(rightBrace, \"right\", \"rbrace\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, this.getNodeMargin(), 0, 0, 0);\n\t\t\tthis.addChild(leftBrace);\n\t\t\tthis.addChild(rightBrace);\n\t\t}\n\n\t\tthis._sign = sign.clone();\n\t\tthis._sign.setSwallowTouches(true);\n\t\tthis._sign.setPropagateTouchEvents(true);\n\n\t\tvar centerAlign = new ccui.RelativeLayoutParameter();\n\t\tcenterAlign.setMargin(5, 2, 0, 2);\n\t\tcenterAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tcenterAlign.setRelativeName(\"center\");\n\t\tcenterAlign.setRelativeToWidgetName(\"lOp\");\n\t\tthis._sign.setLayoutParameter(centerAlign);\n\t\tthis.addChild(this._sign);\n\t},\n\n\tchangeSign: function(sign)\n\t{\n\t\tvar align = this._sign.getLayoutParameter().clone();\n\t\tthis._sign.removeFromParent();\n\t\tthis._sign = sign;\n\t\tsign.setLayoutParameter(align);\n\t\tthis.addChild(this._sign);\n\t\tthis._treeNode.setNodeView(this);\n\t},\n\n\taddChildNode: function (node)\n\t{\n\t\tvar tag = node._treeNode.getTagName();\n\t\tif (tag === pm.ExpressionLeftTag)\n\t\t{\n\t\t\tif(this._lOp)\n\t\t\t{\n\t\t\t\tvar parent = this._treeNode;\n\t\t\t\tparent.removeChild(this._lOp._treeNode);\n\n\t\t\t\tvar align = this._lOp.getLayoutParameter().clone();\n\t\t\t\tnode.setLayoutParameter(align);\n\t\t\t\tthis.removeChild(this._lOp);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\t\t{\n\t\t\t\t\tthis.createALignSome(node, \"lbrace\", \"lOp\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, this.getNodeMargin(), 2, 0, 2);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.createALignSome(node, \"lbrace\", \"lOp\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, this.getNodeMargin(), 2, 0, 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._lOp = node;\n\t\t\tthis.addChild(node);\n\t\t\t//this._cont.addChild(this._lOp);\n\t\t}\n\t\telse if (tag === pm.ExpressionRightTag)\n\t\t{\n\t\t\tif(this._rOp)\n\t\t\t{\n\t\t\t\tvar parent = this._treeNode;\n\t\t\t\tparent.removeChild(this._rOp._treeNode);\n\n\t\t\t\tvar align = this._rOp.getLayoutParameter().clone();\n\t\t\t\tnode.setLayoutParameter(align);\n\t\t\t\tthis.removeChild(this._rOp);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar rightAlign = new ccui.RelativeLayoutParameter();\n\t\t\t\trightAlign.setMargin(5, 2, this.getNodeMargin(), 2);\n\t\t\t\trightAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\t\trightAlign.setRelativeName( \"right\");\n\t\t\t\trightAlign.setRelativeToWidgetName(\"center\");\n\t\t\t\tnode.setLayoutParameter(rightAlign);\n\t\t\t}\n\n\t\t\tthis._rOp = node;\n\t\t\tthis.addChild(node);\n\t\t}\n\t\tthis.calculateSize(true);\n\t},\n\n\t_removeNode: function (node)\n\t{\n\t\tvar treeNode = pm.data.SyntaxTree.createNode(this._treeNode, pm.data.Node.Type.Number, 0);\n\t\ttreeNode.setTagName(node._treeNode.getTagName());\n\t\tpm.sendCustomEvent(pm.PARSE_NODE, {node: treeNode, parent: this});\n\t},\n\n\tcalculateSize: function (forPar)\n\t{\n\t\tthis.sizeOfContainer(this);\n\t\tif (!forPar)\n\t\t\tthis._parentNode.calculateSize();\n\t},\n\n\tisExpression:function()\n\t{\n\t\treturn true;\n\t},\n\n\tgetChildrenNodes: function ()\n\t{\n\t\treturn [this._rOp, this._lOp];\n\t}\n});\n\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n * @class start view of program container Layer\n * @extends pmui.NodeLayer\n * @constructor\n * @param {Number} [hideDuration=pmui.PopupLayer.STANDARD_HIDE_DURATION] Delay before self removing.\n */\n\npmui.LogicExpressionNode = pmui.ExpressionNode.extend(/** @lends pmui.NodeLayer# */{\n\n\tctor: function (treeNode, parent, sign)\n\t{\n\t\tthis._super(treeNode, parent, this.getSign(sign));\n\t\tthis.type = FunctionButton.Type.LogicExpression;\n\n\t\tthis.drawBackground();\n\t\tthis._repTypes = [FunctionButton.Type.Condition, FunctionButton.Type.LogicExpression,\n\t\t\tFunctionButton.Type.Variable];\n\t},\n\n\tgetNodeMargin: function()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn 2;\n\t\treturn 13;\n\t},\n\n\tselect: function()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\t\tif(!this._selected)\n\t\t{\n\t\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t\t\tthis._selected = true;\n\t\t\tthis.setTag(ProgramContainerLayer.SELECTED_TAG);\n\t\t}\n\t},\n\n\thighlight: function()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\t//this._sign.setColor(cc.BLUE);\n\t\t\treturn;\n\t\t}\n\t\tthis.setBackGroundImage(\"PiktomirK/select-romb-border.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tremoveHighlight: function()\n\t{\n\t\tthis.drawBackground();\n\t},\n\n\tclickCallback: function ()\n\t{\n\t\tvar valN = pmui.LogicExpressionNode.values.indexOf(this._treeNode.value);\n\t\tvar value = \"\";\n\t\tif(valN < 4)\n\t\t{\n\t\t\tvalN = (valN + 1) % 4;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvalN > 4 ? valN = 4: valN ++;\n\t\t}\n\t\tvalue = pmui.LogicExpressionNode.values[valN];\n\t\tthis.changeSign(this.getSign(value));\n\t\t//this._sign.addClickEventListener(this._changeSign.bind(this));\n\t\tthis._treeNode.value = value;\n\t},\n\n\tdrawBackground: function()\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif(!this.isEditable())\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-blocked.png\");\n\t\telse\n\t\t\tthis.setBackGroundImage(\"PiktomirK/romb-border.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(false);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(28, 22, 70, 6));\n\t},\n\n\tgetSign: function(val)\n\t{\n\t\tvar sign2 = null;\n\t\tif (pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tvar text = \"\";\n\n\t\t\tswitch (val)\n\t\t\t{\n\t\t\t\tcase pm.ArythmConditions.LeftLRight:\n\t\t\t\t\ttext = \"<\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmConditions.RightLLeft:\n\t\t\t\t\ttext = \">\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmConditions.Equal:\n\t\t\t\t\ttext = \"=\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmConditions.NotEqual:\n\t\t\t\t\ttext = \"!=\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmConditions.LeftEqual:\n\t\t\t\t\ttext = \"<=\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmConditions.RightEqual:\n\t\t\t\t\ttext = \">=\";\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tsign2 = this.createText(text);\n\t\t\treturn sign2;\n\t\t}\n\t\tswitch (val)\n\t\t{\n\t\t\tcase pm.ArythmConditions.LeftLRight:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"less\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t\tcase pm.ArythmConditions.RightLLeft:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"greater\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t\tcase pm.ArythmConditions.Equal:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"equal\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t\tcase pm.ArythmConditions.NotEqual:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"not-equal\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t\tcase pm.ArythmConditions.LeftEqual:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"less-equal\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t\tcase pm.ArythmConditions.RightEqual:\n\t\t\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(\"greater-equal\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn sign2;\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, pm.ArythmConditions.LeftLRight);\n\t}\n});\n\npmui.LogicExpressionNode.values = [\n\tpm.ArythmConditions.LeftLRight,\n\tpm.ArythmConditions.RightLLeft,\n\tpm.ArythmConditions.LeftEqual,\n\tpm.ArythmConditions.RightEqual,\n\tpm.ArythmConditions.Equal,\n\tpm.ArythmConditions.NotEqual\n];\n","/**\n * Created by Diana Aglyamutdinova 22.04.2019\n */\n\n/**\n *\n */\npmui.NumericExpressionNode = pmui.ExpressionNode.extend(/** @lends pmui.NodeLayer# */{\n\n\tctor: function (treeNode, parent, sign)\n\t{\n\t\tthis._withRoundBorder = true;\n\t\tthis._super(treeNode, parent, this.getSign(sign));\n\t\tthis.type = FunctionButton.Type.Expression;\n\n\t\tthis._sign.addClickEventListener(this.clickCallback.bind(this));\n\t},\n\n\tgetNodeMargin: function()\n\t{\n\t\treturn 2;\n\t},\n\n\tclickCallback: function()\n\t{\n\t\tvar valN = (pmui.NumericExpressionNode.values.indexOf(this._treeNode.value) + 1) % pmui.NumericExpressionNode.values.length;\n\t\tthis.changeSign(this.getSign(pmui.NumericExpressionNode.values[valN]));\n\t\tthis._sign.addClickEventListener(this.clickCallback.bind(this));\n\t\tthis._treeNode.value = pmui.NumericExpressionNode.values[valN];\n\t},\n\n\tgetSign: function (val)\n\t{\n\t\tvar sign2 = null;\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t{\n\t\t\tvar text = \"\";\n\t\t\tswitch (val)\n\t\t\t{\n\t\t\t\tcase pm.ArythmMethods.Addition:\n\t\t\t\t\ttext = \"+\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmMethods.Substraction:\n\t\t\t\t\ttext = \"-\"\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmMethods.Multiplication:\n\t\t\t\t\ttext = \"*\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.ArythmMethods.Division:\n\t\t\t\t\ttext = \"/\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tsign2 = this.createText(text);\n\t\t\treturn sign2;\n\t\t}\n\t\tsign2 = new ccui.ImageView(pm.spriteUtils.getSignSpriteName(val, pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\treturn sign2;\n\t},\n\n\tclone: function ()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this.type, pm.ArythmMethods.Addition);\n\t}\n});\n\npmui.NumericExpressionNode.values = [\n\tpm.ArythmMethods.Addition,\n\tpm.ArythmMethods.Substraction,\n\tpm.ArythmMethods.Multiplication,\n\tpm.ArythmMethods.Division\n];\n","/**\n * Created by Nikita Besshaposhnikov on 18.11.14.\n */\n\n/**\n * @class This layer showing on start of PiktoMir, while loading world data.\n * @extends cc.Layer\n */\nvar LoadLayer = cc.Layer.extend(/** @extends LoadLayer# */{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tvar colorLayer = new cc.LayerColor(cc.color(0, 94, 163), pm.settings.getScreenSize().width, pm.settings.getScreenSize().height);\n\t\tcolorLayer.setAnchorPoint( cc.p() );\n\t\tcolorLayer.setPosition( cc.p() );\n\t\tthis.addChild(colorLayer, -1);\n\n\t\tvar backGround = new cc.Sprite(\"Background/LoadLayer/LoadBackground.png\");\n\t\tvar loadSprite = new cc.Sprite(\"Background/LoadLayer/LoadBar.png\");\n\t\tvar loadBarBack = new cc.Sprite(\"Background/LoadLayer/LoadBarBackground.png\");\n\t\tvar text = new cc.Sprite(\"Background/LoadLayer/LoadText.png\");\n\n\t\tvar screenSize = pm.settings.getScreenSize();\n\n\t\tvar maxWidth = Math.max(text.width, backGround.width);\n\t\tvar totalHeight = text.height + backGround.height;\n\n\t\tvar layer = new cc.Layer();\n\t\tlayer.setContentSize(maxWidth, totalHeight);\n\t\tvar scale = Math.min(screenSize.width / maxWidth, screenSize.height / totalHeight);\n\n\t\tif(scale > 1)\n\t\t\tscale = 1;\n\n\t\tbackGround.setAnchorPoint(cc.p(0.5, 0));\n\t\tbackGround.setPosition(maxWidth/ 2, 0);\n\t\tlayer.addChild(backGround, 1);\n\n\t\ttext.setAnchorPoint(cc.p(0.5, 0));\n\t\ttext.setPosition( cc.p(maxWidth/ 2, backGround.height - 15));\n\n\t\tlayer.addChild(text, 2);\n\n\t\tlayer.setPosition((screenSize.width - layer.width) / 2, (screenSize.height - layer.height ) / 2);\n\t\tlayer.setScale(scale);\n\t\tthis.addChild(layer);\n\n\t\tvar loadBarLayer = new cc.ClippingNode();\n\t\tloadBarLayer.setContentSize(647, 127);\n\t\tloadBarLayer.setAnchorPoint(cc.p(0, 0));\n\n\t\tvar shape = new cc.DrawNode();\n\t\tvar rect = [\n\t\t\tcc.p(0, 0), cc.p(0, loadBarLayer.height),\n\t\t\tcc.p(loadBarLayer.width, loadBarLayer.height), cc.p(loadBarLayer.width, 0)\n\t\t];\n\n\t\tvar color = cc.color(0, 255, 0, 255);\n\t\tshape.drawPoly(rect, color, 0, color);\n\n\t\tloadBarLayer.setPosition(cc.p((layer.width - loadBarLayer.width) / 2 - 9, 125));\n\t\tloadBarLayer.setStencil(shape);\n\n\t\tloadBarBack.setAnchorPoint(cc.p(0, 0));\n\n\t\tloadBarLayer.addChild(loadBarBack);\n\t\tloadBarLayer.addChild(loadSprite);\n\n\t\tloadSprite.setAnchorPoint(cc.p(0, 0));\n\t\tloadSprite.setPosition(-loadSprite.width, 0);\n\n\t\tlayer.addChild(loadBarLayer, 0);\n\n\t\tvar move = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 4, loadBarLayer.width + loadSprite.width, 0);\n\t\tvar returnPos = cc.callFunc(function()\n\t\t{\n\t\t\tthis.setPosition(cc.p(-this.width, 0));\n\t\t}, loadSprite);\n\n\t\tloadSprite.runAction(cc.repeatForever(cc.sequence(move, returnPos)));\n\n\t\tworld = new pm.data.World();\n\n\t\tif (pm.settings.isRetinaEnabled)\n\t\t\tcc.loader.loadAliases(\"res/resources-hd.plist\", this._endLoadAliases.bind(this));\n\t\telse\n\t\t\tcc.loader.loadAliases(\"res/resources.plist\", this._endLoadAliases.bind(this));\n\t},\n\n\t_endLoadAliases: function()\n\t{\n\t\tpm.validationUtils.load();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: \"60597a7cc443f3000dcdd56b\",\n\t\t\tcallback: this._endLoadWorlds,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endLoadWorlds: function(error, loadedWorldID)\n\t{\n\t\tpm.spriteUtils.init();\n\t\tcc.sys.garbageCollect();\n\n\t\tif(!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t{\n\t\t\tpm.audioUtils.load();\n\t\t\tpm.audioUtils.playBackgroundMusic();\n\t\t\tpm.audioUtils.setBackgroundMusicVolume(pm.settings.getBackgroundVolume());\n\t\t\tpm.audioUtils.setEffectVolume(pm.settings.getEffectVolume());\n\n\t\t\tpm.robotManager.init();\n\t\t\tpm.tutorialUtils.init();\n\n\t\t\tpm.userCache.init();\n\n\t\t\tpm.networkUtils.init();\n\n\t\t\tif(loadedWorldID[0] !== pm.settings.getSelectedWorldID())\n\t\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\n\t\t\tif(cc.sys.isNative)\n\t\t\t{\n\t\t\t\tvar supportsBLE = cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.OS_ANDROID ||\n\t\t\t\t\tcc.sys.os === cc.sys.OS_OSX;\n\n\t\t\t\tvar connectorType = pm.settings.getPhysicalConnectorType();\n\t\t\t\tvar supportedConnectorType = connectorType === pm.PhysicalConnectorType.BLE ||\n\t\t\t\t\tconnectorType === pm.PhysicalConnectorType.Sound;\n\n\t\t\t\tif(supportsBLE && supportedConnectorType)\n\t\t\t\t\tpm.btleManager.init();\n\n\t\t\t\tpm.programRecognizer.setStatsURL(pm.appConfig.mlStatsURL);\n\t\t\t\tpm.matsRecognizer.setServerURL(pm.appConfig.matsRecognitionURL);\n\t\t\t}\n\n\t\t\tpm.settings.setGame(0);\n\t\t\tcc.director.runScene(new SelectLevelScene());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar message = new pmui.MessageBox(this, error.text, function() { cc.director.end(); });\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - message.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - message.getContentSize().height / 2;\n\n\t\t\tmessage.setPosition(x, y);\n\n\t\t\tcc.director.getRunningScene().addChild(message, 10000);\n\t\t}\n\t}\n});\n\n/**\n * @class This scene showing on start of PiktoMir, while loading world data.\n * @see LoadLayer\n * @extends cc.Scene\n */\nvar LoadScene = cc.Scene.extend(/** @lends LoadScene# */{\n\tonEnter: function ()\n\t{\n\t\tthis._super();\n\t\tvar layer = new LoadLayer();\n\t\tthis.addChild(layer);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 03.03.16.\n */\n\n/**\n * @class Layer for loading animation for async processes.
\n * Intercepts touch events.\n * @extends cc.LayerColor\n */\nvar LoadingLayer = cc.LayerColor.extend(/** @lends LoadingLayer*/{\n\n\t_removed: false,\n\n\tctor: function(animation)\n\t{\n\t\tanimation = (animation === undefined) ? true : animation;\n\n\t\tvar screenSize = pm.settings.getScreenSize();\n\n\t\tthis._super(pm.settings.transparentColor, screenSize.width, screenSize.height);\n\n\t\tvar loadLayer = new cc.Layer();\n\t\tloadLayer.setContentSize(screenSize.width, screenSize.height);\n\t\tloadLayer.setPosition(screenSize.width / 2, screenSize.height / 2);\n\n\t\tif (animation)\n\t\t{\n\t\t\tvar satellite = new cc.Sprite(\"Background/Satellite.png\");\n\t\t\tvar planet = new cc.Sprite(\"Background/Planet.png\");\n\n\t\t\tplanet.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tplanet.setPosition(cc.p(screenSize.width/2, screenSize.height/2));\n\n\t\t\tvar satelliteLayer = new cc.Layer();\n\t\t\tsatelliteLayer.setContentSize(planet.width, planet.height);\n\t\t\tsatelliteLayer.setPosition(cc.p(screenSize.width/2 - satelliteLayer.width/2, screenSize.height/2 - satelliteLayer.height/2));\n\t\t\tsatelliteLayer.setScale(0.9);\n\n\t\t\tsatellite.setAnchorPoint(cc.p(0.5, 0.5));\n\t\t\tsatellite.setPosition(cc.p(satelliteLayer.width/2-75, satelliteLayer.height/2));\n\n\t\t\tsatelliteLayer.addChild(satellite, 3);\n\n\t\t\tloadLayer.addChild(planet);\n\t\t\tloadLayer.addChild(satelliteLayer);\n\n\t\t\tvar scale = Math.min(screenSize.width / planet.width, screenSize.height / planet.height);\n\n\t\t\tif (scale > 1)\n\t\t\t\tscale = 1;\n\n\t\t\tloadLayer.setScale(scale);\n\t\t\tloadLayer.setPosition(loadLayer.getPosition().x*(1 - scale), loadLayer.getPosition().y*(1 - scale));\n\n\t\t\tsatelliteLayer.runAction(cc.repeatForever(cc.rotateBy(360 * 0.015, 360)));\n\n\t\t\tsatellite.runAction(cc.repeatForever(cc.sequence(\n\t\t\t\tcc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.6), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 0.5 * 255)),\n\t\t\t\tcc.spawn(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 3, 1), cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY * 3, 255))\n\t\t\t)));\n\t\t}\n\n\t\tthis.addChild(loadLayer, 2);\n\n\t\tvar touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(touchListener, this);\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\treturn true;\n\t},\n\n\t_touchMoved: function() {},\n\t_touchEnded: function() {},\n\n\t/**\n * Shows layer\n */\n\tshow: function()\n\t{\n\t\tvar self = this;\n\t\tself.retain();\n\n\t\t//Workaround for loading scene. Skip one tick to change scene in cc.director.\n\t\tsetTimeout(function()\n\t\t{\n\t\t\tif(!self._removed)\n\t\t\t\tcc.director.getRunningScene().addChild(self, LoadingLayer.ZORDER, LoadingLayer.TAG);\n\t\t\tself.release();\n\t\t}, 0);\n\t},\n\n\t/**\n * Removes layer.\n */\n\tremove: function()\n\t{\n\t\tthis._removed = true;\n\n\t\tif(this.getParent())\n\t\t\tthis.removeFromParent();\n\t}\n});\n\n/**\n * A tag for loading layer\n * @constant\n * @default\n * @type {number}\n */\nLoadingLayer.TAG = 1000;\n/**\n * A zorder for loading layer\n * @constant\n * @default\n * @type {number}\n */\nLoadingLayer.ZORDER = 1000;\n\n","/**\n * Created by Nikita Besshaposhnikov on 22.03.17.\n */\n\n/**\n * @class Layer for waiting all players in network game are connected processes.
\n * Intercepts touch events.\n * @extends cc.LayerColor\n */\nvar WaitNetworkGameLayer = cc.LayerColor.extend(/** @lends WaitNetworkGameLayer*/{\n\n\tctor: function()\n\t{\n\t\tvar screenSize = pm.settings.getScreenSize();\n\t\tthis._super(pm.settings.transparentColor, screenSize.width, screenSize.height);\n\n\t\tvar touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(touchListener, this);\n\n\t\tvar label = new cc.LabelTTF(LocalizedString(\"WaitForOtherPlayers\"), pm.settings.fontBoldName, 30);\n\t\tlabel.setPosition(screenSize.width / 2, screenSize.height / 2);\n\n\t\tthis.addChild(label);\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\treturn true;\n\t},\n\n\t_touchMoved: function() {},\n\t_touchEnded: function() {},\n\n\t/**\n * Shows layer\n */\n\tshow: function()\n\t{\n\t\tcc.director.getRunningScene().addChild(this, LoadingLayer.ZORDER, LoadingLayer.TAG);\n\t},\n\n\t/**\n * Removes layer.\n */\n\tremove: function()\n\t{\n\t\tif(this.getParent())\n\t\t\tthis.removeFromParent();\n\t}\n});\n\n/**\n * A tag for wait network game layer\n * @constant\n * @default\n * @type {number}\n */\nWaitNetworkGameLayer.TAG = 1000;\n/**\n * A zorder for wait network game\n * @constant\n * @default\n * @type {number}\n */\nWaitNetworkGameLayer.ZORDER = 1000;\n\n","/**\n * Created by Kirill Mashchenko on 20.08.2018.\n */\n\n/**\n * @class Layer for register.\n * @extends pmui.OvalLayout\n */\nvar RegisterLayer = pmui.OvalLayout.extend(/** @extends RegisterLayer# */{\n\t_target: null,\n\t_cancelCallback: null,\n\n\t_emailInput: null,\n\t_passwordInput: null,\n\t_confirmPasswordInput: null,\n\t_nameInput: null,\n\t_secondNameInput: null,\n\t_confidenceFlag: false,\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(RegisterLayer.WIDTH, RegisterLayer.HEIGHT);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n\t\tthis._target = target;\n\t\tthis._cancelCallback = cancelCallback;\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._cancelCallback.bind(this._target));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton);\n\n\t\tthis._emailInput = new pmui.TextInput(\"\", LocalizedString(\"email\"), 20, RegisterLayer.WIDTH - RegisterLayer.WIDTH_DELTA);\n\n\t\tvar emailAlign = new ccui.RelativeLayoutParameter();\n\t\temailAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\temailAlign.setMargin(RegisterLayer.BORDER, RegisterLayer.BORDER, 0, 0);\n\t\temailAlign.setRelativeName(\"login\");\n\t\tthis._emailInput.setLayoutParameter(emailAlign);\n\n\t\tthis.addChild(this._emailInput);\n\n\t\tthis._passwordInput = new pmui.TextInput(\"\", LocalizedString(\"Password\"), 20, RegisterLayer.WIDTH - RegisterLayer.WIDTH_DELTA);\n\t\tthis._passwordInput.setPasswordInput(true);\n\n\t\tvar passwordAlign = new ccui.RelativeLayoutParameter();\n\t\tpasswordAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tpasswordAlign.setMargin(0, RegisterLayer.SEPARATOR, 0, 0);\n\t\tpasswordAlign.setRelativeName(\"password\");\n\t\tpasswordAlign.setRelativeToWidgetName(\"login\");\n\t\tthis._passwordInput.setLayoutParameter(passwordAlign);\n\n\t\tthis.addChild(this._passwordInput);\n\n\t\tthis._confirmPasswordInput = new pmui.TextInput(\"\", LocalizedString(\"ConfirmPassword\"), 20, RegisterLayer.WIDTH - RegisterLayer.WIDTH_DELTA);\n\t\tthis._confirmPasswordInput.setPasswordInput(true);\n\n\t\tvar confirmPasswordAlign = new ccui.RelativeLayoutParameter();\n\t\tconfirmPasswordAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tconfirmPasswordAlign.setMargin(0, RegisterLayer.SEPARATOR, 0, 0);\n\t\tconfirmPasswordAlign.setRelativeName(\"confirmPassword\");\n\t\tconfirmPasswordAlign.setRelativeToWidgetName(\"password\");\n\t\tthis._confirmPasswordInput.setLayoutParameter(confirmPasswordAlign);\n\n\t\tthis.addChild(this._confirmPasswordInput);\n\n\t\tthis._nameInput = new pmui.TextInput(\"\", LocalizedString(\"Name\"), 20, RegisterLayer.WIDTH - RegisterLayer.WIDTH_DELTA);\n\n\t\tvar nameInputAlign = new ccui.RelativeLayoutParameter();\n\t\tnameInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tnameInputAlign.setMargin(0, RegisterLayer.SEPARATOR, 0, 0);\n\t\tnameInputAlign.setRelativeName(\"name\");\n\t\tnameInputAlign.setRelativeToWidgetName(\"confirmPassword\");\n\t\tthis._nameInput.setLayoutParameter(nameInputAlign);\n\n\t\tthis.addChild(this._nameInput);\n\n\t\tthis._secondNameInput = new pmui.TextInput(\"\", LocalizedString(\"SecondName\"), 20, RegisterLayer.WIDTH - RegisterLayer.WIDTH_DELTA);\n\n\t\tvar secondNameAlign = new ccui.RelativeLayoutParameter();\n\t\tsecondNameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tsecondNameAlign.setMargin(0, RegisterLayer.SEPARATOR, 0, 0);\n\t\tsecondNameAlign.setRelativeName(\"secondName\");\n\t\tsecondNameAlign.setRelativeToWidgetName(\"name\");\n\t\tthis._secondNameInput.setLayoutParameter(secondNameAlign);\n\n\t\tthis.addChild(this._secondNameInput);\n\n\t\tvar confidenceCheckBox = new pmui.CheckBox(LocalizedString(\"IAgree\"), this._checkConfidence, this, 13, false);\n\n var confidenceAlign = new ccui.RelativeLayoutParameter();\n confidenceAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n confidenceAlign.setMargin(0, RegisterLayer.SEPARATOR, 0, 0);\n confidenceAlign.setRelativeName(\"checkBox\");\n confidenceAlign.setRelativeToWidgetName(\"secondName\");\n confidenceCheckBox.setLayoutParameter(confidenceAlign);\n\n this.addChild(confidenceCheckBox);\n\n\t\tvar userLink = new ccui.Text(LocalizedString(\"UserAgreement\"), pm.settings.fontBoldName, 13);\n\t\tuserLink.setTextColor(cc.color(0, 162, 255));\n\t\tuserLink.addClickEventListener(this._onUserLink.bind(this));\n\t\tuserLink.setTouchEnabled(true);\n\n\t\tvar userLinkAlign = new ccui.RelativeLayoutParameter();\n\t\tuserLinkAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\tuserLinkAlign.setMargin(0, 0, 0, 0);\n\t\tuserLinkAlign.setRelativeToWidgetName(\"checkBox\");\n\t\tuserLink.setLayoutParameter(userLinkAlign);\n\n\t\tthis.addChild(userLink);\n\n\t\tvar andLabel = new ccui.Text(LocalizedString(\"And\"), pm.settings.fontBoldName, 13);\n\n\t\tvar andLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tandLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tandLabelAlign.setMargin(RegisterLayer.AND_MARGIN, 2, 0, 0);\n\t\tandLabelAlign.setRelativeToWidgetName(\"checkBox\");\n\t\tandLabelAlign.setRelativeName(\"and\");\n\t\tandLabel.setLayoutParameter(andLabelAlign);\n\n\t\tthis.addChild(andLabel);\n\n var confidenceLink = new ccui.Text(LocalizedString(\"PrivacyPolicy\"), pm.settings.fontBoldName, 13);\n confidenceLink.setTextColor(cc.color(0, 162, 255));\n confidenceLink.addClickEventListener(this._onConfidenceLink.bind(this));\n confidenceLink.setTouchEnabled(true);\n\n var confidenceLinkAlign = new ccui.RelativeLayoutParameter();\n confidenceLinkAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n confidenceLinkAlign.setMargin(0, 0, 0, 0);\n confidenceLinkAlign.setRelativeToWidgetName(\"and\");\n confidenceLink.setLayoutParameter(confidenceLinkAlign);\n\n this.addChild(confidenceLink);\n\n var register = new pmui.InterfaceButton(this._register, this, LocalizedString(\"Register\"));\n\n\t\tvar registerAlign = new ccui.RelativeLayoutParameter();\n\t\tregisterAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tregisterAlign.setMargin(-RegisterLayer.AND_MARGIN, RegisterLayer.SEPARATOR, 0, 0);\n\t\tregisterAlign.setRelativeName(\"registerButton\");\n\t\tregisterAlign.setRelativeToWidgetName(\"and\");\n\t\tregister.setLayoutParameter(registerAlign);\n\n\t\tthis.addChild(register);\n\t},\n\n _checkConfidence: function (flag)\n {\n this._confidenceFlag = flag;\n },\n\n\t_onUserLink: function()\n\t{\n\t\tpm.utils.openURL(RegisterLayer.USER_AGREEMENT_URL);\n\t},\n\n\t_onConfidenceLink: function()\n {\n\t\tpm.utils.openURL(RegisterLayer.PRIVACY_POLICY_URL);\n },\n\n\t_register: function()\n\t{\n\t\tvar message = null;\n\n\t\tvar mail = this._emailInput.getString();\n\t\tvar password = this._passwordInput.getString();\n\t\tvar passwordConfirm = this._confirmPasswordInput.getString();\n\t\tvar name = this._nameInput.getString();\n\t\tvar surname = this._secondNameInput.getString();\n\n\t\tif(mail === \"\" || passwordConfirm === \"\" || name === \"\" || surname === \"\" || password === \"\" || !this._confidenceFlag)\n\t\t\tmessage = LocalizedString(\"NotAllFieldsFilled\");\n\t\telse if(password !== passwordConfirm)\n\t\t\tmessage = LocalizedString(\"PasswordsNotMath\");\n\n\t\tif(message)\n\t\t{\n\t\t\tvar messageBox = new pmui.MessageBox(this, message);\n\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\t\t\tmessageBox.setPosition(x, y);\n\t\t\tcc.director.getRunningScene().addChild(messageBox, RegisterLayer.TAG);\n\n\t\t\treturn;\n\t\t}\n\t\tvar self = this;\n\n\t\tpm.apiServerUtils.register(function(error, response)\n\t\t{\n\t\t\tself.removeFromParent();\n\n\t\t\tvar regMessage = LocalizedString(\"RegisterSuccess\");\n\n\t\t\tif(error)\n\t\t\t\tregMessage = LocalizedString(\"RegisterFailurePattern\").format(error.text);\n\n\t\t\tvar messageBox = new pmui.MessageBox(this, regMessage);\n\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\t\t\tmessageBox.setPosition(x, y);\n\t\t\tcc.director.getRunningScene().addChild(messageBox, RegisterLayer.TAG);\n\n\t\t}, mail, password, name, surname);\n\n\t}\n});\n\nRegisterLayer.WIDTH = 460;\nRegisterLayer.HEIGHT = 390;\nRegisterLayer.TAG = 2513;\nRegisterLayer.SEPARATOR = 15.0;\nRegisterLayer.WIDTH_DELTA = 70.0;\nRegisterLayer.BORDER = 45.0;\nRegisterLayer.AND_MARGIN = 25.0;\nRegisterLayer.USER_AGREEMENT_URL = 'https://piktomir.ru/user-agreement/';\nRegisterLayer.PRIVACY_POLICY_URL = 'https://piktomir.ru/privacy-policy/';\n\n","/**\n * Created by Nikita Besshaposhnikov on 01.12.14.\n */\n\n/**\n * this callback is used on login and cancel actions of layer.\n * @callback LoginLayer~actionCallback\n */\n\n/**\n * @class Layout for login in editor.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {cc.Node} target Target for callbacks.\n * @param {LoginLayer~actionCallback} loginCallback Called on successful login.\n * @param {LoginLayer~actionCallback} cancelCallback Called on cancel button clicked.\n */\nvar LoginLayer = ccui.Layout.extend(/** @lends LoginLayer# */{\n\t_inputLayout: null,\n\t_loginInput: null,\n\t_passwordInput: null,\n\t_errorLabel: null,\n\n\t_autoLogin: false,\n\n\t_loginCallback: null,\n\t_cancelCallback: null,\n\t_target: null,\n\n\tctor: function(target, loginCallback)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tthis._target = target;\n\t\tthis._loginCallback = loginCallback;\n\n\t\tthis._inputLayout = new MovingAfterKeyboardLayout();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._inputLayout.setContentSizeWithBorder(LoginLayer.WIDTH, LoginLayer.HEIGHT);\n\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._close.bind(this));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis._inputLayout.addChild(closeButton);\n\n\t\tvar loginVKButton = new pmui.Button(pm.spriteUtils.getIconName(\"vk\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"vk\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"vk\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tloginVKButton.addClickEventListener(this._loginVK.bind(this));\n\n\t\tvar orLabel = new ccui.Text(LocalizedString(\"OR\"), pm.settings.fontName, 15);\n\n\t\tvar orLabelAlign = new ccui.RelativeLayoutParameter();\n\t\torLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\torLabelAlign.setMargin(0, LoginLayer.SEPARATOR, 0, 0);\n\t\torLabelAlign.setRelativeName(\"or\");\n\t\torLabelAlign.setRelativeToWidgetName(\"vk\");\n\t\torLabel.setLayoutParameter(orLabelAlign);\n\n\t\tthis._inputLayout.addChild(orLabel);\n\n\t\tthis._loginInput = new pmui.TextInput(pm.settings.getUserData().login, LocalizedString(\"Login\"), 20, LoginLayer.WIDTH - LoginLayer.WIDTH_DELTA);\n\n\t\tvar loginAlign = new ccui.RelativeLayoutParameter();\n\t\tloginAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tloginAlign.setMargin(0, LoginLayer.SEPARATOR, 0, 0);\n\t\tloginAlign.setRelativeName(\"login\");\n\t\tloginAlign.setRelativeToWidgetName(\"or\");\n\t\tthis._loginInput.setLayoutParameter(loginAlign);\n\n\t\tthis._inputLayout.addChild(this._loginInput);\n\n\t\tthis._passwordInput = new pmui.TextInput(\"\", LocalizedString(\"Password\"), 20, LoginLayer.WIDTH - LoginLayer.WIDTH_DELTA);\n\t\tthis._passwordInput.setPasswordInput(true);\n\n\t\tvar passwordAlign = new ccui.RelativeLayoutParameter();\n\t\tpasswordAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tpasswordAlign.setMargin(0, LoginLayer.SEPARATOR, 0, 0);\n\t\tpasswordAlign.setRelativeName(\"password\");\n\t\tpasswordAlign.setRelativeToWidgetName(\"login\");\n\t\tthis._passwordInput.setLayoutParameter(passwordAlign);\n\n\t\tthis._inputLayout.addChild(this._passwordInput);\n\n\t\tvar stripName = \"System/Strip.png\";\n\n\t\tvar leftStrip = new cc.Sprite(stripName);\n\n\t\tvar leftStripLayout = new ccui.Layout();\n\t\tleftStripLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tleftStripLayout.addChild(leftStrip);\n\n\t\tvar leftStripLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tleftStripLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\t\tleftStripLayoutAlign.setMargin(LoginLayer.BOTTOM_BORDER + 15, 0, 0, LoginLayer.SEPARATOR + 10);\n\t\tleftStripLayoutAlign.setRelativeToWidgetName(\"login\");\n\t\tleftStripLayout.setLayoutParameter(leftStripLayoutAlign);\n\n\t\tthis._inputLayout.addChild(leftStripLayout);\n\n\t\tvar rightStrip = new cc.Sprite(stripName);\n\t\trightStrip.setRotation(180);\n\n\t\tvar rightStripLayout = new ccui.Layout();\n\t\trightStripLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\trightStripLayout.addChild(rightStrip);\n\n\t\tvar rightStripLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\trightStripLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_RIGHTALIGN);\n\t\trightStripLayoutAlign.setMargin(0, 0, LoginLayer.BOTTOM_BORDER + 15, LoginLayer.SEPARATOR + 10);\n\t\trightStripLayoutAlign.setRelativeToWidgetName(\"login\");\n\t\trightStripLayout.setLayoutParameter(rightStripLayoutAlign);\n\n\t\tthis._inputLayout.addChild(rightStripLayout);\n\n\t\tthis._autoLogin = pm.settings.isUserAutoLogin();\n\n\t\tvar check = new pmui.CheckBox(LocalizedString(\"AutoLogin\"), this._onCheckClicked, this, pm.settings.fontDefinition.fontSize, this._autoLogin);\n\n\t\tvar checkAlign = new ccui.RelativeLayoutParameter();\n\t\tcheckAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcheckAlign.setMargin(0, LoginLayer.SEPARATOR, 0, 0);\n\t\tcheckAlign.setRelativeName(\"check\");\n\t\tcheckAlign.setRelativeToWidgetName(\"password\");\n\t\tcheck.setLayoutParameter(checkAlign);\n\n\t\tthis._inputLayout.addChild(check);\n\n\t\tvar enter = new pmui.InterfaceButton(this._login, this, LocalizedString(\"LoginButton\"));\n\t\tenter.setContentSize(LoginLayer.WIDTH - LoginLayer.WIDTH_DELTA, enter.height);\n\t\tenter.setTitleFontName(pm.settings.fontName);\n\n\t\tvar enterAlign = new ccui.RelativeLayoutParameter();\n\t\tenterAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tenterAlign.setMargin(0, 2 * LoginLayer.SEPARATOR + check.height, 0, 0);\n\t\tenterAlign.setRelativeName(\"enter\");\n\t\tenterAlign.setRelativeToWidgetName(\"password\");\n\t\tenter.setLayoutParameter(enterAlign);\n\n\t\tthis._inputLayout.addChild(enter);\n\n\t\tvar register = new pmui.InterfaceButton(this._register, this, LocalizedString(\"RegisterButton\"));\n\t\tregister.setContentSize(LoginLayer.WIDTH - LoginLayer.WIDTH_DELTA, register.height);\n\t\tregister.setTitleFontName(pm.settings.fontName);\n\n\t\tvar registerAlign = new ccui.RelativeLayoutParameter();\n\t\tregisterAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tregisterAlign.setMargin(0, LoginLayer.SEPARATOR, 0, 0);\n\t\tregisterAlign.setRelativeToWidgetName(\"enter\");\n\t\tregister.setLayoutParameter(registerAlign);\n\n\t\tthis._inputLayout.addChild(register);\n\n\t\tvar border = (LoginLayer.HEIGHT - (loginVKButton.height + orLabel.height + 2*this._loginInput.height + check.height + 2*enter.height + 6*LoginLayer.SEPARATOR))/2;\n\n\t\tvar loginVKButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tloginVKButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tloginVKButtonAlign.setMargin(0, border + pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tloginVKButtonAlign.setRelativeName(\"vk\");\n\t\tloginVKButton.setLayoutParameter(loginVKButtonAlign);\n\n\t\tthis._inputLayout.addChild(loginVKButton);\n\n\t\tvar inputLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tinputLayoutAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tthis._inputLayout.setLayoutParameter(inputLayoutAlign);\n\n\t\tthis.addChild(this._inputLayout);\n\n\t\tthis._inputLayout.setTouchEnabled(true);\n\n\t\tthis._inputLayout.setInputAttach(this._loginInput);\n\t\tthis._inputLayout.setInputAttach(this._passwordInput);\n\n\t\tvar touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(touchListener, this);\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\t\treturn !cc.rectContainsPoint(this._inputLayout.getBoundingBox(), touchPoint);\n\t},\n\n\t_touchMoved: function() {},\n\t_touchEnded: function() {},\n\n\t_onCheckClicked: function(flag)\n\t{\n\t\tthis._autoLogin = flag;\n\t},\n\n\t_login: function(sender)\n\t{\n\t\tif (this._passwordInput.getString().length === 0 || this._loginInput.getString().length === 0)\n\t\t\treturn;\n\n\t\tthis._inputLayout.closeAttachKeyboard();\n\n\t\tpm.settings.setUserLogin(this._loginInput.getString());\n\t\tvar wait = new WaitLayer();\n\n\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\twait.setLayoutParameter(align);\n\n\t\tthis.addChild(wait, 100);\n\n\t\tpm.apiServerUtils.login(function (error, response)\n\t\t{\n\t\t\twait.hide();\n\t\t\tif(error)\n\t\t\t{\n\t\t\t\tif(error.status === -1 || error.status === 0)\n\t\t\t\t// this._errorLabel.setString(LocalizedString(\"CheckInternetConnection\"));\n\t\t\t\t// else\n\t\t\t\t// this._errorLabel.setString(LocalizedString(\"WrongLoginPassword\"));\n\t\t\t\t// this._errorLabel.setVisible(true);\n\t\t\t\t\tvar message = new pmui.MessageBox(this, LocalizedString(\"CheckInternetConnection\"));\n\t\t\t\telse\n\t\t\t\t\tvar message = new pmui.MessageBox(this, LocalizedString(\"WrongLoginPassword\"));\n\n\t\t\t\tvar x = pm.settings.getScreenSize().width / 2 - message.getContentSize().width / 2;\n\t\t\t\tvar y = pm.settings.getScreenSize().height / 2 - message.getContentSize().height / 2;\n\t\t\t\tmessage.setPosition(x, y);\n\t\t\t\tcc.director.getRunningScene().addChild(message, LoginLayer.TAG);\n\n\t\t\t\tcc.log(JSON.stringify(error));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpm.settings.setAccessToken(response.access_token);\n\t\t\t\tpm.settings.setRefreshToken(response.refresh_token);\n\t\t\t\tpm.settings.setUserAutoLogin(this._autoLogin);\n\n\t\t\t\tpm.settings.userLoggedIn = true;\n\n\t\t\t\tthis._loginCallback.call(this._target);\n\t\t\t\tthis._close();\n\t\t\t}\n\t\t}.bind(this), this._loginInput.getString(), this._passwordInput.getString());\n\t},\n\n\t_randomBase64String: function(length) {\n\t\tvar string = \"\";\n\n\t\tif(cc.sys.isNative) // on native it's std c++ random\n\t\t{\n\t\t\tfor (var i = 0; i \n * Add only on Relative layouts!
\n * Don't call \"setLayoutParameter\" by yourself.\n * @extends pmui.Button\n * @constructor\n * @param {ccui.RelativeLayoutParameter} relativeParameter\n */\nvar SoundButton = pmui.Button.extend(/** @lends SoundButton# */{\n\tctor: function(relativeParameter)\n\t{\n\t\tthis._super(pm.spriteUtils.getIconName(\"soundOn\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"soundOn\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"soundOn\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis.setName(SoundButton.WIDGET_NAME);\n\n\t\tthis.addClickEventListener(this._showSoundPopup.bind(this));\n\n\t\trelativeParameter.setRelativeName(SoundButton.WIDGET_NAME);\n\t\tthis.setLayoutParameter(relativeParameter);\n\t},\n\n\t_showSoundPopup: function()\n\t{\n\t\tif(!this.getParent().getChildByTag(SoundButton.POPUP_TAG))\n\t\t{\n\t\t\tvar layer = new SoundPopupLayer();\n\n\t\t\tvar soundButtonAlign = new ccui.RelativeLayoutParameter();\n\t\t\tsoundButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tsoundButtonAlign.setMargin(0, 5, 0, 0);\n\t\t\tsoundButtonAlign.setRelativeToWidgetName(SoundButton.WIDGET_NAME);\n\t\t\tlayer.setLayoutParameter(soundButtonAlign);\n\n\t\t\tthis.getParent().addChild(layer, this.getLocalZOrder(), SoundButton.POPUP_TAG);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getParent().removeChildByTag(SoundButton.POPUP_TAG);\n\t\t}\n\t}\n});\n\nSoundButton.WIDGET_NAME = \"sound_button\";\nSoundButton.POPUP_TAG = 100;\n","/**\n * Created by antonded on 13.11.14.\n */\n\n/**\n * @class Pop-up layer for configuring sound settings.\n * @extends cc.LayerColor\n *\n */\nvar SoundPopupLayer = pmui.PopupLayer.extend(/** @lends SoundPopupLayer#*/{\n\n\tctor: function ()\n\t{\n\n\t\tthis._super(pmui.PopupLayer.HIDE_DURATION_NEVER);\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(100, 100);\n\n\t\tvar backgroundVolumeLabel = new ccui.Text(LocalizedString(\"BackgroundVolume\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tvar effectVolumeLabel = new ccui.Text(LocalizedString(\"EffectVolume\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._backgroundSlider = new ccui.Slider();\n\t\tthis._backgroundSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._backgroundSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._backgroundSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._backgroundSlider.addEventListener(this._backgroundVolumeChanged.bind(this));\n\n\t\tthis._backgroundSlider.setPercent(100 * pm.settings.getBackgroundVolume());\n\n\t\tthis._effectSlider = new ccui.Slider();\n\t\tthis._effectSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._effectSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis._effectSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._effectSlider.addEventListener(this._effectVolumeChanged.bind(this));\n\n\t\tthis._effectSlider.setPercent(100 * pm.settings.getEffectVolume());\n\n\t\tvar backgroundVolumeLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tbackgroundVolumeLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tbackgroundVolumeLabelAlign.setMargin(pmui.OvalLayout.STANDARD_BORDER_RADIUS, pmui.OvalLayout.STANDARD_BORDER_RADIUS/2, 0, 0);\n\t\tbackgroundVolumeLabelAlign.setRelativeName(\"background\");\n\t\tbackgroundVolumeLabel.setLayoutParameter(backgroundVolumeLabelAlign);\n\n\t\tvar effectVolumeLabelAlign = new ccui.RelativeLayoutParameter();\n\t\teffectVolumeLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\teffectVolumeLabelAlign.setMargin(pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS/2);\n\t\teffectVolumeLabelAlign.setRelativeName(\"effect\");\n\t\teffectVolumeLabel.setLayoutParameter(effectVolumeLabelAlign);\n\n\t\tvar backgroundSliderAlign = new ccui.RelativeLayoutParameter();\n\t\tbackgroundSliderAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tbackgroundSliderAlign.setMargin(5, 0, 0, 0);\n\t\tbackgroundSliderAlign.setRelativeToWidgetName(\"background\");\n\t\tthis._backgroundSlider.setLayoutParameter(backgroundSliderAlign);\n\n\t\tvar effectSliderAlign = new ccui.RelativeLayoutParameter();\n\t\teffectSliderAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\teffectSliderAlign.setMargin(5, 0, 0, 0);\n\t\teffectSliderAlign.setRelativeToWidgetName(\"effect\");\n\t\tthis._effectSlider.setLayoutParameter(effectSliderAlign);\n\n\t\tthis.addChild(backgroundVolumeLabel);\n\t\tthis.addChild(this._backgroundSlider);\n\t\tthis.addChild(effectVolumeLabel);\n\t\tthis.addChild(this._effectSlider);\n\n\t\tvar height = effectVolumeLabel.getContentSize().height + backgroundVolumeLabel.getContentSize().height + 10.0;\n\t\tvar width = Math.max(backgroundVolumeLabel.getContentSize().width, effectVolumeLabel.getContentSize().width);\n\t\twidth += 5 + this._effectSlider.getContentSize().width;\n\t\twidth += 2*pmui.OvalLayout.STANDARD_BORDER_RADIUS;\n\n\t\tthis.setContentSize(width, height);\n\n\t},\n\n\t_backgroundVolumeChanged: function(target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tpm.settings.setBackgroundVolume(target.getPercent() / 100);\n\t\t\tpm.audioUtils.setBackgroundMusicVolume(target.getPercent() / 100);\n\t\t}\n\t},\n\t_effectVolumeChanged: function(target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tpm.settings.setEffectVolume(target.getPercent() / 100);\n\t\t\tpm.audioUtils.setEffectVolume(target.getPercent() / 100);\n\t\t}\n\t},\n\n\t_backgroundSlider: 0,\n\t_effectSlider: 0\n});\n","/**\n * Created by antonded on 10.11.14.\n */\n\n/**\n * @class Preview layer for certain map in level.\n * @extends ccui.Layout\n * @constructor\n * @param {Number | pm.AbstractLevel} game Index of game or level object.
\n * If level object specified second param not needed.\n * @param {Number} [level] Index of level.\n * @param {Number} width\n * @param {Number} height\n */\nvar LevelPreview = ccui.Layout.extend(/** @lends LevelPreview# */{\n\t_levelClass: null,\n\t_mapSprite: null,\n\t_width: 0,\n\t_height: 0,\n\n\tctor: function (game, level, width, height)\n\t{\n\t\tthis._super();\n\n\t\tthis._width = width || LevelPreview.WIDTH;\n\t\tthis._height = height || LevelPreview.HEIGHT;\n\n\t\tthis.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis.setBackGroundColorOpacity(0);\n\n\t\tthis.setContentSize(this._width, this._height);\n\n\t\tif (game && level === undefined)\n\t\t\tthis._initWithPreview(game);\n\n\t\telse if (game !== undefined && level !== undefined)\n\t\t\tthis._initWithGameAndLevel(game, level);\n\t},\n\n\t_initWithPreview: function (preview)\n\t{\n\t\tthis._levelClass = preview;\n\n\t\tthis._levelClass.load(true);\n\n\t\tif(this._levelClass !== null)\n\t\t\tthis._loadLevelView();\n\n\t},\n\n\t_initWithGameAndLevel: function(game, level)\n\t{\n\t\tthis._levelClass = world.loadLevel(true, game, level);\n\n\t\tif(this._levelClass !== null)\n\t\t\tthis._loadLevelView();\n\t},\n\n\t_loadLevelView: function()\n\t{\n\t\tvar activeMapLayer = this._levelClass.activeMap.generateMapLayer(true);\n\n\t\tvar scale = activeMapLayer.width > activeMapLayer.height ?\n\t\t\tthis._width / activeMapLayer.width :\n\t\t\tthis._height / activeMapLayer.height;\n\n\t\tscale /= 1.1;\n\n\t\tif (activeMapLayer instanceof pm.MapLayer2D)\n\t\t{\n\t\t\tswitch (activeMapLayer.getOrientation())\n\t\t\t{\n\t\t\t\tcase pm.MapLayer2D.Orientation.Iso:\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.MapLayer2D.Orientation.Ortho:\n\t\t\t\t\tscale /= Math.sqrt(2);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tscale *= 1.7;\n\t\t}\n\n\t\tactiveMapLayer.setScale(scale);\n\n\t\tactiveMapLayer.setAnchorPoint(cc.p());\n\t\tactiveMapLayer.setPosition((this._width - activeMapLayer.getBoundingBox().width) / 2,\n\t\t\t(this._height - activeMapLayer.getBoundingBox().height) / 2);\n\n\t\tvar renderTexture = new cc.RenderTexture(this._width, this._height);\n\n\t\tif(!cc.sys.isNative)\n\t\t\trenderTexture.setVirtualViewport(cc.p(0, 0), cc.director.getWinSize(), cc.director.getWinSizeInPixels());\n\n\t\tthis._beforeRenderToTextureBegin();\n\t\trenderTexture.begin();\n\t\tactiveMapLayer.visit();\n\t\trenderTexture.end();\n\t\tthis._afterRenderToTextureEnd();\n\n\t\tthis._mapSprite = new cc.Sprite(renderTexture.getSprite().getTexture());\n\n\t\t//Magic for converting from OpenGL buffer rendering to cocos format\n\t\tthis._mapSprite.setScaleY(-1);\n\t\tthis._mapSprite.setPosition(this._width / 2, this._height / 2);\n\n\t\tthis.addChild(this._mapSprite);\n\t},\n\n\t//TODO Temporary fix for correct Render cache state restore after render to texture.\n\t_beforeRenderToTextureBegin: function()\n\t{\n\t\tif(!cc.sys.isNative)\n\t\t\tthis._cacheFlag = cc._renderType === cc.game.RENDER_TYPE_CANVAS ? cc.renderer._isCacheToCanvasOn : cc.renderer._isCacheToBufferOn;\n\t},\n\n\t_afterRenderToTextureEnd: function()\n\t{\n\t\tif(cc.sys.isNative)\n\t\t\treturn;\n\n\t\tif(cc._renderType === cc.game.RENDER_TYPE_CANVAS)\n\t\t\tcc.renderer._isCacheToCanvasOn = this._cacheFlag;\n\t\telse\n\t\t\tcc.renderer._isCacheToBufferOn = this._cacheFlag;\n\t}\n});\n\n/**\n * Default width of {@link LevelPreview}\n * @const\n * @default\n * @type {Number}\n */\nLevelPreview.WIDTH = 150;\n/**\n * Default height of {@link LevelPreview}\n * @const\n * @default\n * @type {Number}\n */\nLevelPreview.HEIGHT = 150;\n","/**\n * Created by antonded on 10.11.14.\n */\n/**\n * @class Layer used for changing language of game.\n * @extends ccui.HBox\n * @constructor\n * @param {cc.Scene} object Constructor of scene.\n */\nvar LanguageLayer = ccui.HBox.extend(/** @lends LanguageLayer# */{\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tvar russianLanguage = new pmui.Button(\"Languages/russian_flag.png\",\n\t\t\t\"Languages/russian_flag_Selected.png\",\n\t\t\t\"Languages/russian_flag_Selected.png\");\n\n\t\tvar enLanguage = new pmui.Button(\"Languages/en_flag.png\",\n\t\t\t\"Languages/en_flag_Selected.png\",\n\t\t\t\"Languages/en_flag_Selected.png\");\n\n\t\trussianLanguage.setName(cc.sys.LANGUAGE_RUSSIAN);\n\n\t\tenLanguage.setName(cc.sys.LANGUAGE_ENGLISH);\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setMargin(10, 0, 0, 0);\n\n\t\tenLanguage.setLayoutParameter(buttonMargin);\n\n\t\tenLanguage.addClickEventListener(this._selectLanguage.bind(this));\n\t\trussianLanguage.addClickEventListener(this._selectLanguage.bind(this));\n\n\t\tthis.addChild(russianLanguage);\n\t\tthis.addChild(enLanguage);\n\n\t\tthis.setContentSize(cc.size(2 * russianLanguage.getContentSize().width + 10,\n\t\t\trussianLanguage.getContentSize().height));\n\t},\n\n\t_selectLanguage: function(sender)\n\t{\n\t\tResetLanguage();\n\n\t\tpm.settings.setLanguage(sender.getName());\n\n\t\tpm.sendCustomEvent(pm.UPDATE_SCENE);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 21.09.2018.\n */\n\n/**\n * @class Layer for edit log info.\n * @extends pmui.OvalLayout\n */\nvar EditLogInfoLayer = pmui.OvalLayout.extend(/** @extends EditLogInfoLayer# */{\n\t_target: null,\n\t_cancelCallback: null,\n\t_changesListView: null,\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(EditLogInfoLayer.WIDTH, EditLogInfoLayer.HEIGHT);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n\t\tthis._target = target;\n\t\tthis._cancelCallback = cancelCallback;\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._cancelCallback.bind(this._target));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton);\n\n\t\tthis._changesListView = new ccui.ListView();\n\t\tthis._changesListView.setContentSize(EditLogInfoLayer.WIDTH - 2 * EditLogInfoLayer.BORDER, EditLogInfoLayer.HEIGHT - 2 * EditLogInfoLayer.BORDER);\n\t\tthis._changesListView.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._changesListView.setScrollBarOpacity(255 * 0.9);\n\t\tthis._changesListView.setScrollBarWidth(5);\n\t\tthis._changesListView.setItemsMargin(5);\n\n\t\tvar listAlign = new ccui.RelativeLayoutParameter();\n\t\tlistAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tlistAlign.setMargin(EditLogInfoLayer.BORDER, EditLogInfoLayer.BORDER, 0, 0);\n\t\tthis._changesListView.setLayoutParameter(listAlign);\n\n\t\tthis.addChild(this._changesListView);\n\n\t\tthis._fillChangesList();\n\t},\n\n\t_fillChangesList: function()\n\t{\n\t\tvar changedGames = world.getEditLog().getChangedGames();\n\t\tvar changedLevels = world.getEditLog().getChangedLevels();\n\n\t\tfor (var i = 0; i < world.getGameCount(); ++i)\n\t\t{\n\t\t\tvar game = world.games[i];\n\t\t\tvar gameId = game.id;\n\n\t\t\tif (changedGames && changedGames[gameId])\n\t\t\t{\n\t\t\t\tvar renamedString = (changedGames[gameId].renamed) ? LocalizedString(\"renamed\") : \"\";\n\t\t\t\tvar reorderedString = (changedGames[gameId].reordered) ? LocalizedString(\"reorderedF\") : \"\";\n\n\t\t\t\tvar string = game.name + \" ----- \";\n\n\t\t\t\tif (changedGames[gameId].renamed && changedGames[gameId].reordered)\n\t\t\t\t\tstring += renamedString + \", \" + reorderedString;\n\t\t\t\telse\n\t\t\t\t\tstring += renamedString + reorderedString;\n\n\t\t\t\tvar child = new ccui.Text(string, pm.settings.fontName, pm.settings.fontSize);\n\t\t\t\tthis._changesListView.pushBackCustomItem(child);\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < world.getLevelCount(i); ++j)\n\t\t\t{\n\t\t\t\tvar level = game.levels[j];\n\t\t\t\tvar levelId = level.id;\n\n\t\t\t\tif (changedLevels && changedLevels[levelId])\n\t\t\t\t{\n\t\t\t\t\tvar updatedString = (changedLevels[levelId].updated) ? LocalizedString(\"updated\") : \"\";\n\t\t\t\t\tvar reorderedString = (changedLevels[levelId].reordered) ? LocalizedString(\"reorderedM\") : \"\";\n\n\t\t\t\t\tvar string = game.name + \". \" + level.name + \" ----- \";\n\n\t\t\t\t\tif (changedLevels[levelId].updated && changedLevels[levelId].reordered)\n\t\t\t\t\t\tstring += updatedString + \", \" + reorderedString;\n\t\t\t\t\telse\n\t\t\t\t\t\tstring += updatedString + reorderedString;\n\n\t\t\t\t\tvar child = new ccui.Text(string, pm.settings.fontName, pm.settings.fontSize);\n\t\t\t\t\tthis._changesListView.pushBackCustomItem(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\nEditLogInfoLayer.WIDTH = 650;\nEditLogInfoLayer.HEIGHT = 500;\nEditLogInfoLayer.TAG = 8317;\nEditLogInfoLayer.SEPARATOR = 15.0;\nEditLogInfoLayer.WIDTH_DELTA = 70.0;\nEditLogInfoLayer.BORDER = 15.0;\n","/**\n * Created by Nikita Besshaposhnikov on 27.01.15.\n */\n\n/**\n * @class Layer for showing current info of some World.\n * @extends pmui.PopupLayer\n * @constructor\n */\nvar WorldInfoLayer = pmui.PopupLayer.extend(/** @lends WorldInfoLayer# */{\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar ownerName = pm.settings.getWorldRecord(world.id).owner.name;\n\n\t\tvar ownerLabel = new ccui.Text(LocalizedString(\"WorldIssuer\").format(ownerName), pm.settings.fontName, 17);\n\t\townerLabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\n\t\tvar ownerLabelMargin = new ccui.RelativeLayoutParameter();\n\t\townerLabelMargin.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\townerLabelMargin.setMargin(2 + WorldInfoLayer.BORDER, 2 + WorldInfoLayer.BORDER, 0, 0);\n\t\townerLabelMargin.setRelativeName(\"owner\");\n\t\townerLabel.setLayoutParameter(ownerLabelMargin);\n\n\t\tvar worldChanged = world.getEditLog().isEmpty();\n\t\tvar status = worldChanged ? LocalizedString(\"WorldChanged\") : LocalizedString(\"WorldActual\");\n\n\t\tvar statusLabel = new ccui.Text(LocalizedString(\"WorldStatus\").format(status), pm.settings.fontName, 17);\n\t\tstatusLabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\n\t\tvar statusLabelMargin = new ccui.RelativeLayoutParameter();\n\t\tstatusLabelMargin.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tstatusLabelMargin.setRelativeToWidgetName(\"owner\");\n\t\tstatusLabelMargin.setRelativeName(\"status\");\n\t\tstatusLabel.setLayoutParameter(statusLabelMargin);\n\n\t\tvar showEditLogButton = new pmui.InterfaceButton(this._showEditLog, this, LocalizedString(\"ShowEditLog\"), 17);\n\n\t\tvar buttonAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tbuttonAlign.setRelativeToWidgetName(\"status\");\n\n\t\tshowEditLogButton.setLayoutParameter(buttonAlign);\n\n\t\tthis.addChild(showEditLogButton);\n\n\t\tthis.setContentSizeWithBorder(\n\t\t\tMath.max(statusLabel.width, ownerLabel.width, showEditLogButton.width) + 2*WorldInfoLayer.BORDER,\n\t\t\tstatusLabel.height + ownerLabel.height + showEditLogButton.height + 2*WorldInfoLayer.BORDER\n\t\t);\n\n\t\tthis.addChild(statusLabel);\n\t\tthis.addChild(ownerLabel);\n\t},\n\n\t_showEditLog: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(EditLogInfoLayer.TAG))\n\t\t\treturn;\n\n\t\tvar editLogInfoLayer = new EditLogInfoLayer(this, this._closeEditLog);\n\n\t\tcc.director.getRunningScene().addChild(editLogInfoLayer, 100, EditLogInfoLayer.TAG);\n\t},\n\n\t_closeEditLog: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(EditLogInfoLayer.TAG);\n\t}\n});\n\nWorldInfoLayer.BORDER = 5;\n","/**\n * Created by danilaeremin on 25.06.15.\n */\n\n/**\n * @class Layout for asking user to wait.\n * @extends pmui.OvalLayout\n * @constructor\n */\nvar WaitLayer = pmui.OvalLayout.extend(/** @lends WaitLayer# */{\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(WaitLayer.WIDTH, WaitLayer.HEIGHT);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"PleaseWait\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tlabelAlign.setMargin(0, -40, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t/**\n * Delete WaitLayer from parent.\n */\n\thide: function()\n\t{\n\t\tthis.removeFromParent();\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\nWaitLayer.WIDTH = 290.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nWaitLayer.HEIGHT = 140.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nWaitLayer.SEPARATOR = 5.0;\n","/**\n * Created by Nikita Besshaposhnikov on 16.02.18.\n */\n\n/**\n * This callbacks are used on Ok and Cancel buttons.\n * @callback LevelConflictLayer~okCallback\n * @param {Array} levelsToUpdate Levels selected to update\n * @param {Array} levelsToSync Levels selected to sync\n */\n\n/**\n * @class Layout for login in editor.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {LevelConflictLayer~actionCallback?} callback Called on Ok button clicked.\n */\nvar LevelConflictLayer = pmui.OvalLayout.extend(/** @lends LevelConflictLayer# */{\n\t_object: null,\n\t_callback: null,\n\tcancel_callback: null,\n\n\t_levelsUpdate: [],\n\t_levelsSync: [],\n\n\t_levelUpdateList: null,\n\t_levelSyncList: null,\n\n\t_selectLayout: null,\n\t_levelUpdateContainer: null,\n\t_levelSyncContainer: null,\n\n\tctor: function(levels, callback)\n\t{\n\t\tthis._super();\n\n\t\tthis._callback = callback;\n\n\t\tthis._levelsUpdate = [];\n\t\tthis._levelsSync = [];\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar buttonAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tokButton.setLayoutParameter(buttonAlign);\n\n\t\tthis.addChild(okButton);\n\n\t\tvar header = new ccui.Text(LocalizedString(\"LevelConflictResolve\"), pm.settings.fontName, 20);\n\n\t\tvar headerAlign = new ccui.RelativeLayoutParameter();\n\t\theaderAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\theaderAlign.setMargin(pmui.OvalLayout.STANDARD_BORDER_RADIUS, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\theaderAlign.setRelativeName(\"header\");\n\n\t\theader.setLayoutParameter(headerAlign);\n\n\t\tthis.addChild(header);\n\n\t\tthis._selectLayout = new ccui.HBox();\n\n\t\tvar selectLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tselectLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tselectLayoutAlign.setMargin(0, LevelConflictLayer.SEPARATOR, 0, 0);\n\t\tselectLayoutAlign.setRelativeToWidgetName(\"header\");\n\n\t\tthis._selectLayout.setLayoutParameter(selectLayoutAlign);\n\n\t\tvar labels = [];\n\n\t\tfor(var i = 0; i < levels.length; ++i)\n\t\t{\n\t\t\tthis._levelsUpdate.push(levels[i]);\n\t\t\tlabels.push(\"{0} / {1}\".format(levels[i].game.name, levels[i].level.name));\n\t\t}\n\n\t\tthis._levelUpdateList = new pmui.SelectionListView(\n\t\t\tlabels,\n\t\t\tcc.size(LevelConflictLayer.SELECT_WIDTH, LevelConflictLayer.SELECT_HEIGHT)\n\t\t);\n\n\t\tthis._levelSyncList = new pmui.SelectionListView(\n\t\t\t[],\n\t\t\tcc.size(LevelConflictLayer.SELECT_WIDTH, LevelConflictLayer.SELECT_HEIGHT)\n\t\t);\n\n\t\tthis._levelUpdateContainer = new ccui.VBox();\n\t\tvar levelUpdateLabel = new ccui.Text(LocalizedString(\"UseLocal\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tthis._levelUpdateContainer.addChild(levelUpdateLabel);\n\n\t\tthis._levelUpdateContainer.addChild(this._levelUpdateList);\n\n\t\tthis._levelUpdateContainer.setContentSize(\n\t\t\tMath.max(this._levelUpdateList.width, levelUpdateLabel.width),\n\t\t\tthis._levelUpdateList.height + levelUpdateLabel.height\n\t\t);\n\n\t\tthis._selectLayout.addChild(this._levelUpdateContainer);\n\n\t\tvar buttonsLayout = new ccui.RelativeBox();\n\t\tvar syncButtons = new ccui.VBox();\n\n\t\tvar addToSync = new pmui.InterfaceButton(this._addToSync, this, \"-->\");\n\t\tvar addToUpdate = new pmui.InterfaceButton(this._addToUpdate, this, \"<--\");\n\n\t\tvar syncButtonsAlign = new ccui.RelativeLayoutParameter();\n\t\tsyncButtonsAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\n\t\tsyncButtons.setLayoutParameter(syncButtonsAlign);\n\n\t\tsyncButtons.addChild(addToSync);\n\t\tsyncButtons.addChild(addToUpdate);\n\n\t\tsyncButtons.setContentSize(Math.max(addToSync.width, addToUpdate.width), addToSync.height + addToUpdate.height);\n\n\t\tbuttonsLayout.addChild(syncButtons);\n\t\tbuttonsLayout.setContentSize(Math.max(addToSync.width, addToUpdate.width), LevelConflictLayer.SELECT_HEIGHT);\n\n\t\tthis._selectLayout.addChild(buttonsLayout);\n\n\t\tthis._levelSyncContainer = new ccui.VBox();\n\t\tvar levelSyncLabel = new ccui.Text(LocalizedString(\"UseServer\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tthis._levelSyncContainer.addChild(levelSyncLabel);\n\t\tthis._levelSyncContainer.addChild(this._levelSyncList);\n\n\t\tthis._levelSyncContainer.setContentSize(\n\t\t\tMath.max(this._levelSyncList.width, levelSyncLabel.width),\n\t\t\tthis._levelSyncList.height + levelSyncLabel.height\n\t\t);\n\n\t\tthis._selectLayout.addChild(this._levelSyncContainer);\n\n\t\tthis._selectLayout.setContentSize(\n\t\t\tthis._levelUpdateList.width + buttonsLayout.width + this._levelSyncList.width,\n\t\t\tMath.max(this._levelUpdateContainer.height, this._levelSyncContainer.height)\n\t\t);\n\n\t\tthis.addChild(this._selectLayout);\n\n\t\tthis.setContentSizeWithBorder(this._selectLayout.getContentSize().width, this._selectLayout.getContentSize().height +\n okButton.getContentSize().height + 2 * LevelConflictLayer.SEPARATOR);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t_addToSync: function()\n\t{\n\t\tvar index = this._levelUpdateList.getSelectedItemIndex();\n\n\t\tif(index !== -1)\n\t\t{\n\t\t\tvar width = this._selectLayout.width - this._levelSyncList.width;\n\n\t\t\tvar level = this._levelsUpdate[index];\n\n\t\t\tthis._levelsUpdate.splice(index, 1);\n\n\t\t\tthis._levelsSync.push(level);\n\n\t\t\tthis._levelUpdateList.clearSelection();\n\t\t\tthis._levelUpdateList.removeItem(index);\n\n\t\t\tthis._levelSyncList.addItem(\"{0} / {1}\".format(level.game.name, level.level.name));\n\n\t\t\tthis._selectLayout.setContentSize(width + this._levelSyncList.width, this._selectLayout.height);\n\t\t\tthis._levelSyncContainer.setContentSize(this._levelSyncList.width, this._levelSyncContainer.height);\n\n\t\t\tthis.setContentSize(this._selectLayout.width + 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS, this.height);\n\t\t\tthis._selectLayout.forceDoLayout();\n\t\t\tthis.forceDoLayout();\n\t\t}\n\t},\n\n\t_addToUpdate: function()\n\t{\n\t\tvar index = this._levelSyncList.getSelectedItemIndex();\n\n\t\tif(index !== -1)\n\t\t{\n\t\t\tvar width = this._selectLayout.width - this._levelUpdateList.width;\n\n\t\t\tvar level = this._levelsSync[index];\n\n\t\t\tthis._levelsSync.splice(index, 1);\n\n\t\t\tthis._levelsUpdate.push(level);\n\n\t\t\tthis._levelSyncList.clearSelection();\n\t\t\tthis._levelSyncList.removeItem(index);\n\n\t\t\tthis._levelUpdateList.addItem(\"{0} / {1}\".format(level.game.name, level.level.name));\n\n\t\t\tthis._selectLayout.setContentSize(width + this._levelUpdateList.width, this._selectLayout.height);\n\t\t\tthis._levelUpdateContainer.setContentSize(this._levelUpdateList.width, this._levelUpdateContainer.height);\n\n\t\t\tthis.setContentSize(this._selectLayout.width + 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS, this.height);\n\t\t\tthis._selectLayout.forceDoLayout();\n\t\t\tthis.forceDoLayout();\n\t\t}\n\t},\n\n\t_ok: function(sender)\n\t{\n\t\tthis.removeFromParent();\n\n\t\tif(this._callback)\n\t\t\tthis._callback(this._levelsUpdate, this._levelsSync);\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\nLevelConflictLayer.SEPARATOR = 10.0;\n\nLevelConflictLayer.SELECT_WIDTH = 300;\nLevelConflictLayer.SELECT_HEIGHT = 500;\n","/**\n * Created by Kirill Mashchenko on 30.10.18.\n */\n\n/**\n * @class Common Layout for Lessons pages .\n * @extends pmui.OvalLayout\n */\nvar CommonLessonPage = pmui.OvalLayout.extend(/** @lends CommonLessonPage# */{\n\t_target: null,\n\t_cancelCallback: null,\n\n\t_scroll: null,\n\t_container: null,\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(pm.settings.getScreenSize().width * CommonLessonPage.SCALE_X, pm.settings.getScreenSize().height * CommonLessonPage.SCALE_Y);\n\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2 - CommonLessonPage.MARGIN);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis._target = target;\n\t\tthis._cancelCallback = cancelCallback;\n\n\t\tif(!CORE_BUILD)\n\t\t\tpm.spriteUtils.clear();\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._cancelCallback.bind(this._target));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton, 1);\n\n\t\tthis._scroll = new ccui.ListView();\n\n\t\tthis._scroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._scroll.setScrollBarEnabled(true);\n\t\tthis._scroll.setScrollBarWidth(CommonLessonPage.SCROLL_BAR_WIDTH);\n\t\tthis._scroll.setScrollBarOpacity(255 * 0.9);\n\n\t\tthis._scroll.setContentSize(this.width - 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS,\n\t\t\tthis.height - 2 * pmui.OvalLayout.STANDARD_BORDER_RADIUS);\n\n\t\tvar scrollAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tthis._scroll.setLayoutParameter(scrollAlign);\n\n\t\tthis.addChild(this._scroll);\n\n\t\tthis._container = new ccui.Layout();\n\t\tthis._container.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._container.setContentSize(this._scroll.getContentSize());\n\n\t\tthis._scroll.pushBackCustomItem(this._container);\n\t}\n});\n\nCommonLessonPage.TAG = 1741;\nCommonLessonPage.SCROLL_BAR_WIDTH = 5;\nCommonLessonPage.SEPARATOR = 10;\nCommonLessonPage.CELL_HEIGHT = 70;\nCommonLessonPage.TABLE_MARGIN = 50;\nCommonLessonPage.SCALE_X = 0.87;\nCommonLessonPage.SCALE_Y = 0.85;\nCommonLessonPage.MARGIN = 30;\n","/**\n * Created by Kirill Mashchenko on 30.10.18.\n */\n\n/**\n * @class Layout for Repair Lesson page.\n * @extends CommonLessonPage\n */\n\nvar RepairLessonPage = CommonLessonPage.extend(/** @lends RepairLessonPage# */{\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super(target, cancelCallback);\n\n\t\tthis._loadExtraInterface();\n\t},\n\n\t_loadExtraInterface: function()\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(pm.RepairLevelModule.Type, pm.RepairLevelModule.RobotType));\n\n\t\tvar repairSprite = new ccui.ImageView(\"rep_robot3.png\", ccui.Widget.PLIST_TEXTURE);\n\n\t\trepairSprite.setAnchorPoint(cc.p(0, 1));\n\n\t\trepairSprite.setScale(2);\n\n\t\tvar repairAlign = new ccui.RelativeLayoutParameter();\n\t\trepairAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\trepairAlign.setMargin(3 * CommonLessonPage.SEPARATOR, CommonLessonPage.SEPARATOR, 0, 0);\n\t\trepairAlign.setRelativeName(\"repairSprite\");\n\t\trepairSprite.setLayoutParameter(repairAlign);\n\n\t\tthis._container.addChild(repairSprite);\n\n\t\tvar repairLabel = new ccui.Text(LocalizedString(\"Repair\"), pm.settings.fontName, 30);\n\n\t\tvar repairLabelAlign = new ccui.RelativeLayoutParameter();\n\t\trepairLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\trepairLabelAlign.setMargin(repairSprite.width - repairLabel.width / 2, (cc.sys.isNative) ? 0 : repairSprite.height, 0, 0);\n\t\trepairLabelAlign.setRelativeName(\"repairLabel\");\n\t\trepairLabelAlign.setRelativeToWidgetName(\"repairSprite\");\n\t\trepairLabel.setLayoutParameter(repairLabelAlign);\n\n\t\tthis._container.addChild(repairLabel);\n\n\t\tvar description = \"Вертун отвечает за ремонт. Он закрашивает поврежденные плиты специальным огнеупорным составом. Состав заполняет трещины в поврежденной плите, и плита снова готова к работе.\";\n\t\tvar commonTextLabel = new ccui.Text(description, pm.settings.fontName, 25);\n\t\tcommonTextLabel.setTextAreaSize(cc.size(this._container.width - 6 * CommonLessonPage.SEPARATOR - 2 * repairSprite.width, 0));\n\n\t\tvar commonTextAlign = new ccui.RelativeLayoutParameter();\n\t\tcommonTextAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tcommonTextAlign.setMargin(cc.sys.isNative ? 2 * CommonLessonPage.SEPARATOR : repairSprite.width + 2 * CommonLessonPage.SEPARATOR, 3 * CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommonTextAlign.setRelativeName(\"description\");\n\t\tcommonTextAlign.setRelativeToWidgetName(\"repairSprite\");\n\t\tcommonTextLabel.setLayoutParameter(commonTextAlign);\n\n\t\tthis._container.addChild(commonTextLabel);\n\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getMapTileset(pm.RepairLevelModule.Type, 0));\n\n\t\tvar tableInfo = new ccui.HBox();\n\n\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\ttableAlign.setRelativeName(\"tableInfo\");\n\n\t\tvar margin = Math.max(2 * repairSprite.height + repairLabel.height + CommonLessonPage.SEPARATOR, commonTextLabel.height + 3 * CommonLessonPage.SEPARATOR);\n\n\t\ttableAlign.setMargin(0, margin, 0, 0);\n\t\ttableInfo.setLayoutParameter(tableAlign);\n\n\t\tvar height = 0;\n\n\t\tvar finishBox = new ccui.VBox();\n\n\t\tvar finishLabel = new ccui.Text(\"Элементы поля\", pm.settings.fontName, 30);\n\n\t\tvar finishLabelAlign = new ccui.LinearLayoutParameter();\n\t\tfinishLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tfinishLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tfinishLabel.setLayoutParameter(finishLabelAlign);\n\n\t\tfinishBox.addChild(finishLabel);\n\n\t\tfor (var i = 1; i <= 3; ++i)\n\t\t{\n\t\t\tvar finishContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tfinishContainer.setLayoutParameter(containerMargin);\n\n\t\t\tfinishBox.addChild(finishContainer);\n\n\t\t\tif (i !== 3)\n\t\t\t\tvar image = new ccui.ImageView(\"mapElement{0}.png\".format(i + 1), ccui.Widget.PLIST_TEXTURE);\n\t\t\telse\n\t\t\t\tvar image = new ccui.ImageView(\"targetElement.png\", ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\n\t\t\tfinishContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getObjectDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = 2 * CommonLessonPage.SEPARATOR;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tfinishContainer.addChild(label);\n\n\t\t\tfinishContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + finishContainer.height;\n\t\t}\n\n\t\tfinishBox.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar commandBox = new ccui.VBox();\n\n\t\tvar commandLabel = new ccui.Text(\"Команды\", pm.settings.fontName, 30);\n\n\t\tvar commandLabelAlign = new ccui.LinearLayoutParameter();\n\t\tcommandLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tcommandLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommandLabel.setLayoutParameter(commandLabelAlign);\n\n\t\tcommandBox.addChild(commandLabel);\n\n\t\tfor (var i = 0; i < 4; ++i)\n\t\t{\n\t\t\tvar commandContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tcommandContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcommandBox.addChild(commandContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.RepairLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"r4_move-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"r4_turn_left-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"r4_turn_right-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tname = \"rep_repair-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tcommandContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tcommandContainer.addChild(label);\n\n\t\t\tcommandContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + commandContainer.height;\n\t\t}\n\n\t\tcommandBox.setContentSize(this._container.width / 2, height);\n\n\t\ttableInfo.setContentSize(this._container.width, Math.max(finishBox.height, commandBox.height));\n\n\t\ttableInfo.addChild(finishBox);\n\t\ttableInfo.addChild(commandBox);\n\t\tthis._container.addChild(tableInfo);\n\n\t\tvar conditionLabel = new ccui.Text(\"Команды-вопросы\", pm.settings.fontName, 30);\n\n\t\tvar conditionLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tconditionLabelAlign.setRelativeToWidgetName(\"tableInfo\");\n\t\tconditionLabelAlign.setRelativeName(\"conditionLabel\");\n\n\t\tvar margin = 2 * CommonLessonPage.SEPARATOR + 40;\n\n\t\tconditionLabelAlign.setMargin(0, margin, 0, 0);\n\t\tconditionLabel.setLayoutParameter(conditionLabelAlign);\n\n\t\tthis._container.addChild(conditionLabel);\n\n\t\tvar conditionInfo = new ccui.HBox();\n\n\t\tvar conditionAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tconditionAlign.setRelativeToWidgetName(\"conditionLabel\");\n\n\t\tvar margin = CommonLessonPage.SEPARATOR;\n\n\t\tconditionAlign.setMargin(0, margin, 0, 0);\n\t\tconditionInfo.setLayoutParameter(conditionAlign);\n\n\t\theight = 0;\n\n\t\tvar conditionBox1 = new ccui.VBox();\n\n\t\tfor (var i = 0; i < 4; ++i)\n\t\t{\n\t\t\tvar conditionContainer = new ccui.HBox();\n\n\t\t\tvar conditionContainerMargin = new ccui.LinearLayoutParameter();\n\t\t\tconditionContainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tconditionContainer.setLayoutParameter(conditionContainerMargin);\n\n\t\t\tconditionBox1.addChild(conditionContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.RepairLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"cond-r4_clear-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"cond-rep_gib-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"cond-rep_gig-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tname = \"cond-rep_gilb-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tconditionContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getConditionDescription(i), pm.settings.fontName, 25);\n\t\t\tlabel.setTextAreaSize(cc.size(this._container.width / 2 - image.width - 2 * CommonLessonPage.TABLE_MARGIN, 0));\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tconditionContainer.addChild(label);\n\n\t\t\tconditionContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + conditionContainer.height;\n\t\t}\n\n\t\tconditionBox1.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar conditionBox2 = new ccui.VBox();\n\n\t\tfor (var i = 0; i < 4; ++i)\n\t\t{\n\t\t\tvar conditionContainer = new ccui.HBox();\n\n\t\t\tvar conditionContainerMargin = new ccui.LinearLayoutParameter();\n\t\t\tconditionContainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tconditionContainer.setLayoutParameter(conditionContainerMargin);\n\n\t\t\tconditionBox2.addChild(conditionContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.RepairLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"cond-r4_wall-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"cond-rep_ginb-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"cond-rep_ging-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tname = \"cond-rep_ginlb-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tconditionContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getConditionDescription(4 + i), pm.settings.fontName, 25);\n\t\t\tlabel.setTextAreaSize(cc.size(this._container.width / 2 - image.width - 2 * CommonLessonPage.TABLE_MARGIN, 0));\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tconditionContainer.addChild(label);\n\n\t\t\tconditionContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + conditionContainer.height;\n\t\t}\n\n\t\tconditionBox2.setContentSize(this._container.width / 2, height);\n\n\t\tconditionInfo.setContentSize(this._container.width, Math.max(conditionBox1.height, conditionBox2.height));\n\n\t\tconditionInfo.addChild(conditionBox1);\n\t\tconditionInfo.addChild(conditionBox2);\n\t\tthis._container.addChild(conditionInfo);\n\n\t\tthis._container.setContentSize(this._container.width,\n\t\t\tMath.max(2 * repairSprite.height + repairLabel.height + CommonLessonPage.SEPARATOR,\n\t\t\t\tcommonTextLabel.height + 4 * CommonLessonPage.SEPARATOR) + tableInfo.height + conditionInfo.height +\n\t\t\tconditionLabel.height + 8 * CommonLessonPage.SEPARATOR);\n\t},\n\n\t_getObjectDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 1:\n\t\t\t\treturn \"нужен ремонт\";\n\t\t\tcase 2:\n\t\t\t\treturn \"отремонтирована\";\n\t\t\tcase 3:\n\t\t\t\treturn \"финиш\";\n\t\t}\n\t},\n\n\t_getCommandDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"вперед\";\n\t\t\tcase 1:\n\t\t\t\treturn \"налево\";\n\t\t\tcase 2:\n\t\t\t\treturn \"направо\";\n\t\t\tcase 3:\n\t\t\t\treturn \"закрасить\";\n\t\t}\n\t},\n\n\t_getConditionDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"впереди свободно\";\n\t\t\tcase 1:\n\t\t\t\treturn \"клетка синяя\";\n\t\t\tcase 2:\n\t\t\t\treturn \"клетка серая\";\n\t\t\tcase 3:\n\t\t\t\treturn \"клетка голубая\";\n\t\t\tcase 4:\n\t\t\t\treturn \"впереди стена\";\n\t\t\tcase 5:\n\t\t\t\treturn \"клетка не синяя\";\n\t\t\tcase 6:\n\t\t\t\treturn \"клетка не серая\";\n\t\t\tcase 7:\n\t\t\t\treturn \"клетка не голубая\";\n\t\t}\n\t}\n});\n\n","/**\n * Created by Kirill Mashchenko on 30.10.18.\n */\n\n/**\n * @class Layout for Push Lesson page.\n * @extends CommonLessonPage\n */\n\nvar PushLessonPage = CommonLessonPage.extend(/** @lends PushLessonPage# */{\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super(target, cancelCallback);\n\n\t\tthis._loadExtraInterface();\n\t},\n\n\t_loadExtraInterface: function()\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(pm.PushLevelModule.Type, pm.PushLevelModule.RobotTypes.PushRobot));\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(pm.PushLevelModule.Type, pm.PushLevelModule.RobotTypes.PullRobot));\n\n\t\tvar pushSprite = new ccui.ImageView(\"push_robot3.png\", ccui.Widget.PLIST_TEXTURE);\n\t\tvar pullSprite = new ccui.ImageView(\"pull_robot0.png\", ccui.Widget.PLIST_TEXTURE);\n\n\t\tpushSprite.setAnchorPoint(cc.p(0, 1));\n\t\tpullSprite.setAnchorPoint(cc.p(1, 1));\n\n\t\tpushSprite.setScale(2);\n\t\tpullSprite.setScale(2);\n\n\t\tvar pushAlign = new ccui.RelativeLayoutParameter();\n\t\tpushAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tpushAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tpushAlign.setRelativeName(\"pushSprite\");\n\t\tpushSprite.setLayoutParameter(pushAlign);\n\n\t\tthis._container.addChild(pushSprite);\n\n\t\tvar pullAlign = new ccui.RelativeLayoutParameter();\n\t\tpullAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tpullAlign.setMargin(0, CommonLessonPage.SEPARATOR - 7, 0, 0);\n\t\tpullAlign.setRelativeName(\"pullSprite\");\n\t\tpullSprite.setLayoutParameter(pullAlign);\n\n\t\tthis._container.addChild(pullSprite);\n\n\t\tvar pushLabel = new ccui.Text(LocalizedString(\"Push\"), pm.settings.fontName, 30);\n\t\tvar pullLabel = new ccui.Text(LocalizedString(\"Pull\"), pm.settings.fontName, 30);\n\n\t\tvar pushLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tpushLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tpushLabelAlign.setMargin(pushSprite.width-pushLabel.width/2, (cc.sys.isNative) ? 0 : pushSprite.height, 0, 0);\n\t\tpushLabelAlign.setRelativeName(\"pushLabel\");\n\t\tpushLabelAlign.setRelativeToWidgetName(\"pushSprite\");\n\t\tpushLabel.setLayoutParameter(pushLabelAlign);\n\n\t\tthis._container.addChild(pushLabel);\n\n\t\tvar pullLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tpullLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\tpullLabelAlign.setMargin(0, (cc.sys.isNative) ? 0 : pullSprite.height - 7, pullSprite.width - pullLabel.width/2, 0);\n\t\tpullLabelAlign.setRelativeToWidgetName(\"pullSprite\");\n\t\tpullLabel.setLayoutParameter(pullLabelAlign);\n\n\t\tthis._container.addChild(pullLabel);\n\n\t\tvar description = \"Двигун \\\"двигает\\\" ящики и бочки на космическом складе. Он не может отодвинуть груз от стены. А вот Тягун может \\\"оттащить\\\" груз от стены и перетащить его на нужное место.\";\n\t\tvar commonTextLabel = new ccui.Text(description, pm.settings.fontName, 25);\n\t\tcommonTextLabel.setTextAreaSize(cc.size(this._container.width - 2 * CommonLessonPage.SEPARATOR - 2 * pushSprite.width - 2 * pullSprite.width, 0));\n\n\t\tvar commonTextAlign = new ccui.RelativeLayoutParameter();\n\t\tcommonTextAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tcommonTextAlign.setMargin(0, 2 * CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommonTextAlign.setRelativeName(\"description\");\n\t\tcommonTextLabel.setLayoutParameter(commonTextAlign);\n\n\t\tthis._container.addChild(commonTextLabel);\n\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getMapTileset(pm.PushLevelModule.Type, 0));\n\n\t\tvar tableInfo = new ccui.HBox();\n\n\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\ttableAlign.setRelativeName(\"tableInfo\");\n\n\t\t// var spriteHeight = (cc.sys.isNative)?pushSprite.height:pushSprite.height*2;\n\t\tvar margin = Math.max(2 * pushSprite.height + pushLabel.height + CommonLessonPage.SEPARATOR, commonTextLabel.height + 3 * CommonLessonPage.SEPARATOR);\n\n\t\ttableAlign.setMargin(0, margin, 0, 0);\n\t\ttableInfo.setLayoutParameter(tableAlign);\n\n\t\tvar height = 0;\n\n\t\tvar finishBox = new ccui.VBox();\n\n\t\tvar finishLabel = new ccui.Text(\"Нужные места\", pm.settings.fontName, 30);\n\n\t\tvar finishLabelAlign = new ccui.LinearLayoutParameter();\n\t\tfinishLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tfinishLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tfinishLabel.setLayoutParameter(finishLabelAlign);\n\n\t\tfinishBox.addChild(finishLabel);\n\n\t\tfor (var i = 1; i <= 4; ++i)\n\t\t{\n\t\t\tvar finishContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tfinishContainer.setLayoutParameter(containerMargin);\n\n\t\t\tfinishBox.addChild(finishContainer);\n\n\t\t\tif (i === 4)\n\t\t\t\tvar image = new ccui.ImageView(\"targetElement.png\", ccui.Widget.PLIST_TEXTURE);\n\t\t\telse\n\t\t\t\tvar image = new ccui.ImageView(\"mapElement{0}.png\".format(i), ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\n\t\t\tfinishContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getObjectDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 16;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tfinishContainer.addChild(label);\n\n\t\t\tfinishContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + finishContainer.height;\n\t\t}\n\n\t\tfinishBox.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar commandBox = new ccui.VBox();\n\n\t\tvar commandLabel = new ccui.Text(\"Команды\", pm.settings.fontName, 30);\n\n\t\tvar commandLabelAlign = new ccui.LinearLayoutParameter();\n\t\tcommandLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tcommandLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommandLabel.setLayoutParameter(commandLabelAlign);\n\n\t\tcommandBox.addChild(commandLabel);\n\n\t\tfor (var i = 0; i < 4; ++i)\n\t\t{\n\t\t\tvar commandContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tcommandContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcommandBox.addChild(commandContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.PushLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"r4_move-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"r4_turn_left-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"r4_turn_right-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tname = \"push_pull-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tcommandContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tcommandContainer.addChild(label);\n\n\t\t\tcommandContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + commandContainer.height;\n\t\t}\n\n\t\tcommandBox.setContentSize(this._container.width / 2, height);\n\n\t\ttableInfo.setContentSize(this._container.width, Math.max(finishBox.height, commandBox.height));\n\n\t\ttableInfo.addChild(finishBox);\n\t\ttableInfo.addChild(commandBox);\n\t\tthis._container.addChild(tableInfo);\n\n\n\t\tvar conditionLabel = new ccui.Text(\"Команды-вопросы\", pm.settings.fontName, 30);\n\n\t\tvar conditionLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tconditionLabelAlign.setRelativeToWidgetName(\"tableInfo\");\n\t\tconditionLabelAlign.setRelativeName(\"conditionLabel\");\n\n\t\tvar margin = 2 * CommonLessonPage.SEPARATOR + 40;\n\n\t\tconditionLabelAlign.setMargin(0, margin, 0, 0);\n\t\tconditionLabel.setLayoutParameter(conditionLabelAlign);\n\n\t\tthis._container.addChild(conditionLabel);\n\n\t\tvar conditionInfo = new ccui.HBox();\n\n\t\tvar conditionAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tconditionAlign.setRelativeToWidgetName(\"conditionLabel\");\n\n\t\tvar margin = CommonLessonPage.SEPARATOR;\n\n\t\tconditionAlign.setMargin(0, margin, 0, 0);\n\t\tconditionInfo.setLayoutParameter(conditionAlign);\n\n\t\theight = 0;\n\n\t\tvar conditionBox1 = new ccui.VBox();\n\n\t\tfor (var i = 0; i < 2; ++i)\n\t\t{\n\t\t\tvar conditionContainer = new ccui.HBox();\n\n\t\t\tvar conditionContainerMargin = new ccui.LinearLayoutParameter();\n\t\t\tconditionContainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tconditionContainer.setLayoutParameter(conditionContainerMargin);\n\n\t\t\tconditionBox1.addChild(conditionContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.RepairLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"cond-r4_clear-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"cond-push_mf-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tconditionContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getConditionDescription(i), pm.settings.fontName, 25);\n\t\t\tlabel.setTextAreaSize(cc.size(this._container.width / 2 - image.width - 2 * CommonLessonPage.TABLE_MARGIN, 0));\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tconditionContainer.addChild(label);\n\n\t\t\tconditionContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + conditionContainer.height;\n\t\t}\n\n\t\tconditionBox1.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar conditionBox2 = new ccui.VBox();\n\n\t\tfor (var i = 0; i < 2; ++i)\n\t\t{\n\t\t\tvar conditionContainer = new ccui.HBox();\n\n\t\t\tvar conditionContainerMargin = new ccui.LinearLayoutParameter();\n\t\t\tconditionContainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tconditionContainer.setLayoutParameter(conditionContainerMargin);\n\n\t\t\tconditionBox2.addChild(conditionContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.RepairLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"cond-r4_wall-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"cond-push_nmf-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tconditionContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getConditionDescription(2 + i), pm.settings.fontName, 25);\n\t\t\tlabel.setTextAreaSize(cc.size(this._container.width / 2 - image.width - 2 * CommonLessonPage.TABLE_MARGIN, 0));\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tconditionContainer.addChild(label);\n\n\t\t\tconditionContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + conditionContainer.height;\n\t\t}\n\n\t\tconditionBox2.setContentSize(this._container.width / 2, height);\n\n\t\tconditionInfo.setContentSize(this._container.width, Math.max(conditionBox1.height, conditionBox2.height));\n\n\t\tconditionInfo.addChild(conditionBox1);\n\t\tconditionInfo.addChild(conditionBox2);\n\t\tthis._container.addChild(conditionInfo);\n\n\t\tthis._container.setContentSize(this._container.width, Math.max(2 * pushSprite.height + pushLabel.height + CommonLessonPage.SEPARATOR,\n\t\t\tcommonTextLabel.height + 4 * CommonLessonPage.SEPARATOR) + tableInfo.height + conditionInfo.height +\n\t\t\tconditionLabel.height + 8 * CommonLessonPage.SEPARATOR);\n\t},\n\n\t_getObjectDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 1:\n\t\t\t\treturn \"для ящика\";\n\t\t\tcase 2:\n\t\t\t\treturn \"для бочки\";\n\t\t\tcase 3:\n\t\t\t\treturn \"для бочки или ящика\";\n\t\t\tcase 4:\n\t\t\t\treturn \"финиш\";\n\t\t}\n\t},\n\n\t_getCommandDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"вперед\";\n\t\t\tcase 1:\n\t\t\t\treturn \"налево\";\n\t\t\tcase 2:\n\t\t\t\treturn \"направо\";\n\t\t\tcase 3:\n\t\t\t\treturn \"тащить\";\n\t\t}\n\t},\n\n\t_getConditionDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"впереди свободно\";\n\t\t\tcase 1:\n\t\t\t\treturn \"можно двигаться вперед с грузом\";\n\t\t\tcase 2:\n\t\t\t\treturn \"впереди стена\";\n\t\t\tcase 3:\n\t\t\t\treturn \"нельзя двигаться вперед с грузом\";\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 30.10.18.\n */\n\n/**\n * @class Layout for Physical Lesson page.\n * @extends CommonLessonPage\n */\n\nvar PhysicalLessonPage = CommonLessonPage.extend(/** @lends PhysicalLessonPage# */{\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super(target, cancelCallback);\n\n\t\tthis._loadExtraInterface();\n\t},\n\n\t_loadExtraInterface: function()\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(pm.PhysicalRobotLevelModule.Type, pm.PhysicalRobotLevelModule.RobotType));\n\n\t\tvar physicalSprite = new ccui.ImageView(\"physical_robot_BLE.png\", ccui.Widget.PLIST_TEXTURE);\n\n\t\tphysicalSprite.setAnchorPoint(cc.p(0, 1));\n\n\t\tphysicalSprite.setScale(2);\n\n\t\tvar physicalAlign = new ccui.RelativeLayoutParameter();\n\t\tphysicalAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tphysicalAlign.setMargin(2 * CommonLessonPage.SEPARATOR, 2 * CommonLessonPage.SEPARATOR, 0, 0);\n\t\tphysicalAlign.setRelativeName(\"physicalSprite\");\n\t\tphysicalSprite.setLayoutParameter(physicalAlign);\n\n\t\tthis._container.addChild(physicalSprite);\n\n\t\tvar physicalLabel = new ccui.Text(LocalizedString(\"Physical\"), pm.settings.fontName, 30);\n\n\t\tvar physicalLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tphysicalLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tphysicalLabelAlign.setMargin(physicalSprite.width - physicalLabel.width / 2, (cc.sys.isNative) ? 0 : physicalSprite.height, 0, 0);\n\t\tphysicalLabelAlign.setRelativeName(\"physicalLabel\");\n\t\tphysicalLabelAlign.setRelativeToWidgetName(\"physicalSprite\");\n\t\tphysicalLabel.setLayoutParameter(physicalLabelAlign);\n\n\t\tthis._container.addChild(physicalLabel);\n\n\t\tvar description = \"Ползунов два. Один живет на экране планшета, другой — сделан из фанеры и ползает по коврикам на полу. \" +\n\t\t\t\"Программу вначале составляем для Экранного Ползуна. Когда она готова, включаем Фанерного Ползуна на полу. \" +\n\t\t\t\"Теперь наша программа управляет сразу двумя Ползунами.\";\n\t\tvar commonTextLabel = new ccui.Text(description, pm.settings.fontName, 25);\n\t\tcommonTextLabel.setTextAreaSize(cc.size(this._container.width - 7 * CommonLessonPage.SEPARATOR - 2 * physicalSprite.width, 0));\n\n\t\tvar commonTextAlign = new ccui.RelativeLayoutParameter();\n\t\tcommonTextAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tcommonTextAlign.setMargin(cc.sys.isNative ? 2 * CommonLessonPage.SEPARATOR : physicalSprite.width + 2 *CommonLessonPage.SEPARATOR, 0, 0, 0);\n\t\tcommonTextAlign.setRelativeName(\"description\");\n\t\tcommonTextAlign.setRelativeToWidgetName(\"physicalSprite\");\n\t\tcommonTextLabel.setLayoutParameter(commonTextAlign);\n\n\t\tthis._container.addChild(commonTextLabel);\n\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getMapTileset(pm.PhysicalRobotLevelModule.Type, 0));\n\n\t\tvar tableInfo = new ccui.HBox();\n\n\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\n\t\tvar margin = Math.max(2 * physicalSprite.height + physicalLabel.height + CommonLessonPage.SEPARATOR, commonTextLabel.height + 3 * CommonLessonPage.SEPARATOR);\n\n\t\ttableAlign.setMargin(0, margin, 0, 0);\n\t\ttableInfo.setLayoutParameter(tableAlign);\n\n\t\tvar height = 0;\n\n\t\tvar finishBox = new ccui.VBox();\n\n\t\tvar finishLabel = new ccui.Text(\"Элементы поля\", pm.settings.fontName, 30);\n\n\t\tvar finishLabelAlign = new ccui.LinearLayoutParameter();\n\t\tfinishLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tfinishLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tfinishLabel.setLayoutParameter(finishLabelAlign);\n\n\t\tfinishBox.addChild(finishLabel);\n\n\t\tfor (var i = 1; i <= 3; ++i)\n\t\t{\n\t\t\tvar finishContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tfinishContainer.setLayoutParameter(containerMargin);\n\n\t\t\tfinishBox.addChild(finishContainer);\n\n\t\t\tswitch (i)\n\t\t\t{\n\t\t\t\tcase 1:\n\t\t\t\t\tvar image = new ccui.ImageView(\"mapElement{0}.png\".format(i), ccui.Widget.PLIST_TEXTURE);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tvar image = new ccui.ImageView(\"targetElement.png\", ccui.Widget.PLIST_TEXTURE);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tvar image = new ccui.ImageView(\"mapElementG.png\", ccui.Widget.PLIST_TEXTURE);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\n\t\t\tfinishContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getObjectDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = 2 * CommonLessonPage.SEPARATOR;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tfinishContainer.addChild(label);\n\n\t\t\tfinishContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + finishContainer.height;\n\t\t}\n\n\t\tfinishBox.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar commandBox = new ccui.VBox();\n\n\t\tvar commandLabel = new ccui.Text(\"Команды\", pm.settings.fontName, 30);\n\n\t\tvar commandLabelAlign = new ccui.LinearLayoutParameter();\n\t\tcommandLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tcommandLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommandLabel.setLayoutParameter(commandLabelAlign);\n\n\t\tcommandBox.addChild(commandLabel);\n\n\t\tfor (var i = 0; i < 3; ++i)\n\t\t{\n\t\t\tvar commandContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tcommandContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcommandBox.addChild(commandContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.PhysicalRobotLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"r4_move-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"r4_turn_left-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"r4_turn_right-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tcommandContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tcommandContainer.addChild(label);\n\n\t\t\tcommandContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + commandContainer.height;\n\t\t}\n\n\t\tcommandBox.setContentSize(this._container.width / 2, height);\n\n\t\ttableInfo.setContentSize(this._container.width, Math.max(finishBox.height, commandBox.height));\n\n\t\ttableInfo.addChild(finishBox);\n\t\ttableInfo.addChild(commandBox);\n\t\tthis._container.addChild(tableInfo);\n\n\t\tthis._container.setContentSize(this._container.width, commonTextLabel.height + tableInfo.height + 8 * CommonLessonPage.SEPARATOR);\n\t},\n\n\t_getObjectDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 1:\n\t\t\t\treturn \"цифра\";\n\t\t\tcase 2:\n\t\t\t\treturn \"финиш\";\n\t\t\tcase 3:\n\t\t\t\treturn \"коврик-клетка\"\n\t\t}\n\t},\n\n\t_getCommandDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"вперед\";\n\t\t\tcase 1:\n\t\t\t\treturn \"налево\";\n\t\t\tcase 2:\n\t\t\t\treturn \"направо\";\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 30.10.18.\n */\n\n/**\n * @class Layout for Light Lesson page.\n * @extends CommonLessonPage\n */\n\nvar LightLessonPage = CommonLessonPage.extend(/** @lends LightLessonPage# */{\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super(target, cancelCallback);\n\n\t\tthis._loadExtraInterface();\n\t},\n\n\t_loadExtraInterface: function()\n\t{\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(pm.LightLevelModule.Type, pm.LightLevelModule.RobotType));\n\n\t\tvar lightSprite = new ccui.ImageView(\"light_robot4.png\", ccui.Widget.PLIST_TEXTURE);\n\n\t\tlightSprite.setAnchorPoint(cc.p(0, 1));\n\n\t\tlightSprite.setScale(2);\n\n\t\tvar lightAlign = new ccui.RelativeLayoutParameter();\n\t\tlightAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tlightAlign.setMargin(3 * CommonLessonPage.SEPARATOR, -CommonLessonPage.SEPARATOR, 0, 0);\n\t\tlightAlign.setRelativeName(\"lightSprite\");\n\t\tlightSprite.setLayoutParameter(lightAlign);\n\n\t\tthis._container.addChild(lightSprite);\n\n\t\tvar lightLabel = new ccui.Text(LocalizedString(\"Light\"), pm.settings.fontName, 30);\n\n\t\tvar lightLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tlightLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tlightLabelAlign.setMargin(lightSprite.width - lightLabel.width / 2, (cc.sys.isNative) ? 0 : lightSprite.height, 0, 0);\n\t\tlightLabelAlign.setRelativeName(\"lightLabel\");\n\t\tlightLabelAlign.setRelativeToWidgetName(\"lightSprite\");\n\t\tlightLabel.setLayoutParameter(lightLabelAlign);\n\n\t\tthis._container.addChild(lightLabel);\n\n\t\tvar description = \"Между полетами космонавты отдыхают в садах. За этими садами ухаживает Зажигун. Проходя по дорожкам сада, он зажигает и тушит фонари\";\n\t\tvar commonTextLabel = new ccui.Text(description, pm.settings.fontName, 25);\n\t\tcommonTextLabel.setTextAreaSize(cc.size(this._container.width - 6 * CommonLessonPage.SEPARATOR - 2 * lightSprite.width, 0));\n\n\t\tvar commonTextAlign = new ccui.RelativeLayoutParameter();\n\t\tcommonTextAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tcommonTextAlign.setMargin(cc.sys.isNative ? 2 * CommonLessonPage.SEPARATOR : lightSprite.width + 2 * CommonLessonPage.SEPARATOR, 7 * CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommonTextAlign.setRelativeName(\"description\");\n\t\tcommonTextAlign.setRelativeToWidgetName(\"lightSprite\");\n\t\tcommonTextLabel.setLayoutParameter(commonTextAlign);\n\n\t\tthis._container.addChild(commonTextLabel);\n\n\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getMapTileset(pm.LightLevelModule.Type, 0));\n\n\t\tvar tableInfo = new ccui.HBox();\n\n\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\n\t\tvar margin = Math.max(2 * lightSprite.height + lightLabel.height - CommonLessonPage.SEPARATOR, commonTextLabel.height + 7 * CommonLessonPage.SEPARATOR);\n\n\t\ttableAlign.setMargin(0, margin, 0, 0);\n\t\ttableInfo.setLayoutParameter(tableAlign);\n\n\t\tvar height = 0;\n\n\t\tvar finishBox = new ccui.VBox();\n\n\t\tvar finishLabel = new ccui.Text(\"Элементы поля\", pm.settings.fontName, 30);\n\n\t\tvar finishLabelAlign = new ccui.LinearLayoutParameter();\n\t\tfinishLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tfinishLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tfinishLabel.setLayoutParameter(finishLabelAlign);\n\n\t\tfinishBox.addChild(finishLabel);\n\n\t\tfor (var i = 1; i <= 2; ++i)\n\t\t{\n\t\t\tvar finishContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tfinishContainer.setLayoutParameter(containerMargin);\n\n\t\t\tfinishBox.addChild(finishContainer);\n\n\t\t\tvar image1 = null;\n\n\t\t\tif (i === 1)\n\t\t\t{\n\t\t\t\tvar image = new ccui.ImageView(\"mapElement2.png\".format(i), ccui.Widget.PLIST_TEXTURE);\n\t\t\t}\n\t\t\telse if (i === 2)\n\t\t\t{\n\t\t\t\tvar image = new ccui.ImageView(\"targetElement.png\", ccui.Widget.PLIST_TEXTURE);\n\t\t\t\timage1 = new ccui.ImageView(\"mapElement1.png\", ccui.Widget.PLIST_TEXTURE);\n\t\t\t}\n\n\t\t\timage.setAnchorPoint(cc.p(0.5, -0.5));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.width);\n\n\t\t\tvar imageContainer = new ccui.Layout();\n\t\t\timageContainer.setContentSize(image.getContentSize().width * Math.sqrt(2), image.getContentSize().height * Math.sqrt(2));\n\t\t\timageContainer.setScaleY(0.5);\n\t\t\timage.setRotation(45);\n\t\t\timageContainer.addChild(image, 0);\n\n\t\t\tif(image1)\n\t\t\t{\n\t\t\t\timage1.setAnchorPoint(cc.p(0.6, -0.6));\n\t\t\t\timage1.setScale(CommonLessonPage.CELL_HEIGHT / image1.width);\n\t\t\t\timage1.setRotation(45);\n\t\t\t\timageContainer.addChild(image1, -1);\n\t\t\t}\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\n\t\t\tvar shift = cc.sys.isNative ? 14 : -imageContainer.height/2 + 14;\n\t\t\timageAlign.setMargin(-30, shift, 0, 0);\n\t\t\timageContainer.setLayoutParameter(imageAlign);\n\n\t\t\tfinishContainer.addChild(imageContainer);\n\n\t\t\tvar label = new ccui.Text(this._getObjectDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = 2 * CommonLessonPage.SEPARATOR;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tfinishContainer.addChild(label);\n\n\t\t\tfinishContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + finishContainer.height;\n\t\t}\n\n\t\tfinishBox.setContentSize(this._container.width / 2, height);\n\n\t\theight = 0;\n\n\t\tvar commandBox = new ccui.VBox();\n\n\t\tvar commandLabel = new ccui.Text(\"Команды\", pm.settings.fontName, 30);\n\n\t\tvar commandLabelAlign = new ccui.LinearLayoutParameter();\n\t\tcommandLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tcommandLabelAlign.setMargin(0, CommonLessonPage.SEPARATOR, 0, 0);\n\t\tcommandLabel.setLayoutParameter(commandLabelAlign);\n\n\t\tcommandBox.addChild(commandLabel);\n\n\t\tfor (var i = 0; i < 4; ++i)\n\t\t{\n\t\t\tvar commandContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(CommonLessonPage.TABLE_MARGIN, CommonLessonPage.SEPARATOR, 0, 0);\n\t\t\tcommandContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcommandBox.addChild(commandContainer);\n\n\t\t\tvar name;\n\n\t\t\tpm.spriteUtils.initRobotTextures(pm.LightLevelModule.Type);\n\n\t\t\tswitch(i)\n\t\t\t{\n\t\t\t\tcase 0:\n\t\t\t\t\tname = \"light_turn_left-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tname = \"light_turn_right-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tname = \"light_turn_on-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tname = \"light_turn_off-normal.png\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar image = new ccui.ImageView(name, ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar imageAlign = new ccui.LinearLayoutParameter();\n\t\t\timageAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\timage.setLayoutParameter(imageAlign);\n\n\t\t\timage.setAnchorPoint(cc.p(0, 1));\n\t\t\timage.setScale(CommonLessonPage.CELL_HEIGHT / image.height);\n\t\t\tcommandContainer.addChild(image);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(i), pm.settings.fontName, 25);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\tvar margin = (cc.sys.isNative) ? 2 * CommonLessonPage.SEPARATOR : 2 * CommonLessonPage.SEPARATOR + 40;\n\t\t\tlabelMargin.setMargin(margin, CommonLessonPage.CELL_HEIGHT / 2 - label.height/2, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tcommandContainer.addChild(label);\n\n\t\t\tcommandContainer.setContentSize(image.width + CommonLessonPage.SEPARATOR + label.width, CommonLessonPage.CELL_HEIGHT);\n\n\t\t\theight += CommonLessonPage.SEPARATOR + commandContainer.height;\n\t\t}\n\n\t\tcommandBox.setContentSize(this._container.width / 2, height);\n\n\t\ttableInfo.setContentSize(this._container.width, Math.max(finishBox.height, commandBox.height));\n\n\t\ttableInfo.addChild(finishBox);\n\t\ttableInfo.addChild(commandBox);\n\t\tthis._container.addChild(tableInfo);\n\n\t\tthis._container.setContentSize(this._container.width,\n\t\t\tMath.max(2 * lightSprite.height + lightLabel.height - CommonLessonPage.SEPARATOR,\n\t\t\t\tcommonTextLabel.height + 7 * CommonLessonPage.SEPARATOR) + tableInfo.height + 5 * CommonLessonPage.SEPARATOR);\n\t},\n\n\t_getObjectDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 1:\n\t\t\t\treturn \"остановка\";\n\t\t\tcase 2:\n\t\t\t\treturn \"финиш\";\n\t\t}\n\t},\n\n\t_getCommandDescription: function(number)\n\t{\n\t\tswitch(number)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\treturn \"левее\";\n\t\t\tcase 1:\n\t\t\t\treturn \"правее\";\n\t\t\tcase 2:\n\t\t\t\treturn \"зажечь\";\n\t\t\tcase 3:\n\t\t\t\treturn \"потушить\";\n\t\t}\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 26.10.18.\n */\n\n/**\n * @class Element for select table view in ChooseLessonLayer.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Node} [node] Node to show in element.\n * @param {Number} [cellWidth] Width of cell.\n * @param {ChooseLessonLayer~actionCallback} [callback] Event callback for buttons.\n * @param {Object} [target] Target to call callbacks.\n */\n\nvar ChooseLessonElement = ccui.Layout.extend(/** @lends ChooseLessonElement# */{\n\n\t_callback: null,\n\t_target: null,\n\n\tnameOfPage: null,\n\n\tctor: function(node, name, cellWidth, height, callback, target)\n\t{\n\t\tthis._super();\n\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\t\tthis.nameOfPage = name;\n\n\t\tvar nodeScale = ChooseLessonElement.NODE_SCALE;\n\n\t\tif (node._orientation !== undefined && node._orientation === pm.MapLayer2D.Orientation.Ortho)\n\t\t\t nodeScale *= Math.sqrt(2);\n\n\t\tvar scale = height / (nodeScale * node.getBoundingBox().width);\n\t\tnode.setScale(scale);\n\n\t\tthis.setContentSize(cellWidth, height/2 - ChooseLessonElement.HEIGHT_MARGIN);\n\n\t\tnode.setPosition(this.width/2 - node.width/2, this.height/2 - node.height/2 + ChooseLessonElement.SEPARATOR + 7);\n\n\t\tthis.addChild(node, 0);\n\n\t\tvar button = new cc.Scale9Sprite(\"System/lessonsButton.png\");\n\t\tbutton.setCapInsets(cc.rect(14, 14, 14, 14));\n\n\t\tvar label = new ccui.Text(LocalizedString(name), pm.settings.fontLightName, 30);\n\t\tlabel.setPosition(ChooseLessonElement.BUTTON_BORDER/2, ChooseLessonElement.BUTTON_BORDER/2);\n\t\tlabel.setAnchorPoint(0,0);\n\n\t\tbutton.setContentSize(label.width + ChooseLessonElement.BUTTON_BORDER, label.height + ChooseLessonElement.BUTTON_BORDER);\n\t\tbutton.setPosition(this.width/2, button.height/2);\n\t\tbutton.addChild(label);\n\n\t\tthis.addChild(button);\n\t}\n});\n\nChooseLessonElement.SEPARATOR = 15;\nChooseLessonElement.BUTTON_BORDER = 16;\nChooseLessonElement.NODE_SCALE = 2.7;\nChooseLessonElement.HEIGHT_MARGIN = 35;\n","/**\n * Created by Kirill Mashchenko on 26.10.18.\n */\n\n/**\n * @class ChooseLessonLayer.\n * @extends ccui.Layout\n */\n\nvar ChooseLessonLayer = ccui.Layout.extend(/** @lends ChooseLessonLayer# */{\n\n\t_lessonTable: null,\n\n\t_curWorldID: null,\n\t_loadingLayer: null,\n\n\tctor: function (worldID)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._curWorldID = worldID;\n\n\t\tthis._downloadDemoWorld();\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar goToStartScreen = new pmui.Button(pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tgoToStartScreen.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar goToStartScreenAlign = new ccui.RelativeLayoutParameter();\n\t\tgoToStartScreenAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgoToStartScreenAlign.setRelativeName(\"back\");\n\t\tgoToStartScreenAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tgoToStartScreen.setLayoutParameter(goToStartScreenAlign);\n\n\t\tthis.addChild(goToStartScreen);\n\n\t\tvar selectPageMenu = new SelectPageMenu(SelectPageMenu.PAGES.CHOOSE_LESSON);\n\n\t\tvar selectPageAlign = new ccui.RelativeLayoutParameter();\n\t\tselectPageAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tselectPageAlign.setMargin(SelectPageMenu.LEFT_MARGIN, -screenBounds.top, 0, 0);\n\t\tselectPageAlign.setRelativeToWidgetName(\"back\");\n\t\tselectPageAlign.setRelativeName(\"pageMenu\");\n\t\tselectPageMenu.setLayoutParameter(selectPageAlign);\n\n\t\tthis.addChild(selectPageMenu);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Lessons\"), pm.settings.fontName, 45);\n\t\tlabel.setAnchorPoint(0, 0.5);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tlabelAlign.setMargin((pm.settings.getScreenSize().width - goToStartScreen.width - selectPageMenu.width - label.width)/2, screenBounds.top, 0, 0);\n\t\tlabelAlign.setRelativeToWidgetName(\"pageMenu\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tthis.addChild(label);\n\n\t\tvar separator = cc.size(20, 20);\n\n\t\tthis._lessonTable = new pmui.SelectTableView(cc.size(1, 1), separator, 0, ChooseLessonLayer.MAX_ELEMENTS_IN_ROW);\n\t\tthis._lessonTable.addSelectEventListener(this._selectPageElementCallback, this);\n\t\tthis._lessonTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBGInv\"), true);\n\t\tthis._lessonTable.setFitObjectsSizes(true);\n\n\t\tthis._lessonTable.setContentSize(pm.settings.getScreenSize().width - 100,\n\t\t\tpm.settings.getScreenSize().height - goToStartScreen.height - screenBounds.top - ChooseLessonLayer.SEPARATOR);\n\n\t\tvar scrollLessonAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollLessonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tscrollLessonAlign.setMargin(ChooseLessonLayer.TABLE_MARGIN, 0, 0, 0);\n\t\tthis._lessonTable.setLayoutParameter(scrollLessonAlign);\n\n\t\tthis.addChild(this._lessonTable);\n\n\t\tthis._drawLessonTable();\n\t},\n\n\t_drawLessonTable: function()\n\t{\n\t\tvar mapLayersArray = pm.moduleUtils.getLessonMapLayers();\n\n\t\tvar rows = Math.floor(mapLayersArray.length/ ChooseLessonLayer.MAX_ELEMENTS_IN_ROW) +\n\t\t\t((mapLayersArray.length % ChooseLessonLayer.MAX_ELEMENTS_IN_ROW === 0) ? 0 : 1);\n\n\t\tthis._lessonTable.setRowCount(rows);\n\n\t\tvar cellHeight = 0;\n\n\t\tfor(var i = 0; i < mapLayersArray.length; ++i)\n\t\t{\n\t\t\tvar spr = mapLayersArray[i];\n\n\t\t\tvar element = new ChooseLessonElement(spr, spr._map.parentLevel.typeName,\n\t\t\t\t(pm.settings.getScreenSize().width - ChooseLessonLayer.ELEMENT_MARGIN) / ChooseLessonLayer.MAX_ELEMENTS_IN_ROW,\n\t\t\t\t this._lessonTable.height,\n\t\t\t\t null, this);\n\n\t\t\tthis._lessonTable.setCell(Math.floor(i / ChooseLessonLayer.MAX_ELEMENTS_IN_ROW),\n\t\t\t\ti % ChooseLessonLayer.MAX_ELEMENTS_IN_ROW, element);\n\n\t\t\tcellHeight = Math.max(cellHeight, element.height);\n\t\t}\n\n\t\tvar cellSize = cc.size((pm.settings.getScreenSize().width - ChooseLessonLayer.ELEMENT_MARGIN) / ChooseLessonLayer.MAX_ELEMENTS_IN_ROW,\n\t\t\tcellHeight);\n\n\t\tthis._lessonTable.setCellSize(cellSize);\n\t},\n\n\t_selectPageElementCallback: function(selectedPage)\n\t{\n\t\tif (!selectedPage)\n\t\t{\n\t\t\tif(cc.director.getRunningScene().getChildByTag(CommonLessonPage.TAG))\n\t\t\t\tcc.director.getRunningScene().removeChildByTag(CommonLessonPage.TAG);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif(cc.director.getRunningScene().getChildByTag(CommonLessonPage.TAG))\n\t\t\tcc.director.getRunningScene().removeChildByTag(CommonLessonPage.TAG);\n\n\t\tvar cell = this._lessonTable.getCell(selectedPage);\n\n\t\tvar lessonPage = null;\n\n\t\tswitch(cell.nameOfPage)\n\t\t{\n\t\t\tcase pm.data.RepairLevel.prototype.typeName:\n\t\t\t\tlessonPage = new RepairLessonPage(this, this._closePage);\n\t\t\t\tbreak;\n\t\t\tcase pm.data.PushLevel.prototype.typeName:\n\t\t\t\tlessonPage = new PushLessonPage(this, this._closePage);\n\t\t\t\tbreak;\n\t\t\tcase pm.data.LightLevel.prototype.typeName:\n\t\t\t\tlessonPage = new LightLessonPage(this, this._closePage);\n\t\t\t\tbreak;\n\t\t\tcase pm.data.PhysicalRobotLevel.prototype.typeName:\n\t\t\t\tlessonPage = new PhysicalLessonPage(this, this._closePage);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (lessonPage)\n\t\t\tcc.director.getRunningScene().addChild(lessonPage, 100, CommonLessonPage.TAG);\n\t},\n\n\t_closePage: function()\n\t{\n\t\tthis._lessonTable.deselectAll();\n\n\t\tcc.director.getRunningScene().removeChildByTag(CommonLessonPage.TAG);\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tpm.settings.isHelpMode = false;\n\n\t\tthis._downloadWorld(this._curWorldID);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_downloadWorld: function(worldID)\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: worldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif (!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\n\t\tthis._loadingLayer.remove();\n\n\t\tpm.settings.setGame(ChooseLessonLayer.GAME_ID);\n\t},\n\n\t_downloadDemoWorld: function()\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: pm.appConfig.demoWorldID,\n\t\t\tcallback: this._endDownLoadDemoWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadDemoWorld: function(error, loadedWorldID)\n\t{\n\t\tthis._loadingLayer.remove();\n\t\tpm.settings.setGame(ChooseLessonLayer.GAME_ID);\n\t},\n\n\tgetCurrentWorldID: function()\n\t{\n\t\treturn this._curWorldID;\n\t}\n});\n\nChooseLessonLayer.MAX_ELEMENTS_IN_ROW = 2;\nChooseLessonLayer.SEPARATOR = 8;\nChooseLessonLayer.TABLE_MARGIN = 78;\nChooseLessonLayer.ELEMENT_MARGIN = 220;\nChooseLessonLayer.GAME_ID = 1;\n\n/**\n * @class Scene for {@link ChooseLevelLayer}\n * @extends cc.Scene\n * @constructor\n * @param {Number} worldID ID of current world.\n */\nvar ChooseLessonScene = cc.Scene.extend(/** @lends ChooseLessonScene# */{\n\n\tctor: function(worldID)\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new ChooseLessonLayer(worldID);\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 23.10.18.\n */\n\n/**\n * @class Page for help about program algorithm.\n * @extends ccui.Layout\n */\nvar ProgramAlgorithmLayer = ccui.Layout.extend(/** @lends ProgramAlgorithmLayer# */{\n\n\t_curWorldID: null,\n\t_loadingLayer: null,\n\n\t_showLayer: null,\n\t_descriptionLayer: null,\n\t_typesTable: null,\n\n\t_backButtonWidth: 0,\n\n\tctor: function(worldID)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._curWorldID = worldID;\n\t\tpm.settings.setLevel(ProgramAlgorithmLayer.TUTORIAL_LEVELS.LINEAR);\n\n\t\tthis._loadInterface();\n\t\tpm.registerCustomEventListener(pm.TUTORIAL_ENDED, function()\n\t\t{\n\t\t\tthis._drawTutorialLevel(false);\n\t\t}.bind(this), this);\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar backButton = new pmui.Button(pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tbackButton.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar backButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tbackButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tbackButtonAlign.setRelativeName(\"back\");\n\t\tbackButtonAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tbackButton.setLayoutParameter(backButtonAlign);\n\n\t\tthis._backButtonWidth = backButton.width;\n\t\tthis.addChild(backButton);\n\n\t\tvar selectPageMenu = new SelectPageMenu(SelectPageMenu.PAGES.PROGRAM_ALGORITHM, this._stopTutorial.bind(this), this);\n\n\t\tvar selectPageAlign = new ccui.RelativeLayoutParameter();\n\t\tselectPageAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tselectPageAlign.setMargin(SelectPageMenu.LEFT_MARGIN, -screenBounds.top, 0, 0);\n\t\tselectPageAlign.setRelativeName(\"selectPage\");\n\t\tselectPageAlign.setRelativeToWidgetName(\"back\");\n\t\tselectPageMenu.setLayoutParameter(selectPageAlign);\n\n\t\tthis.addChild(selectPageMenu);\n\n\t\tvar description = LocalizedString(\"ProgramDescriptionHelp\");\n\n\t\tvar descriptionLabel = new ccui.Text(description, pm.settings.fontName, ProgramAlgorithmLayer.DESCRIPTION_FONT_SIZE);\n\n\t\tdescriptionLabel.setTextAreaSize(cc.size(this.width - backButton.width -\n\t\t\tscreenBounds.left - screenBounds.right, 0));\n\n\t\tvar descriptionAlign = new ccui.RelativeLayoutParameter();\n\t\tdescriptionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tdescriptionAlign.setMargin(ProgramAlgorithmLayer.STANDARD_SEPARATOR, ProgramAlgorithmLayer.STANDARD_SEPARATOR, 0, 0);\n\t\tdescriptionAlign.setRelativeName(\"description\");\n\t\tdescriptionAlign.setRelativeToWidgetName(\"selectPage\");\n\t\tdescriptionLabel.setLayoutParameter(descriptionAlign);\n\n\t\tthis.addChild(descriptionLabel);\n\n\t\tthis._drawTutorialLevel(true, ProgramAlgorithmLayer.PAGES.LINEAR);\n\n\t\tvar typesOfAlg = new ccui.Text(LocalizedString(\"Types of algorithms\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar typesOfAlgAlign = new ccui.RelativeLayoutParameter();\n\t\ttypesOfAlgAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\ttypesOfAlgAlign.setMargin(0, ProgramAlgorithmLayer.STANDARD_SEPARATOR, 0, 0);\n\t\ttypesOfAlgAlign.setRelativeName(\"typesOfAlgorithms\");\n\t\ttypesOfAlgAlign.setRelativeToWidgetName(\"level\");\n\t\ttypesOfAlg.setLayoutParameter(typesOfAlgAlign);\n\n\t\tthis.addChild(typesOfAlg);\n\n\t\tvar linearLayout = new ccui.Layout();\n\t\tlinearLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar linear = new ccui.Text(LocalizedString(\"Linear\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar linearAlign = new ccui.RelativeLayoutParameter();\n\t\tlinearAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlinearAlign.setMargin(0, 0, 0, 0);\n\t\tlinearAlign.setRelativeName(\"linear\");\n\t\tlinear.setLayoutParameter(linearAlign);\n\n\t\tlinearLayout.addChild(linear);\n\n\t\tvar linearButton = new EmptyFunctionButton(FunctionButton.Type.Method);\n\t\tvar linearBar = this._createAlgorithmBar(linearButton);\n\n\t\tvar linearBarAlign = new ccui.RelativeLayoutParameter();\n\t\tlinearBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tlinearBarAlign.setMargin(0, ProgramAlgorithmLayer.SMALL_SEPARATOR, 0, 0);\n\t\tlinearBarAlign.setRelativeToWidgetName(\"linear\");\n\t\tlinearBar.setLayoutParameter(linearBarAlign);\n\n\t\tlinearLayout.addChild(linearBar);\n\n\t\tlinearLayout.setContentSize(Math.max(linearBar.width, linear.width), linearBar.height + ProgramAlgorithmLayer.SMALL_SEPARATOR + linear.height);\n\n\t\tvar ifElseLayout = new ccui.Layout();\n\t\tifElseLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar ifElse = new ccui.Text(LocalizedString(\"If else\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar ifElseAlign = new ccui.RelativeLayoutParameter();\n\t\tifElseAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tifElseAlign.setMargin(0, 0, 0, 0);\n\t\tifElseAlign.setRelativeName(\"ifElse\");\n\t\tifElse.setLayoutParameter(ifElseAlign);\n\n\t\tifElseLayout.addChild(ifElse);\n\n\t\tvar ifElseButton = new EmptyFunctionButton(FunctionButton.Type.Condition);\n\t\tvar ifElseBar = this._createAlgorithmBar(ifElseButton);\n\n\t\tvar ifElseBarAlign = new ccui.RelativeLayoutParameter();\n\t\tifElseBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tifElseBarAlign.setMargin(0, ProgramAlgorithmLayer.SMALL_SEPARATOR, 0, 0);\n\t\tifElseBarAlign.setRelativeToWidgetName(\"ifElse\");\n\t\tifElseBar.setLayoutParameter(ifElseBarAlign);\n\n\t\tifElseLayout.addChild(ifElseBar);\n\n\t\tifElseLayout.setContentSize(Math.max(ifElseBar.width, ifElse.width), ifElseBar.height + ProgramAlgorithmLayer.SMALL_SEPARATOR + ifElse.height);\n\n\t\tvar repeaterLayout = new ccui.Layout();\n\t\trepeaterLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar withRepeater = new ccui.Text(LocalizedString(\"Cycle with repeater\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar withRepeaterAlign = new ccui.RelativeLayoutParameter();\n\t\twithRepeaterAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\twithRepeaterAlign.setMargin(0, 0, 0, 0);\n\t\twithRepeaterAlign.setRelativeName(\"withRepeater\");\n\t\twithRepeater.setLayoutParameter(withRepeaterAlign);\n\n\t\trepeaterLayout.addChild(withRepeater);\n\n\t\tvar repeaterButton = new RepeaterButton(1);\n\t\tvar repeaterBar = this._createAlgorithmBar(repeaterButton);\n\n\t\tvar repeaterBarAlign = new ccui.RelativeLayoutParameter();\n\t\trepeaterBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\trepeaterBarAlign.setMargin(0, ProgramAlgorithmLayer.SMALL_SEPARATOR, 0, 0);\n\t\trepeaterBarAlign.setRelativeToWidgetName(\"withRepeater\");\n\t\trepeaterBar.setLayoutParameter(repeaterBarAlign);\n\n\t\trepeaterLayout.addChild(repeaterBar);\n\n\t\trepeaterLayout.setContentSize(Math.max(repeaterBar.width, withRepeater.width), repeaterBar.height + ProgramAlgorithmLayer.SMALL_SEPARATOR + withRepeater.height);\n\n\t\tvar cycleLayout = new ccui.Layout();\n\t\tcycleLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar cycleWhile = new ccui.Text(LocalizedString(\"Cycle while\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar cycleWhileAlign = new ccui.RelativeLayoutParameter();\n\t\tcycleWhileAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tcycleWhileAlign.setMargin(0, 0, 0, 0);\n\t\tcycleWhileAlign.setRelativeName(\"while\");\n\t\tcycleWhile.setLayoutParameter(cycleWhileAlign);\n\n\t\tcycleLayout.addChild(cycleWhile);\n\n\t\tvar cycleButton = new EmptyFunctionButton(FunctionButton.Type.CondRepeater);\n\t\tvar cycleBar = this._createAlgorithmBar(cycleButton);\n\n\t\tvar cycleBarAlign = new ccui.RelativeLayoutParameter();\n\t\tcycleBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tcycleBarAlign.setMargin(0, ProgramAlgorithmLayer.SMALL_SEPARATOR, 0, 0);\n\t\tcycleBarAlign.setRelativeToWidgetName(\"while\");\n\t\tcycleBar.setLayoutParameter(cycleBarAlign);\n\n\t\tcycleLayout.addChild(cycleBar);\n\n\t\tcycleLayout.setContentSize(Math.max(cycleBar.width, cycleWhile.width), cycleBar.height + ProgramAlgorithmLayer.SMALL_SEPARATOR + cycleWhile.height);\n\n\t\tvar cellSize = cc.size(Math.max(linearLayout.width, ifElseLayout.width, repeaterLayout.width, cycleLayout.width),\n\t\t\tMath.max(linearLayout.height, ifElseLayout.height, repeaterLayout.height, cycleLayout.height));\n\n\t\tlinearLayout.setContentSize(cellSize);\n\t\tifElseLayout.setContentSize(cellSize);\n\t\trepeaterLayout.setContentSize(cellSize);\n\t\tcycleLayout.setContentSize(cellSize);\n\n\t\tvar separator = cc.size(ProgramAlgorithmLayer.TYPES_SEPARATOR, ProgramAlgorithmLayer.TYPES_SEPARATOR);\n\n\t\tthis._typesTable = new pmui.SelectTableView(cellSize, separator, ProgramAlgorithmLayer.TYPES_ROWS, ProgramAlgorithmLayer.TYPES_COLUMNS);\n\n\t\tthis._typesTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tthis._typesTable.setFitObjectsSizes(true);\n\t\tthis._typesTable.setInertiaScrollEnabled(false);\n\t\tthis._typesTable.setBounceEnabled(false);\n\t\tthis._typesTable.addSelectEventListener(this._selectType, this);\n\t\tthis._typesTable.canDeselectCell = false;\n\n\t\tthis._typesTable.setContentSize(cellSize.width * ProgramAlgorithmLayer.TYPES_COLUMNS + separator.width * (ProgramAlgorithmLayer.TYPES_COLUMNS + 1),\n\t\t\tcellSize.height * ProgramAlgorithmLayer.TYPES_ROWS + 2 * separator.height * Math.min(ProgramAlgorithmLayer.TYPES_ROWS, 1));\n\n\t\tvar scale = (pm.settings.getScreenSize().width - backButton.width - screenBounds.left - screenBounds.right) / this._typesTable.width;\n\n\t\tif (scale > 1)\n\t\t\tscale = 1;\n\n\t\tthis._typesTable.setScale(scale);\n\n\t\tvar margin = 0;\n\t\tif (!cc.sys.isNative)\n\t\t\tmargin = -this._typesTable.height * (1 - scale);\n\n\t\tvar tableAlign = new ccui.RelativeLayoutParameter();\n\t\ttableAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\ttableAlign.setMargin(0, ProgramAlgorithmLayer.STANDARD_SEPARATOR * scale + margin, 0, 0);\n\t\ttableAlign.setRelativeToWidgetName(\"typesOfAlgorithms\");\n\t\tthis._typesTable.setLayoutParameter(tableAlign);\n\n\t\tthis.addChild(this._typesTable);\n\n\t\tthis._typesTable.setCell(0, ProgramAlgorithmLayer.PAGES.LINEAR, linearLayout);\n\t\tthis._typesTable.setCell(0, ProgramAlgorithmLayer.PAGES.IF_ELSE, ifElseLayout);\n\t\tthis._typesTable.setCell(0, ProgramAlgorithmLayer.PAGES.REPEATERS, repeaterLayout);\n\t\tthis._typesTable.setCell(0, ProgramAlgorithmLayer.PAGES.WHILE, cycleLayout);\n\n\t\tthis._typesTable.selectCell(0, ProgramAlgorithmLayer.PAGES.LINEAR);\n\t},\n\n\t_drawTutorialLevel: function(redraw, page)\n\t{\n\t\tif (!this._showLayer)\n\t\t{\n\t\t\tthis._showLayer = new ccui.Layout();\n\t\t\tthis._showLayer.setLayoutType(ccui.Layout.RELATIVE);\n\t\t}\n\n\t\tif (this._showLayer.getChildByTag(ProgramAlgorithmLayer.TUTORIAL_ID))\n\t\t\tthis._showLayer.removeChildByTag(ProgramAlgorithmLayer.TUTORIAL_ID);\n\n\t\tvar tutorialData = {\n\t\t\tshow: true,\n\t\t\tscale: ProgramAlgorithmLayer.TUTORIAL_SCALE\n\t\t};\n\n\t\tvar levelContainer = new ccui.Layout();\n\t\tlevelContainer.setContentSize(this.width * tutorialData.scale, this.height * tutorialData.scale);\n\n\t\tvar levelContainerAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelContainerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tlevelContainerAlign.setMargin(0, 0, 0, 0);\n\t\tlevelContainerAlign.setRelativeName(\"level\");\n\t\tlevelContainer.setLayoutParameter(levelContainerAlign);\n\n\t\tvar levelLayer = new LevelLayer(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel(), null, tutorialData);\n\n\t\tlevelContainer.addChild(levelLayer);\n\t\tthis._showLayer.addChild(levelContainer, 0, ProgramAlgorithmLayer.TUTORIAL_ID);\n\n\t\tif (redraw)\n\t\t{\n\t\t\tthis._showLayer.setContentSize(levelContainer.width, levelContainer.height);\n\t\t\tthis._drawDescription(page);\n\n\t\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\t\tvar widthScale = (pm.settings.getScreenSize().width - this._backButtonWidth -\n\t\t\t\tscreenBounds.left - screenBounds.right) / this._showLayer.width;\n\t\t\tvar heightScale = (pm.settings.getScreenSize().height - this._backButtonWidth -\n\t\t\t\tscreenBounds.top - screenBounds.bottom - ProgramAlgorithmLayer.ADDITIONAL_HEIGHT) / this._showLayer.height;\n\n\t\t\tif (widthScale > 1)\n\t\t\t\twidthScale = 1;\n\t\t\tif (heightScale > 1)\n\t\t\t\theightScale = 1;\n\n\t\t\tvar scale = Math.min(widthScale, heightScale);\n\n\t\t\tthis._showLayer.setScale(scale);\n\n\t\t\tvar margin = 0;\n\t\t\tif (!cc.sys.isNative)\n\t\t\t\tmargin = -this._showLayer.height * (1 - scale);\n\n\t\t\tvar showAlign = new ccui.RelativeLayoutParameter();\n\t\t\tshowAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tshowAlign.setMargin(0, ProgramAlgorithmLayer.STANDARD_SEPARATOR * scale + margin, 0, 0);\n\t\t\tshowAlign.setRelativeName(\"level\");\n\t\t\tshowAlign.setRelativeToWidgetName(\"description\");\n\t\t\tthis._showLayer.setLayoutParameter(showAlign);\n\t\t}\n\n\t\tif (!this._showLayer.getParent())\n\t\t\tthis.addChild(this._showLayer);\n\n\t\tthis.forceDoLayout();\n\t},\n\n\t_drawDescription: function(page)\n\t{\n\t\tif (!this._descriptionLayer)\n\t\t{\n\t\t\tthis._descriptionLayer = new ccui.Layout();\n\t\t\tthis._descriptionLayer.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\tvar descriptionLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tdescriptionLayerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\t\tdescriptionLayerAlign.setMargin(ProgramAlgorithmLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\t\tdescriptionLayerAlign.setRelativeToWidgetName(\"level\");\n\t\t\tthis._descriptionLayer.setLayoutParameter(descriptionLayerAlign);\n\n\t\t\tthis._showLayer.addChild(this._descriptionLayer);\n\t\t}\n\n\t\tthis._descriptionLayer.removeAllChildren();\n\n\t\tswitch(page)\n\t\t{\n\t\t\tcase ProgramAlgorithmLayer.PAGES.LINEAR:\n\t\t\t\tthis._drawLinearDescription();\n\t\t\t\tbreak;\n\t\t\tcase ProgramAlgorithmLayer.PAGES.IF_ELSE:\n\t\t\t\tthis._drawIfElseDescription();\n\t\t\t\tbreak;\n\t\t\tcase ProgramAlgorithmLayer.PAGES.REPEATERS:\n\t\t\t\tthis._drawRepeaterDescription();\n\t\t\t\tbreak;\n\t\t\tcase ProgramAlgorithmLayer.PAGES.WHILE:\n\t\t\t\tthis._drawWhileDescription();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._showLayer.setContentSize(this._showLayer.width + this._descriptionLayer.width + ProgramAlgorithmLayer.STANDARD_SEPARATOR,\n\t\t\tMath.max(this._showLayer.height, this._descriptionLayer.height));\n\t},\n\n\t_drawLinearDescription: function()\n\t{\n\t\tvar margins = ProgramAlgorithmLayer.MARGINS.LINEAR;\n\n\t\tvar controlLabel = new ccui.Text(LocalizedString(\"Program control\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar controlAlign = new ccui.RelativeLayoutParameter();\n\t\tcontrolAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcontrolAlign.setMargin(0, margins.CONTROL, 0, 0);\n\t\tcontrolAlign.setRelativeName(\"control\");\n\t\tcontrolLabel.setLayoutParameter(controlAlign);\n\n\t\tvar width = controlLabel.width;\n\t\tvar height = margins.CONTROL + controlLabel.height;\n\t\tthis._descriptionLayer.addChild(controlLabel);\n\n\t\tvar commandsLabel = new ccui.Text(LocalizedString(\"Commands\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar commandsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcommandsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcommandsLabelAlign.setMargin(0, margins.COMMANDS, 0, 0);\n\t\tcommandsLabelAlign.setRelativeName(\"commands\");\n\t\tcommandsLabelAlign.setRelativeToWidgetName(\"control\");\n\t\tcommandsLabel.setLayoutParameter(commandsLabelAlign);\n\n\t\twidth = Math.max(width, commandsLabel.width);\n\t\theight += margins.COMMANDS + commandsLabel.height;\n\t\tthis._descriptionLayer.addChild(commandsLabel);\n\n\t\tvar mainAlgorithm = new ccui.Text(LocalizedString(\"Main algorithm\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar mainAlgorithmAlign = new ccui.RelativeLayoutParameter();\n\t\tmainAlgorithmAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmainAlgorithmAlign.setMargin(0, margins.MAIN, 0, 0);\n\t\tmainAlgorithmAlign.setRelativeName(\"mainAlgorithm\");\n\t\tmainAlgorithmAlign.setRelativeToWidgetName(\"commands\");\n\t\tmainAlgorithm.setLayoutParameter(mainAlgorithmAlign);\n\n\t\twidth = Math.max(width, mainAlgorithm.width);\n\t\theight += margins.MAIN + mainAlgorithm.height;\n\t\tthis._descriptionLayer.addChild(mainAlgorithm);\n\n\t\tvar algoritmA = new ccui.Text(LocalizedString(\"Algorithm A\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar algoritmAAlign = new ccui.RelativeLayoutParameter();\n\t\talgoritmAAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\talgoritmAAlign.setMargin(0, margins.A, 0, 0);\n\t\talgoritmAAlign.setRelativeName(\"algorithmA\");\n\t\talgoritmAAlign.setRelativeToWidgetName(\"mainAlgorithm\");\n\t\talgoritmA.setLayoutParameter(algoritmAAlign);\n\n\t\twidth = Math.max(width, algoritmA.width);\n\t\theight += margins.A + algoritmA.height;\n\t\tthis._descriptionLayer.addChild(algoritmA);\n\n\t\tthis._descriptionLayer.setContentSize(width, height);\n\t},\n\n\t_drawIfElseDescription: function()\n\t{\n\t\tvar margins = ProgramAlgorithmLayer.MARGINS.IF_ELSE;\n\n\t\tvar controlLabel = new ccui.Text(LocalizedString(\"Program control\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar controlAlign = new ccui.RelativeLayoutParameter();\n\t\tcontrolAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcontrolAlign.setMargin(0, margins.CONTROL, 0, 0);\n\t\tcontrolAlign.setRelativeName(\"control\");\n\t\tcontrolLabel.setLayoutParameter(controlAlign);\n\n\t\tvar width = controlLabel.width;\n\t\tvar height = margins.CONTROL + controlLabel.height;\n\t\tthis._descriptionLayer.addChild(controlLabel);\n\n\t\tvar commandsLabel = new ccui.Text(LocalizedString(\"Commands\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar commandsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcommandsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcommandsLabelAlign.setMargin(0, margins.COMMANDS, 0, 0);\n\t\tcommandsLabelAlign.setRelativeName(\"commands\");\n\t\tcommandsLabelAlign.setRelativeToWidgetName(\"control\");\n\t\tcommandsLabel.setLayoutParameter(commandsLabelAlign);\n\n\t\twidth = Math.max(width, commandsLabel.width);\n\t\theight += margins.COMMANDS + commandsLabel.height;\n\t\tthis._descriptionLayer.addChild(commandsLabel);\n\n\t\tvar conditionsLabel = new ccui.Text(LocalizedString(\"Conditions\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar conditionsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tconditionsLabelAlign.setMargin(0, margins.CONDITIONS, 0, 0);\n\t\tconditionsLabelAlign.setRelativeName(\"conditions\");\n\t\tconditionsLabelAlign.setRelativeToWidgetName(\"commands\");\n\t\tconditionsLabel.setLayoutParameter(conditionsLabelAlign);\n\n\t\twidth = Math.max(width, conditionsLabel.width);\n\t\theight += margins.CONDITIONS + conditionsLabel.height;\n\t\tthis._descriptionLayer.addChild(conditionsLabel);\n\n\t\tvar mainAlgorithm = new ccui.Text(LocalizedString(\"Main algorithm\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar mainAlgorithmAlign = new ccui.RelativeLayoutParameter();\n\t\tmainAlgorithmAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmainAlgorithmAlign.setMargin(0, margins.MAIN, 0, 0);\n\t\tmainAlgorithmAlign.setRelativeName(\"mainAlgorithm\");\n\t\tmainAlgorithmAlign.setRelativeToWidgetName(\"conditions\");\n\t\tmainAlgorithm.setLayoutParameter(mainAlgorithmAlign);\n\n\t\twidth = Math.max(width, mainAlgorithm.width);\n\t\theight += margins.MAIN + mainAlgorithm.height;\n\t\tthis._descriptionLayer.addChild(mainAlgorithm);\n\n\t\tvar algoritmA = new ccui.Text(LocalizedString(\"Algorithm A\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar algoritmAAlign = new ccui.RelativeLayoutParameter();\n\t\talgoritmAAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\talgoritmAAlign.setMargin(0, margins.A, 0, 0);\n\t\talgoritmAAlign.setRelativeName(\"algorithmA\");\n\t\talgoritmAAlign.setRelativeToWidgetName(\"mainAlgorithm\");\n\t\talgoritmA.setLayoutParameter(algoritmAAlign);\n\n\t\twidth = Math.max(width, algoritmA.width);\n\t\theight += margins.A + algoritmA.height;\n\t\tthis._descriptionLayer.addChild(algoritmA);\n\n\t\tthis._descriptionLayer.setContentSize(width, height);\n\t},\n\n\t_drawRepeaterDescription: function()\n\t{\n\t\tvar margins = ProgramAlgorithmLayer.MARGINS.REPEATERS;\n\n\t\tvar controlLabel = new ccui.Text(LocalizedString(\"Program control\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar controlAlign = new ccui.RelativeLayoutParameter();\n\t\tcontrolAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcontrolAlign.setMargin(0, margins.CONTROL, 0, 0);\n\t\tcontrolAlign.setRelativeName(\"control\");\n\t\tcontrolLabel.setLayoutParameter(controlAlign);\n\n\t\tvar width = controlLabel.width;\n\t\tvar height = margins.CONTROL + controlLabel.height;\n\t\tthis._descriptionLayer.addChild(controlLabel);\n\n\t\tvar repeatersLabel = new ccui.Text(LocalizedString(\"Repeaters\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar repeatersLabelAlign = new ccui.RelativeLayoutParameter();\n\t\trepeatersLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\trepeatersLabelAlign.setMargin(0, margins.REPEATERS, 0, 0);\n\t\trepeatersLabelAlign.setRelativeName(\"repeaters\");\n\t\trepeatersLabelAlign.setRelativeToWidgetName(\"control\");\n\t\trepeatersLabel.setLayoutParameter(repeatersLabelAlign);\n\n\t\twidth = Math.max(width, repeatersLabel.width);\n\t\theight += margins.REPEATERS + repeatersLabel.height;\n\t\tthis._descriptionLayer.addChild(repeatersLabel);\n\n\t\tvar commandsLabel = new ccui.Text(LocalizedString(\"Commands\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar commandsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcommandsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcommandsLabelAlign.setMargin(0, margins.COMMANDS, 0, 0);\n\t\tcommandsLabelAlign.setRelativeName(\"commands\");\n\t\tcommandsLabelAlign.setRelativeToWidgetName(\"repeaters\");\n\t\tcommandsLabel.setLayoutParameter(commandsLabelAlign);\n\n\t\twidth = Math.max(width, commandsLabel.width);\n\t\theight += margins.COMMANDS + commandsLabel.height;\n\t\tthis._descriptionLayer.addChild(commandsLabel);\n\n\t\tvar mainAlgorithm = new ccui.Text(LocalizedString(\"Main algorithm\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar mainAlgorithmAlign = new ccui.RelativeLayoutParameter();\n\t\tmainAlgorithmAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmainAlgorithmAlign.setMargin(0, margins.MAIN, 0, 0);\n\t\tmainAlgorithmAlign.setRelativeName(\"mainAlgorithm\");\n\t\tmainAlgorithmAlign.setRelativeToWidgetName(\"commands\");\n\t\tmainAlgorithm.setLayoutParameter(mainAlgorithmAlign);\n\n\t\twidth = Math.max(width, mainAlgorithm.width);\n\t\theight += margins.MAIN + mainAlgorithm.height;\n\t\tthis._descriptionLayer.addChild(mainAlgorithm);\n\n\t\tthis._descriptionLayer.setContentSize(width, height);\n\t},\n\n\t_drawWhileDescription: function()\n\t{\n\t\tvar margins = ProgramAlgorithmLayer.MARGINS.WHILE;\n\n\t\tvar controlLabel = new ccui.Text(LocalizedString(\"Program control\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar controlAlign = new ccui.RelativeLayoutParameter();\n\t\tcontrolAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcontrolAlign.setMargin(0, margins.CONTROL, 0, 0);\n\t\tcontrolAlign.setRelativeName(\"control\");\n\t\tcontrolLabel.setLayoutParameter(controlAlign);\n\n\t\tvar width = controlLabel.width;\n\t\tvar height = margins.CONTROL + controlLabel.height;\n\t\tthis._descriptionLayer.addChild(controlLabel);\n\n\t\tvar commandsLabel = new ccui.Text(LocalizedString(\"Commands\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar commandsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcommandsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcommandsLabelAlign.setMargin(0, margins.COMMANDS, 0, 0);\n\t\tcommandsLabelAlign.setRelativeName(\"commands\");\n\t\tcommandsLabelAlign.setRelativeToWidgetName(\"control\");\n\t\tcommandsLabel.setLayoutParameter(commandsLabelAlign);\n\n\t\twidth = Math.max(width, commandsLabel.width);\n\t\theight += margins.COMMANDS + commandsLabel.height;\n\t\tthis._descriptionLayer.addChild(commandsLabel);\n\n\t\tvar conditionsLabel = new ccui.Text(LocalizedString(\"Conditions\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar conditionsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tconditionsLabelAlign.setMargin(0, margins.CONDITIONS, 0, 0);\n\t\tconditionsLabelAlign.setRelativeName(\"conditions\");\n\t\tconditionsLabelAlign.setRelativeToWidgetName(\"commands\");\n\t\tconditionsLabel.setLayoutParameter(conditionsLabelAlign);\n\n\t\twidth = Math.max(width, conditionsLabel.width);\n\t\theight += margins.CONDITIONS + conditionsLabel.height;\n\t\tthis._descriptionLayer.addChild(conditionsLabel);\n\n\t\tvar mainAlgorithm = new ccui.Text(LocalizedString(\"Main algorithm\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar mainAlgorithmAlign = new ccui.RelativeLayoutParameter();\n\t\tmainAlgorithmAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmainAlgorithmAlign.setMargin(0, margins.MAIN, 0, 0);\n\t\tmainAlgorithmAlign.setRelativeName(\"mainAlgorithm\");\n\t\tmainAlgorithmAlign.setRelativeToWidgetName(\"conditions\");\n\t\tmainAlgorithm.setLayoutParameter(mainAlgorithmAlign);\n\n\t\twidth = Math.max(width, mainAlgorithm.width);\n\t\theight += margins.MAIN + mainAlgorithm.height;\n\t\tthis._descriptionLayer.addChild(mainAlgorithm);\n\n\t\tvar algoritmA = new ccui.Text(LocalizedString(\"Algorithm A\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar algoritmAAlign = new ccui.RelativeLayoutParameter();\n\t\talgoritmAAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\talgoritmAAlign.setMargin(0, margins.A, 0, 0);\n\t\talgoritmAAlign.setRelativeName(\"algorithmA\");\n\t\talgoritmAAlign.setRelativeToWidgetName(\"mainAlgorithm\");\n\t\talgoritmA.setLayoutParameter(algoritmAAlign);\n\n\t\twidth = Math.max(width, algoritmA.width);\n\t\theight += margins.A + algoritmA.height;\n\t\tthis._descriptionLayer.addChild(algoritmA);\n\n\t\tthis._descriptionLayer.setContentSize(width, height);\n\t},\n\n\t_stopTutorial: function()\n\t{\n\t\tpm.tutorialUtils.stop();\n\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tpm.settings.isHelpMode = false;\n\n\t\tthis._stopTutorial();\n\n\t\tthis._downloadWorld(this._curWorldID);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_createAlgorithmBar: function(mainButton)\n\t{\n\t\tvar layout = new ccui.Layout();\n\n\t\tlayout.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\t\tlayout.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tlayout.setBackGroundColor(ProgramLayer.BAR_COLOR);\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\tmainButton.setLayoutParameter(buttonMargin);\n\n\t\tlayout.addChild(mainButton);\n\n\t\tvar width = 2 * ProgramLayer.MENU_SEPARATOR + ProgramContainerLayer.BUTTON_SIZE;\n\n\t\tfor (var i = 0; i < ProgramAlgorithmLayer.BAR_LENGTH - 1; ++i)\n\t\t{\n\t\t\tvar button = new EmptyFunctionButton(FunctionButton.Type.Method);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin.clone());\n\n\t\t\tlayout.addChild(button);\n\n\t\t\twidth += ProgramLayer.MENU_SEPARATOR + ProgramContainerLayer.BUTTON_SIZE;\n\t\t}\n\n\t\tlayout.setContentSize(width, ProgramContainerLayer.BUTTON_SIZE + 2 * ProgramLayer.MENU_SEPARATOR);\n\n\t\treturn layout;\n\t},\n\n\t_downloadWorld: function(worldID)\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: worldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif (!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\n\t\tthis._loadingLayer.remove();\n\t},\n\n\tgetCurrentWorldID: function()\n\t{\n\t\treturn this._curWorldID;\n\t},\n\n\t_selectType: function(selectedType)\n\t{\n\t\tif (selectedType)\n\t\t{\n\t\t\tswitch(selectedType.y)\n\t\t\t{\n\t\t\t\tcase ProgramAlgorithmLayer.PAGES.LINEAR:\n\t\t\t\t\tthis._linearBarCall();\n\t\t\t\t\treturn;\n\t\t\t\tcase ProgramAlgorithmLayer.PAGES.IF_ELSE:\n\t\t\t\t\tthis._ifElseBarCall();\n\t\t\t\t\treturn;\n\t\t\t\tcase ProgramAlgorithmLayer.PAGES.REPEATERS:\n\t\t\t\t\tthis._repeaterBarCall();\n\t\t\t\t\treturn;\n\t\t\t\tcase ProgramAlgorithmLayer.PAGES.WHILE:\n\t\t\t\t\tthis._cycleBarCall();\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t},\n\n\t_linearBarCall: function()\n\t{\n\t\tif (pm.settings.getLevel() === ProgramAlgorithmLayer.TUTORIAL_LEVELS.LINEAR)\n\t\t\treturn;\n\n\t\tthis._stopTutorial();\n\n\t\tpm.settings.setLevel(ProgramAlgorithmLayer.TUTORIAL_LEVELS.LINEAR);\n\t\tthis._drawTutorialLevel(true, ProgramAlgorithmLayer.PAGES.LINEAR);\n\t},\n\n\t_ifElseBarCall: function()\n\t{\n\t\tif (pm.settings.getLevel() === ProgramAlgorithmLayer.TUTORIAL_LEVELS.IF_ELSE)\n\t\t\treturn;\n\n\t\tthis._stopTutorial();\n\n\t\tpm.settings.setLevel(ProgramAlgorithmLayer.TUTORIAL_LEVELS.IF_ELSE);\n\t\tthis._drawTutorialLevel(true, ProgramAlgorithmLayer.PAGES.IF_ELSE);\n\t},\n\n\t_repeaterBarCall: function()\n\t{\n\t\tif (pm.settings.getLevel() === ProgramAlgorithmLayer.TUTORIAL_LEVELS.REPEATERS)\n\t\t\treturn;\n\n\t\tthis._stopTutorial();\n\n\t\tpm.settings.setLevel(ProgramAlgorithmLayer.TUTORIAL_LEVELS.REPEATERS);\n\t\tthis._drawTutorialLevel(true, ProgramAlgorithmLayer.PAGES.REPEATERS);\n\t},\n\n\t_cycleBarCall: function()\n\t{\n\t\tif (pm.settings.getLevel() === ProgramAlgorithmLayer.TUTORIAL_LEVELS.WHILE)\n\t\t\treturn;\n\n\t\tthis._stopTutorial();\n\n\t\tpm.settings.setLevel(ProgramAlgorithmLayer.TUTORIAL_LEVELS.WHILE);\n\t\tthis._drawTutorialLevel(true, ProgramAlgorithmLayer.PAGES.WHILE);\n\t}\n});\n\nProgramAlgorithmLayer.TYPES_ROWS = 1;\nProgramAlgorithmLayer.TYPES_COLUMNS = 4;\nProgramAlgorithmLayer.TYPES_SEPARATOR = 15;\nProgramAlgorithmLayer.STANDARD_SEPARATOR = 15;\nProgramAlgorithmLayer.SMALL_SEPARATOR = 5;\nProgramAlgorithmLayer.BAR_LENGTH = 4;\nProgramAlgorithmLayer.DESCRIPTION_FONT_SIZE = 17;\nProgramAlgorithmLayer.TUTORIAL_SCALE = 0.64;\nProgramAlgorithmLayer.TUTORIAL_ID = 1001;\nProgramAlgorithmLayer.ADDITIONAL_HEIGHT = 200;\nProgramAlgorithmLayer.TUTORIAL_LEVELS = {\n\tLINEAR: 1,\n\tIF_ELSE: 3,\n\tREPEATERS: 0,\n\tWHILE: 4\n};\nProgramAlgorithmLayer.PAGES = {\n\tLINEAR: 0,\n\tIF_ELSE: 1,\n\tREPEATERS: 2,\n\tWHILE: 3\n};\nProgramAlgorithmLayer.MARGINS = {\n\tLINEAR: {\n\t\tCONTROL: 6,\n\t\tCOMMANDS: 16,\n\t\tMAIN: 22,\n\t\tA: 19\n\t},\n\tIF_ELSE: {\n\t\tCONTROL: 6,\n\t\tCOMMANDS: 16,\n\t\tCONDITIONS: 5,\n\t\tMAIN: 48,\n\t\tA: 19\n\t},\n\tREPEATERS: {\n\t\tCONTROL: 6,\n\t\tREPEATERS: 16,\n\t\tCOMMANDS: 5,\n\t\tMAIN: 22\n\t},\n\tWHILE: {\n\t\tCONTROL: 6,\n\t\tCOMMANDS: 16,\n\t\tCONDITIONS: 5,\n\t\tMAIN: 48,\n\t\tA: 44\n\t}\n};\n\n/**\n * @class Scene for {@link ProgramAlgorithmLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar ProgramAlgorithmScene = cc.Scene.extend(/** @lends ProgramAlgorithmScene# */{\n\tctor:function (worldID)\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new ProgramAlgorithmLayer(worldID);\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 29.10.18.\n */\n\n/**\n * @class Page for help about method stack.\n * @extends ccui.Layout\n */\nvar MethodStackLessonLayer = ccui.Layout.extend(/** @lends MethodStackLessonLayer# */{\n\n\t_curWorldID: null,\n\t_loadingLayer: null,\n\n\tctor: function(worldID)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._curWorldID = worldID;\n\t\tpm.settings.setLevel(MethodStackLessonLayer.TUTORIAL_LEVEL_ID);\n\n\t\tthis._loadInterface();\n\t\tpm.registerCustomEventListener(pm.TUTORIAL_ENDED, this._drawTutorialLevel.bind(this), this);\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar backButton = new pmui.Button(pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tbackButton.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar backButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tbackButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tbackButtonAlign.setRelativeName(\"back\");\n\t\tbackButtonAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tbackButton.setLayoutParameter(backButtonAlign);\n\n\t\tthis.addChild(backButton);\n\n\t\tvar selectPageMenu = new SelectPageMenu(SelectPageMenu.PAGES.METHOD_STACK, this._stopTutorial.bind(this), this);\n\n\t\tvar selectPageAlign = new ccui.RelativeLayoutParameter();\n\t\tselectPageAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tselectPageAlign.setMargin(SelectPageMenu.LEFT_MARGIN, -screenBounds.top, 0, 0);\n\t\tselectPageAlign.setRelativeName(\"selectPage\");\n\t\tselectPageAlign.setRelativeToWidgetName(\"back\");\n\t\tselectPageMenu.setLayoutParameter(selectPageAlign);\n\n\t\tthis.addChild(selectPageMenu);\n\n\t\tvar methodStackLabel = new ccui.Text(LocalizedString(\"Bottomless method stack\"), pm.settings.fontName,\n\t\t\tMethodStackLessonLayer.TITLE_FONT_SIZE);\n\t\tmethodStackLabel.setAnchorPoint(0, 0.5);\n\n\t\tvar methodStackLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tmethodStackLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tmethodStackLabelAlign.setRelativeName(\"methodStackLabel\");\n\t\tmethodStackLabelAlign.setRelativeToWidgetName(\"selectPage\");\n\t\tmethodStackLabelAlign.setMargin((pm.settings.getScreenSize().width - backButton.width - selectPageMenu.width - methodStackLabel.width)/2, screenBounds.top, 0, 0);\n\t\tmethodStackLabel.setLayoutParameter(methodStackLabelAlign);\n\n\t\tthis.addChild(methodStackLabel);\n\n\t\tvar methodStackDescription = LocalizedString(\"MethodStackDescriptionHelp\");\n\n\t\tvar methodStackDescriptionLabel = new ccui.Text(methodStackDescription, pm.settings.fontName,\n\t\t\tMethodStackLessonLayer.DESCRIPTION_FONT_SIZE);\n\n\t\tmethodStackDescriptionLabel.setTextAreaSize(cc.size(this.width * (1 - MethodStackLessonLayer.TUTORIAL_SCALE)\n\t\t\t- MethodStackLessonLayer.TEXT_AREA_WIDTH, 0));\n\n\t\tvar methodStackDescriptionAlign = new ccui.RelativeLayoutParameter();\n\t\tmethodStackDescriptionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmethodStackDescriptionAlign.setRelativeName(\"methodStackDescription\");\n\t\tmethodStackDescriptionAlign.setRelativeToWidgetName(\"back\");\n\t\tmethodStackDescriptionAlign.setMargin(MethodStackLessonLayer.STANDARD_SEPARATOR, MethodStackLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\tmethodStackDescriptionLabel.setLayoutParameter(methodStackDescriptionAlign);\n\n\t\tthis.addChild(methodStackDescriptionLabel);\n\n\t\tthis._drawTutorialLevel();\n\t},\n\n\t_drawTutorialLevel: function()\n\t{\n\t\tif (this.getChildByTag(MethodStackLessonLayer.TUTORIAL_ID))\n\t\t\tthis.removeChildByTag(MethodStackLessonLayer.TUTORIAL_ID);\n\n\t\tvar tutorialData = {\n\t\t\tshow: true,\n\t\t\tscale: MethodStackLessonLayer.TUTORIAL_SCALE\n\t\t};\n\n\t\tvar levelContainer = new ccui.Layout();\n\t\tlevelContainer.setContentSize(this.width * tutorialData.scale, this.height * tutorialData.scale);\n\n\t\tvar levelContainerAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelContainerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tlevelContainerAlign.setMargin(MethodStackLessonLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\tlevelContainerAlign.setRelativeName(\"level\");\n\t\tlevelContainerAlign.setRelativeToWidgetName(\"methodStackDescription\");\n\t\tlevelContainer.setLayoutParameter(levelContainerAlign);\n\n\t\tthis.addChild(levelContainer, 0, MethodStackLessonLayer.TUTORIAL_ID);\n\n\t\tvar levelLayer = new LevelLayer(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel(), null, tutorialData);\n\n\t\tlevelContainer.addChild(levelLayer);\n\t},\n\n\t_stopTutorial: function()\n\t{\n\t\tpm.tutorialUtils.stop();\n\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tpm.settings.isHelpMode = false;\n\n\t\tthis._stopTutorial();\n\n\t\tthis._downloadWorld(this._curWorldID);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_downloadWorld: function(worldID)\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: worldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif (!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\n\t\tthis._loadingLayer.remove();\n\t},\n\n\tgetCurrentWorldID: function()\n\t{\n\t\treturn this._curWorldID;\n\t}\n});\n\nMethodStackLessonLayer.STANDARD_SEPARATOR = 8;\nMethodStackLessonLayer.TEXT_AREA_WIDTH = 100;\nMethodStackLessonLayer.TITLE_FONT_SIZE = 45;\nMethodStackLessonLayer.DESCRIPTION_FONT_SIZE = 17;\nMethodStackLessonLayer.TUTORIAL_SCALE = 0.6;\nMethodStackLessonLayer.TUTORIAL_LEVEL_ID = 2;\nMethodStackLessonLayer.TUTORIAL_ID = 1001;\n\n/**\n * @class Scene for {@link MethodStackLessonLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar MethodStackLessonScene = cc.Scene.extend(/** @lends MethodStackLessonScene# */{\n\tctor:function (worldID)\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new MethodStackLessonLayer(worldID);\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 07.11.18.\n */\n\n/**\n * @class Page for help about counter.\n * @extends ccui.Layout\n */\nvar CounterLessonLayer = ccui.Layout.extend(/** @lends CounterLessonLayer# */{\n\n\t_curWorldID: null,\n\t_loadingLayer: null,\n\n\tctor: function(worldID)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._curWorldID = worldID;\n\t\tpm.settings.setLevel(CounterLessonLayer.TUTORIAL_LEVEL_ID);\n\n\t\tthis._loadInterface();\n\t\tpm.registerCustomEventListener(pm.TUTORIAL_ENDED, this._drawTutorialLevel.bind(this), this);\n\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar backButton = new pmui.Button(pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tbackButton.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar backButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tbackButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tbackButtonAlign.setRelativeName(\"back\");\n\t\tbackButtonAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tbackButton.setLayoutParameter(backButtonAlign);\n\n\t\tthis.addChild(backButton);\n\n\t\tvar selectPageMenu = new SelectPageMenu(SelectPageMenu.PAGES.COUNTER, this._stopTutorial.bind(this), this);\n\n\t\tvar selectPageAlign = new ccui.RelativeLayoutParameter();\n\t\tselectPageAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tselectPageAlign.setMargin(SelectPageMenu.LEFT_MARGIN, -screenBounds.top, 0, 0);\n\t\tselectPageAlign.setRelativeName(\"selectPage\");\n\t\tselectPageAlign.setRelativeToWidgetName(\"back\");\n\t\tselectPageMenu.setLayoutParameter(selectPageAlign);\n\n\t\tthis.addChild(selectPageMenu);\n\n\t\tvar counterLabel = new ccui.Text(LocalizedString(\"Magic counter\"), pm.settings.fontName,\n\t\t\tCounterLessonLayer.TITLE_FONT_SIZE);\n\t\tcounterLabel.setAnchorPoint(cc.p(0, 0.5));\n\n\t\tvar counterLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcounterLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tcounterLabelAlign.setRelativeName(\"counterLabel\");\n\t\tcounterLabelAlign.setRelativeToWidgetName(\"selectPage\");\n\t\tcounterLabelAlign.setMargin((pm.settings.getScreenSize().width - backButton.width - selectPageMenu.width - counterLabel.width)/2, screenBounds.top, 0, 0);\n\t\tcounterLabel.setLayoutParameter(counterLabelAlign);\n\n\t\tthis.addChild(counterLabel);\n\n\t\tvar counterDescription = LocalizedString(\"CounterDescriptionHelp\");\n\n\t\tvar counterDescriptionLabel = new ccui.Text(counterDescription, pm.settings.fontName,\n\t\t\tCounterLessonLayer.DESCRIPTION_FONT_SIZE);\n\n\t\tcounterDescriptionLabel.setTextAreaSize(cc.size(this.width * (1 - CounterLessonLayer.TUTORIAL_SCALE)\n\t\t\t- CounterLessonLayer.TEXT_AREA_WIDTH, 0));\n\n\t\tvar counterDescriptionAlign = new ccui.RelativeLayoutParameter();\n\t\tcounterDescriptionAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcounterDescriptionAlign.setRelativeName(\"counterDescription\");\n\t\tcounterDescriptionAlign.setRelativeToWidgetName(\"back\");\n\t\tcounterDescriptionAlign.setMargin(CounterLessonLayer.STANDARD_SEPARATOR, CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\tcounterDescriptionLabel.setLayoutParameter(counterDescriptionAlign);\n\n\t\tthis.addChild(counterDescriptionLabel);\n\n\t\tthis._drawTutorialLevel();\n\n\t\tvar commandsLabel = new ccui.Text(LocalizedString(\"COMMANDS\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar commandsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcommandsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcommandsLabelAlign.setRelativeName(\"commands\");\n\t\tcommandsLabelAlign.setRelativeToWidgetName(\"counterDescription\");\n\t\tcommandsLabelAlign.setMargin(CounterLessonLayer.TITLE_MARGIN, 2*CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\tcommandsLabel.setLayoutParameter(commandsLabelAlign);\n\n\t\tthis.addChild(commandsLabel);\n\n\t\tvar counterMethodsBar = new ccui.VBox();\n\n\t\tvar width = 0;\n\t\tvar height = CounterLessonLayer.STANDARD_SEPARATOR;\n\n\t\tvar methods = this._getCounterMethods();\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Robot Methods/counter-methods.plist\");\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Conditions/counter-conditions.plist\");\n\t\tpm.spriteUtils.addTempSpriteFrames(\"Repeaters/counter-repeaters.plist\");\n\n\t\tfor (var method in methods)\n\t\t{\n\t\t\tvar methodContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(0, CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\t\tmethodContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcounterMethodsBar.addChild(methodContainer);\n\n\t\t\tvar button = pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, methods[method]);\n\t\t\tmethodContainer.addChild(button);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(methods[method]), pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\t\tlabelMargin.setMargin(CounterLessonLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tmethodContainer.addChild(label);\n\n\t\t\tmethodContainer.setContentSize(button.width + CounterLessonLayer.STANDARD_SEPARATOR + label.width,\n\t\t\t\tMath.max(button.height, label.height));\n\n\t\t\twidth = Math.max(methodContainer.width, width);\n\t\t\theight += CounterLessonLayer.STANDARD_SEPARATOR + methodContainer.height;\n\t\t}\n\n\t\tcounterMethodsBar.setContentSize(width, height);\n\n\t\tvar methodsBarAlign = new ccui.RelativeLayoutParameter();\n\t\tmethodsBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmethodsBarAlign.setRelativeName(\"methodsBar\");\n\t\tmethodsBarAlign.setRelativeToWidgetName(\"commands\");\n\t\tmethodsBarAlign.setMargin(-CounterLessonLayer.TITLE_MARGIN, 0, 0, 0);\n\t\tcounterMethodsBar.setLayoutParameter(methodsBarAlign);\n\n\t\tthis.addChild(counterMethodsBar);\n\n\t\tvar conditionsLabel = new ccui.Text(LocalizedString(\"CONDITIONS\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar conditionsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tconditionsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tconditionsLabelAlign.setRelativeName(\"conditions\");\n\t\tconditionsLabelAlign.setRelativeToWidgetName(\"methodsBar\");\n\t\tconditionsLabelAlign.setMargin(CounterLessonLayer.TITLE_MARGIN, CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\tconditionsLabel.setLayoutParameter(conditionsLabelAlign);\n\n\t\tthis.addChild(conditionsLabel);\n\n\t\tvar counterCondRepBar = new ccui.VBox();\n\n\t\twidth = 0;\n\t\theight = CounterLessonLayer.STANDARD_SEPARATOR;\n\n\t\tvar conditions = this._getCounterConditions();\n\n\t\tfor (var condition in conditions)\n\t\t{\n\t\t\tvar conditionContainer = new ccui.HBox();\n\n\t\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\t\tcontainerMargin.setMargin(0, CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\t\tconditionContainer.setLayoutParameter(containerMargin);\n\n\t\t\tcounterCondRepBar.addChild(conditionContainer);\n\n\t\t\tvar button = pm.appUtils.generateFunctionButton(FunctionButton.Type.Condition, conditions[condition]);\n\t\t\tconditionContainer.addChild(button);\n\n\t\t\tvar label = new ccui.Text(this._getCommandDescription(conditions[condition]), pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\t\tlabelMargin.setMargin(CounterLessonLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tconditionContainer.addChild(label);\n\n\t\t\tconditionContainer.setContentSize(button.width + CounterLessonLayer.STANDARD_SEPARATOR + label.width,\n\t\t\t\tMath.max(button.height, label.height));\n\n\t\t\twidth = Math.max(conditionContainer.width, width);\n\t\t\theight += CounterLessonLayer.STANDARD_SEPARATOR + conditionContainer.height;\n\t\t}\n\n\t\tvar repeater = this._getCounterRepeater();\n\n\t\tvar repeaterContainer = new ccui.HBox();\n\n\t\tvar containerMargin = new ccui.LinearLayoutParameter();\n\t\tcontainerMargin.setMargin(0, CounterLessonLayer.STANDARD_SEPARATOR, 0, 0);\n\t\trepeaterContainer.setLayoutParameter(containerMargin);\n\n\t\tcounterCondRepBar.addChild(repeaterContainer);\n\n\t\tvar button = new RepeaterButton(repeater);\n\t\trepeaterContainer.addChild(button);\n\n\t\tvar label = new ccui.Text(this._getCommandDescription(repeater), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelMargin = new ccui.LinearLayoutParameter();\n\t\tlabelMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tlabelMargin.setMargin(CounterLessonLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\trepeaterContainer.addChild(label);\n\n\t\trepeaterContainer.setContentSize(button.width + CounterLessonLayer.STANDARD_SEPARATOR + label.width,\n\t\t\tMath.max(button.height, label.height));\n\n\t\twidth = Math.max(repeaterContainer.width, width);\n\t\theight += CounterLessonLayer.STANDARD_SEPARATOR + repeaterContainer.height;\n\n\t\tcounterCondRepBar.setContentSize(width, height);\n\n\t\tvar condRepBarAlign = new ccui.RelativeLayoutParameter();\n\t\tcondRepBarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcondRepBarAlign.setRelativeName(\"condRepBar\");\n\t\tcondRepBarAlign.setRelativeToWidgetName(\"conditions\");\n\t\tcondRepBarAlign.setMargin(-CounterLessonLayer.TITLE_MARGIN, 0, 0, 0);\n\t\tcounterCondRepBar.setLayoutParameter(condRepBarAlign);\n\n\t\tthis.addChild(counterCondRepBar);\n\t},\n\n\t_drawTutorialLevel: function()\n\t{\n\t\tif (this.getChildByTag(CounterLessonLayer.TUTORIAL_ID))\n\t\t\tthis.removeChildByTag(CounterLessonLayer.TUTORIAL_ID);\n\n\t\tvar tutorialData = {\n\t\t\tshow: true,\n\t\t\tscale: CounterLessonLayer.TUTORIAL_SCALE\n\t\t};\n\n\t\tvar levelContainer = new ccui.Layout();\n\t\tlevelContainer.setContentSize(this.width * tutorialData.scale, this.height * tutorialData.scale);\n\n\t\tvar levelContainerAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelContainerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tlevelContainerAlign.setMargin(CounterLessonLayer.STANDARD_SEPARATOR, 0, 0, 0);\n\t\tlevelContainerAlign.setRelativeName(\"level\");\n\t\tlevelContainerAlign.setRelativeToWidgetName(\"counterDescription\");\n\t\tlevelContainer.setLayoutParameter(levelContainerAlign);\n\n\t\tthis.addChild(levelContainer, 0, CounterLessonLayer.TUTORIAL_ID);\n\n\t\tvar levelLayer = new LevelLayer(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel(), null, tutorialData);\n\n\t\tlevelContainer.addChild(levelLayer);\n\t},\n\n\t_stopTutorial: function()\n\t{\n\t\tpm.tutorialUtils.stop();\n\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t},\n\n\t_getCounterMethods: function()\n\t{\n\t\treturn {\n\t\t\tInc: \"cnt_inc\",\n\t\t\tDec: \"cnt_dec\",\n\t\t\tEmpty: \"empty_counter\",\n\t\t};\n\t},\n\n\t_getCounterConditions: function()\n\t{\n\t\treturn {\n\t\t\tEmpty: \"cnt_empty\",\n\t\t\tNotEmpty: \"cnt_not_empty\"\n\t\t}\n\t},\n\n\t_getCounterRepeater: function()\n\t{\n\t\treturn \"cnt_value\";\n\t},\n\n\t_getCommandDescription: function(name)\n\t{\n\t\tswitch (name)\n\t\t{\n\t\t\tcase pm.Counter.NativeMethod.Inc:\n\t\t\t\treturn LocalizedString(\"put stone\");\n\t\t\tcase pm.Counter.NativeMethod.Dec:\n\t\t\t\treturn LocalizedString(\"take stone\");\n\t\t\tcase pm.Counter.NativeMethod.Empty:\n\t\t\t\treturn LocalizedString(\"take all\");\n\t\t\tcase pm.Counter.Condition.Empty:\n\t\t\t\treturn LocalizedString(\"counter is empty\");\n\t\t\tcase pm.Counter.Condition.NotEmpty:\n\t\t\t\treturn LocalizedString(\"counter is not empty\");\n\t\t\tcase pm.Counter.Repeater.Value:\n\t\t\t\treturn LocalizedString(\"number of stones\");\n\t\t}\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tpm.settings.isHelpMode = false;\n\n\t\tthis._stopTutorial();\n\n\t\tthis._downloadWorld(this._curWorldID);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_downloadWorld: function(worldID)\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: worldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif (!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\n\t\tthis._loadingLayer.remove();\n\t},\n\n\tgetCurrentWorldID: function()\n\t{\n\t\treturn this._curWorldID;\n\t}\n});\n\nCounterLessonLayer.STANDARD_SEPARATOR = 8;\nCounterLessonLayer.TEXT_AREA_WIDTH = 100;\nCounterLessonLayer.TITLE_FONT_SIZE = 45;\nCounterLessonLayer.DESCRIPTION_FONT_SIZE = 17;\nCounterLessonLayer.TUTORIAL_SCALE = 0.55;\nCounterLessonLayer.TITLE_MARGIN = 45;\nCounterLessonLayer.TUTORIAL_LEVEL_ID = 5;\nCounterLessonLayer.TUTORIAL_ID = 1001;\n\n/**\n * @class Scene for {@link CounterLessonLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar CounterLessonScene = cc.Scene.extend(/** @lends CounterLessonScene# */{\n\tctor:function (worldID)\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new CounterLessonLayer(worldID);\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 31.11.18.\n */\n\n/**\n * @class Layer for selecting help page.\n * @extends ccui.Layout\n * @constructor\n */\nvar SelectPageMenu = ccui.Layout.extend(/** @lends SelectPageMenu# */{\n\n\t_selectedPageIndex: -1,\n\t_callback: null,\n\t_target: null,\n\n\tctor: function(index, callback, target)\n\t{\n\t\tthis._selectedPageIndex = index;\n\n\t\tif (callback !== undefined && target !== undefined)\n\t\t{\n\t\t\tthis._callback = callback;\n\t\t\tthis._target = target;\n\t\t}\n\n\t\tthis._super();\n\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImage(\"System/SML_Background.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(60, 15, 40, 15));\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tthis._updateCircles();\n\n\t\tpm.settings.isHelpMode = true;\n\t},\n\n\t_updateCircles: function()\n\t{\n\t\tthis.removeAllChildren(true);\n\n\t\tvar circle = pm.spriteUtils.getInterfaceElementSprite(\"selectHelp-normal\");\n\n\t\tvar width = SelectPageMenu.PAGE_NUMBER * (circle.getContentSize().width + SelectPageMenu.SEPARATOR_SIZE);\n\t\twidth -= SelectPageMenu.SEPARATOR_SIZE;\n\t\twidth += SelectPageMenu.LEFT_BOUND;\n\n\t\tthis.setContentSize(cc.size(width, SelectPageMenu.HEIGHT));\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin.setMargin(SelectPageMenu.SEPARATOR_SIZE, 0, 0, 0);\n\n\t\tvar buttonMargin0 = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin0.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin0.setMargin(SelectPageMenu.BUTTON_MARGIN, 0, 0, 0);\n\n\t\tfor (var i = 0; i < SelectPageMenu.PAGE_NUMBER; ++i)\n\t\t{\n\t\t\tvar state = (i === this._selectedPageIndex) ? \"selected\" : \"normal\";\n\n\t\t\tcircle = new pmui.Button(pm.spriteUtils.getInterfaceElementName(\"selectHelp-{0}\".format(state)),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-{0}\".format(state)),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-{0}\".format(state)),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tif (i === 0)\n\t\t\t\tcircle.setLayoutParameter(buttonMargin0);\n\t\t\telse\n\t\t\t\tcircle.setLayoutParameter(buttonMargin);\n\n\t\t\tcircle.setTag(i);\n\t\t\tcircle.addClickEventListener(this._selectPage.bind(this));\n\n\t\t\tvar icon = new ccui.ImageView(pm.spriteUtils.getInterfaceElementName(\"{0}-{1}\".format(this._getIconByTag(i), state)), ccui.Widget.PLIST_TEXTURE);\n\t\t\ticon.setAnchorPoint(cc.p(0, 0));\n\t\t\ticon.setPosition((circle.width - icon.width) / 2, (circle.height - icon.height) / 2);\n\t\t\ticon.setTag(i);\n\n\t\t\tcircle.addChild(icon);\n\t\t\tthis.addChild(circle);\n\t\t}\n\t},\n\n\t_selectPage: function(sender)\n\t{\n\t\tvar index = sender.getTag();\n\n\t\tif (index !== this._selectedPageIndex)\n\t\t{\n\t\t\tvar oldCircle = this.getChildByTag(this._selectedPageIndex);\n\n\t\t\tthis._updateTextures(oldCircle, sender);\n\n\t\t\tif (this._callback)\n\t\t\t\tthis._callback.call(this.target);\n\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, this._getSceneByTag(index));\n\t\t\tcc.director.runScene(trans);\n\t\t}\n\t},\n\n\t_updateTextures: function(oldCircle, newCircle)\n\t{\n\t\toldCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"selectHelp-normal\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-normal\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-normal\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\toldCircle.setTouchEnabled(true);\n\n\t\tvar tag = oldCircle.getTag();\n\t\tvar icon = oldCircle.getChildByTag(tag);\n\t\ticon.loadTexture(pm.spriteUtils.getInterfaceElementName(\"{0}-normal\".format(this._getIconByTag(tag))), ccui.Widget.PLIST_TEXTURE);\n\n\t\tnewCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"selectHelp-selected\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-selected\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"selectHelp-selected\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tnewCircle.setTouchEnabled(false);\n\n\t\ttag = newCircle.getTag();\n\t\ticon = newCircle.getChildByTag(tag);\n\t\ticon.loadTexture(pm.spriteUtils.getInterfaceElementName(\"{0}-selected\".format(this._getIconByTag(tag))), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getIconByTag: function(index)\n\t{\n\t\tswitch (index)\n\t\t{\n\t\t\tcase SelectPageMenu.PAGES.CHOOSE_LESSON:\n\t\t\t\treturn \"robotsHelp\";\n\t\t\tcase SelectPageMenu.PAGES.PROGRAM_ALGORITHM:\n\t\t\t\treturn \"algorithmHelp\";\n\t\t\tcase SelectPageMenu.PAGES.METHOD_STACK:\n\t\t\t\treturn \"methodStackHelp\";\n\t\t\tcase SelectPageMenu.PAGES.COUNTER:\n\t\t\t\treturn \"counterHelp\";\n\t\t}\n\t},\n\n\t_getSceneByTag: function(index)\n\t{\n\t\tvar worldID = this.getParent().getCurrentWorldID();\n\n\t\tswitch (index)\n\t\t{\n\t\t\tcase SelectPageMenu.PAGES.CHOOSE_LESSON:\n\t\t\t\treturn new ChooseLessonScene(worldID);\n\t\t\tcase SelectPageMenu.PAGES.PROGRAM_ALGORITHM:\n\t\t\t\treturn new ProgramAlgorithmScene(worldID);\n\t\t\tcase SelectPageMenu.PAGES.METHOD_STACK:\n\t\t\t\treturn new MethodStackLessonScene(worldID);\n\t\t\tcase SelectPageMenu.PAGES.COUNTER:\n\t\t\t\treturn new CounterLessonScene(worldID);\n\t\t}\n\t}\n});\n\nSelectPageMenu.LEFT_MARGIN = -15;\nSelectPageMenu.BUTTON_MARGIN = 35;\nSelectPageMenu.SEPARATOR_SIZE = 5;\nSelectPageMenu.HEIGHT = 50;\nSelectPageMenu.LEFT_BOUND = 45;\nSelectPageMenu.PAGE_NUMBER = 4;\nSelectPageMenu.PAGES = {\n\tCHOOSE_LESSON: 0,\n\tPROGRAM_ALGORITHM: 1,\n\tMETHOD_STACK: 2,\n\tCOUNTER: 3\n};\n","/**\n * Created by Antony Orlovsky on 28.02.18.\n */\n\n/**\n * @class Start page of PiktoMir.\n * @extends ccui.Layout\n */\nvar StartMenuLayer = ccui.Layout.extend(/** @lends StartMenuLayer# */{\n\n\t_loginButton: null,\n\t_marketButton: null,\n\n\t_mainButtonLayer: null,\n\t_upperButtonLayer: null,\n\t_lowerButtonLayer: null,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._drawMenuButtons();\n\n\t\tif(!pm.settings.userLoggedIn && pm.settings.isUserAutoLogin() && pm.settings.getAccessToken() !== \"\")\n\t\t{\n\t\t\tpm.apiServerUtils.getUserAccountData(this._getUserAccountDataCallback.bind(this));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(pm.settings.getUserData() && !pm.settings.userLoggedIn)\n\t\t\t\tpm.settings.clearUserData();\n\n\t\t\tthis._drawLayout();\n\t\t}\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new StartMenuScene());\n\t\t}, this);\n\t},\n\n\t_drawMenuButtons: function()\n\t{\n\t\tvar mistName = \"System/Mist.png\";\n\n\t\tvar worldButton = new pmui.Button(pm.spriteUtils.getIconName(\"world\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"world\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"world\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tworldButton.setRotation(45);\n\t\tworldButton.addClickEventListener(this._onWorld.bind(this));\n\n\t\tvar gameButton = new pmui.Button(pm.spriteUtils.getIconName(\"game\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"game\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"game\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tgameButton.setRotation(45);\n\t\tgameButton.addClickEventListener(this._onGame.bind(this));\n\n\t\tvar optionsButton = new pmui.Button(pm.spriteUtils.getIconName(\"options\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"options\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"options\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\toptionsButton.setRotation(45);\n\t\toptionsButton.addClickEventListener(this._onOptions.bind(this));\n\n\t\tvar optionsButtonMist = new ccui.ImageView(mistName);\n\t\toptionsButtonMist.setRotation(45);\n\t\toptionsButtonMist.setAnchorPoint(cc.p(1, 1));\n\n\t\tvar learnButton = new pmui.Button(pm.spriteUtils.getIconName(\"learn\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"learn\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"learn\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tlearnButton.setRotation(45);\n\t\tlearnButton.addClickEventListener(this._onLearn.bind(this));\n\n\t\tvar learnButtonMist = new ccui.ImageView(mistName);\n\t\tlearnButtonMist.setRotation(45);\n\t\tlearnButtonMist.setAnchorPoint(cc.p(0, 1));\n\n\t\tthis._mainButtonLayer = new ccui.Layout();\n\n\t\tvar boundingBox = gameButton.getBoundingBox();\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t}\n\n\t\tthis._mainButtonLayer.setContentSize(2 * boundingBox.width + StartMenuLayer.SEPARATOR,\n\t\t\t2 * boundingBox.height + StartMenuLayer.SEPARATOR);\n\n\t\tlearnButtonMist.setPosition(StartMenuLayer.MIST_SHIFT, this._mainButtonLayer.height / 2 + StartMenuLayer.MIST_SHIFT);\n\t\toptionsButtonMist.setPosition(this._mainButtonLayer.width / 2 + StartMenuLayer.MIST_SHIFT, StartMenuLayer.MIST_SHIFT);\n\t\tworldButton.setPosition(this._mainButtonLayer.width - boundingBox.width / 2, this._mainButtonLayer.height / 2);\n\t\tgameButton.setPosition(this._mainButtonLayer.width / 2, this._mainButtonLayer.height - boundingBox.height / 2);\n\t\tlearnButton.setPosition(boundingBox.width / 2, this._mainButtonLayer.height / 2);\n\t\toptionsButton.setPosition(this._mainButtonLayer.width / 2, boundingBox.height / 2);\n\n\t\tthis._mainButtonLayer.addChild(optionsButtonMist, -1);\n\t\tthis._mainButtonLayer.addChild(learnButtonMist, -1);\n\t\tthis._mainButtonLayer.addChild(worldButton);\n\t\tthis._mainButtonLayer.addChild(gameButton);\n\t\tthis._mainButtonLayer.addChild(optionsButton);\n\t\tthis._mainButtonLayer.addChild(learnButton);\n\n\t\tvar scale = pm.settings.getScreenSize().height / this._mainButtonLayer.height;\n\n\t\tif (scale > 1)\n\t\t\tscale = 1;\n\n\t\tthis._mainButtonLayer.setScale(scale);\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\tvar rightMargin = screenBounds.safeAreas.right ? screenBounds.right : 0;\n\t\tvar rightButtonMargin = (StartMenuLayer.BORDER + rightMargin) * scale;\n\n\t\tvar buttonLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tbuttonLayerAlign.setMargin((pm.settings.getScreenSize().width - this._mainButtonLayer.width\n\t\t\t- 1.5 * StartMenuLayer.RIGHT_BAR_WIDTH - StartMenuLayer.SEPARATOR - 2 * rightButtonMargin) / 2, 0, 0,\n\t\t\t(pm.settings.getScreenSize().height - this._mainButtonLayer.height * scale) / 2);\n\t\tthis._mainButtonLayer.setLayoutParameter(buttonLayerAlign);\n\n\t\tthis.addChild(this._mainButtonLayer, 2);\n\t},\n\n\t_onLogin: function()\n\t{\n\t\tvar loginLayer = new LoginLayer(this, this._loginSuccess);\n\n\t\tcc.director.getRunningScene().addChild(loginLayer, 100, StartMenuLayer.LOGINLAYER_TAG);\n\t},\n\n\t_loginSuccess: function()\n\t{\n\t\tpm.apiServerUtils.getUserAccountData(this._getUserAccountDataCallback.bind(this));\n\t},\n\n\t_getUserAccountDataCallback: function(error, response)\n\t{\n\t\tif(!error && response)\n\t\t{\n\t\t\tpm.settings.userLoggedIn = true;\n\n\t\t\tpm.settings.setUserName(response.username);\n\n\t\t\tvar accountType = response.permissions.pm || pm.USER_TYPE.USER;\n\n\t\t\tpm.settings.setUserData(response._id, accountType,\n\t\t\t\tresponse.name, response.surname);\n\n\t\t\tpm.userCache.remove(); //clean up cache from not logged in user\n\t\t\tpm.userCache.forceSyncCache();\n\t\t}\n\t\telse if(error && (error.status === -1 || error.status === 0))\n\t\t{\n\t\t\tpm.settings.userLoggedIn = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.settings.setAccessToken(\"\");\n\t\t\tpm.settings.setRefreshToken(\"\");\n\n\t\t\tpm.settings.userLoggedIn = false;\n\t\t\tcc.error(JSON.stringify(error));\n\t\t}\n\n\t\tthis._drawLayout();\n\t},\n\n\t_drawLayout: function()\n\t{\n\t\tif(!this._upperButtonLayer)\n\t\t{\n\t\t\tthis._upperButtonLayer = new ccui.Layout();\n\t\t\tthis._upperButtonLayer.setAnchorPoint(cc.p(1, 1));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._upperButtonLayer.removeAllChildren(true);\n\t\t}\n\n\t\tif(!this._lowerButtonLayer)\n\t\t{\n\t\t\tthis._lowerButtonLayer = new ccui.Layout();\n\t\t\tthis._lowerButtonLayer.setAnchorPoint(cc.p(1, 0));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._lowerButtonLayer.removeAllChildren(true);\n\t\t}\n\n\t\tthis._drawLowerLayer();\n\n\t\tif(pm.settings.userLoggedIn)\n\t\t{\n\t\t\tif(pm.settings.getUserData().accountType === pm.USER_TYPE.USER)\n\t\t\t\tthis._drawUserLayout();\n\t\t\telse\n\t\t\t\tthis._drawTeacherLayout();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._drawNotLoggedInLayout();\n\t\t}\n\n\t\tvar scale = pm.settings.getScreenSize().height / (this._upperButtonLayer.height + this._lowerButtonLayer.height + 3 * StartMenuLayer.BORDER);\n\n\t\tif(scale > 1)\n\t\t\tscale = 1;\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\tvar rightMargin = screenBounds.safeAreas.right ? screenBounds.right : 0;\n\t\tvar rightButtonMargin = (StartMenuLayer.BORDER + rightMargin) * scale;\n\n\t\tvar upperButtonLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tupperButtonLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tupperButtonLayerAlign.setMargin(0, StartMenuLayer.BORDER * scale, rightButtonMargin, 0);\n\t\tthis._upperButtonLayer.setLayoutParameter(upperButtonLayerAlign);\n\n\t\tvar lowerButtonLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tlowerButtonLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tlowerButtonLayerAlign.setMargin(0, 0, rightButtonMargin, StartMenuLayer.BORDER * scale);\n\t\tthis._lowerButtonLayer.setLayoutParameter(lowerButtonLayerAlign);\n\n\t\tthis._upperButtonLayer.setScale(scale);\n\t\tthis._lowerButtonLayer.setScale(scale);\n\n\t\tif (!this._upperButtonLayer.getParent())\n\t\t{\n\t\t\tthis.addChild(this._upperButtonLayer, 2);\n\t\t\tthis.addChild(this._lowerButtonLayer, 2);\n\t\t}\n\n\t\tthis.forceDoLayout();\n\t},\n\n\t_drawLowerLayer: function()\n\t{\n\t\tvar versionLabel = new ccui.Text(LocalizedString(\"AppVersion\").format(pm.appUtils.getAppVersion()),\n\t\t\tpm.settings.fontName, 14);\n\t\tversionLabel.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tvar resetButton = new pmui.Button(pm.spriteUtils.getIconName(\"clearProgress\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clearProgress\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clearProgress\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tresetButton.setRotation(45);\n\t\tresetButton.addClickEventListener(this._onResetConfirm.bind(this));\n\n\t\tvar boundingBox = resetButton.getBoundingBox();\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t}\n\n\t\tthis._lowerButtonLayer.setContentSize(boundingBox.width, boundingBox.height + versionLabel.height + StartMenuLayer.SEPARATOR);\n\n\t\tversionLabel.setPosition(this._lowerButtonLayer.width / 2, 0);\n\t\tresetButton.setPosition(this._lowerButtonLayer.width / 2, versionLabel.height + StartMenuLayer.SEPARATOR + boundingBox.height / 2);\n\n\t\tthis._lowerButtonLayer.addChild(versionLabel);\n\t\tthis._lowerButtonLayer.addChild(resetButton);\n\n\t\tif (pm.appConfig.showMarket)\n\t\t{\n\t\t\tthis._marketButton = new pmui.Button(pm.spriteUtils.getIconName(\"shop\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"shop\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"shop\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tthis._marketButton.setRotation(45);\n\t\t\tthis._marketButton.addClickEventListener(this._onMarket.bind(this));\n\n\t\t\tboundingBox = this._marketButton.getBoundingBox();\n\t\t\tif (!cc.sys.isNative)\n\t\t\t{\n\t\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t\t}\n\n\t\t\tthis._lowerButtonLayer.setContentSize(this._lowerButtonLayer.width,\n\t\t\t\tthis._lowerButtonLayer.height + boundingBox.height + StartMenuLayer.SEPARATOR);\n\n\t\t\tthis._marketButton.setPosition(this._lowerButtonLayer.width / 2, this._lowerButtonLayer.height - boundingBox.height / 2);\n\t\t\tthis._lowerButtonLayer.addChild(this._marketButton);\n\t\t}\n\t},\n\n\t_drawUserLayout: function()\n\t{\n\t\tthis._loginButton = new pmui.Button(pm.spriteUtils.getIconName(\"quit\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"quit\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"quit\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._loginButton.setRotation(45);\n\t\tthis._loginButton.addClickEventListener(this._exitFromAccount.bind(this));\n\n\t\tvar boundingBox = this._loginButton.getBoundingBox();\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t}\n\n\t\tthis._upperButtonLayer.setContentSize(boundingBox.width, boundingBox.height);\n\n\t\tthis._loginButton.setPosition(boundingBox.width / 2, boundingBox.height / 2);\n\t\tthis._upperButtonLayer.addChild(this._loginButton);\n\t},\n\n\t_drawTeacherLayout: function()\n\t{\n\t\tthis._loginButton = new pmui.Button(pm.spriteUtils.getIconName(\"quit\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"quit\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"quit\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._loginButton.setRotation(45);\n\t\tthis._loginButton.addClickEventListener(this._exitFromAccount.bind(this));\n\n\t\tvar toEditorButton = new pmui.Button(pm.spriteUtils.getIconName(\"editor\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"editor\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"editor\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\ttoEditorButton.setRotation(45);\n\t\ttoEditorButton.addClickEventListener(this._toEditor.bind(this));\n\n var boundingBox = this._loginButton.getBoundingBox();\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t}\n\n if (cc.sys.isNative)\n\t\t{\n\t\t\tthis._upperButtonLayer.setContentSize(1.5 * boundingBox.width + StartMenuLayer.SEPARATOR,\n\t\t\t\t2 * boundingBox.height + StartMenuLayer.SEPARATOR);\n\n\t\t\tvar classControl = new pmui.Button(pm.spriteUtils.getIconName(\"classControl\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"classControl\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"classControl\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tclassControl.setRotation(45);\n\t\t\tclassControl.addClickEventListener(this._classControl.bind(this));\n\n\t\t\tclassControl.setPosition(boundingBox.width / 2, this._upperButtonLayer.height / 2);\n\t\t\tthis._upperButtonLayer.addChild(classControl);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._upperButtonLayer.setContentSize(boundingBox.width, 2 * boundingBox.height + StartMenuLayer.SEPARATOR);\n\t\t}\n\n\t\tthis._loginButton.setPosition(this._upperButtonLayer.width - boundingBox.width / 2,\n\t\t\tthis._upperButtonLayer.height - boundingBox.height / 2);\n\t\tthis._upperButtonLayer.addChild(this._loginButton);\n\n\t\ttoEditorButton.setPosition(this._upperButtonLayer.width - boundingBox.width / 2, boundingBox.height / 2);\n\t\tthis._upperButtonLayer.addChild(toEditorButton);\n\t},\n\n\t_drawNotLoggedInLayout: function()\n\t{\n\t\tthis._loginButton = new pmui.Button(pm.spriteUtils.getIconName(\"enter\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"enter\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"enter\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._loginButton.setRotation(45);\n\t\tthis._loginButton.addClickEventListener(this._onLogin.bind(this));\n\n\t\tvar boundingBox = this._loginButton.getBoundingBox();\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tboundingBox.width *= Math.sqrt(2);\n\t\t\tboundingBox.height *= Math.sqrt(2);\n\t\t}\n\n\t\tthis._upperButtonLayer.setContentSize(boundingBox.width, boundingBox.height);\n\n\t\tthis._loginButton.setPosition(boundingBox.width / 2, boundingBox.height / 2);\n\t\tthis._upperButtonLayer.addChild(this._loginButton);\n\t},\n\n\t_exitFromAccount: function()\n\t{\n\t\tpm.settings.userLoggedIn = false;\n\t\tpm.settings.clearUserData();\n\n\t\tpm.userCache.remove();\n\t\tthis._drawLayout();\n\t},\n\n\t_onResetConfirm: function()\n\t{\n\t\tif (!this.getChildByTag(StartMenuLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar date = pm.settings.getModifyDate();\n\n\t\t\tif (typeof(date) === \"string\")\n\t\t\t\tdate = new Date(date);\n\n\t\t\tif (!date)\n\t\t\t\tdate = new Date();\n\n\t\t\tvar dateString = date.getDate() + \".\"+date.getMonth()+\".\"+date.getFullYear()+\", \"+date.getHours()+\":\"+date.getMinutes()+\":\"+date.getSeconds();\n\n\t\t\tvar input = new pmui.ConfirmWindow(LocalizedString(\"ClearProgress\"), \"Мир: \" + world.name + \", последнее изменение: \" + dateString);\n\n\t\t\tinput.setCallback(this, this._onReset, function () {});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, StartMenuLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_onReset: function()\n\t{\n\t\tpm.settings.clearModifyDate();\n\t\tpm.userCache.cleanup();\n\t\tcc.sys.garbageCollect();\n\t},\n\n\t_toEditor: function()\n\t{\n\t\tpm.settings.isEditorMode = true;\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new MenuEditorScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_classControl: function (object)\n\t{\n\t\tvar trans = new cc.TransitionFade( 1.5 * pm.SYSTEM_ANIMATION_DELAY, new ClassControlScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_onWorld: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectWorldScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_onGame: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectGameScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_onOptions: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\treturn;\n\n\t\tvar settingsLayer = new SettingsLayer(this, this._closeOptions);\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t},\n\n\t_onLearn: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew ChooseLessonScene(pm.settings.getSelectedWorldID()));\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_onMarket: function()\n\t{\n if (cc.sys.isNative && cc.sys.isMobile && pm.marketHelper.isMarketAvailable())\n {\n var marketLayer = new MarketLayer();\n marketLayer.show();\n }\n else\n\t\t{\n\t\t\tvar infoMarketLayer = new InfoMarketLayer(this, this._closeMarketInfo);\n cc.director.getRunningScene().addChild(infoMarketLayer, 100, InfoMarketLayer.TAG);\n\t\t}\n\t},\n\n _closeMarketInfo: function()\n {\n cc.director.getRunningScene().removeChildByTag(InfoMarketLayer.TAG);\n },\n\n\t_closeOptions: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t}\n});\n\nStartMenuLayer.SEPARATOR = 15;\nStartMenuLayer.MENU_INDENTATION = 90;\nStartMenuLayer.LOGINLAYER_TAG = 2;\nStartMenuLayer.CONFIRM_LAYER_TAG = 4872;\nStartMenuLayer.MIST_SHIFT = 30;\nStartMenuLayer.BORDER = 15;\nStartMenuLayer.RIGHT_BAR_WIDTH = 141.4;\n\n/**\n * @class Scene for {@link StartMenuLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar StartMenuScene = cc.Scene.extend(/** @lends StartMenuScene# */{\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new StartMenuLayer();\n\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by antonded on 24.10.14.\n */\n\n/**\n * @class Layer for choosing game.\n * @extends ccui.Layout\n * @constructor\n */\nvar SelectGameLayer = ccui.Layout.extend(/** @lends SelectGameLayer# */{\n\n\t_worldSelect: null,\n\n\t_menuButtonHeight: 0,\n\t_labelHeight: 0,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tif(cc.sys.isNative)\n \tcc.textureCache.removeAllTextures();\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._loadInterface();\n\n\t\tpm.registerCustomEventListener(pm.CLEAR_CACHE, this._clearCache.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new SelectGameScene());\n\t\t}, this);\n\n\t\treturn true;\n\t},\n\n\t_menu: null,\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar goToStartScreen = new pmui.Button( pm.spriteUtils.getIconName(\"back\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tgoToStartScreen.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar goToStartScreenAlign = new ccui.RelativeLayoutParameter();\n\t\tgoToStartScreenAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgoToStartScreenAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tgoToStartScreen.setLayoutParameter(goToStartScreenAlign);\n\n\t\tthis.addChild(goToStartScreen, 2);\n\n\t\tvar menuButton = new pmui.Button( pm.spriteUtils.getIconName(\"menu\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t\tthis._menuButtonHeight = menuButton.height;\n\n\t\tmenuButton.addClickEventListener(this._showMenu.bind(this));\n\n\t\tvar menuButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tmenuButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tmenuButtonAlign.setMargin(0, screenBounds.top, screenBounds.right, 0);\n\t\tmenuButton.setLayoutParameter(menuButtonAlign);\n\n\t\tthis.addChild(menuButton);\n\n\t\tvar label = new ccui.Text(world.name, pm.settings.fontName, 70);\n\t\tthis._labelHeight = label.height;\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, screenBounds.top + Math.abs(menuButton.height - label.height)/2, 0, 0);\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tthis.addChild(label);\n\n\t\tvar slidingLayout = new ccui.Layout();\n\n\t\tslidingLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tslidingLayout.setContentSize(\n \tthis.getContentSize().width,\n\t\t\tthis.getContentSize().height - screenBounds.top - screenBounds.bottom - Math.max(menuButton.height, label.height) - SelectGameLayer.SEPARATOR\n\t\t);\n\n\t\tvar slidingLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tslidingLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tslidingLayoutAlign.setMargin(0, 0, 0, SelectGameLayer.SEPARATOR);\n\t\tslidingLayout.setLayoutParameter(slidingLayoutAlign);\n\n\t\tthis._menu = new pmui.SlidingGameMenu(\n\t\t\tthis.getContentSize().width,\n\t\t\tthis.getContentSize().height - (screenBounds.top + screenBounds.bottom + Math.max(menuButton.height, label.height) + SelectGameLayer.SEPARATOR),\n\t\t\tthis._selectGame,\n\t\t\tthis\n\t\t);\n\n\t\tthis._drawWorld();\n\n\t\tvar scale = pm.settings.getScreenSize().height / (screenBounds.top + screenBounds.bottom + Math.max(menuButton.height, label.height) + 2 * SelectGameLayer.SEPARATOR + this._menu.height);\n\n\t\tif (scale > 1)\n\t\t\tscale = 1;\n\n\t\tslidingLayout.setScale(scale);\n\n\t\tvar slidingMenuAlign = new ccui.RelativeLayoutParameter();\n\t\tslidingMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tthis._menu.setLayoutParameter(slidingMenuAlign);\n\n\t\tslidingLayout.addChild(this._menu);\n\n\t\tthis.addChild(slidingLayout);\n\n\t\t// this._worldSelect = new SelectWorldLayer(this, this._drawWorld);\n\t\t// var worldLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t// worldLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\t// worldLayerAlign.setMargin(0, pm.SCREEN_BOUND, pm.SCREEN_BOUND, 0);\n\t\t// this._worldSelect.setLayoutParameter(worldLayerAlign);\n\t\t//\n\t\t// this.addChild(this._worldSelect);\n\t\t//\n\t\t// var versionLabel = new ccui.Text(LocalizedString(\"AppVersion\").format(pm.appUtils.getAppVersion()),\n\t\t// \t\t\t\t\t\t\t\t pm.settings.fontName, pm.settings.fontSize);\n\t\t//\n\t\t// var versionLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t// versionLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t// versionLabelAlign.setMargin(pm.SCREEN_BOUND, 0, 0, pm.SCREEN_BOUND);\n\t\t// versionLabelAlign.setRelativeName(\"version\");\n\t\t// versionLabel.setLayoutParameter(versionLabelAlign);\n\t\t//\n\t\t// this.addChild(versionLabel);\n\n\t\t// var clearCache = new pmui.InterfaceButton(this._clearCache, this, LocalizedString(\"ClearProgress\"));\n\t\t//\n\t\t// var clearCacheAlign = new ccui.RelativeLayoutParameter();\n\t\t// clearCacheAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\t\t// clearCacheAlign.setMargin(0, 0, 0, pm.SCREEN_BOUND);\n\t\t// clearCacheAlign.setRelativeToWidgetName(\"version\");\n\t\t// clearCache.setLayoutParameter(clearCacheAlign);\n\t\t//\n\t\t// this.addChild(clearCache);\n\t},\n\n\t_onUserChanged: function()\n\t{\n\t\tthis._worldSelect.refresh();\n\t},\n\n\t_drawWorld: function()\n\t{\n\t\tthis._menu.removeAllChildren();\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\tvar margin = screenBounds.top + screenBounds.bottom + Math.max(this._menuButtonHeight, this._labelHeight);\n\n\t\tfor(var i = 0; i < world.getGameCount(); ++i)\n\t\t\tthis._menu.addMenuElement(new pmui.SlidingGameMenuElement(new ccui.ImageView(\"WorldPics/game_{0}.png\".format(i % 3)),\n\t\t\t\tworld.getGameName(i), this._menu.getChildrenCount(), margin));\n\n\t\tthis._menu.setCurrentElement(pm.settings.getGame(), false);\n\t},\n\n\t_selectGame: function(game)\n\t{\n\n\t\tif(game !== pm.settings.getGame())\n\t\t{\n\t\t\tpm.settings.setGame(game);\n\t\t\tpm.settings.setLevel(0);\n\t\t}\n\n\t\tvar trans = new cc.TransitionFade( 1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectLevelScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_clearCache: function(sender)\n\t{\n\t\tpm.userCache.cleanup();\n\t\tcc.sys.garbageCollect();\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_showMenu: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\treturn;\n\n \tvar settingsLayer = new SettingsLayer(this, this._closeMenu);\n\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t},\n\n\t_closeMenu: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t}\n});\n\nSelectGameLayer.SEPARATOR = 25;\n\n/**\n * @class Scene for {@link SelectGameLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar SelectGameScene = cc.Scene.extend(/** @lends SelectGameScene# */{\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new SelectGameLayer();\n\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * @class Layer for selecting level.
\n * Contains {@link LevelPreview}'s.\n * @extends ccui.Layout\n */\nvar SelectLevelLayer = ccui.Layout.extend({\n\t_refreshInterval: null,\n\t_levelsMenu: null,\n\n\tctor: function ()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tvar game = pm.settings.getGame();\n\n\t\tthis._levelsMenu = new pmui.SlidingLevelMenu(this.getContentSize().width - screenBounds.left - screenBounds.right, this._selectLevel, this);\n\n\t\tthis._levelsMenu.addMenuElement(new pmui.SlidingLevelMenuElement(new ccui.ImageView(\"WorldPics/game_{0}.png\".format(game % 3)),\n\t\t\tworld.getGameName(game), 0, this._levelsMenu.getChildrenCount() - 1));\n\n\t\tfor (var i = 0; i < world.getLevelCount(game); ++i)\n\t\t{\n\t\t\tvar needToDrawDots = true;\n\n\t\t\tif ((i + 1) === world.getLevelCount(pm.settings.getGame()))\n\t\t\t\tneedToDrawDots = false;\n\n\t\t\tthis._levelsMenu.addMenuElement(new pmui.SlidingLevelMenuElement(new LevelPreview(game, i),\n\t\t\t\tworld.getLevelName(game, i), i + 1, this._levelsMenu.getChildrenCount() - 1));\n\t\t}\n\t\tthis._levelsMenu.setCurrentElement(pm.settings.getLevel(), false);\n\n\t\tvar slidingMenuAlign = new ccui.RelativeLayoutParameter();\n\t\tslidingMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tslidingMenuAlign.setRelativeName(\"scroll\");\n\t\tslidingMenuAlign.setMargin(screenBounds.left, 0, 0, 0);\n\t\tthis._levelsMenu.setLayoutParameter(slidingMenuAlign);\n\n\t\tthis.addChild(this._levelsMenu);\n\n\t\t// var levelCount = new ccui.Text(LocalizedString('LevelCount').format(world.getLevelCount(game)),\n\t\t// pm.settings.fontName, pm.settings.fontSize);\n\t\t//\n\t\t// var worldLabel = new ccui.Text(LocalizedString(\"WorldPattern\").format(pm.settings.getWorldRecord().name),\n\t\t// pm.settings.fontName, pm.settings.fontSize);\n\t\t//\n\t\t// var gameNameLabel = new ccui.Text(world.getGameName(game), pm.settings.fontName, pm.settings.fontSize);\n\t\t//\n\t\t// var levelSprite = new ccui.ImageView(\"WorldPics/game{0}.png\".format(game % 4));\n\t\t//\n\t\t// var levelCountAlign = new ccui.RelativeLayoutParameter();\n\t\t// levelCountAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t// levelCountAlign.setRelativeName(\"levelCount\");\n\t\t// levelCountAlign.setRelativeToWidgetName(\"scroll\");\n\t\t// levelCountAlign.setMargin(0, 0, 0, 50);\n\t\t// levelCount.setLayoutParameter(levelCountAlign);\n\t\t//\n\t\t// var worldLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t// worldLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t// worldLabelAlign.setRelativeName(\"world\");\n\t\t// worldLabelAlign.setRelativeToWidgetName(\"levelCount\");\n\t\t// worldLabel.setLayoutParameter(worldLabelAlign);\n\t\t//\n\t\t// var gameNameLabelAlign = new ccui.RelativeLayoutParameter();\n\t\t// gameNameLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t// gameNameLabelAlign.setRelativeName(\"game\");\n\t\t// gameNameLabelAlign.setRelativeToWidgetName(\"world\");\n\t\t// gameNameLabel.setLayoutParameter(gameNameLabelAlign);\n\t\t//\n\t\t// var levelSpriteAlign = new ccui.RelativeLayoutParameter();\n\t\t// levelSpriteAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t// levelSpriteAlign.setRelativeToWidgetName(\"game\");\n\t\t// levelSprite.setLayoutParameter(levelSpriteAlign);\n\t\t// levelSprite.setScale(0.7);\n\t\t//\n\t\t// this.addChild(levelCount);\n\t\t// this.addChild(gameNameLabel);\n\t\t// this.addChild(worldLabel);\n\t\t// this.addChild(levelSprite);\n\n\t\tvar goToSelectGame = new pmui.Button( pm.spriteUtils.getIconName(\"back\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tgoToSelectGame.addClickEventListener(this._gamesMenu.bind(this));\n\n\t\tvar selectGameAlign = new ccui.RelativeLayoutParameter();\n\t\tselectGameAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tselectGameAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tgoToSelectGame.setLayoutParameter(selectGameAlign);\n\n\t\t// this.addChild(goToSelectGame);\n\n\t\tvar menuButton = new pmui.Button( pm.spriteUtils.getIconName(\"menu\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tmenuButton.addClickEventListener(this._showMenu.bind(this));\n\n\t\tvar menuButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tmenuButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tmenuButtonAlign.setMargin(0, screenBounds.top, screenBounds.right, 0);\n\t\tmenuButton.setLayoutParameter(menuButtonAlign);\n\n\t\tthis.addChild(menuButton);\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new SelectLevelScene());\n\t\t}, this);\n\n\n\t\tvar isUser = pm.settings.userLoggedIn && pm.settings.getUserData().accountType === pm.USER_TYPE.USER;\n\n\t\tif(isUser && pm.settings.getWorldRecord().linkedWithMirera) {\n\t\t\tthis._requestGameMireraResults();\n\n\t\t\tthis._refreshInterval = setInterval(\n\t\t\t\tthis._requestGameMireraResults.bind(this),\n\t\t\t\tSelectLevelLayer.REFRESH_STATUS_INTERVAL\n\t\t\t);\n\t\t}\n\t},\n\n\t_requestGameMireraResults: function() {\n\t\tvar game = pm.settings.getGame();\n\t\tvar id = world.getGames()[game].id;\n\n\t\tpm.apiServerUtils.getGameSolutionsResult(function(error, response) {\n\t\t\tif(!error)\n\t\t\t{\n\t\t\t\tvar childCount = this._levelsMenu.getChildrenCount();\n\t\t\t\tvar children = this._levelsMenu.getChildren();\n\n\t\t\t\tfor(var i = 0; i < childCount; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar level = children[i].levelID;\n\n\t\t\t\t\tif(level)\n\t\t\t\t\t\tchildren[i].setMireraCompleted(response.levels[level]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconsole.log(JSON.stringify(error));\n\t\t\t}\n\t\t}.bind(this), id);\n\t},\n\n\t_gamesMenu: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectGameScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_selectLevel: function(level)\n\t{\n\t\tpm.settings.setLevel(level);\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelScene(GameType.Local, null, pm.settings.getGame(), level));\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_showMenu: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\treturn;\n\n\t\tvar settingsLayer = new SettingsLayer(this, this._closeMenu);\n\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t},\n\n\t_closeMenu: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t},\n\n\tonExitTransitionDidStart: function()\n\t{\n\t\tif(this._refreshInterval)\n\t\t\tclearInterval(this._refreshInterval);\n\t}\n});\n\n/**\n * @class Scene for {@link SelectLevelLayer}\n * @extends cc.Scene\n */\nvar SelectLevelScene = cc.Scene.extend({\n\tonEnter: function ()\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new SelectLevelLayer();\n\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n\nSelectLevelLayer.REFRESH_STATUS_INTERVAL = 10000;\n","/**\n * Created by Antony Orlovsky on 04.03.18.\n */\n\n/**\n * @class Layer for choosing world.\n * @extends cc.Layer\n */\nvar SelectWorldLayer = ccui.Layout.extend(/** @extends SelectWorldLayer# */{\n\n\t_menu: null,\n\t_groupSelect: null,\n\n\t_selectedGroupID: \"\",\n\t_selectedWorldID: \"\",\n\n\t_worldList: null,\n\n\t_loadingLayer: null,\n\n\t_comboBoxMoving: 0,\n\t_innerContainerOldPosition: cc.p(),\n\n\t_startInnerPosition: null,\n\n\t_scale: 1,\n\t_menuButtonWidth: 0,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._selectedGroupID = pm.settings.getSelectedUserGroupID();\n\t\tthis._selectedWorldID = pm.settings.getSelectedWorldID();\n\n\t\tthis._worldList = new WorldList(this._onLoadWorldList, this);\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._loadInterface();\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new SelectWorldScene());\n\t\t}, this);\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar goToStartScreen = new pmui.Button( pm.spriteUtils.getIconName(\"back\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"back\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tgoToStartScreen.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar goToStartScreenAlign = new ccui.RelativeLayoutParameter();\n\t\tgoToStartScreenAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgoToStartScreenAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tgoToStartScreen.setLayoutParameter(goToStartScreenAlign);\n\n\t\tthis.addChild(goToStartScreen, 1);\n\n\t\tvar menuButton = new pmui.Button( pm.spriteUtils.getIconName(\"menu\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menu\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t\tthis._menuButtonWidth = menuButton.width;\n\n\t\tmenuButton.addClickEventListener(this._showMenu.bind(this));\n\n\t\tvar menuButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tmenuButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tmenuButtonAlign.setMargin(0, screenBounds.top, screenBounds.right, 0);\n\t\tmenuButton.setLayoutParameter(menuButtonAlign);\n\n\t\tthis.addChild(menuButton, 1);\n\n\t\tthis._scale = (this.getContentSize().width - screenBounds.left - screenBounds.right) / (SelectWorldLayer.BUTTON_SIZE + SelectWorldLayer.TEXT_WIDTH);\n\t\tthis._scale -= 0.02;\n\n\t\tif (this._scale > 1)\n\t\t\tthis._scale = 1;\n\n\t\tthis._menu = new pmui.SlidingMenu(Math.min(this.getContentSize().width, SelectWorldLayer.ELEMENT_WIDTH) - screenBounds.left - screenBounds.right,\n\t\t\tthis.getContentSize().height - (menuButton.height + screenBounds.top),\n\t\t\tthis._selectWorld, this, ccui.ScrollView.DIR_VERTICAL);\n\n\t\tif (cc.sys.isNative)\n\t\t\tccui.ScrollView.prototype._addEventListener.call(this._menu, this._moveComboBox.bind(this));\n\t\telse\n\t\t\tccui.ScrollView.prototype.addEventListener.call(this._menu, this._moveComboBox.bind(this));\n\n\t\tthis._innerContainerOldPosition = this._menu.getInnerContainerPosition() - 100;\n\n\t\tvar slidingMenuAlign = new ccui.RelativeLayoutParameter();\n\t\tslidingMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tslidingMenuAlign.setMargin(0, menuButton.height + screenBounds.top, 0, 0);\n\t\tthis._menu.setLayoutParameter(slidingMenuAlign);\n\n\t\tthis.addChild(this._menu);\n\n\t\tthis._groupSelect = new pmui.ComboBox([], this, this._selectGroupOnSelect, 35, 200, this._selectGroupOnShow, this._selectGroupOnClose);\n\n\t\tvar groupAlign = new ccui.RelativeLayoutParameter();\n\t\tgroupAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tgroupAlign.setMargin(0, screenBounds.top, 0, 0);\n\t\tthis._groupSelect.setLayoutParameter(groupAlign);\n\n\t\tthis._comboBoxMoving = 0;\n\n\t\tthis.addChild(this._groupSelect);\n\n\t\tthis._groupSelect.enabled = false;\n\n\t\tthis.refresh();\n\t},\n\n\t_moveComboBox: function (target, event)\n\t{\n\t\tif (!this._startInnerPosition)\n\t\t\tthis._startInnerPosition = this._menu.getInnerContainerPosition();\n\n\t\tif (event === ccui.ScrollView.EVENT_CONTAINER_MOVED)\n\t\t{\n\t\t\tif (this._innerContainerOldPosition.y < this._startInnerPosition.y || this._menu.getInnerContainerPosition().y >= 0)\n\t\t\t\treturn;\n\n\t\t\tif (this._menu.getInnerContainerPosition().y > this._innerContainerOldPosition.y)\n\t\t\t{\n\t\t\t\tif (this._comboBoxMoving === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.runAction(cc.targetedAction(this._groupSelect, cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, 0, 110)));\n\t\t\t\t\tthis._comboBoxMoving = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this._menu.getInnerContainerPosition().y < this._innerContainerOldPosition.y)\n\t\t\t{\n\t\t\t\tif (this._comboBoxMoving === 1)\n\t\t\t\t{\n\t\t\t\t\tthis.runAction(cc.targetedAction(this._groupSelect, cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, 0, -110)));\n\t\t\t\t\tthis._comboBoxMoving = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._innerContainerOldPosition = this._menu.getInnerContainerPosition();\n\t},\n\n\t_drawGroup: function()\n\t{\n\t\tvar selectedGroup = this._getSelectGraph()[this._selectedGroupID];\n\t\tvar worldList = selectedGroup.worlds;\n\t\tvar selectedIndex = -1;\n\n\t\tfor (var i = 0; i < worldList.length; ++i)\n\t\t{\n\t\t\tif (worldList[i].id === this._selectedWorldID)\n\t\t\t\tselectedIndex = i;\n\t\t}\n\n\t\tif(selectedIndex !== -1)\n\t\t{\n\t\t\tvar selectedWorldID = worldList[selectedIndex].id;\n\n\t\t\tif (this._selectedWorldID !== selectedWorldID)\n\t\t\t\tthis._selectedWorldID = selectedWorldID;\n\t\t}\n\n\t\tthis._menu.removeAllChildren();\n\n\t\tvar worldNumber = 0;\n\n\t\tvar worldsLength = selectedGroup.worlds.length;\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\tvar width = Math.min(this.getContentSize().width, SelectWorldLayer.ELEMENT_WIDTH) - screenBounds.left - screenBounds.right;\n\n\t\tfor(var i = 0; i < worldsLength; ++i)\n\t\t{\n\t\t\tvar curWorld = selectedGroup.worlds[i];\n\n\t\t\tvar galaxyNode = new ccui.ImageView(\"WorldPics/galaxy{0}.png\".format(worldNumber % 3));\n\t\t\tgalaxyNode.setContentSize(galaxyNode.width*this._scale, galaxyNode.height*this._scale);\n\n\t\t\tvar highlight = false;\n\n\t\t\tif (this._selectedWorldID === curWorld.id)\n\t\t\t\thighlight = true;\n\n\t\t\tvar element = {\n\t\t\t\tnode: galaxyNode,\n\t\t\t\tlabel: curWorld.name,\n\t\t\t\tnumber: worldNumber % 2,\n\t\t\t\tdescription: curWorld.description || \"\"\n\t\t\t};\n\n\t\t\tthis._menu.addMenuElement(new pmui.SlidingWorldMenuElement(width, element, highlight));\n\t\t\tworldNumber++;\n\t\t}\n\n\t\tfor (var i = 0; i < this._menu.getChildren().length; i++)\n\t\t{\n\t\t\tvar child = this._menu.getChildren()[i];\n\t\t\tfor (var j = 0; j < child.getChildren().length; j++)\n\t\t\t{\n\t\t\t\tvar ch = child.getChildren()[j];\n\t\t\t\tch.setScale(this._scale);\n\t\t\t}\n\t\t}\n\n\t\tthis.forceDoLayout();\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_showMenu: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\treturn;\n\n\t\tvar settingsLayer = new SettingsLayer(this, this._closeMenu);\n\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t},\n\n\t_closeMenu: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t},\n\n\t_removeLoadingLayer: function()\n\t{\n\t\tif (this._loadingLayer)\n\t\t{\n\t\t\tthis._loadingLayer.remove();\n\t\t\tthis._loadingLayer = null;\n\t\t}\n\t},\n\n\t_addLoadingLayer: function()\n\t{\n\t\tif(this._loadingLayer)\n\t\t\tthis._removeLoadingLayer();\n\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._addLoadingLayer();\n\t\tthis._worldList.loadList();\n\t},\n\n\t_onLoadWorldList: function()\n\t{\n\t\tthis._removeLoadingLayer();\n\n\t\tthis._fillGroupsCombobox();\n\t\tthis._drawGroup();\n\t},\n\n\t_getSelectGraph: function()\n\t{\n\t\treturn this._worldList.getSelectGraph();\n\t},\n\n\t_selectGroupOnSelect: function(index)\n\t{\n\t\tthis._menu.enabled = true;\n\n\t\tvar id = Object.keys(this._getSelectGraph())[index];\n\n\t\tif (this._selectedGroupID !== id)\n\t\t{\n\t\t\tthis._selectedGroupID = id;\n\n\t\t\tthis._drawGroup();\n\t\t}\n\t},\n\n\t_selectGroupOnShow: function()\n\t{\n\t\tthis._menu.enabled = false;\n\t},\n\n\t_selectGroupOnClose: function()\n\t{\n\t\tthis._menu.enabled = true;\n\t},\n\n\t_fillGroupsCombobox: function()\n\t{\n\t\tvar selectedGroupID = this._setComboboxValues(this._groupSelect, this._getSelectGraph(), this._selectedGroupID);\n\n\t\tif(this._selectedGroupID !== selectedGroupID)\n\t\t\tthis._selectedGroupID = selectedGroupID;\n\n\t\tthis._groupSelect.enabled = true;\n\t},\n\n\t_setComboboxValues: function(combobox, valueList, selectValueID)\n\t{\n\t\tvar comboboxValues = [];\n\t\tvar selectedIndex = 0;\n\t\tvar i = 0;\n\n\t\tfor(var id in valueList)\n\t\t{\n\t\t\tcomboboxValues.push(cc.isObject(valueList[id]) ? valueList[id].name : valueList[id]);\n\n\t\t\tif(id === selectValueID)\n\t\t\t\tselectedIndex = i;\n\n\t\t\t++i;\n\t\t}\n\n\t\tcombobox.setValueList(comboboxValues);\n\n\t\tcombobox.selectObject(selectedIndex);\n\n\t\treturn Object.keys(valueList)[selectedIndex];\n\t},\n\n\t_selectWorld: function(index)\n\t{\n\t\tvar selectedGroup = this._getSelectGraph()[this._selectedGroupID];\n\t\tvar worldList = selectedGroup.worlds;\n\t\tvar id = worldList[index].id;\n\n\t\tif(this._selectedWorldID !== id)\n\t\t{\n\t\t\tthis._selectedWorldID = id;\n\n\t\t\tthis._downloadWorld();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectGameScene());\n\t\t\tcc.director.runScene(trans);\n\t\t\tthis._removeLoadingLayer();\n\t\t}\n\t},\n\n\t_downloadWorld: function()\n\t{\n\t\tthis._addLoadingLayer();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: this._selectedWorldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif(!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t{\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\t\t\tpm.settings.setSelectedUserGroupID(this._selectedGroupID);\n\n\t\t\t// Loaded built-in, so load public group\n\t\t\tif(loadedWorldID[0] !== this._selectedWorldID)\n\t\t\t{\n\t\t\t\tthis._selectedWorldID = loadedWorldID[0];\n\n\t\t\t\tif(!pm.settings.isEditorMode)\n\t\t\t\t{\n\t\t\t\t\tthis._selectedGroupID = SelectWorldLayer.PUBLIC_GROUP.id;\n\t\t\t\t\tpm.settings.setSelectedUserGroupID(this._selectedGroupID);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._selectedGroupID = SelectWorldLayer.OWN_GROUP.id;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectGameScene());\n\t\t\tcc.director.runScene(trans);\n\t\t}\n\n\t\tthis._removeLoadingLayer();\n\t}\n});\n\nSelectWorldLayer.BUTTON_SIZE = 256;\nSelectWorldLayer.TEXT_WIDTH = 500;\nSelectWorldLayer.TEXT_HEIGHT = 56;\nSelectWorldLayer.ELEMENT_WIDTH = 1300;\n\n/**\n * @class Scene for {@link StartMenuLayer}\n * @extends cc.Scene\n * @constructor\n */\nvar SelectWorldScene = cc.Scene.extend(/** @lends SelectWorldScene# */{\n\tonEnterTransitionDidFinish: function ()\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new SelectWorldLayer();\n\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 29.04.18.\n */\n\n/**\n * @class Layer for changing settings.\n * @extends pmui.OvalLayout\n */\nvar SettingsLayer = pmui.OvalLayout.extend(/** @lends SettingsLayer# */{\n\t_target: null,\n\t_cancelCallback: null,\n\n\t_showCommonSettings: null,\n\t_turboModeButton: null,\n\t_clearProgramButton: null,\n\n\tctor: function(target, cancelCallback, showCommonSettings)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tif (showCommonSettings === undefined)\n\t\t\tshowCommonSettings = true;\n\n\t\tthis._showCommonSettings = showCommonSettings;\n\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis._target = target;\n\t\tthis._cancelCallback = cancelCallback;\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._cancelCallback.bind(this._target));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton);\n\n\t\tvar musicLabel = new ccui.Text(LocalizedString(\"BackgroundVolume\"), pm.settings.fontBoldName, 50);\n\t\tvar height = musicLabel.height + SettingsLayer.SEPARATOR;\n\n\t\tvar musicLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tmusicLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tmusicLabelAlign.setMargin(SettingsLayer.LEFT_BORDER, SettingsLayer.TOP_BORDER + pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tmusicLabelAlign.setRelativeName(\"music\");\n\t\tmusicLabel.setLayoutParameter(musicLabelAlign);\n\n\t\tthis.addChild(musicLabel);\n\n\t\tvar effectsLabel = new ccui.Text(LocalizedString(\"EffectVolume\"), pm.settings.fontBoldName, 50);\n\t\theight += effectsLabel.height + SettingsLayer.SEPARATOR;\n\n\t\tvar effectsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\teffectsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\teffectsLabelAlign.setMargin(0, SettingsLayer.SEPARATOR, 0, 0);\n\t\teffectsLabelAlign.setRelativeToWidgetName(\"music\");\n\t\teffectsLabelAlign.setRelativeName(\"effects\");\n\t\teffectsLabel.setLayoutParameter(effectsLabelAlign);\n\n\t\tthis.addChild(effectsLabel);\n\n\t\tvar musicSlider = new ccui.Slider();\n\t\tmusicSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\tmusicSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\tmusicSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tmusicSlider.addEventListener(this._volumeMusicChanged.bind(this));\n\t\tmusicSlider.setPercent(100 * pm.settings.getBackgroundVolume());\n\n\t\tvar musicSliderAlign = new ccui.RelativeLayoutParameter();\n\t\tmusicSliderAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\tmusicSliderAlign.setMargin(effectsLabel.width - musicLabel.width + SettingsLayer.LEFT_BORDER, 0, 0, musicLabel.height / 2);\n\t\tmusicSliderAlign.setRelativeToWidgetName(\"music\");\n\t\tmusicSliderAlign.setRelativeName(\"musicSlider\");\n\t\tmusicSlider.setLayoutParameter(musicSliderAlign);\n\n\t\tthis.addChild(musicSlider);\n\n\t\tvar effectsSlider = new ccui.Slider();\n\t\teffectsSlider.loadBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderTrack\"), ccui.Widget.PLIST_TEXTURE);\n\t\teffectsSlider.loadProgressBarTexture(pm.spriteUtils.getInterfaceElementName(\"sliderProgress\"), ccui.Widget.PLIST_TEXTURE);\n\t\teffectsSlider.loadSlidBallTextureNormal(pm.spriteUtils.getInterfaceElementName(\"sliderThumb\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\teffectsSlider.addEventListener(this._volumeEffectsChanged.bind(this));\n\n\t\teffectsSlider.setPercent(100 * pm.settings.getEffectVolume());\n\n\t\tvar effectsSliderAlign = new ccui.RelativeLayoutParameter();\n\t\teffectsSliderAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\teffectsSliderAlign.setMargin(SettingsLayer.LEFT_BORDER, 0, 0, effectsLabel.height / 2);\n\t\teffectsSliderAlign.setRelativeToWidgetName(\"effects\");\n\t\teffectsSlider.setLayoutParameter(effectsSliderAlign);\n\n\t\tthis.addChild(effectsSlider);\n\n\t\tvar turboLabel = new ccui.Text(LocalizedString(\"TURBO\"), pm.settings.fontBoldName, 50);\n\t\theight += turboLabel.height + SettingsLayer.SEPARATOR;\n\n\t\tvar turboLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tturboLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tturboLabelAlign.setMargin(0, SettingsLayer.SEPARATOR, 0, 0);\n\t\tturboLabelAlign.setRelativeName(\"turbo\");\n\t\tturboLabelAlign.setRelativeToWidgetName(\"effects\");\n\t\tturboLabel.setLayoutParameter(turboLabelAlign);\n\n\t\tthis.addChild(turboLabel);\n\n\t\tvar state = this._getTurboButtonState();\n\n\t\tthis._turboModeButton = new pmui.Button(pm.spriteUtils.getIconName(\"speedMax\", state),\n\t\t\tpm.spriteUtils.getIconName(\"speedMax\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"speedMax\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._turboModeButton.addClickEventListener(this._changeTurboMode.bind(this));\n\n\t\tvar turboButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tturboButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tturboButtonAlign.setMargin(SettingsLayer.LEFT_BORDER, 0, 0, 0);\n\t\tturboButtonAlign.setRelativeToWidgetName(\"turbo\");\n\t\tthis._turboModeButton.setLayoutParameter(turboButtonAlign);\n\n\t\tthis.addChild(this._turboModeButton);\n\n\t\tvar clearLabel = new ccui.Text(LocalizedString(\"CLEAR PROGRAM\"), pm.settings.fontBoldName, 50);\n\t\theight += clearLabel.height + SettingsLayer.SEPARATOR;\n\n\t\tvar clearLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tclearLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tclearLabelAlign.setMargin(0, SettingsLayer.SEPARATOR, 0, 0);\n\t\tclearLabelAlign.setRelativeName(\"clear\");\n\t\tclearLabelAlign.setRelativeToWidgetName(\"turbo\");\n\t\tclearLabel.setLayoutParameter(clearLabelAlign);\n\n\t\tthis.addChild(clearLabel);\n\n\t\tstate = this._getClearProgramButtonState();\n\n\t\tthis._clearProgramButton = new pmui.Button(pm.spriteUtils.getIconName(\"restart\", state),\n\t\t\tpm.spriteUtils.getIconName(\"restart\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"restart\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._clearProgramButton.addClickEventListener(this._changeClearProgramButton.bind(this));\n\n\t\tvar clearProgramButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tclearProgramButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tclearProgramButtonAlign.setMargin(SettingsLayer.LEFT_BORDER, 0, 0, 0);\n\t\tclearProgramButtonAlign.setRelativeToWidgetName(\"clear\");\n\t\tthis._clearProgramButton.setLayoutParameter(clearProgramButtonAlign);\n\n\t\tthis.addChild(this._clearProgramButton);\n\n\t\tvar languageLabel = new ccui.Text(LocalizedString(\"LANGUAGE\"), pm.settings.fontBoldName, 50);\n\t\theight += languageLabel.height + SettingsLayer.SEPARATOR;\n\n\t\tvar languageLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tlanguageLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tlanguageLabelAlign.setMargin(0, SettingsLayer.SEPARATOR, 0, 0);\n\t\tlanguageLabelAlign.setRelativeName(\"language\");\n\t\tlanguageLabelAlign.setRelativeToWidgetName(\"clear\");\n\t\tlanguageLabel.setLayoutParameter(languageLabelAlign);\n\n\t\tthis.addChild(languageLabel);\n\n\t\tvar languageLayer = new LanguageLayer();\n\n\t\tvar languageLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tlanguageLayerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tlanguageLayerAlign.setMargin(SettingsLayer.LEFT_BORDER, 0, 0, 0);\n\t\tlanguageLayerAlign.setRelativeToWidgetName(\"language\");\n\t\tlanguageLayer.setLayoutParameter(languageLayerAlign);\n\n\t\tthis.addChild(languageLayer);\n\n\t\tif(pm.appConfig.showInternalSettings && cc.sys.isNative)\n\t\t{\n\t\t\tvar commonSettingsButton = new ccui.Text(LocalizedString(\"SETTINGS\"), pm.settings.fontBoldName, 50);\n\t\t\tcommonSettingsButton.addClickEventListener(this._onCommonSettings.bind(this));\n\t\t\tcommonSettingsButton.setTouchEnabled(true);\n\t\t\theight += commonSettingsButton.height + SettingsLayer.SEPARATOR;\n\n\t\t\tif (!this._showCommonSettings)\n\t\t\t{\n\t\t\t\tcommonSettingsButton.setEnabled(false);\n\t\t\t\tcommonSettingsButton.setTextColor(cc.color(174, 174, 174));\n\t\t\t}\n\n\t\t\tvar commonSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\t\tcommonSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tcommonSettingsButtonAlign.setMargin(0, SettingsLayer.SEPARATOR, 0, 0);\n\t\t\tcommonSettingsButtonAlign.setRelativeName(\"settings\");\n\t\t\tcommonSettingsButtonAlign.setRelativeToWidgetName(\"language\");\n\t\t\tcommonSettingsButton.setLayoutParameter(commonSettingsButtonAlign);\n\n\t\t\tthis.addChild(commonSettingsButton);\n\t\t}\n\n\t\theight += SettingsLayer.SEPARATOR;\n\n\t\tthis.setContentSizeWithBorder(SettingsLayer.WIDTH, height);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\t},\n\n\t_getTurboButtonState: function()\n\t{\n\t\treturn pm.settings.getUseTurboMode() ? pm.SELECTED_STATE : pm.NORMAL_STATE;\n\t},\n\n\t_changeTurboMode: function(flag)\n\t{\n\t\tif (pm.settings.getUseTurboMode())\n\t\t{\n\t\t\tthis._turboModeButton.loadTextureNormal(pm.spriteUtils.getIconName(\"speedMax\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\tpm.settings.setUseTurboMode(false);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._turboModeButton.loadTextureNormal(pm.spriteUtils.getIconName(\"speedMax\", pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\tpm.settings.setUseTurboMode(true);\n\t\t}\n\n\t\tpm.sendCustomEvent(pm.TURN_TURBO_MODE);\n\t},\n\n\t_getClearProgramButtonState: function()\n\t{\n\t\treturn pm.settings.getUseClearProgramButton() ? pm.SELECTED_STATE : pm.NORMAL_STATE;\n\t},\n\n\t_changeClearProgramButton: function(flag)\n\t{\n\t\tif (pm.settings.getUseClearProgramButton())\n\t\t{\n\t\t\tthis._clearProgramButton.loadTextureNormal(pm.spriteUtils.getIconName(\"restart\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\tpm.settings.setUseClearProgramButton(false);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._clearProgramButton.loadTextureNormal(pm.spriteUtils.getIconName(\"restart\", pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\t\tpm.settings.setUseClearProgramButton(true);\n\t\t}\n\n\t\tpm.sendCustomEvent(pm.UPDATE_CLEAR_PROGRAM_BUTTON);\n\t},\n\n\t_onCommonSettings: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(CommonSettingsLayer.TAG))\n\t\t\treturn;\n\n\t\tvar settingsLayer = new CommonSettingsLayer(this, this._closeSettings);\n\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, CommonSettingsLayer.TAG);\n\t},\n\n\t_closeSettings: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(CommonSettingsLayer.TAG);\n\t},\n\n\t_volumeMusicChanged: function(target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tpm.settings.setBackgroundVolume(target.getPercent() / 100);\n\t\t\tpm.audioUtils.setBackgroundMusicVolume(target.getPercent() / 100);\n\t\t}\n\t},\n\n\t_volumeEffectsChanged: function(target, eventType)\n\t{\n\t\tif(eventType === ccui.Slider.EVENT_PERCENT_CHANGED)\n\t\t{\n\t\t\tpm.settings.setEffectVolume(target.getPercent() / 100);\n\t\t\tpm.audioUtils.setEffectVolume(target.getPercent() / 100);\n\t\t}\n\t}\n});\n\nSettingsLayer.WIDTH = 500;\nSettingsLayer.TAG = 1001;\nSettingsLayer.SEPARATOR = 10;\nSettingsLayer.LEFT_BORDER = 30;\nSettingsLayer.TOP_BORDER = 18;\n","/**\n * Created by Nikita Besshaposhnikov on 21.08.18.\n */\n\n/**\n * @callback ProductItemLayout~buyCallback\n * @param {Object} sender\n */\n\n/**\n * @class Layer for world product item in {@link MarketLayer} worlds.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {Number} index Index of item\n * @param {Object} item Info about purchased item\n * @param {String} item.title\n * @param {String} item.description\n * @param {String} item.price Localized price\n * @param {Boolean} itemMeta.purchased If item is purchases then buy button is not available\n * @param {ProductItemLayout~buyCallback} callback Callback on click item\n * @param {cc.Node} target Target for callback\n*/\nvar ProductItemLayout = ccui.Layout.extend(/** @lends ProductItemLayout*/{\n\n\t_purchaseButton: null,\n\n\tctor: function(index, item, callback, target)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._purchaseButton = new pmui.InterfaceButton(callback, target, \"Buy\");\n\t\tthis._purchaseButton.setTag(index);\n\n\t\tvar title = new pmui.Text(item.title);\n\t\tvar price = new pmui.Text(item.price);\n\n\t\tif(item.purchased)\n\t\t\tthis._purchaseButton.setEnabled(false);\n\n\t\tvar purchaseAlign = new ccui.RelativeLayoutParameter();\n\t\tpurchaseAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL);\n\t\tpurchaseAlign.setRelativeName(\"purchase\");\n\n\t\tthis._purchaseButton.setLayoutParameter(purchaseAlign);\n\n\t\tvar priceAlign = new ccui.RelativeLayoutParameter();\n\t\tpriceAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tpriceAlign.setMargin(0, 0, ProductItemLayout.SEPARATOR, 0);\n\n\t\tpriceAlign.setRelativeToWidgetName(\"purchase\");\n\n\t\tprice.setLayoutParameter(priceAlign);\n\n\t\tvar titleAlign = new ccui.RelativeLayoutParameter();\n\t\ttitleAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\n\t\ttitle.setLayoutParameter(titleAlign);\n\n\t\tthis.addChild(title);\n\t\tthis.addChild(price);\n\t\tthis.addChild(this._purchaseButton);\n\n\t\tvar width = this._purchaseButton.width + price.width + title.width + 2 * ProductItemLayout.SEPARATOR;\n\n\t\tthis.setContentSize(width, this._purchaseButton.height);\n\t},\n\n\tsetPurchased: function(flag)\n\t{\n\t\tthis._purchaseButton.setEnabled(!flag);\n\t}\n});\n\nProductItemLayout.SEPARATOR = 10;\n\n/**\n * @class Layer for shopping worlds. Works only on ios and android\n * @extends pmui.OvalLayout\n */\nvar MarketLayer = pmui.OvalLayout.extend(/** @lends MarketLayer# */{\n\n\t_listView: null,\n\n\t_worlds: null,\n\t_products: null,\n\n\t_purchaseInProgress: false,\n\n\t_loadingLayer: null,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(MarketLayer.WIDTH, MarketLayer.HEIGHT);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tthis._loadInterface();\n\n\t\tpm.apiServerUtils.getMarketableWorlds(this._onLoadMarketableWorlds.bind(this));\n\n\t\tthis._addLoadingLayer();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tthis._listView = new ccui.ListView();\n\n\t\tvar listViewAlign = new ccui.RelativeLayoutParameter();\n\t\tlistViewAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tlistViewAlign.setMargin(MarketLayer.BORDER, MarketLayer.BORDER, 0, 0);\n\n\t\tthis._listView.setLayoutParameter(listViewAlign);\n\n\t\tthis._listView.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._listView.setItemsMargin(MarketLayer.SEPARATOR);\n\t\tthis._listView.setScrollBarEnabled(true);\n\t\tthis._listView.setScrollBarOpacity(255 * 0.9);\n\t\tthis._listView.setScrollBarWidth(20);\n\n\t\tvar restoreButton = new pmui.InterfaceButton(this._restorePurchases, this, LocalizedString(\"RestorePurchases\"));\n\n\t\tvar restoreAlign = new ccui.RelativeLayoutParameter();\n\t\trestoreAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\trestoreAlign.setMargin(MarketLayer.BORDER, 0, 0, MarketLayer.BORDER);\n\n\t\trestoreButton.setLayoutParameter(restoreAlign);\n\n\t\tthis._listView.setContentSize(\n\t\t\tMarketLayer.WIDTH - 2 * MarketLayer.BORDER,\n\t\t\tMarketLayer.HEIGHT - 2 * MarketLayer.BORDER - restoreButton.height - MarketLayer.SEPARATOR\n\t\t);\n\n\t\tthis.addChild(this._listView);\n\t\tthis.addChild(restoreButton);\n\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this.close.bind(this));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton);\n\t},\n\n\t_showMessage: function(message)\n\t{\n\t\tvar messageBox = new pmui.MessageBox(this, message);\n\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\n\t\tmessageBox.setPosition(x, y);\n\n\t\tcc.director.getRunningScene().addChild(messageBox, 500);\n\t},\n\n\t_getWorldProductID: function(worldMeta)\n\t{\n\t\tif (cc.sys.os === cc.sys.OS_IOS)\n\t\t\treturn worldMeta.marketData.AppStoreID;\n\t\telse if (cc.sys.os === cc.sys.OS_ANDROID)\n\t\t\treturn worldMeta.marketData.GooglePlayID;\n\n\t\treturn \"\";\n\t},\n\n\t_onLoadMarketableWorlds: function(error, response)\n\t{\n\t\tif(error)\n\t\t{\n\t\t\tthis._removeLoadingLayer();\n\t\t\tthis.close();\n\t\t\tcc.log(\"Error loading store: \" + error.text);\n\t\t\tthis._showMessage(LocalizedString(\"ErrorLoadingMarket\"));\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis._worlds = response.worlds;\n\n\t\tvar productIDs = [];\n\n\t\tfor(var i = 0 ; i < this._worlds.length; ++i)\n\t\t{\n\t\t\tvar id = this._getWorldProductID(this._worlds[i]);\n\n\t\t\tif(id && id !== \"\")\n\t\t\t\tproductIDs.push(id);\n\t\t}\n\n\t\tpm.marketHelper.setProductInfoCallback(this._productInfoCallback.bind(this));\n\t\tpm.marketHelper.requestProductInfo(productIDs);\n\t},\n\n\t_productInfoCallback: function(products)\n\t{\n\t\tthis._removeLoadingLayer();\n\n\t\tthis._products = [];\n\n\t\tfor(var p = 0; p < products.length; ++p)\n\t\t{\n\t\t\tfor(var w = 0; w < this._worlds.length; ++w)\n\t\t\t{\n\t\t\t\tif(products[p].getID() === this._getWorldProductID(this._worlds[w]))\n\t\t\t\t{\n\t\t\t\t\tthis._products.push({\n\t\t\t\t\t\tid: products[p].getID(),\n\t\t\t\t\t\ttitle: products[p].getTitle(),\n\t\t\t\t\t\tdescription: products[p].getDescription(),\n\t\t\t\t\t\tprice: products[p].getPrice(),\n\t\t\t\t\t\tworldID: this._worlds[w].id,\n\t\t\t\t\t\tpurchased: this._worlds[w].marketData.purchased\n\t\t\t\t\t});\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar width = MarketLayer.WIDTH - 2 * MarketLayer.BORDER;\n\n\t\tfor(var i = 0; i < this._products.length; ++i)\n\t\t{\n\t\t\tvar item = new ProductItemLayout(i, this._products[i], this._purchaseCallback, this);\n\n\t\t\twidth = Math.max(width, item.width);\n\n\t\t\tthis._listView.pushBackCustomItem(item);\n\t\t}\n\n\t\tthis._listView.setContentSize(width, this._listView.height);\n\t\tthis.setContentSizeWithBorder(width + 2 * MarketLayer.BORDER, MarketLayer.HEIGHT);\n\n\t\tvar listViewItems = this._listView.getItems();\n\n\t\tfor(var i = 0; i < listViewItems.length; ++i)\n\t\t\tlistViewItems[i].setContentSize(width, listViewItems[i].height);\n\n\t\tpm.marketHelper.setPaymentEventCallback(this._paymentEventCallback.bind(this));\n\t},\n\n\t_purchaseCallback: function(sender)\n\t{\n\t\tif(sender.getTag() >= this._products.length)\n\t\t\treturn;\n\n\t\tif(!this._purchaseInProgress)\n\t\t{\n\t\t\tthis._addLoadingLayer();\n\n\t\t\tthis._purchaseInProgress = true;\n\n\t\t\tvar product = this._products[sender.getTag()];\n\n\t\t\tpm.marketHelper.purchaseProduct(product.id);\n\t\t}\n\t},\n\n\t_restorePurchases: function()\n\t{\n\t\tthis._addLoadingLayer();\n\t\tpm.marketHelper.restorePurchases();\n\t},\n\n\t_paymentEventCallback: function(event, error, paymentData)\n\t{\n\t\tif(error !== \"\")\n\t\t{\n\t\t\tthis._removeLoadingLayer();\n\n\t\t\tcc.log(\"Payment event \" + event + \" error: \" + error);\n\t\t\tvar errorMessage = \"\";\n\n\t\t\tswitch (event)\n\t\t\t{\n\t\t\t\tcase pm.marketHelper.EVENT.PURCHASE:\n\t\t\t\t\terrorMessage = LocalizedString(\"ErrorPurchaseInMarketPattern\").format(LocalizedString(error));\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.marketHelper.EVENT.RESTORE:\n\t\t\t\t\terrorMessage = LocalizedString(\"ErrorRestoreInMarketPattern\").format(LocalizedString(error));\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._cleanup();\n\t\t\tthis._showMessage(errorMessage);\n\t\t\treturn;\n\t\t}\n\n\t\tvar restore = event === pm.marketHelper.EVENT.RESTORE;\n\t\tpm.apiServerUtils.sendPurchaseData(this._validatePurchaseCallback.bind(this), paymentData, restore);\n\t},\n\n\t_validatePurchaseCallback: function(error, response)\n\t{\n\t\tthis._removeLoadingLayer();\n\n\t\tif(error)\n\t\t{\n\t\t\tthis._cleanup();\n\t\t\tcc.log(\"Error validating store: \" + error.text);\n\t\t\tthis._showMessage(LocalizedString(\"ErrorPurchaseInMarketPattern\").format(LocalizedString(error.text)));\n\t\t\treturn;\n\t\t}\n\n\t\tif(this._purchaseInProgress)\n\t\t\tthis._showMessage(LocalizedString(\"WorldSuccessfullyPurchased\"));\n\t\telse\n\t\t\tthis._showMessage(LocalizedString(\"PurchasesSuccessfullyRestored\"));\n\n\t\tfor(var p = 0; p < response.purchases.length; ++p)\n\t\t{\n\t\t\tfor(var i = 0 ; i < this._products.length; ++i)\n\t\t\t{\n\t\t\t\tif(response.purchases[p].world === this._products[i].worldID)\n\t\t\t\t{\n\t\t\t\t\tvar item = this._listView.getItem(i);\n\n\t\t\t\t\tif(item)\n\t\t\t\t\t\titem.setPurchased(true);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._cleanup();\n\t},\n\n\t_addLoadingLayer: function()\n\t{\n\t\tif(this._loadingLayer)\n\t\t\tthis._removeLoadingLayer();\n\n\t\tthis._loadingLayer = new LoadingLayer(this.getContentSize());\n\t\tthis._loadingLayer.show();\n\t},\n\n\t_removeLoadingLayer: function()\n\t{\n\t\tif (this._loadingLayer)\n\t\t{\n\t\t\tthis._loadingLayer.remove();\n\t\t\tthis._loadingLayer = null;\n\t\t}\n\t},\n\n\tshow: function()\n\t{\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n\t\tcc.director.getRunningScene().addChild(this, 500);\n\t},\n\n\t_cleanup: function()\n\t{\n\t\tthis._purchaseInProgress = false;\n\t\tpm.marketHelper.cleanupTransaction();\n\t},\n\n\tclose: function()\n\t{\n\t\tpm.marketHelper.cleanup();\n\n\t\tthis.removeFromParent();\n\t}\n});\n\nMarketLayer.WIDTH = 460;\nMarketLayer.HEIGHT = 440;\nMarketLayer.TAG = 1001;\n\nMarketLayer.SEPARATOR = 20;\nMarketLayer.BORDER = 45;\n","/**\n * Created by Kirill Mashchenko on 09.11.18.\n */\n\n/**\n * @class Layout for common market information.\n * @extends pmui.OvalLayout\n */\nvar InfoMarketLayer = pmui.OvalLayout.extend(/** @lends InfoMarketLayer# */{\n _target: null,\n _cancelCallback: null,\n\n ctor: function(target, cancelCallback)\n {\n this._super();\n this.setLayoutType(ccui.Layout.RELATIVE);\n\n this.setContentSizeWithBorder(InfoMarketLayer.WIDTH, InfoMarketLayer.HEIGHT);\n\n this.setAnchorPoint(cc.p(0.5, 0.5));\n this.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n this.setTouchEnabled(true);\n\n this._target = target;\n this._cancelCallback = cancelCallback;\n\n var loadingLayer = new LoadingLayer(false);\n loadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n (this.height - pm.settings.getScreenSize().height) / 2);\n\n this.addChild(loadingLayer, -100);\n\n this._loadInterface();\n },\n\n _loadInterface: function()\n {\n var closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n pm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n pm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n ccui.Widget.PLIST_TEXTURE\n );\n\n closeButton.addClickEventListener(this._cancelCallback.bind(this._target));\n\n var closeButtonAlign = new ccui.RelativeLayoutParameter();\n closeButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n closeButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n closeButton.setLayoutParameter(closeButtonAlign);\n\n this.addChild(closeButton, 1);\n\n var mainLabel = new ccui.Text(\"Восстановление покупок\", pm.settings.fontName, 30);\n\n var mainLabelAlign = new ccui.RelativeLayoutParameter();\n mainLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n mainLabelAlign.setMargin(0, InfoMarketLayer.MAIN_SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n mainLabelAlign.setRelativeName(\"mainLabel\");\n mainLabel.setLayoutParameter(mainLabelAlign);\n\n this.addChild(mainLabel);\n\n var commonLabel = new ccui.Text(\"Для доступа к ранее купленным Мирам необходимо:\", pm.settings.fontName, pm.settings.fontSize);\n commonLabel.setTextAreaSize(cc.size(this.width - 2 * InfoMarketLayer.MARGIN, 0));\n\n var commonLabelAlign = new ccui.RelativeLayoutParameter();\n commonLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n commonLabelAlign.setMargin(InfoMarketLayer.MARGIN, 2 * InfoMarketLayer.MAIN_SEPARATOR + mainLabel.height + pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n commonLabelAlign.setRelativeName(\"commonLabel\");\n commonLabel.setLayoutParameter(commonLabelAlign);\n\n this.addChild(commonLabel);\n\n var firstLabel = new ccui.Text(\"1. Войти в аккаунт на устройстве где была совершена покупка.\", pm.settings.fontName, pm.settings.fontSize);\n firstLabel.setTextAreaSize(cc.size(this.width - 2 * InfoMarketLayer.MARGIN, 0));\n\n var firstLabelAlign = new ccui.RelativeLayoutParameter();\n firstLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n firstLabelAlign.setMargin(0, InfoMarketLayer.SEPARATOR, 0, 0);\n firstLabelAlign.setRelativeToWidgetName(\"commonLabel\");\n firstLabelAlign.setRelativeName(\"firstLabel\");\n firstLabel.setLayoutParameter(firstLabelAlign);\n\n this.addChild(firstLabel);\n\n var secondLabel = new ccui.Text(\"2. Зайти в магазин\", pm.settings.fontName, pm.settings.fontSize);\n secondLabel.setTextAreaSize(cc.size(this.width - 2 * InfoMarketLayer.MARGIN, 0));\n\n var secondLabelAlign = new ccui.RelativeLayoutParameter();\n secondLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n secondLabelAlign.setMargin(0, InfoMarketLayer.SEPARATOR, 0, 0);\n secondLabelAlign.setRelativeToWidgetName(\"firstLabel\");\n secondLabelAlign.setRelativeName(\"secondLabel\");\n secondLabel.setLayoutParameter(secondLabelAlign);\n\n this.addChild(secondLabel);\n\n var thirdLabel = new ccui.Text(\"3. Нажать кнопку \\\"Восстановить покупки\\\".\", pm.settings.fontName, pm.settings.fontSize);\n thirdLabel.setTextAreaSize(cc.size(this.width - 2 * InfoMarketLayer.MARGIN, 0));\n\n var thirdLabelAlign = new ccui.RelativeLayoutParameter();\n thirdLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n thirdLabelAlign.setMargin(0, InfoMarketLayer.SEPARATOR, 0, 0);\n thirdLabelAlign.setRelativeToWidgetName(\"secondLabel\");\n thirdLabelAlign.setRelativeName(\"thirdLabel\");\n thirdLabel.setLayoutParameter(thirdLabelAlign);\n\n this.addChild(thirdLabel);\n\n var fourthLabel = new ccui.Text(\"4. Войти в аккаунт на другом устройстве. Ранее купленные Миры будут добавлены автоматически.\", pm.settings.fontName, pm.settings.fontSize);\n fourthLabel.setTextAreaSize(cc.size(this.width - 2 * InfoMarketLayer.MARGIN, 0));\n\n var fourthLabelAlign = new ccui.RelativeLayoutParameter();\n fourthLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n fourthLabelAlign.setMargin(0, InfoMarketLayer.SEPARATOR, 0, 0);\n fourthLabelAlign.setRelativeToWidgetName(\"thirdLabel\");\n fourthLabelAlign.setRelativeName(\"fourthLabel\");\n fourthLabel.setLayoutParameter(fourthLabelAlign);\n\n this.addChild(fourthLabel);\n\n var okButton = new pmui.InterfaceButton(this._cancelCallback, this._target, \"Понятно\", 25);\n\n var okButtonAlign = new ccui.RelativeLayoutParameter();\n okButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n okButtonAlign.setRelativeToWidgetName(\"fourthLabel\");\n okButtonAlign.setMargin(0, 3 * InfoMarketLayer.SEPARATOR, 0, 0);\n okButton.setLayoutParameter(okButtonAlign);\n\n this.addChild(okButton);\n }\n});\n\nInfoMarketLayer.WIDTH = 500;\nInfoMarketLayer.HEIGHT = 425;\nInfoMarketLayer.MAIN_SEPARATOR = 30.0;\nInfoMarketLayer.MARGIN = 40;\nInfoMarketLayer.SEPARATOR = 5;\n\nInfoMarketLayer.TAG = 8145;\n","/**\n * Created by Kirill Mashchenko on 20.08.2018.\n */\n\n/**\n * @class Layer for register.\n * @extends pmui.OvalLayout\n */\nvar CommonSettingsLayer = MovingAfterKeyboardLayout.extend(/** @extends CommonSettingsLayer# */{\n\t_target: null,\n\t_cancelCallback: null,\n\tphysicalRobotCombobox: null,\n\t_nameInput: null,\n\n\tctor: function(target, cancelCallback)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(CommonSettingsLayer.WIDTH, CommonSettingsLayer.HEIGHT);\n\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2);\n\n\t\tthis._target = target;\n\t\tthis._cancelCallback = cancelCallback;\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"close\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"close\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.addClickEventListener(this._close.bind(this));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -closeButton.height/4, -closeButton.width/4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(closeButton);\n\n\t\tvar isRecogniseCheckbox = new pmui.CheckBox(LocalizedString(\"IsRecogniseOn\"), this._isRecognise,\n\t\t\tthis, 15, pm.settings.getUseProgramRecognizer());\n\n\t\tvar isRecogniseAlign = new ccui.RelativeLayoutParameter();\n\t\tisRecogniseAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tisRecogniseAlign.setRelativeName(\"isRecognise\");\n\t\tisRecogniseAlign.setMargin(CommonSettingsLayer.SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS, CommonSettingsLayer.SEPARATOR + pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tisRecogniseCheckbox.setLayoutParameter(isRecogniseAlign);\n\n\t\tthis.addChild(isRecogniseCheckbox);\n\n\t\tthis._nameInput = new pmui.TextInput(pm.settings.getUserDeviceName(), LocalizedString(\"Name\"), 20, CommonSettingsLayer.WIDTH - CommonSettingsLayer.WIDTH_DELTA);\n\n\t\tvar nameInputAlign = new ccui.RelativeLayoutParameter();\n\t\tnameInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tnameInputAlign.setMargin(0, CommonSettingsLayer.SEPARATOR, 0, 0);\n\t\tnameInputAlign.setRelativeName(\"name\");\n\t\tnameInputAlign.setRelativeToWidgetName(\"isRecognise\");\n\t\tthis._nameInput.setLayoutParameter(nameInputAlign);\n\n\t\tthis.addChild(this._nameInput);\n\n\t\tthis.setInputAttach(this._nameInput);\n\n\t\tthis.physicalRobotCombobox = new pmui.ComboBox(this._getComboboxValueList(), this, this._changePhysicalConnectorType, 20);\n\n\t\tvar comboboxAlign = new ccui.RelativeLayoutParameter();\n\t\tcomboboxAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tcomboboxAlign.setMargin(0, CommonSettingsLayer.SEPARATOR, 0, 0);\n\t\tcomboboxAlign.setRelativeName(\"combobox\");\n\t\tcomboboxAlign.setRelativeToWidgetName(\"name\");\n\t\tthis.physicalRobotCombobox.setLayoutParameter(comboboxAlign);\n\n\t\tthis.addChild(this.physicalRobotCombobox, 1);\n\t},\n\n\t_isRecognise: function(flag)\n\t{\n\t\tpm.settings.setUseProgramRecognizer(flag);\n\t},\n\n\t_getComboboxValueList: function()\n\t{\n\t\tswitch(pm.settings.getPhysicalConnectorType())\n\t\t{\n\t\t\tcase pm.PhysicalConnectorType.Lego:\n\t\t\t\treturn [\"Lego\", \"BLE\", \"Sound\", \"Magnet\",\"None\"];\n\t\t\tcase pm.PhysicalConnectorType.BLE:\n\t\t\t\treturn [\"BLE\", \"Lego\", \"Sound\", \"Magnet\", \"None\"];\n\t\t\tcase pm.PhysicalConnectorType.Sound:\n\t\t\t\treturn [\"Sound\", \"Lego\", \"BLE\", \"Magnet\", \"None\"];\n\t\t\tcase pm.PhysicalConnectorType.Magnet:\n\t\t\t\treturn [\"Magnet\", \"Sound\", \"Lego\", \"BLE\", \"None\"];\n\t\t\tcase pm.PhysicalConnectorType.None:\n\t\t\t\treturn [\"None\", \"BLE\", \"Lego\", \"Sound\", \"Magnet\"];\n\n\t\t}\n\t},\n\n\t_changePhysicalConnectorType: function(index)\n\t{\n\t\tvar objects = this.physicalRobotCombobox.getValueList();\n\t\tvar curObject = objects[index].getString();\n\t\tvar type = \"\";\n\n\t\tswitch(curObject)\n\t\t{\n\t\t\tcase \"Lego\":\n\t\t\t\ttype = pm.PhysicalConnectorType.Lego;\n\t\t\t\tbreak;\n\t\t\tcase \"BLE\":\n\t\t\t\ttype = pm.PhysicalConnectorType.BLE;\n\t\t\t\tpm.btleManager.init();\n\t\t\t\tbreak;\n\t\t\tcase \"Sound\":\n\t\t\t\ttype = pm.PhysicalConnectorType.Sound;\n\t\t\t\tpm.btleManager.init();\n\t\t\t\tbreak;\n\t\t\tcase \"Magnet\":\n\t\t\t\ttype = pm.PhysicalConnectorType.Magnet;\n\t\t\t\tbreak;\n\t\t\tcase \"None\":\n\t\t\t\ttype = pm.PhysicalConnectorType.None;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tpm.settings.setPhysicalConnectorType(type);\n\t},\n\n\t_close: function()\n\t{\n\t\tthis.closeAttachKeyboard();\n\n\t\tpm.settings.setUserDeviceName(this._nameInput.getString());\n\t\tthis._cancelCallback.call(this._target);\n\t}\n\n});\n\nCommonSettingsLayer.WIDTH = 300;\nCommonSettingsLayer.HEIGHT = 165;\nCommonSettingsLayer.TAG = 7142;\nCommonSettingsLayer.SEPARATOR = 15.0;\nCommonSettingsLayer.WIDTH_DELTA = 70.0;\nCommonSettingsLayer.BORDER = 45.0;\n\n","/**\n * Created by antonded on 13.11.14.\n */\n\n/**\n * @class Menu for changing level.
\n * Can change to previous of next level. If new level in another game, changes game.\n * @extends ccui.HBox\n * @constructor\n * @param {Number} width Width of layer.\n */\nvar ChangeLevelMenu = ccui.HBox.extend(/**@lends ChangeLevelMenu#*/{\n\t_nextLevelButton: null,\n\t_prevLevelButton: null,\n\t_menu: null,\n\t_state: false,\n\t_processingAnimation: false,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis._nextLevelButton = new pmui.Button(pm.spriteUtils.getIconName(\"nextLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._prevLevelButton = new pmui.Button(pm.spriteUtils.getIconName(\"prevLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._prevLevelButton.addClickEventListener(this._prevLevel.bind(this));\n\n\t\tvar rightAlign = new ccui.LinearLayoutParameter();\n\t\trightAlign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\trightAlign.setMargin(ChangeLevelMenu.BUTTON_SEPARATOR, 0, 0, 0);\n\t\tthis._nextLevelButton.setLayoutParameter(rightAlign);\n\t\tthis._nextLevelButton.addClickEventListener(this._nextLevel.bind(this));\n\n\t\tvar height = Math.max(this._nextLevelButton.height, this._prevLevelButton.height);\n\t\tvar width = this._nextLevelButton.width + this._prevLevelButton.width + ChangeLevelMenu.BUTTON_SEPARATOR;\n\t\tthis.setContentSize(width, height);\n\n\t\tthis.addChild(this._prevLevelButton);\n this._addLevelCountLabel();\n this.addChild(this._nextLevelButton);\n\n\t\tthis._setButtonsStates();\n\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.NEXT_LEVEL, this._nextLevelButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.PREV_LEVEL, this._prevLevelButton);\n\t},\n\n /**\n * Adds label with number of current level.\n */\n _addLevelCountLabel: function()\n\t{\n var level = pm.settings.getLevel() + 1;\n var levelCount = world.getLevelCount(pm.settings.getGame());\n\n var countLabel = new ccui.Text(\"{0}/{1}\".format(level, levelCount), pm.settings.fontName, 20);\n\n var countLabelAlign = new ccui.LinearLayoutParameter();\n countLabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n countLabelAlign.setMargin(ChangeLevelMenu.BUTTON_SEPARATOR, 0, 0, 0);\n\n countLabel.setLayoutParameter(countLabelAlign);\n\n this.addChild(countLabel);\n\n this.setContentSize(this.width + countLabel.width, Math.max(this.height, countLabel.height));\n },\n\n\t_setButtonsStates: function()\n\t{\n\t\tvar game = pm.settings.getGame();\n\t\tvar level = pm.settings.getLevel();\n\n\t\tif(level === 0 && game === 0)\n\t\t\tthis._prevLevelButton.setEnabled(false);\n\n\t\tif(level === world.getLevelCount(game) - 1 && game === world.getGameCount() - 1)\n\t\t\tthis._nextLevelButton.setEnabled(false);\n\t},\n\n\t/**\n * Sets enabled state of layer.\n * @param {Boolean} flag\n */\n\tsetEnabled: function(flag)\n\t{\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\n\t\tfor(var i = 0; i < this.getChildrenCount(); ++i)\n\t\t\tthis.getChildren()[i].setEnabled(flag);\n\n\t\tif(flag)\n\t\t\tthis._setButtonsStates();\n\t},\n\n\t_nextLevel: function(sender)\n\t{\n\t\tvar level = pm.settings.getLevel();\n\t\tvar game = pm.settings.getGame();\n\n\t\t++level;\n\n\t\tif (level === world.getLevelCount(game))\n\t\t{\n\t\t\t++game;\n\n\t\t\twhile(world.getLevelCount(game) === 0 && game < world.getGameCount())\n\t\t\t\t++game;\n\n\t\t\tif(game === world.getGameCount())\n\t\t\t{\n\t\t\t\tgame = pm.settings.getGame();\n\t\t\t\tlevel = pm.settings.getLevel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlevel = 0;\n\t\t\t}\n\t\t}\n\n\t\tpm.settings.setGame(game);\n\t\tpm.settings.setLevel(level);\n\n\t\tthis._transLevel();\n\t},\n\n\t_prevLevel: function(sender)\n\t{\n\t\tvar level = pm.settings.getLevel();\n\t\tvar game = pm.settings.getGame();\n\n\t\t--level;\n\n\t\tif (level < 0)\n\t\t{\n\t\t\t--game;\n\n\t\t\twhile(world.getLevelCount(game) === 0 && game >= 0)\n\t\t\t\t--game;\n\n\t\t\tif(game < 0)\n\t\t\t{\n\t\t\t\tgame = pm.settings.getGame();\n\t\t\t\tlevel = pm.settings.getLevel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlevel = world.getLevelCount(game) - 1;\n\t\t\t}\n\t\t}\n\n\t\tpm.settings.setGame(game);\n\t\tpm.settings.setLevel(level);\n\n\t\tthis._transLevel();\n\t},\n\n\t_transLevel: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelScene(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel()));\n\t\tcc.director.runScene(trans);\n\t},\n\n\t/**\n * Animates next level button.\n */\n\tanimateNextLevelButton: function ()\n\t{\n\t\tif (this._processingAnimation)\n\t\t\treturn;\n\n\t\tthis._processingAnimation = true;\n\n\t\tvar showSelected = cc.callFunc(function()\n\t\t{\n\t\t\tthis.setHighlighted(true);\n\t\t}, this._nextLevelButton);\n\n\t\tvar showNormal = cc.callFunc(function()\n\t\t{\n\t\t\tthis.setHighlighted(false);\n\t\t}, this._nextLevelButton);\n\n\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY);\n\n\t\tthis._nextLevelButton.runAction(cc.repeatForever(cc.sequence(showSelected, delay, showNormal, delay)));\n\t},\n\n\t/**\n * Stop animation of next level button.\n */\n\tstopAnimateNextLevelButton: function()\n\t{\n\t\tthis._processingAnimation = false;\n\n\t\tthis._nextLevelButton.stopAllActions();\n\n\t\tthis._nextLevelButton.setHighlighted(false);\n\t}\n});\n\nChangeLevelMenu.BUTTON_SEPARATOR = 10;\n","/**\n * Created by Kirill Mashchenko on 31.08.18.\n */\n\n/**\n * @class Layer to be shown on robot fail.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {String} text Text of inform.\n * @param {Number} state State of inform.\n */\nvar StateInformLayer = pmui.OvalLayout.extend(/** @lends GameStateInformLayer# */{\n\t_hidden: true,\n\n\tctor: function(text, state)\n\t{\n\t\tthis._super();\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tvar brokenSprite = new cc.Sprite(this._getSpriteName(state));\n\t\tbrokenSprite.setPosition(cc.p(pmui.OvalLayout.STANDARD_BORDER_RADIUS + StateInformLayer.SEPARATOR, pmui.OvalLayout.STANDARD_BORDER_RADIUS + StateInformLayer.SEPARATOR));\n\t\tbrokenSprite.setAnchorPoint(cc.p(0, 0));\n\n\t\tthis.addChild(brokenSprite);\n\n\t\tvar label = new ccui.Text(text, pm.settings.fontName, 30);\n\t\tlabel.setTextAreaSize(cc.size(250, 0));\n\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\tlabel.setAnchorPoint(cc.p(0, 0));\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tlabelAlign.setMargin(2*StateInformLayer.SEPARATOR + brokenSprite.width + pmui.OvalLayout.STANDARD_BORDER_RADIUS,\n\t\t\t0, 0, (brokenSprite.getContentSize().height - label.getContentSize().height)/2 + pmui.OvalLayout.STANDARD_BORDER_RADIUS + StateInformLayer.SEPARATOR);\n\t\tlabel.setLayoutParameter(labelAlign);\n\t\tthis.addChild(label);\n\n\t\tthis.setContentSizeWithBorder(label.getContentSize().width + 4 * StateInformLayer.SEPARATOR + brokenSprite.getContentSize().width,\n\t\t\tMath.max(label.getContentSize().height, brokenSprite.getContentSize().height) + 2 * StateInformLayer.SEPARATOR);\n\n\t\tthis.setScale(0.9);\n\t\tthis.setAnchorPoint(0.5, 0.5);\n\t\tthis.setOpacity(0);\n\t},\n\n\t/**\n * Shows layer.\n */\n\tshow: function()\n\t{\n\t\tthis._hidden = false;\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 255);\n\n\t\tthis.runAction(fadeLayer);\n\t},\n\n\t/**\n * Hides layer.\n */\n\thide: function()\n\t{\n\t\tthis._hidden = true;\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\n\t\tthis.runAction(fadeLayer);\n\t},\n\n\t/**\n * Returns if layer if hidden.\n * @returns {boolean}\n */\n\tisHidden: function()\n\t{\n\t\treturn this._hidden;\n\t},\n\n\t/**\n\t * Returns name of sprite depending on state.\n\t * @param {Number} state State of inform.\n\t * @returns {String}\n\t */\n\t_getSpriteName: function(state)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\t\tcase StateInformLayer.State.FAIL:\n\t\t\t\treturn \"System/looseRobotState.png\";\n\t\t\tcase StateInformLayer.State.WIN:\n\t\t\t\treturn \"System/winRobotState.png\";\n\t\t}\n\t}\n});\n\nStateInformLayer.SEPARATOR = 15;\nStateInformLayer.State = {\n\tFAIL : 0,\n\tWIN : 1\n};\n","/**\n * Created by antonded on 13.11.14.\n */\n\n/**\n * @class Layer which contains all needed for level menus.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level For what level construct.\n * @param {Boolean} isNetGame Is game by network.\n * @param {Boolean} showTutorialControl Is tutorial control needed to be shown.\n */\nvar LevelMenuLayer = ccui.Layout.extend(/** @lends LevelMenuLayer# */{\n\n\t_level: null,\n\t_isNetGame: false,\n\t_tutorialControlLayer: null,\n\t_changeLevelMenu: null,\n\t_selectMapMenu: null,\n\t_hintLayer: null,\n\n\t_winLayer: null,\n\t_looseLayer: null,\n\t_failureLayer: null,\n\t_mapCompleteLayer: null,\n\n\t_netDiscoverLayer: null,\n\t_netControlLayer: null,\n\n\t_backButton: null,\n\n\t_orientationButton: null,\n\n\tctor: function (level, isNetGame, showTutorialControl)\n\t{\n\t\tthis._super();\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tthis._level = level;\n\t\tthis._isNetGame = isNetGame;\n\n\t\tpm.registerCustomEventListener(pm.BACK_TO_MENU, this._backToMainMenu.bind(this), this);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getMapSize());\n\n\t\tif (!isNetGame)\n\t\t{\n\t\t\tif (pm.settings.isEditorMode)\n\t\t\t\tthis._changeLevelMenu = new ChangeLevelMenuEditor();\n\t\t\telse\n\t\t\t\tthis._changeLevelMenu = new ChangeLevelMenu();\n\n\t\t\tvar changeLevelMenuAlign = new ccui.RelativeLayoutParameter();\n\t\t\tchangeLevelMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tchangeLevelMenuAlign.setMargin(screenBounds.left, 0, 0, LevelMenuLayer.SEPARATOR/2);\n\t\t\tchangeLevelMenuAlign.setRelativeName(\"changeLevel\");\n\n\t\t\tthis._changeLevelMenu.setLayoutParameter(changeLevelMenuAlign);\n\n\t\t\tthis.addChild(this._changeLevelMenu);\n\t\t}\n\n\t\tthis._backButton = new pmui.Button( pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tthis._backButton.addClickEventListener(this._backToMenu.bind(this));\n\n\t\tvar backButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tbackButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tbackButtonAlign.setRelativeName(\"back\");\n\t\tbackButtonAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\n\t\tthis._backButton.setLayoutParameter(backButtonAlign);\n\n\t\tthis.addChild(this._backButton);\n\n\t\tthis._selectMapMenu = new SelectMapMenu(level);\n\n\t\tvar selectMapMenuAlign = new ccui.RelativeLayoutParameter();\n\t\tselectMapMenuAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tselectMapMenuAlign.setRelativeToWidgetName(\"back\");\n\t\tselectMapMenuAlign.setMargin(SelectMapMenu.LEFT_MARGIN, -screenBounds.top, 0, 0);\n\t\tthis._selectMapMenu.setLayoutParameter(selectMapMenuAlign);\n\n\t\tthis.addChild(this._selectMapMenu);\n\n\t\tthis._drawTransButton();\n\n\t\tif (this._isNetGame)\n\t\t\tthis._backButton.setEnabled(false);\n\n\t\t//pm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.BACK, this._backButton);\n\n\t\tHintLayer._hints = [];\n\t\tHintLayer._lastY = 0;\n\n\t\tif(level.isTutorial && !pm.settings.isEditorMode && showTutorialControl)\n\t\t{\n\t\t\tthis._tutorialControlLayer = new TutorialControlLayer();\n\n\t\t\tvar tutorialMenuAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttutorialMenuAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\ttutorialMenuAlign.setRelativeToWidgetName(\"changeLevel\");\n\t\t\ttutorialMenuAlign.setMargin(screenBounds.left, 0, 0, 0);\n\n\t\t\tthis._tutorialControlLayer.setLayoutParameter(tutorialMenuAlign);\n\n\t\t\tthis.addChild(this._tutorialControlLayer);\n\t\t}\n\n\t\tthis.drawScaleButtons();\n\n\t\tthis._winLayer = new WinLayer(this._level, this._isNetGame);\n\t\tthis._winLayer.setScale(0.7);\n\t\tthis._winLayer.setAnchorPoint(0.5, 1);\n\n\t\tvar shift = 0;\n\t\tif (cc.sys.isNative)\n\t\t\tshift = 40;\n\n\t\tvar winLayerAlign = new ccui.RelativeLayoutParameter();\n\t\twinLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\twinLayerAlign.setMargin(0, LevelMenuLayer.INFORM_MARGIN_Y, LevelMenuLayer.INFORM_MARGIN_X + screenBounds.right + shift, 0);\n\t\tthis._winLayer.setLayoutParameter(winLayerAlign);\n\n\t\tthis.addChild(this._winLayer);\n\n\t\tthis._looseLayer = new StateInformLayer(LocalizedString(\"RobotLooseEvent\"), StateInformLayer.State.FAIL);\n\t\tthis._failureLayer = new StateInformLayer(LocalizedString(\"RobotFailureEvent\"), StateInformLayer.State.FAIL);\n\t\tthis._mapCompleteLayer = new StateInformLayer(LocalizedString(\"MapCompleteEvent\"), StateInformLayer.State.WIN);\n\n\t\tif (cc.sys.isNative)\n\t\t\tshift = 20;\n\n\t\tvar informAlign = new ccui.RelativeLayoutParameter();\n\t\tinformAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tinformAlign.setMargin(0, screenBounds.top, 45 + screenBounds.right + shift, 0);\n\n\t\tthis._looseLayer.setLayoutParameter(informAlign);\n\t\tthis._failureLayer.setLayoutParameter(informAlign.clone());\n\t\tthis._mapCompleteLayer.setLayoutParameter(informAlign.clone());\n\n\t\tthis.addChild(this._looseLayer);\n\t\tthis.addChild(this._failureLayer);\n\t\tthis.addChild(this._mapCompleteLayer);\n\n\t\tthis._drawHint();\n\n\t\tthis._drawExtraInfo();\n\n\t\tif(isNetGame)\n\t\t{\n\t\t\tthis._netControlLayer = new NetControlLayer();\n\n\t\t\tvar netControlLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tnetControlLayerAlign.setMargin(0, screenBounds.top, 0, 0);\n\t\t\tnetControlLayerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tnetControlLayerAlign.setRelativeToWidgetName(\"back\");\n\n\t\t\tthis._netControlLayer.setLayoutParameter(netControlLayerAlign);\n\n\t\t\tthis.addChild(this._netControlLayer);\n\t\t}\n\n\t\tthis._registerInfoEventListener(isNetGame);\n\n\t\tpm.registerCustomEventListener(pm.READY_TO_CHANGE_LEVEL_STR, this._onReadyToChangeLevel.bind(this), 10);\n\n\t\tpm.registerCustomEventListener(pm.MAP_CHANGED_EVENT_STR, this._hideInforms.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.MAP_DRAGGED_EVENT_STR, this._hideInforms.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.METHOD_STACK_LAYER_OPENED_EVENT_STR, function(){\n\t\t\tthis._hideInforms();\n\n\t\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif(this._level.robots[i].sprite instanceof pm.RobotSprite2D)\n\t\t\t\t\tthis._level.robots[i].sprite.showCommands(false);\n\t\t\t}\n\n\t\t}.bind(this), this);\n\t},\n\n\t_registerInfoEventListener: function(isNetGame)\n\t{\n\t\tpm.registerCustomEventListener(pm.SHOW_INFO, function()\n\t\t{\n\t\t\tif (this._hintLayer && this._hintLayer.isVisible())\n\t\t\t{\n\t\t\t\tthis._hintLayer.removeLayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar hint = this._level.hint;\n\n\t\t\tthis._hintLayer = new HintLayer(hint.text, isNetGame);\n\t\t\tthis._hintLayer.show();\n\t\t}.bind(this), this);\n\t},\n\n\t_drawTransButton: function ()\n\t{\n\t\tif (pm.settings.getUserData().accountType === pm.USER_TYPE.TEACHER)\n\t\t{\n\t\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\t\tvar toEditorButton = new pmui.Button( pm.spriteUtils.getIconName(\"toEditor\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toEditor\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toEditor\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t\t);\n\n\t\t\ttoEditorButton.addClickEventListener(this._editor.bind(this));\n\n\t\t\tvar toEditorAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttoEditorAlign.setRelativeName(\"trans\");\n\n\t\t\tif(!this._isNetGame)\n\t\t\t{\n\t\t\t\ttoEditorAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\t\t\t\ttoEditorAlign.setMargin(0, 0, 0, LevelMenuLayer.SEPARATOR);\n\t\t\t\ttoEditorAlign.setRelativeToWidgetName(\"changeLevel\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttoEditorAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\t\ttoEditorAlign.setMargin(screenBounds.left, 0, 0, LevelMenuLayer.SEPARATOR);\n\t\t\t}\n\n\t\t\ttoEditorButton.setLayoutParameter(toEditorAlign);\n\n\t\t\tthis.addChild(toEditorButton);\n\t\t}\n\t},\n\n\t_editor: function()\n\t{\n\t\tif (pm.tutorialUtils.isProcessingTutorial())\n\t\t\tpm.tutorialUtils.stop();\n\n\t\tpm.settings.isEditorMode = true;\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelEditorScene(pm.settings.getGame(), pm.settings.getLevel()));\n\t\tcc.director.runScene(trans);\n\t},\n\n\tdrawChangeOrientationButton: function()\n\t{\n\t\tvar normal, selected, disabled;\n\n\t\tnormal = pm.spriteUtils.getIconName(\"toOrtho\", pm.NORMAL_STATE);\n\t\tselected = pm.spriteUtils.getIconName(\"toOrtho\", pm.SELECTED_STATE);\n\t\tdisabled = pm.spriteUtils.getIconName(\"toOrtho\", pm.DISABLED_STATE);\n\n\t\tthis._orientationButton = new pmui.Button(normal, selected, disabled, ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._orientationButton.addClickEventListener(this._changeMapOrientation.bind(this));\n\n\t\tvar orientationButtonAlign = new ccui.RelativeLayoutParameter();\n\n\t\tif (pm.settings.getUserData().accountType === pm.USER_TYPE.TEACHER)\n\t\t{\n\t\t\torientationButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\t\torientationButtonAlign.setRelativeName(\"orientation\");\n\t\t\torientationButtonAlign.setRelativeToWidgetName(\"trans\");\n\t\t\torientationButtonAlign.setMargin(LevelMenuLayer.SEPARATOR, 0, 0, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\torientationButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\t\t\torientationButtonAlign.setMargin(0, 0, 0, LevelMenuLayer.SEPARATOR);\n\t\t\torientationButtonAlign.setRelativeToWidgetName(\"changeLevel\");\n\t\t}\n\n\t\tthis._orientationButton.setLayoutParameter(orientationButtonAlign);\n\n\t\tthis.addChild(this._orientationButton);\n\t},\n\n\t_changeMapOrientation: function()\n\t{\n\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tvar map = this._level.maps[i];\n\n\t\t\tif (map.mapLayer.getOrientation() === pm.MapLayer2D.Orientation.Iso)\n\t\t\t{\n\t\t\t\tmap.mapLayer.setOrientation(pm.MapLayer2D.Orientation.Ortho);\n\n\t\t\t\tmap.mapLayer.removeAllChildren();\n\t\t\t\tmap.mapLayer.drawMap(false);\n\n\t\t\t\tif (i === this._level.getActiveMapIndex())\n\t\t\t\t\tmap.mapLayer.placeRobots(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmap.mapLayer.setOrientation(pm.MapLayer2D.Orientation.Iso);\n\n\t\t\t\tmap.mapLayer.removeAllChildren();\n\t\t\t\tmap.mapLayer.drawMap(false);\n\n\t\t\t\tif (i === this._level.getActiveMapIndex())\n\t\t\t\t\tmap.mapLayer.placeRobots(true);\n\t\t\t}\n\t\t}\n\n\t\tvar normal, selected, disabled;\n\n\t\tif (this._level.activeMap.mapLayer.getOrientation() === pm.MapLayer2D.Orientation.Iso)\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"toOrtho\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"toOrtho\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"toOrtho\", pm.DISABLED_STATE);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"toIso\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"toIso\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"toIso\", pm.DISABLED_STATE);\n\t\t}\n\n\t\tthis._orientationButton.loadTextureNormal(normal, ccui.Widget.PLIST_TEXTURE);\n\t\tthis._orientationButton.loadTexturePressed(selected, ccui.Widget.PLIST_TEXTURE);\n\t\tthis._orientationButton.loadTextureDisabled(disabled, ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_drawExtraInfo: function()\n\t{\n\t\tvar extraInfo = pm.moduleUtils.getExtraInfo(this._level.getType(), this._level);\n\n\t\tif (extraInfo)\n\t\t{\n\t\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\t\tvar extraAlign = new ccui.RelativeLayoutParameter();\n\n\t\t\tif (this._isNetGame)\n\t\t\t{\n\t\t\t\tif (pm.settings.getUserData().accountType === pm.USER_TYPE.TEACHER)\n\t\t\t\t{\n\t\t\t\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\t\t\t\textraAlign.setRelativeToWidgetName(\"toEditor\");\n\t\t\t\t\textraAlign.setMargin(2 * LevelMenuLayer.SEPARATOR, 0, 0, 0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\t\t\textraAlign.setMargin(screenBounds.left, 0, 0, LevelMenuLayer.SEPARATOR / 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\t\t\textraAlign.setRelativeToWidgetName(\"changeLevel\");\n\t\t\t\textraAlign.setMargin(2 * LevelMenuLayer.SEPARATOR, 0, 0, 0);\n\t\t\t}\n\n\t\t\textraInfo.setLayoutParameter(extraAlign);\n\n\t\t\tthis.addChild(extraInfo);\n\t\t}\n\t},\n\n\tdrawScaleButtons: function ()\n\t{\n\t\tif (!cc.sys.isMobile)\n\t\t{\n\t\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\t\tvar zoomInButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tzoomInButton.addClickEventListener(this._zoomIn.bind(this));\n\n\t\t\tvar zoomInButtonAlign = new ccui.RelativeLayoutParameter();\n\t\t\tzoomInButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tzoomInButtonAlign.setRelativeToWidgetName(\"back\");\n\t\t\tzoomInButtonAlign.setRelativeName(\"zoomIn\");\n\t\t\tzoomInButtonAlign.setMargin(0, pm.settings.getScreenSize().height/2 - this._backButton.height\n - zoomInButton.height - 2.5 - screenBounds.top, 0, 0);\n\n\t\t\tzoomInButton.setLayoutParameter(zoomInButtonAlign);\n\n\t\t\tthis.addChild(zoomInButton);\n\n\t\t\tvar zoomOutButton = new pmui.Button(pm.spriteUtils.getIconName(\"delete\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"delete\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"delete\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tzoomOutButton.addClickEventListener(this._zoomOut.bind(this));\n\n\t\t\tvar zoomOutButtonAlign = new ccui.RelativeLayoutParameter();\n\t\t\tzoomOutButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tzoomOutButtonAlign.setRelativeToWidgetName(\"zoomIn\");\n\t\t\tzoomOutButtonAlign.setMargin(0, 5, 0, 0);\n\n\t\t\tzoomOutButton.setLayoutParameter(zoomOutButtonAlign);\n\n\t\t\tthis.addChild(zoomOutButton);\n\t\t}\n\t},\n\n\t_zoomIn: function ()\n\t{\n\t\tpm.sendCustomEvent(pm.LAYER_ZOOM_IN_EVENT);\n\t},\n\n\t_zoomOut: function ()\n\t{\n\t\tpm.sendCustomEvent(pm.LAYER_ZOOM_OUT_EVENT);\n\t},\n\n\t_drawHint: function()\n\t{\n\t\tvar level = this._level;\n\n\t\tif(level.hint.empty())\n\t\t\treturn;\n\t},\n\n\t_showHint: function(sender)\n\t{\n\t\tvar hint = this._level.hint;\n\n\t\tvar hintLayer = new HintLayer(hint.text);\n\t\thintLayer.show();\n\t},\n\n\t_discoverClicked: function()\n\t{\n\t\tif(this._netDiscoverLayer.isHidden())\n\t\t\tthis._netDiscoverLayer.show();\n\t\telse\n\t\t\tthis._netDiscoverLayer.hide();\n\t},\n\n\t/**\n * Called on start game.\n */\n\tonStartGame: function()\n\t{\n\t\tthis._enableMenus(false);\n\t\tthis._hideInforms();\n\n\t\tif(this._changeLevelMenu)\n\t\t\tthis._changeLevelMenu.stopAnimateNextLevelButton();\n\t},\n\n\t/**\n * Called on restart game.\n */\n\tonRestartGame: function()\n\t{\n\t\tthis._enableMenus(true);\n\t\tif(this._changeLevelMenu)\n\t\t\tthis._changeLevelMenu.stopAnimateNextLevelButton();\n\t\tthis._hideInforms();\n\t},\n\n\t/**\n * Called on robot win.\n */\n\tonWin: function()\n\t{\n\t\tif(Object.keys(this.getParent().getCompletedMaps()).length === this._level.maps.length)\n\t\t{\n\t\t\tif(this._changeLevelMenu)\n\t\t\t\tthis._changeLevelMenu.animateNextLevelButton();\n\n\t\t\tthis._winLayer.show();\n\n\t\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (this._level.robots[i].sprite instanceof pm.RobotSprite2D)\n\t\t\t\t\tthis._level.robots[i].sprite.indicateCommands(this._level.robots[i].stepCount);\n\t\t\t}\n\n\t\t\tpm.audioUtils.playWinSound();\n\t\t}\n\n\t\tthis._enableMenus(true);\n\t},\n\n\t/**\n\t * Called on map complete.\n\t */\n\tonMapCompleted: function()\n\t{\n\t\tif (this._level.maps.length === 1)\n\t\t\treturn;\n\n\t\tthis._mapCompleteLayer.show();\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tif (this._level.robots[i].sprite instanceof pm.RobotSprite2D)\n\t\t\t\tthis._level.robots[i].sprite.indicateCommands(this._level.robots[i].stepCount);\n\t\t}\n\t},\n\n\t_onReadyToChangeLevel: function()\n\t{\n\t\tif (this._isNetGame)\n\t\t{\n\t\t\tvar loadingLayer = new LoadingLayer(pm.settings.getScreenSize());\n\t\t\tloadingLayer.show();\n\n\t\t\tvar label = new cc.LabelTTF(LocalizedString(\"WaitForChangeLevel\"), pm.settings.fontBoldName, 30);\n\t\t\tlabel.setPosition(pm.settings.getScreenSize().width / 2, pm.settings.getScreenSize().height / 2 - 100);\n\n\t\t\tloadingLayer.addChild(label);\n\t\t}\n\t},\n\n\t/**\n * Called on robot loose.\n */\n\tonLoose: function()\n\t{\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tif (this._level.robots[i].sprite instanceof pm.RobotSprite2D)\n\t\t\t\tthis._level.robots[i].sprite.indicateCommands(this._level.robots[i].stepCount);\n\t\t}\n\n\t\tthis._looseLayer.show();\n\t\tpm.audioUtils.playLooseSound();\n\n\t\tthis._enableMenus(true);\n\t},\n\n\t/**\n * Called on robot failure.\n */\n\tonFailure: function()\n\t{\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tif (this._level.robots[i].sprite instanceof pm.RobotSprite2D)\n\t\t\t\tthis._level.robots[i].sprite.indicateCommands(this._level.robots[i].stepCount);\n\t\t}\n\n\t\tthis._failureLayer.show();\n\n\t\tthis._enableMenus(true);\n\t},\n\n\t/**\n * Called on robot tested.\n */\n\tonRobotTested: function()\n\t{\n\t\tthis._enableMenus(true);\n\t},\n\n\t_enableMenus: function(flag)\n\t{\n\t\tif(this._changeLevelMenu)\n\t\t\tthis._changeLevelMenu.setEnabled(flag);\n\n\t\tif(this._selectMapMenu)\n\t\t\tthis._selectMapMenu.setEnabled(flag);\n\n\t\tif(this._netControlLayer)\n\t\t\tthis._netControlLayer.setEnabled(flag);\n\n\t\tif (!this._isNetGame)\n\t\t\tthis._backButton.setEnabled(flag);\n\t},\n\n\t_hideInforms: function()\n\t{\n\t\tif (!this._winLayer.isHidden())\n\t\t\tthis._winLayer.hide();\n\n\t\tif(!this._looseLayer.isHidden())\n\t\t\tthis._looseLayer.hide();\n\n\t\tif(!this._failureLayer.isHidden())\n\t\t\tthis._failureLayer.hide();\n\n\t\tif(!this._mapCompleteLayer.isHidden())\n\t\t\tthis._mapCompleteLayer.hide();\n\t},\n\n\t_backToMenu: function(object)\n\t{\n\t\tif (pm.tutorialUtils.isProcessingTutorial())\n\t\t\tpm.tutorialUtils.stop();\n\n\t\tif(this._isNetGame)\n\t\t{\n\t\t\tpm.networkUtils.stopGameClient();\n\t\t\tpm.networkUtils.stopGameServer();\n\t\t}\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectLevelScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_backToMainMenu: function(object)\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new SelectGameScene());\n\t\tcc.director.runScene(trans);\n\t}\n});\n\nLevelMenuLayer.SEPARATOR = 10.0;\nLevelMenuLayer.INFORM_MARGIN_X = 25.0;\nLevelMenuLayer.INFORM_MARGIN_Y = 25.0;\n","/**\n * Created by Nikita Besshaposhnikov on 02.07.15.\n */\n\n/**\n * @class Layer for selecting map layer.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level Level for which maps draw.\n */\nvar SelectMapMenu = ccui.Layout.extend(/** @lends SelectMapMenu# */{\n\n\t_selectedMapIndex: -1,\n\t_level: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._level = level;\n\n\t\tthis._super();\n\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImage(\"System/SML_Background.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(60, 15, 40, 15));\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tthis.updateMaps();\n\n\t\tpm.registerCustomEventListener(pm.MAP_DRAGGED_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif (data.index !== undefined)\n\t\t\t\tthis._mapDragged(this._selectedMapIndex, data.index);\n\n\t\t}.bind(this), this);\n\t},\n\n\t/**\n * Return selected map index.\n * @returns {Number}\n */\n\tgetSelectedMapIndex: function()\n\t{\n\t\treturn this._selectedMapIndex;\n\t},\n\n\tupdateMaps: function()\n\t{\n\t\tvar mapCount = this._level.maps.length;\n\n\t\tif (mapCount < 2)\n\t\t\tthis.setOpacity(0);\n\t\telse\n\t\t\tthis.setOpacity(255);\n\n\t\tthis.removeAllChildren(true);\n\n\t\tvar circle = pm.spriteUtils.getInterfaceElementSprite(\"unchecked\");\n\n\t\tvar width = mapCount * (circle.getContentSize().width + SelectMapMenu.SEPARATOR_SIZE);\n\t\twidth -= SelectMapMenu.SEPARATOR_SIZE;\n\t\twidth += SelectMapMenu.LEFT_BOUND;\n\n\t\tthis.setContentSize(cc.size(width, SelectMapMenu.HEIGHT));\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin.setMargin(SelectMapMenu.SEPARATOR_SIZE, 0, 0, 0);\n\n\t\tvar buttonMargin0 = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin0.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin0.setMargin(45, 0, 0, 0);\n\n\t\tfor(var i = 0; i < mapCount; ++i)\n\t\t{\n\t\t\tvar icon = \"unchecked\";\n\n\t\t\tif(i === this._level.startMapIndex)\n\t\t\t{\n\t\t\t\ticon = \"checked\";\n\t\t\t\tthis._selectedMapIndex = i;\n\t\t\t}\n\n\t\t\tcircle = new pmui.Button(pm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tpm.spriteUtils.getInterfaceElementName(icon),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tif(i === 0)\n\t\t\t\tcircle.setLayoutParameter(buttonMargin0);\n\t\t\telse\n\t\t\t\tcircle.setLayoutParameter(buttonMargin);\n\n\t\t\tcircle.setTag(i);\n\t\t\tcircle.addClickEventListener(this._selectMap.bind(this));\n\n\t\t\tthis.addChild(circle);\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAME_PATTERNS.STAR.format(i), circle);\n\t\t}\n\t},\n\n\t/**\n * Sets layer enabled.\n * @param {Boolean} flag\n */\n\tsetEnabled: function(flag)\n\t{\n\t\tpmui.OvalLayout.prototype.setEnabled.call(this, flag);\n\n\t\tfor(var i = 0; i < this.getChildrenCount(); ++i)\n\t\t\tthis.getChildren()[i].setTouchEnabled(flag);\n\t},\n\n\t_mapDragged: function(oldMapIndex, newMapIndex)\n\t{\n\t\tif (oldMapIndex === newMapIndex)\n\t\t\treturn;\n\n\t\tvar oldCircle = this.getChildByTag(oldMapIndex);\n\t\tvar newCircle = this.getChildByTag(newMapIndex);\n\n\t\tthis._updateTextures(oldCircle, newCircle);\n\t\tthis._selectedMapIndex = newMapIndex;\n\t},\n\n\t_selectMap: function(sender)\n\t{\n\t\tvar index = sender.getTag();\n\n\t\tif (index !== this._selectedMapIndex)\n\t\t{\n\t\t\tvar oldCircle = this.getChildByTag(this._selectedMapIndex);\n\n\t\t\tthis._updateTextures(oldCircle, sender);\n\n\t\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\n\t\t\tthis._selectedMapIndex = index;\n\t\t\tpm.sendCustomEvent(pm.MAP_CHANGED_EVENT_STR, {index: index, sendEvent: false, rebaseRobots: true});\n\t\t}\n\t},\n\n\t_updateTextures: function(oldCircle, newCircle)\n\t{\n\t\toldCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"unchecked\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\toldCircle.setTouchEnabled(true);\n\n\t\tnewCircle.loadTextures(pm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tpm.spriteUtils.getInterfaceElementName(\"checked\"),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tnewCircle.setTouchEnabled(false);\n\t}\n});\n\n/**\n * Separator between circles.\n * @const\n * @default\n * @type {Number}\n */\nSelectMapMenu.SEPARATOR_SIZE = 10;\nSelectMapMenu.HEIGHT = 50;\nSelectMapMenu.LEFT_BOUND = 65;\nSelectMapMenu.LEFT_MARGIN = -15;\n","/**\n * Created by Nikita Besshaposhnikov on 20.09.16.\n */\n\n/**\n * @class Layer which contains buttons for controlling tutorial process.\n * @extends ccui.HBox\n * @constructor\n */\nvar TutorialControlLayer = ccui.HBox.extend(/** @lends TutorialControlLayer# */{\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis.setBackGroundImage(\"System/TCL_Background.png\");\n\t\tthis.setContentSize(this.getBackGroundImageTextureSize());\n\n\t\tvar restartButton = new pmui.Button(pm.spriteUtils.getIconName(\"prevTutorialStep\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevTutorialStep\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevTutorialStep\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tvar processStepButton = new pmui.Button(pm.spriteUtils.getIconName(\"nextTutorialStep\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextTutorialStep\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextTutorialStep\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar stopButton = new pmui.Button(pm.spriteUtils.getIconName(\"pauseTutorial\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"pauseTutorial\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"pauseTutorial\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tprocessStepButton.addClickEventListener(this._processStep.bind(this));\n\t\trestartButton.addClickEventListener(this._restart.bind(this));\n\t\tstopButton.addClickEventListener(this._stop.bind(this));\n\n\t\tvar restartMargin = new ccui.LinearLayoutParameter();\n\t\trestartMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\trestartMargin.setMargin(TutorialControlLayer.BORDER_X, 0, 0, 0);\n\n\t\trestartButton.setLayoutParameter(restartMargin);\n\n\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\tbuttonMargin.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tbuttonMargin.setMargin(TutorialControlLayer.BUTTON_SEPARATOR, 0, 0, 0);\n\n\t\tstopButton.setLayoutParameter(buttonMargin);\n\t\tprocessStepButton.setLayoutParameter(buttonMargin.clone());\n\n\t\tthis.addChild(restartButton);\n\t\tthis.addChild(stopButton);\n\t\tthis.addChild(processStepButton);\n\t},\n\n\t_processStep: function()\n\t{\n\t\tpm.tutorialUtils.processCurrentStep();\n\t},\n\n\t_restart: function()\n\t{\n\t\tpm.tutorialUtils.restart();\n\t},\n\n\t_stop: function()\n\t{\n\t\tpm.tutorialUtils.stop();\n\t}\n});\n\n/**\n * Separator for buttons in {@link TutorialControlLayer}.\n * @const\n * @default\n * @type {Number}\n */\nTutorialControlLayer.BUTTON_SEPARATOR = 30.0;\nTutorialControlLayer.BORDER_X = 16.0;\n\n","/**\n * Created by Antony Orlovsky on 30.07.18.\n */\n\n/**\n * @class Layer to be shown on robot win.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {pm.AbstractLevel} level Current level.\n */\nvar WinLayer = pmui.OvalLayout.extend(/** @lends WinLayer# */{\n\t_level: null,\n\t_hidden: true,\n\t_isNetGame: false,\n\n\t_leftStar: null,\n\t_rightStar: null,\n\t_centralStar: null,\n\t_completedLevelsLabel: null,\n\n\t_nextLevelButton: null,\n\t_startScreenButton: null,\n\t_restartButton: null,\n\t_closeButton: null,\n\n\tctor: function(level, isNetGame)\n\t{\n\t\tthis._super(cc.size(WinLayer.WIDTH, WinLayer.HEIGHT));\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._level = level;\n\t\tthis._isNetGame = isNetGame;\n\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tthis._closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"closeMessage\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"closeMessage\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"closeMessage\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tthis._closeButton.addClickEventListener(this.hide.bind(this));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, -this._closeButton.height/4, -this._closeButton.width/4, 0);\n\t\tthis._closeButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis.addChild(this._closeButton);\n\n\t\tif (this._isNetGame)\n\t\t\tthis._closeButton.setEnabled(false);\n\n\t\tvar winSprite = new ccui.ImageView(\"System/winRobotState.png\");\n\n\t\tvar winSpriteAlign = new ccui.RelativeLayoutParameter();\n\t\twinSpriteAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\twinSpriteAlign.setMargin(2*WinLayer.SEPARATOR, WinLayer.ROBOT_BORDER_Y, 0, 0);\n\t\twinSpriteAlign.setRelativeName(\"winSprite\");\n\t\twinSprite.setLayoutParameter(winSpriteAlign);\n\n\t\tthis.addChild(winSprite);\n\n\t\tvar starSprite = \"starIncomplete\";\n\n\t\tthis._leftStar = new ccui.ImageView(pm.spriteUtils.getIconName(starSprite), ccui.Widget.PLIST_TEXTURE);\n\n\t\tvar starAlign = new ccui.RelativeLayoutParameter();\n\t\tstarAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tstarAlign.setMargin(-WinLayer.STAR_SHIFT_X, -WinLayer.STAR_SHIFT_Y, 0, 0);\n\t\tstarAlign.setRelativeToWidgetName(\"winSprite\");\n\t\tthis._leftStar.setLayoutParameter(starAlign);\n\n\t\tthis.addChild(this._leftStar);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Well done\"), pm.settings.fontName, 30);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tlabelAlign.setMargin(WinLayer.SEPARATOR, WinLayer.BORDER_Y, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabelAlign.setRelativeToWidgetName(\"winSprite\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tthis._completedLevelsLabel = new ccui.Text(\"placeHolder\", pm.settings.fontName, 20);\n\n\t\tvar completedLevelsLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tcompletedLevelsLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tcompletedLevelsLabelAlign.setMargin(0, WinLayer.TEXT_SEPARATOR, 0, 0);\n\t\tcompletedLevelsLabelAlign.setRelativeName(\"completedLevelsLabel\");\n\t\tcompletedLevelsLabelAlign.setRelativeToWidgetName(\"label\");\n\t\tthis._completedLevelsLabel.setLayoutParameter(completedLevelsLabelAlign);\n\n\t\tthis.addChild(this._completedLevelsLabel);\n\n\t\tthis._nextLevelButton = new pmui.Button(pm.spriteUtils.getIconName(\"nextWin\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextWin\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextWin\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar nextLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tnextLevelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tnextLevelAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS + WinLayer.BUTTON_SEPARATOR);\n\t\tnextLevelAlign.setRelativeName(\"nextLevel\");\n\t\tthis._nextLevelButton.setLayoutParameter(nextLevelAlign);\n\n\t\tif (!this._isNetGame)\n\t\t\tthis._nextLevelButton.addClickEventListener(this._nextLevel.bind(this));\n\t\telse\n\t\t\tthis._nextLevelButton.addClickEventListener(this._readyToChangeLevel.bind(this));\n\n\t\tthis.addChild(this._nextLevelButton);\n\n\t\tthis._startScreenButton = new pmui.Button(pm.spriteUtils.getIconName(\"menuWin\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menuWin\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menuWin\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar startScreenButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tstartScreenButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tstartScreenButtonAlign.setMargin(0, 0, WinLayer.BUTTON_SEPARATOR, 0);\n\t\tstartScreenButtonAlign.setRelativeToWidgetName(\"nextLevel\");\n\t\tthis._startScreenButton.setLayoutParameter(startScreenButtonAlign);\n\n\t\tthis._startScreenButton.addClickEventListener(this._startScreen.bind(this));\n\n\t\tthis.addChild(this._startScreenButton);\n\n\t\tthis._restartButton = new pmui.Button(pm.spriteUtils.getIconName(\"again\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"again\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"again\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar returnButtonAlign = new ccui.RelativeLayoutParameter();\n\t\treturnButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\treturnButtonAlign.setMargin(WinLayer.BUTTON_SEPARATOR, 0, 0, 0);\n\t\treturnButtonAlign.setRelativeToWidgetName(\"nextLevel\");\n\t\tthis._restartButton.setLayoutParameter(returnButtonAlign);\n\n\t\tthis._restartButton.addClickEventListener(this._restart.bind(this));\n\n\t\tthis.addChild(this._restartButton);\n\n\t\tthis.setOpacity(0);\n\n\t\tthis._enableButtons(false);\n\t},\n\n\t_enableButtons: function(flag)\n\t{\n\t\tthis._nextLevelButton.setEnabled(flag);\n\t\tthis._startScreenButton.setEnabled(flag);\n\t\tthis._restartButton.setEnabled(flag);\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_nextLevel: function(sender)\n\t{\n\t\tvar level = pm.settings.getLevel();\n\t\tvar game = pm.settings.getGame();\n\n\t\t++level;\n\n\t\tif (level === world.getLevelCount(game))\n\t\t{\n\t\t\t++game;\n\n\t\t\twhile(world.getLevelCount(game) === 0 && game < world.getGameCount())\n\t\t\t\t++game;\n\n\t\t\tif(game === world.getGameCount())\n\t\t\t{\n\t\t\t\tgame = pm.settings.getGame();\n\t\t\t\tlevel = pm.settings.getLevel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlevel = 0;\n\t\t\t}\n\t\t}\n\n\t\tpm.settings.setGame(game);\n\t\tpm.settings.setLevel(level);\n\n\t\tthis._transLevel();\n\t},\n\n\t_readyToChangeLevel: function(sender)\n\t{\n\t\tpm.sendCustomEvent(pm.READY_TO_CHANGE_LEVEL_STR);\n\t},\n\n\t_transLevel: function()\n\t{\n\t\tif (pm.settings.isEditorMode)\n\t\t{\n\t\t\tthis.getParent()._level.clearCache();\n\n\t\t\tworld.setLevelUpdated(pm.settings.getGame(), pm.settings.getLevel());\n\t\t\tworld.save();\n\t\t\tpm.userCache.clearLevelData(this.getParent()._level.id);\n\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\t\tnew LevelEditorScene(pm.settings.getGame(), pm.settings.getLevel()));\n\t\t\tcc.director.runScene(trans);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\t\tnew LevelScene(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel()));\n\t\t\tcc.director.runScene(trans);\n\t\t}\n\t},\n\n\t_restart: function()\n\t{\n\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t},\n\n\t/**\n * Shows layer.\n */\n\tshow: function()\n\t{\n\t\tthis._recalculateCompletedInformation();\n\n\t\tthis._hidden = false;\n\n\t\tif (!this._isNetGame)\n\t\t{\n\t\t\tthis._enableButtons(true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._nextLevelButton.setEnabled(true);\n\n\t\t\tvar showSelected = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis.setHighlighted(true);\n\t\t\t}, this._nextLevelButton);\n\n\t\t\tvar showNormal = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis.setHighlighted(false);\n\t\t\t}, this._nextLevelButton);\n\n\t\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY);\n\n\t\t\tthis._nextLevelButton.runAction(cc.repeatForever(cc.sequence(showSelected, delay, showNormal, delay)));\n\t\t}\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 255);\n\t\tthis.runAction(fadeLayer);\n\n\t\tthis._leftStar.runAction(cc.sequence(cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 2, 1.4), cc.scaleTo(pm.SYSTEM_ANIMATION_DELAY * 2, 1)));\n\t},\n\n\t_recalculateCompletedInformation: function()\n\t{\n\t\tvar notCompletedFlag = false;\n\n\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tif (pm.userCache.getScore(this._level, i) === -1)\n\t\t\t\tnotCompletedFlag = true;\n\t\t}\n\n\t\tvar starSprite = (notCompletedFlag === false) ? \"star\" : \"starIncomplete\";\n\n\t\tthis._leftStar.loadTexture(pm.spriteUtils.getIconName(starSprite), ccui.Widget.PLIST_TEXTURE);\n\n\t\tvar count = 0;\n\t\tvar completedCount = 0;\n\n\t\tvar game = world.games[pm.settings.getGame()];\n\n\t\tfor (var i = 0; i < game.levels.length; ++i)\n\t\t{\n\t\t\tvar level = game.levels[i];\n\n\t\t\t// completedCount += pm.userCache.getCompleteMapCount(level);\n\t\t\tvar notCompletedFlag = false;\n\n\t\t\tfor (var j = 0; j < level.maps.length; ++j)\n\t\t\t{\n\t\t\t\tif (pm.userCache.getScore(level, j) === -1)\n\t\t\t\t\tnotCompletedFlag = true;\n\t\t\t}\n\n\t\t\tif (!notCompletedFlag)\n\t\t\t\tcompletedCount++;\n\n\t\t\tcount++;\n\t\t}\n\n\t\tthis._completedLevelsLabel.setString(LocalizedString(\"Completed\") + \" \" + completedCount + \"/\" + count);\n\t},\n\n\t/**\n * Hides layer.\n */\n\thide: function()\n\t{\n\t\tthis._hidden = true;\n\n\t\tif (!this._isNetGame)\n\t\t{\n\t\t\tthis._enableButtons(false);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._nextLevelButton.setEnabled(false);\n\t\t\tthis._nextLevelButton.stopAllActions(); \n\t\t}\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\t\tthis.runAction(fadeLayer);\n\t},\n\n\t/**\n * Returns if layer if hidden.\n * @returns {boolean}\n */\n\tisHidden: function()\n\t{\n\t\treturn this._hidden;\n\t}\n});\n\nWinLayer.WIDTH = 350;\nWinLayer.HEIGHT = 190;\nWinLayer.STAR_SHIFT_X = 15;\nWinLayer.STAR_SHIFT_Y = 25;\nWinLayer.BORDER_Y = 30;\nWinLayer.SEPARATOR = 20;\nWinLayer.ROBOT_BORDER_Y = 25;\nWinLayer.TEXT_SEPARATOR = 5;\nWinLayer.BUTTON_SEPARATOR = 15;\n","/**\n * Created by Nikita Besshaposhnikov on 22.01.18.\n */\n\n/**\n * @class Layer to be shown for robot step count result.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {pm.AbstractLevel} level Current level.\n */\nvar RobotsStepCountLayer = pmui.OvalLayout.extend(/** @lends RobotsStepCountLayer# */{\n\t_hidden: true,\n\t_level: null,\n\t_resultList: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis._level = level;\n\t\tthis.setOpacity(0);\n\n\t\tthis._resultList = new ccui.ListView();\n\t\tthis._resultList.setCascadeOpacityEnabled(true);\n\t\tthis._resultList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._resultList.setItemsMargin(ProgramLayer.PROGRAM_SEPARATOR);\n\t\tthis._resultList.setScrollBarEnabled(true);\n\t\t// this._resultList.setScrollBarOpacity(255 * 0.9);\n\n\t\tvar resultListAlign = new ccui.RelativeLayoutParameter();\n\t\tresultListAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tresultListAlign.setMargin(2 + pm.SCREEN_BOUND/2, 2 + pm.SCREEN_BOUND/2, 0, 0);\n\t\tthis._resultList.setLayoutParameter(resultListAlign);\n\n\t\tthis.addChild(this._resultList, 10);\n\t},\n\n\t/**\n * Shows layer.\n */\n\tshow: function()\n\t{\n\t\tthis._resultList.removeAllItems();\n\n\t\tvar width = 0;\n\n\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t{\n\t\t\tvar text = \"\";\n\t\t\tvar stepCount = this._level.robots[i].stepCount;\n\n\t\t\tvar module10StepCount = stepCount % 10;\n\t\t\tvar module100StepCount = stepCount % 100;\n\n\t\t\tif(module100StepCount > 10 && module100StepCount < 15)\n\t\t\t\ttext = LocalizedString(\"StepCountPattern3\");\n\t\t\telse if(module10StepCount === 1)\n\t\t\t\ttext = LocalizedString(\"StepCountPattern1\");\n\t\t\telse if(module10StepCount < 5 && module10StepCount > 1)\n\t\t\t\ttext = LocalizedString(\"StepCountPattern2\");\n\t\t\telse\n\t\t\t\ttext = LocalizedString(\"StepCountPattern3\");\n\n\t\t\ttext = text.format(i + 1, stepCount);\n\n\t\t\tthis._resultList.pushBackCustomItem(new ccui.Text(text, pm.settings.fontName, pm.settings.fontSize));\n\n\t\t\twidth = Math.max(width, this._resultList.getItem(i).width);\n\t\t}\n\n\t\tthis._resultList.forceDoLayout();\n\t\tvar height = Math.min(this._resultList.getInnerContainerSize().height, RobotsStepCountLayer.HEIGHT);\n\n\t\tthis._resultList.setContentSize(width, height);\n\n\t\tthis.setContentSizeWithBorder(cc.size(width + pm.SCREEN_BOUND, height + pm.SCREEN_BOUND));\n\n\t\tthis._hidden = false;\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 255);\n\n\t\tthis.runAction(fadeLayer);\n\t},\n\n\t/**\n * Hides layer.\n */\n\thide: function()\n\t{\n\t\tthis._hidden = true;\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\n\t\tthis.runAction(fadeLayer);\n\t},\n\n\t/**\n * Returns if layer if hidden.\n * @returns {boolean}\n */\n\tisHidden: function()\n\t{\n\t\treturn this._hidden;\n\t}\n\n});\n\nRobotsStepCountLayer.HEIGHT = 170;\n","/**\n * Created by Nikita Besshaposhnikov on 15.03.17.\n */\n\n/**\n * @class Layer for displaying discovered clients in network.\n * @extends pmui.OvalLayout\n * @constructor\n */\nvar NetDiscoverLayer = pmui.OvalLayout.extend(/** @lends NetDiscoverLayer# */{\n\n\t_hidden: true,\n\t_clients: null,\n\t_clientHosts: [],\n\n\t_level: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.setContentSizeWithBorder(NetDiscoverLayer.WIDTH, NetDiscoverLayer.HEIGHT);\n\n\t\tthis._level = level;\n\n\t\tthis._clients = new ccui.ListView();\n\n\t\tthis._clients.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._clients.setItemsMargin(NetDiscoverLayer.ROW_SEPARATOR);\n\t\tthis._clients.setScrollBarEnabled(true);\n\t\tthis._clients.setScrollBarOpacity(255 * 0.9);\n\t\tthis._clients.setScrollBarWidth(5);\n\n\t\tvar clientsAlign = new ccui.RelativeLayoutParameter();\n\t\tclientsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tclientsAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\n\t\tthis._clients.setLayoutParameter(clientsAlign);\n\n\t\tvar button = new pmui.InterfaceButton(this._sendGameRequest, this, LocalizedString(\"RequestGame\"));\n\n\t\tvar buttonAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS);\n\n\t\tbutton.setLayoutParameter(buttonAlign);\n\n\t\tthis._clients.setContentSize(NetDiscoverLayer.WIDTH, NetDiscoverLayer.HEIGHT - button.height - NetDiscoverLayer.ROW_SEPARATOR);\n\n\t\tthis.addChild(button);\n\t\tthis.addChild(this._clients);\n\n\t\tthis.setOpacity(0);\n\t},\n\n\t/**\n * Shows layer.\n */\n\tshow: function()\n\t{\n\t\tthis.enabled = true;\n\t\tthis._hidden = false;\n\t\tthis.setOpacity(255);\n\n\t\tpm.networkUtils.startDiscover(this._discoverCallback.bind(this));\n\t},\n\n\t/**\n * Hides layer.\n */\n\thide: function()\n\t{\n\t\tthis.enabled = false;\n\t\tthis._hidden = true;\n\t\tthis.setOpacity(0);\n\n\t\tthis._clients.removeAllChildren(true);\n\t\tthis._clientHosts.length = 0;\n\n\t\tpm.networkUtils.stopDiscover();\n\t},\n\n\t/**\n * Returns if layer if hidden.\n * @returns {boolean}\n */\n\tisHidden: function()\n\t{\n\t\treturn this._hidden;\n\t},\n\n\t_sendGameRequest: function()\n\t{\n\t\tvar sendHosts = [];\n\n\t\tfor(var i = 0; i < this._clientHosts.length; ++i)\n\t\t{\n\t\t\tif(this._clients.getItem(i).getChecked())\n\t\t\t\tsendHosts.push(this._clientHosts[i]);\n\t\t}\n\n\t\tif(sendHosts.length < this._level.robots.length - 1)\n\t\t\treturn;\n\n\t\tfor(var i = 0; i < sendHosts.length; ++i)\n\t\t\tpm.networkUtils.sendConnectRequest(sendHosts[i]);\n\n\t\tvar waitLayer = new WaitNetworkGameLayer(true, this._level.robots.length);\n\t\twaitLayer.show();\n\n\t\tthis.hide();\n\t},\n\n\t_discoverCallback: function(clients)\n\t{\n\t\tvar checkedMap = {};\n\n\t\tfor(var i = 0; i < this._clientHosts.length; ++i)\n\t\t\tcheckedMap[this._clientHosts[i]] = this._clients.getItem(i).getChecked();\n\n\t\tthis._clientHosts = [];\n\n\t\tthis._clients.removeAllChildren(true);\n\n\t\tfor(var i = 0; i < clients.length; ++i)\n\t\t{\n\t\t\tvar clientBox = new pmui.CheckBox(clients[i].getData(), null, null, 15, checkedMap[clients[i].getHost()]);\n\t\t\tthis._clients.pushBackCustomItem(clientBox);\n\n\t\t\tthis._clientHosts.push(clients[i].getHost());\n\t\t}\n\t}\n\n});\n\nNetDiscoverLayer.WIDTH = 150;\nNetDiscoverLayer.HEIGHT = 150;\nNetDiscoverLayer.ROW_SEPARATOR = 5;\nNetDiscoverLayer.ROW_HIEGHT = 20;\n","/**\n * Created by Nikita Besshaposhnikov on 10.05.17.\n */\n\n/**\n * @class Layer which contains buttons for controlling network game process.\n * @extends ccui.Layout\n * @constructor\n */\nvar NetControlLayer = ccui.Layout.extend(/** @lends NetControlLayer# */{\n\n\t_readyButton: null,\n\t_notReadyButton: null,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._readyButton = new pmui.Button(pm.spriteUtils.getIconName(\"netReady\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"netReady\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"netReady\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tthis._notReadyButton = new pmui.Button(pm.spriteUtils.getIconName(\"netReady\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"netReady\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"netReady\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._readyButton.addClickEventListener(this._readyClicked.bind(this));\n\t\tthis._notReadyButton.addClickEventListener(this._notReadyClicked.bind(this));\n\n\t\tvar buttonMargin = new ccui.RelativeLayoutParameter();\n\t\tbuttonMargin.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\n\t\tthis._readyButton.setLayoutParameter(buttonMargin);\n\t\tthis._notReadyButton.setLayoutParameter(buttonMargin.clone());\n\n\t\tthis.setContentSize(Math.max(this._readyButton.width, this._notReadyButton.width), Math.max(this._readyButton.height, this._notReadyButton.height));\n\n\t\tthis.addChild(this._readyButton);\n\t\tthis.addChild(this._notReadyButton);\n\n\t\tthis._readyButton.setVisible(false);\n\t},\n\n\t/**\n * Sets enabled state of layer.\n * @param {Boolean} flag\n */\n\tsetEnabled: function(flag)\n\t{\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\n\t\tfor(var i = 0; i < this.getChildrenCount(); ++i)\n\t\t\tthis.getChildren()[i].setEnabled(flag);\n\t},\n\n\t_readyClicked: function()\n\t{\n\t\tpm.networkUtils.sendReadyForNetworkGame(false);\n\t\tthis._readyButton.setVisible(false);\n\t\tthis._notReadyButton.setVisible(true);\n\t},\n\n\t_notReadyClicked: function()\n\t{\n\t\tpm.networkUtils.sendReadyForNetworkGame(true);\n\t\tthis._readyButton.setVisible(true);\n\t\tthis._notReadyButton.setVisible(false);\n\t}\n});\n\n","/**\n * Created by Nikita Besshaposhnikov on 17.11.14.\n */\n\n/**\n * This callback is used when last item is clicked and need to bee popped.\n * @callback MethodStackScrollLayer~popCallback\n */\n\n/**\n * @class Scroll layer for method stack.
\n * Displays items as vertical stack. Supports pushing item.
\n * If last item is clicked popCallback is called.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Size} [size]\n */\nvar MethodStackScrollLayer = ccui.Layout.extend(/** @lends MethodStackScrollLayer# */{\n\n\t_background: null,\n\t_scroll: null,\n\t_minimalPlaceholderHeight: 0,\n\n\t_itemsHeight: 0,\n\n\t_itemsPopCallback: null,\n\t_itemsPopCallbackTarget: null,\n\n\tctor: function(size)\n\t{\n\t\tthis._super();\n\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tthis._background = new ccui.Layout();\n\t\tthis._background.setContentSize(size);\n\n\t\tthis.addChild(this._background);\n\n\t\tthis._scroll = new ccui.ListView();\n\n\t\tthis._scroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._scroll.setContentSize(size);\n\n\t\tthis._scroll.setScrollBarEnabled(false);\n\n\t\tthis.addChild(this._scroll);\n\n\t\tvar placeholder = new ccui.Layout();\n\n\t\tthis._scroll.pushBackCustomItem(placeholder);\n\n\t\tif(size)\n\t\t\tthis.setContentSize(size);\n\n\t\tthis._fitPlaceholderSize();\n\n\t\tthis._scroll.addEventListener(this._onClick.bind(this));\n\t},\n\n\t/**\n * Adds items to stack.\n * @param {ccui.Widget} item\n */\n\tpushItem: function(item)\n\t{\n\t\titem.setTouchEnabled(true);\n\t\tthis._scroll.insertCustomItem(item, 1);\n\n\t\tthis._itemsHeight += item.getContentSize().height;\n\t\tthis._fitPlaceholderSize();\n\t},\n\n\t/**\n * @sets minimal placeholder height, which is placed at the top of stack.\n * @param {Number} height\n */\n\tsetMinimalPlaceholderHeight: function(height)\n\t{\n\t\tthis._minimalPlaceholderHeight = height;\n\t\tthis._fitPlaceholderSize();\n\t},\n\n\t/**\n * Sets callback on pop item click.\n * @param {MethodStackScrollLayer~popCallback} callback\n * @param {*} target\n */\n\tsetItemsPopCallback: function(callback, target)\n\t{\n\t\tthis._itemsPopCallback = callback;\n\t\tthis._itemsPopCallbackTarget = target;\n\t},\n\n\t/**\n * Removes all items.\n */\n\tclear: function()\n\t{\n\t\tvar childrenCount = this._scroll.getChildrenCount();\n\n\t\tfor(var i = 1 ; i < childrenCount; ++i)\n\t\t\tthis._scroll.removeItem(1);\n\n\t\tthis._itemsHeight = 0;\n\t\tthis._fitPlaceholderSize();\n\t},\n\n\t_onClick: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tvar deleteCount = this._scroll.getCurSelectedIndex();\n\t\t\tvar deleted = true;\n\n\t\t\tif(this._itemsPopCallback)\n\t\t\t\tdeleted = this._itemsPopCallback.call(this._itemsPopCallbackTarget, deleteCount);\n\n\t\t\tif(deleted)\n\t\t\t{\n\t\t\t\tfor(var i = 0; i < deleteCount; ++i)\n\t\t\t\t{\n\t\t\t\t\tthis._itemsHeight -= this._scroll.getItem(1).getContentSize().height;\n\n\t\t\t\t\tvar self = this;\n\n\t\t\t\t\tsetTimeout(function ()\n\t\t\t\t\t{\n\t\t\t\t\t\tself._scroll.removeItem(1);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t\tsetTimeout(function ()\n\t\t\t\t{\n\t\t\t\t\tself._fitPlaceholderSize();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t},\n\n\t_fitPlaceholderSize: function()\n\t{\n\t\tvar thisSize = this.getContentSize();\n\n\t\tvar height = thisSize.height - this._itemsHeight;\n\n\t\tif(height < this._minimalPlaceholderHeight)\n\t\t\theight = this._minimalPlaceholderHeight;\n\n\t\tthis._scroll.getItem(0).setContentSize(thisSize.width, height);\n\t\tthis._scroll.forceDoLayout();\n\n\t\tif(height === this._minimalPlaceholderHeight && this._scroll.getItem(1))\n\t\t{\n\t\t\tvar firstItemHeight = this._scroll.getItem(1).getContentSize().height;\n\n\t\t\tvar ratio = (firstItemHeight) / (this._scroll.innerHeight - thisSize.height);\n\n\t\t\tthis._scroll.jumpToPercentVertical(100 * ratio);\n\n\t\t\tthis._scroll.scrollToPercentVertical(0, 0.7, true);\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 17.11.14.\n */\n\n/**\n * Callback called on select button clicked.\n * @callback pm.ControlledModeData~addMethodCallback\n * @param {FunctionButton} button\n */\n\n/**\n * @class This class contains data for controlled mode start event by {@link MethodStackLayer}\n * @extends cc.Class\n * @constructor\n * @param {pm.ControlledModeData~addMethodCallback} addMethodCallback\n * @param {pm.ControlledModeData~getMethodListFunction} getMethodListFunction Function for getting method list.\n * @param {Object} callbackTarget\n */\npm.ControlledModeData = cc.Class.extend({\n\n\t/**\n * Callback to call when need to add method to method stack\n * @type {pm.ControlledModeData~addMethodCallback}\n */\n\taddMethodCallback: null,\n\t/**\n * Target for callbacks in this class\n * @type {Object}\n */\n\tcallbackTarget: null,\n\n\tctor: function(addMethodCallback, callbackTarget)\n\t{\n\t\tthis.addMethodCallback = addMethodCallback;\n\t\tthis.callbackTarget = callbackTarget;\n\t}\n});\n\n/**\n * @class This layer is used for make stepped robot actions.
\n * Buttons menu from program layer is used for make actions.\n * @extends ccui.Layout\n * @constructor\n * @param {ProgramLayer} programLayer\n * @param {Number} height\n */\nvar MethodStackLayer = ccui.Layout.extend(/** @lends MethodStackLayer# */{\n\t_innerLayer: null,\n\t_showButton: null,\n\t_hideButton: null,\n\t_clearButton: null,\n\thidden: true,\n\n\t_topPoint: cc.p(),\n\t_curPoint: cc.p(),\n\n\t_functionButtonStacks: {},\n\t_robotIdStack: [],\n\t_activeButtonsCount: 0,\n\n\t_scroll: null,\n\n\t_stackCapacity: 0,\n\n\t_methodListButton: null,\n\n\t_level: null,\n\n\tctor: function(height, level)\n\t{\n\t\tthis._super();\n\n\t\tthis._level = level;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._stackCapacity = Math.floor(height / ProgramContainerLayer.BUTTON_SIZE);\n\t\tthis._stackCapacity = this._stackCapacity > 0 ? this._stackCapacity : 2;\n\n\t\tthis._innerLayer = new pmui.DragAndDropLayout(pmui.DragAndDropLayout.Type.DRAG_ONLY);\n\t\tthis._innerLayer.addDropTargetName(ProgramContainerLayer.DNDNAME);\n\t\tthis._innerLayer.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis._innerLayer.setCascadeOpacityEnabled(true);\n\t\tthis._innerLayer.setBackGroundImageScale9Enabled(true);\n\t\tthis._innerLayer.setBackGroundImage(\"System/MSL_Background.png\");\n\t\tthis._innerLayer.setBackGroundImageCapInsets(cc.rect(23, 73, 32, 35));\n\t\tthis._innerLayer.setContentSize(MethodStackLayer.INNER_WIDTH, (this._stackCapacity) * ProgramContainerLayer.BUTTON_SIZE);\n\n\t\tthis._showButton = new pmui.Button(pm.spriteUtils.getIconName(\"methodStackShow\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"methodStackShow\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"methodStackShow\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._hideButton = new pmui.Button(pm.spriteUtils.getIconName(\"methodStackHide\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"methodStackHide\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"methodStackHide\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._clearButton = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._clearButton.setEnabled(false);\n\t\tthis._clearButton.setOpacity(0);\n\t\tthis._hideButton.setVisible(false);\n\n\t\tvar showButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tshowButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tshowButtonAlign.setMargin(1, MethodStackLayer.CONTROL_BUTTONS_MARGIN, 0, 0);\n\t\tshowButtonAlign.setRelativeName(\"showButton\");\n\t\tthis._showButton.setLayoutParameter(showButtonAlign);\n\n\t\tthis._hideButton.setLayoutParameter(showButtonAlign.clone());\n\n\t\tvar clearButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tclearButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\tclearButtonAlign.setRelativeToWidgetName(\"showButton\");\n\t\tclearButtonAlign.setMargin(0, -10, 2, 0);\n\t\tthis._clearButton.setLayoutParameter(clearButtonAlign);\n\n\t\tthis._showButton.addClickEventListener(this._show.bind(this));\n\t\tthis._hideButton.addClickEventListener(this._hide.bind(this));\n\t\tthis._clearButton.addClickEventListener(this._clearCallback.bind(this));\n\n\t\tthis.addChild(this._hideButton);\n\t\tthis.addChild(this._showButton);\n\t\tthis.addChild(this._clearButton);\n\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.SHOW_MSL, this._showButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.HIDE_MSL, this._hideButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.CLEAR_MSL, this._clearButton);\n\n\t\tvar buttonWidth = Math.max(this._hideButton.width, this._clearButton.width);\n\n\t\tthis.setContentSize(MethodStackLayer.INNER_WIDTH + buttonWidth, (this._stackCapacity) * ProgramContainerLayer.BUTTON_SIZE);\n\n\t\tthis._scroll = new MethodStackScrollLayer(cc.size(ProgramContainerLayer.BUTTON_SIZE,\n\t\t\tthis.height - ProgramContainerLayer.BUTTON_SIZE));\n\n\t\tthis._scroll.setMinimalPlaceholderHeight(1.5 * ProgramContainerLayer.BUTTON_SIZE);\n\t\tthis._scroll.setItemsPopCallback(this._removeMethods, this);\n\n\t\tvar scrollAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tscrollAlign.setMargin(MethodStackLayer.SCROLL_LEFT_MARGIN, 0, 0, MethodStackLayer.SCROLL_BOTTOM_MARGIN);\n\t\tthis._scroll.setLayoutParameter(scrollAlign);\n\n\t\tvar innerAlign = new ccui.RelativeLayoutParameter();\n\t\tinnerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tinnerAlign.setMargin(buttonWidth - MethodStackLayer.SCROLL_CORRECTION_X, 0, 0, 0);\n\t\tthis._innerLayer.setLayoutParameter(innerAlign);\n\n\t\tthis._innerLayer.addChild(this._scroll);\n\t\tthis.addChild(this._innerLayer);\n\n\t\tvar x = MethodStackLayer.SCROLL_LEFT_MARGIN + buttonWidth - MethodStackLayer.SCROLL_CORRECTION_X;\n\n\t\tthis._topPoint = cc.p(x, this.getContentSize().height - ProgramContainerLayer.BUTTON_SIZE);\n\t\tthis._curPoint = cc.p(x, MethodStackLayer.SCROLL_BOTTOM_MARGIN);\n\n\t\tthis._functionButtonStacks = {};\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\tthis._functionButtonStacks[this._level.robots[i].groupID] = [];\n\n\t\tthis._robotIdStack = [];\n\t\tthis._activeButtonsCount = 0;\n\n\t\tthis._methodListButton = pm.appUtils.createMethodListButton(0);\n\n\t\tvar dragStackButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tdragStackButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tdragStackButtonAlign.setMargin(0, 0, 0, 0);\n\t\tthis._methodListButton.setLayoutParameter(dragStackButtonAlign);\n\t\tthis._methodListButton.getMethodList = this._getMethodList.bind(this);\n\n\t\tthis._innerLayer.addChild(this._methodListButton, 0);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.DRAG_STACK, this._methodListButton, true);\n\n\t\tthis._innerLayer.setOpacity(0);\n\n\t\tthis._innerLayer._findElementByTouch = function(touch)\n\t\t{\n\t\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\t\tif(this.hidden || !this.enabled || this._functionButtonStacks[currentRobotGroupID].length === 0)\n\t\t\t\treturn null;\n\n\t\t\tif(cc.rectContainsPoint(this._methodListButton.getBoundingBox(), this._innerLayer.convertTouchToNodeSpace(touch)))\n\t\t\t\treturn this._methodListButton;\n\n\t\t\treturn null;\n\t\t}.bind(this);\n\n\t\tthis._innerLayer._cloneElement = function()\n\t\t{\n\t\t\tvar image = this._methodListButton.cloneImage();\n\t\t\tvar y = image.height;\n\n\t\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\t\tfor(var i = 0; i < this._functionButtonStacks[currentRobotGroupID].length; ++i)\n\t\t\t{\n\t\t\t\tvar clone = this._functionButtonStacks[currentRobotGroupID][i].cloneImage();\n\t\t\t\tclone.setAnchorPoint(0, 0.5);\n\t\t\t\tclone.setPosition(0, y);\n\t\t\t\tclone.setOpacity(0.8 * 255);\n\n\t\t\t\timage.addChild(clone, -(i + 1));\n\t\t\t\ty += clone.height / 2;\n\n\t\t\t\tvar action = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY * 2, 0, clone.height / 2);\n\t\t\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY * 2);\n\n\t\t\t\tclone.runAction(cc.sequence(delay, action));\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t}.bind(this);\n\n\t\tthis._innerLayer.addDNDEventListener(function(element, eventType, touch)\n\t\t{\n\t\t\tif (eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t\t\telement.select();\n\t\t}, this._innerLayer);\n\n\t\tpm.registerCustomEventListener(pm.ANIMATE_HIDE_BUTTON, this.animateHideButton.bind(this), this);\n\t},\n\n\tsetEnabled: function(flag)\n\t{\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\n\t\tthis._showButton.setEnabled(flag);\n\t\tthis._hideButton.setEnabled(flag);\n\t\tthis._clearButton.setEnabled(this.hidden || flag);\n\n\t\tthis._scroll.setEnabled(flag);\n\n\t\tif(flag)\n pm.sendCustomEvent(pm.METHOD_STACK_LAYER_ACTIVE_EVENT_STR);\n },\n\n\t_toggleIcons: function()\n\t{\n\t\tthis._showButton.setVisible( !this._showButton.isVisible() );\n\t\tthis._hideButton.setVisible( !this._hideButton.isVisible() );\n\t},\n\n\t_addMethod: function(button)\n\t{\n\t\tif(!button.isMethod() || !pm.robotManager.canAddForceCommand())\n\t\t\treturn;\n\n\t\tthis.setEnabled(false);\n\n\t\tthis._processMethod(button);\n\n\t\tvar sprite = button.cloneImage();\n\n\t\tvar draggedElementBB = button.getBoundingBoxToWorld();\n\t\tsprite.setScale(draggedElementBB.width / sprite.width);\n\n\t\tvar worldPosition = button.convertToWorldSpace(cc.p(0, 0));\n\t\tvar topWorldPoint = this.convertToWorldSpace(this._topPoint);\n\n\t\tsprite.setPosition(worldPosition);\n\n\t\tpm.runningSceneUtils.addChild(sprite);\n\n\t\tsprite.setAnchorPoint(cc.p(0, 0));\n\n\t\tvar moveSpriteParabolic = cc.jumpBy(3.0 * pm.SYSTEM_ANIMATION_DELAY, cc.pSub(topWorldPoint, sprite.getPosition()), 110.0, 1);\n\n\t\tvar moveToPoint = cc.p(this._curPoint);\n\t\tvar maximumYPoint = this.height - 1.5 * ProgramContainerLayer.BUTTON_SIZE;\n\t\tmoveToPoint.y = moveToPoint.y > maximumYPoint ? maximumYPoint : moveToPoint.y;\n\n\t\tvar curWorldPoint = this.convertToWorldSpace(moveToPoint);\n\n\t\tvar moveDownRatio = (this.height - moveToPoint.y) / this.height;\n\n\t\tvar moveSpriteDown = cc.moveTo(3.0 * pm.SYSTEM_ANIMATION_DELAY * moveDownRatio, curWorldPoint.x, curWorldPoint.y);\n\n\t\tvar reorder = cc.callFunc(function(obj)\n\t\t{\n\t\t\tobj.retain();\n pm.runningSceneUtils.removeChild(sprite, false);\n\t\t\tobj.setScale(1);\n\t\t\tthis._scroll.pushItem(obj);\n\t\t\tobj.release();\n\t\t}, this, sprite);\n\n\t\tvar moveEnd = cc.callFunc(this._endAddMethod, this);\n\n\t\tthis._curPoint.y += ProgramContainerLayer.BUTTON_SIZE;\n\n\t\tsprite.runAction( new cc.Sequence(moveSpriteParabolic, moveSpriteDown, reorder, moveEnd) );\n\t},\n\n\t_endAddMethod: function()\n\t{\n\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\tthis._methodListButton.value = this._functionButtonStacks[currentRobotGroupID].length;\n\t\tthis.setEnabled(true);\n\t},\n\n\t_removeMethods: function(removeCount)\n\t{\n\t\tif(pm.robotManager.state !== pm.RobotManager.State.Paused)\n\t\t\treturn false;\n\n\t\tif (removeCount > this._activeButtonsCount)\n\t\t\treturn false;\n\n\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\tvar count = 0;\n\n\t\tfor(var i = 0 ; i < removeCount; ++i)\n\t\t{\n\t\t\tvar button = this._functionButtonStacks[currentRobotGroupID].pop();\n\n\t\t\tif (!button)\n\t\t\t\treturn false;\n\n\t\t\tif (button.isMethod())\n\t\t\t\t++count;\n\n\t\t\tthis._curPoint.y -= ProgramContainerLayer.BUTTON_SIZE;\n\n\t\t\t--this._activeButtonsCount;\n\t\t\tthis._robotIdStack.pop();\n\t\t}\n\n\t\tpm.robotManager.revertForceCommands(pm.CMD_INDICATE, count);\n\n\t\tthis._methodListButton.value = this._functionButtonStacks[currentRobotGroupID].length;\n\n\t\tif(this._functionButtonStacks[currentRobotGroupID].length === 0)\n\t\t\tFunctionButton.deselect();\n\n\t\treturn true;\n\t},\n\n\t_processMethod: function(button)\n\t{\n\t\tif(button.isMethod())\n\t\t\tpm.robotManager.addForceCommand(button.value);\n\n\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\tthis._functionButtonStacks[currentRobotGroupID].push(button);\n\t\tthis._robotIdStack.push(currentRobotGroupID);\n\t\t++this._activeButtonsCount;\n\t},\n\n\t_clearCallback: function()\n\t{\n\t\tif(pm.robotManager.state !== pm.RobotManager.State.Paused)\n\t\t\treturn;\n\n\t\tthis._clear();\n\t},\n\n\t_clear: function()\n\t{\n\t\tthis._scroll.clear();\n\n\t\tfor (var o in this._functionButtonStacks)\n\t\t\tthis._functionButtonStacks[o].length = 0;\n\n\t\tthis._activeButtonsCount = 0;\n\t\tthis._robotIdStack = [];\n\n\t\tthis._clearButton.setEnabled(false);\n\n\t\tthis._curPoint.y = MethodStackLayer.SCROLL_BOTTOM_MARGIN;\n\n\t\tthis._methodListButton.value = 0;\n\t\tFunctionButton.deselect();\n\n\t\tpm.robotManager.state = pm.RobotManager.State.Paused;\n\t},\n\n\t_show: function(sender)\n\t{\n\t\tthis._functionButtonStacks = {};\n\n\t\tfor (var i = 0; i < this._level.robots.length; ++i)\n\t\t\tthis._functionButtonStacks[this._level.robots[i].groupID] = [];\n\n\t\tMethodStackLayer.opened = true;\n\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, -this._innerLayer.width - 5, 0);\n\n\t\tthis.setEnabled(false);\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 255);\n\n\t\tvar fadeColorLayer = cc.targetedAction(this._innerLayer, fadeLayer);\n\t\tvar fadeColorButton = cc.targetedAction(this._clearButton, fadeLayer.clone());\n\n\t\tvar moveEnd = cc.callFunc(this._showEnded, this);\n\n\t\tthis.runAction(cc.sequence(cc.spawn(moveLayer, fadeColorLayer, fadeColorButton), moveEnd));\n\n\t\tFunctionButton.deselect();\n\t},\n\n\t_hide: function(sender)\n\t{\n\t\tif (pm.robotManager.state !== pm.RobotManager.State.Paused && pm.robotManager.state !== pm.RobotManager.State.PausedByStep)\n\t\t\treturn;\n\n\t\tMethodStackLayer.opened = false;\n\n\t\tFunctionButton.deselect();\n\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, this._innerLayer.width + 5, 0);\n\n\t\tthis.setEnabled(false);\n\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\n\t\tvar fadeColorLayer = cc.targetedAction(this._innerLayer, fadeLayer);\n\t\tvar fadeColorButton = cc.targetedAction(this._clearButton, fadeLayer.clone());\n\n\t\tvar moveEnd = cc.callFunc(this._hideEnded, this);\n\n\t\tthis.runAction(cc.sequence(cc.spawn(moveLayer, fadeColorLayer, fadeColorButton), moveEnd) );\n\n\t\tpm.sendCustomEvent(pm.DISABLE_CONTROLLED_MODE_STR);\n\n\t\tpm.robotManager.setControlledMode(false);\n\t},\n\n\t_showEnded: function()\n\t{\n\t\tthis.hidden = false;\n\t\tthis.setEnabled(true);\n\t\tthis._clearButton.setEnabled(false);\n\t\tthis._toggleIcons();\n\n\t\tpm.sendCustomEvent(pm.ENABLE_CONTROLLED_MODE_STR,\n\t\t\tnew pm.ControlledModeData(this._addMethod, this));\n\n\t\tif(pm.settings.isAnimationDisabled())\n\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED);\n\n\t\tpm.robotManager.setControlledMode(true);\n\t\tpm.sendCustomEvent(pm.METHOD_STACK_LAYER_OPENED_EVENT_STR);\n\t},\n\n\t_hideEnded: function()\n\t{\n\t\tthis.hidden = true;\n\t\tthis._toggleIcons();\n\t\tthis.setEnabled(true);\n\t\tthis._clearButton.setEnabled(false);\n\t\tthis._clear();\n\n\t\tif(pm.settings.getAnimationSpeed() === pm.MIN_ANIMATION_SPEED)\n\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED - 0.01);\n\n\t\tpm.sendCustomEvent(pm.METHOD_STACK_LAYER_CLOSED_EVENT_STR);\n\t},\n\n\t_getMethodList: function()\n\t{\n\t\tvar currentRobotGroupID = this._level.getCurrentRobot().groupID;\n\n\t\tvar ret = [];\n\n\t\tfor(var i = 0; i < this._functionButtonStacks[currentRobotGroupID].length; ++i)\n\t\t{\n\t\t\tvar button = this._functionButtonStacks[currentRobotGroupID][i];\n\n\t\t\tret.push(button.value);\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tdrawRobotMethodList: function(robotGroupId)\n\t{\n\t\tthis._scroll.clear();\n\n\t\tthis._curPoint.y = MethodStackLayer.SCROLL_BOTTOM_MARGIN;\n\n\t\tthis._methodListButton.value = 0;\n\t\tFunctionButton.deselect();\n\n\t\tpm.robotManager.state = pm.RobotManager.State.Paused;\n\n\t\tthis._activeButtonsCount = 0;\n\n\t\tfor (i = this._robotIdStack.length - 1; i >= 0; --i)\n\t\t{\n\t\t\tif (robotGroupId === this._robotIdStack[i])\n\t\t\t\t++this._activeButtonsCount;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfor (var i = 0; i < this._functionButtonStacks[robotGroupId].length; ++i)\n\t\t{\n\t\t\tvar button = this._functionButtonStacks[robotGroupId][i];\n\n\t\t\tvar sprite = null;\n\n\t\t\tif (i < this._functionButtonStacks[robotGroupId].length - this._activeButtonsCount)\n\t\t\t\tsprite = button.cloneDisabledImage();\n\t\t\telse\n\t\t\t\tsprite = button.cloneImage();\n\n\t\t\tthis._scroll.pushItem(sprite);\n\n\t\t\tthis._curPoint.y += ProgramContainerLayer.BUTTON_SIZE;\n\t\t}\n\n\t\tthis._methodListButton.value = this._functionButtonStacks[robotGroupId].length;\n\t},\n\n\tanimateHideButton: function ()\n\t{\n\t\tvar showSelected = cc.callFunc(function()\n\t\t{\n\t\t\tthis.setHighlighted(true);\n\t\t}, this._hideButton);\n\n\t\tvar showNormal = cc.callFunc(function()\n\t\t{\n\t\t\tthis.setHighlighted(false);\n\t\t}, this._hideButton);\n\n\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY);\n\n\t\tthis._hideButton.runAction(cc.repeat(cc.sequence(showSelected, delay, showNormal, delay), 2));\n\t}\n\n});\n\n/**\n * Outer right margin when showed.\n * @const\n * @default\n * @type {Number}\n */\nMethodStackLayer.OUTER_RIGHT_MARGIN = 5;\nMethodStackLayer.INNER_WIDTH = 83;\nMethodStackLayer.CONTROL_BUTTONS_MARGIN = 40;\nMethodStackLayer.SCROLL_BOTTOM_MARGIN = 45;\nMethodStackLayer.SCROLL_LEFT_MARGIN = 22;\nMethodStackLayer.SCROLL_CORRECTION_X = 2;\n\n/**\n * Current state of method stack (opened or closed).\n */\nMethodStackLayer.opened = false;\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * This callback is used when changed state of game(start, restart).\n * @callback ProgramControlLayer~changeStateCallback\n */\n\n/**\n * @class Layer which contains buttons for controlling program.\n * @extends pmui.DragAndDropLayout\n * @constructor\n * @param {Boolean} showStartAllButton\n * @param {Boolean} isNetGame Is a network game.\n * @param {Boolean} useProgramRecognizer\n */\nvar ProgramControlLayer = pmui.DragAndDropLayout.extend(/** @lends ProgramControlLayer# */{\n\n\t_showStartAllButton: null,\n\t_isNetGame: false,\n\t_useProgramRecognizer: null,\n\n\t_startProgramButton: null,\n\t_restartProgramButton: null,\n\t_makeStepButton: null,\n\t_startAllButton: null,\n\t_infoButton: null,\n\t_settingsButton: null,\n\t_changeViewModeButton: null,\n\n\t_changeSpeedButton: null,\n\t_turboButton: null,\n\t_velocity: null,\n\n\t_recognizeResultButton: null,\n\n\tctor: function (showStartAllButton, isNetGame, useProgramRecognizer)\n\t{\n\t\tthis._showStartAllButton = showStartAllButton;\n\t\tthis._isNetGame = isNetGame;\n\t\tthis._useProgramRecognizer = useProgramRecognizer;\n\n\t\tthis._super(pmui.DragAndDropLayout.Type.DRAG_ONLY);\n\t\tthis.addDropTargetName(ProgramContainerLayer.DNDNAME);\n\t\tthis.addDNDEventListener(this._dndEventCallback, this);\n\n\t\tthis.ignoreBoundingBox = true;\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\t\n\t\tvar width = pm.appUtils.getProgramLayerWidth();\n\n\t\tif(screenBounds.safeAreas.right)\n\t\t\twidth += screenBounds.right / 2;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setBackGroundImage(\"System/PCL_Background.png\");\n\t\tthis.setBackGroundImageCapInsets(cc.rect(180, 85, 180, 40));\n\t\tthis.setContentSize(width + 10, ProgramControlLayer.HEIGHT);\n\n\t\tthis._loadInterface();\n\n\t\tpm.registerCustomEventListener(pm.ANIMATE_RESTART_BUTTON, function()\n\t\t{\n\t\t\tvar showSelected = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis.setHighlighted(true);\n\t\t\t}, this._restartProgramButton);\n\n\t\t\tvar showNormal = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis.setHighlighted(false);\n\t\t\t}, this._restartProgramButton);\n\n\t\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY);\n\n\t\t\tthis._restartProgramButton.runAction(cc.repeat(cc.sequence(showSelected, delay, showNormal, delay), 2));\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.MULTIMAP_MODE, function (event)\n\t\t{\n\t\t\tthis._showStartAllButton = event.getUserData();\n\n\t\t\tthis.reloadInterface();\n\t\t}.bind(this), this);\n\t},\n\n\treloadInterface: function()\n\t{\n\t\tthis.removeAllChildren(true);\n\t\tthis._loadInterface();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar turboMode = pm.settings.getUseTurboMode();\n\t\tvar relativeStartName = this._showStartAllButton ? \"startAll\" : \"start\";\n\t\tvar relativeSpeedName = turboMode ? \"turbo\" : \"speed\";\n\n\t\tvar separator = 0;\n\t\tvar margin = 0;\n\n\t\tif (!this._showStartAllButton && !turboMode)\n\t\t{\n\t\t\tseparator = ProgramControlLayer.BUTTON_SEPARATOR1;\n\t\t\tmargin = ProgramControlLayer.HORIZONTAL_MARGIN2;\n }\n\t\telse if (this._showStartAllButton && turboMode)\n\t\t{\n\t\t\tseparator = ProgramControlLayer.BUTTON_SEPARATOR3;\n margin = ProgramControlLayer.HORIZONTAL_MARGIN1;\n }\n\t\telse\n\t\t{\n\t\t\tseparator = ProgramControlLayer.BUTTON_SEPARATOR2;\n margin = ProgramControlLayer.HORIZONTAL_MARGIN2;\n }\n\n\t\tthis._infoButton = new pmui.Button( pm.spriteUtils.getIconName(\"info\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"info\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"info\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tvar infoAlign = new ccui.RelativeLayoutParameter();\n\t\tinfoAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tinfoAlign.setMargin(margin, ProgramControlLayer.VERTICAL_MARGIN, 0, 0);\n\t\tinfoAlign.setRelativeName(\"info\");\n\t\tthis._infoButton.setLayoutParameter(infoAlign);\n\n\t\tthis._infoButton.setName(\"info\");\n\t\tthis._infoButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\tthis.addChild(this._infoButton);\n\n\t\tif(pm.appConfig.appType === \"pm-k\") {\n\t\t\tthis._changeViewModeButton = new pmui.Button(pm.spriteUtils.getIconName(\"rowsChange\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"rowsChange\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"rowsChange\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar changerowsAlign = new ccui.RelativeLayoutParameter();\n\t\t\tchangerowsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tchangerowsAlign.setMargin(0, ProgramControlLayer.TOP_SEPARATOR, 0, 0);\n\t\t\tchangerowsAlign.setRelativeName(\"changerows\");\n\t\t\tchangerowsAlign.setRelativeToWidgetName(\"info\");\n\t\t\tthis._changeViewModeButton.setLayoutParameter(changerowsAlign);\n\n\t\t\tthis._changeViewModeButton.setName(\"changerows\");\n\t\t\tthis._changeViewModeButton.addClickEventListener(this._buttonPressed.bind(this));\n\n\t\t\tthis.addChild(this._changeViewModeButton);\n\t\t}\n\n\t\tif(pm.settings.isEditorMode && pm.appConfig.appType === \"pm\")\n\t\t{\n\t\t\tvar changeRowsButton = new pmui.Button(pm.spriteUtils.getIconName(\"rowsChange\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"rowsChange\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"rowsChange\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar changerowsAlign = new ccui.RelativeLayoutParameter();\n\t\t\tchangerowsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tchangerowsAlign.setMargin(0, ProgramControlLayer.TOP_SEPARATOR, 0, 0);\n\t\t\tchangerowsAlign.setRelativeName(\"changerows\");\n\t\t\tchangerowsAlign.setRelativeToWidgetName(\"info\");\n\t\t\tchangeRowsButton.setLayoutParameter(changerowsAlign);\n\n\t\t\tchangeRowsButton.setName(\"changerows\");\n\t\t\tchangeRowsButton.addClickEventListener(this._buttonPressed.bind(this));\n\n\t\t\tthis.addChild(changeRowsButton);\n\t\t}\n\t\telse if(this._useProgramRecognizer)\n\t\t{\n\t\t\tvar recognizeProgramButton = new pmui.Button(pm.spriteUtils.getIconName(\"photo\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"photo\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"photo\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar recognizeAlign = new ccui.RelativeLayoutParameter();\n\t\t\trecognizeAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\trecognizeAlign.setMargin(0, ProgramControlLayer.TOP_SEPARATOR, 0, 0);\n\t\t\trecognizeAlign.setRelativeName(\"recognize\");\n\t\t\trecognizeAlign.setRelativeToWidgetName(\"info\");\n\t\t\trecognizeProgramButton.setLayoutParameter(recognizeAlign);\n\n\t\t\trecognizeProgramButton.setName(\"recognize\");\n\t\t\trecognizeProgramButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\t\tthis.addChild(recognizeProgramButton);\n\n\t\t\tthis._recognizeResultButton = new RecognizeResultButton({});\n\n\t\t\tvar recognizeResultAlign = new ccui.RelativeLayoutParameter();\n\t\t\trecognizeResultAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\t\trecognizeResultAlign.setMargin(0, 0, ProgramControlLayer.TOP_SEPARATOR, 0);\n\t\t\trecognizeResultAlign.setRelativeToWidgetName(\"recognize\");\n\t\t\tthis._recognizeResultButton.setLayoutParameter(recognizeResultAlign);\n\n\t\t\tthis.addChild(this._recognizeResultButton);\n\n\t\t\tthis._recognizeResultButton.setVisible(false);\n\t\t}\n\n\t\tthis._startProgramButton = new pmui.Button( pm.spriteUtils.getIconName(\"start\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"start\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"start\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tvar startAlign = new ccui.RelativeLayoutParameter();\n\t\tstartAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tstartAlign.setMargin(separator, 0, 0, 0);\n\t\tstartAlign.setRelativeName(\"start\");\n\t\tstartAlign.setRelativeToWidgetName(\"info\");\n\t\tthis._startProgramButton.setLayoutParameter(startAlign);\n\n\t\tthis._startProgramButton.setName(\"start\");\n\t\tthis._startProgramButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\tthis.addChild(this._startProgramButton);\n\n\t\tif(this._showStartAllButton)\n\t\t{\n\t\t\tthis._startAllButton = new pmui.Button(pm.spriteUtils.getIconName(\"startAll\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"startAll\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"startAll\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tvar startAllAlign = new ccui.RelativeLayoutParameter();\n\t\t\tstartAllAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tstartAllAlign.setMargin(ProgramControlLayer.BUTTON_SEPARATOR3, 0, 0, 0);\n\t\t\tstartAllAlign.setRelativeName(\"startAll\");\n\t\t\tstartAllAlign.setRelativeToWidgetName(\"start\");\n\t\t\tthis._startAllButton.setLayoutParameter(startAllAlign);\n\n\t\t\tthis._startAllButton.setName(\"startAll\");\n\t\t\tthis._startAllButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\t\tthis._startAllButton.setEnabled(this._showStartAllButton);\n\t\t\tthis.addChild(this._startAllButton);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.START_ALL_PROGRAM, this._startAllButton);\n\t\t}\n\n\t\tthis._makeStepButton = new pmui.Button( pm.spriteUtils.getIconName(\"makeStep\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"makeStep\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"makeStep\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tvar makeStepAlign = new ccui.RelativeLayoutParameter();\n\t\tmakeStepAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tmakeStepAlign.setMargin(ProgramControlLayer.BUTTON_SEPARATOR3, 0, 0, 0);\n\t\tmakeStepAlign.setRelativeName(\"makeStep\");\n\t\tmakeStepAlign.setRelativeToWidgetName(relativeStartName);\n\t\tthis._makeStepButton.setLayoutParameter(makeStepAlign);\n\n\t\tthis._makeStepButton.setName(\"makeStep\");\n\t\tthis._makeStepButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\tthis.addChild(this._makeStepButton);\n\n\t\tthis._restartProgramButton = new pmui.Button(pm.spriteUtils.getIconName(\"restart\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"restart\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"restart\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar restartAlign = new ccui.RelativeLayoutParameter();\n\t\trestartAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\trestartAlign.setMargin(ProgramControlLayer.BUTTON_SEPARATOR3, 0, 0, 0);\n\t\trestartAlign.setRelativeName(\"restart\");\n\t\trestartAlign.setRelativeToWidgetName(\"makeStep\");\n\t\tthis._restartProgramButton.setLayoutParameter(restartAlign);\n\n\t\tthis._restartProgramButton.setName(\"restart\");\n\t\tthis._restartProgramButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\tthis.addChild(this._restartProgramButton);\n\n\t\tthis._velocity = this._getVelocity();\n\n\t\tvar texture = this._getSpeedButtonTexture();\n\n\t\tthis._changeSpeedButton = new pmui.Button(pm.spriteUtils.getIconName(texture, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(texture, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(texture, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tif (this._isTurboEnabled())\n\t\t{\n\t\t\tif (turboMode)\n\t\t\t{\n\t\t\t\tif(pm.settings.getAnimationSpeed() === pm.MIN_ANIMATION_SPEED)\n\t\t\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED - 0.01);\n\n\t\t\t\tthis._changeSpeedButton.setBright(false);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpm.settings.setAnimationSpeed(this._getSpeed());\n\t\t\t}\n\t\t}\n\n\t\tthis._changeSpeedButton.addClickEventListener(this._changeSpeed.bind(this));\n\n\t\tvar speedAlign = new ccui.RelativeLayoutParameter();\n\t\tspeedAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tspeedAlign.setMargin(ProgramControlLayer.BUTTON_SEPARATOR3, 0, 0, 0);\n\t\tspeedAlign.setRelativeName(\"speed\");\n\t\tspeedAlign.setRelativeToWidgetName(\"restart\");\n\t\tthis._changeSpeedButton.setLayoutParameter(speedAlign);\n\n\t\tthis.addChild(this._changeSpeedButton);\n\n\t\tif (turboMode)\n\t\t{\n\t\t\tvar state = this._getTurboButtonState();\n\n\t\t\tthis._turboButton = new pmui.Button(pm.spriteUtils.getIconName(\"speedMax\", state),\n\t\t\t\tpm.spriteUtils.getIconName(\"speedMax\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"speedMax\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tthis._turboButton.addClickEventListener(this._turnMaxSpeed.bind(this));\n\n\t\t\tvar turboAlign = new ccui.RelativeLayoutParameter();\n\t\t\tturboAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tturboAlign.setMargin(ProgramControlLayer.BUTTON_SEPARATOR3, 0, 0, 0);\n\t\t\tturboAlign.setRelativeName(\"turbo\");\n\t\t\tturboAlign.setRelativeToWidgetName(\"speed\");\n\t\t\tthis._turboButton.setLayoutParameter(turboAlign);\n\n\t\t\tthis.addChild(this._turboButton);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.MAX_SPEED, this._turboButton);\n\t\t}\n\n\t\tthis._settingsButton = new pmui.Button( pm.spriteUtils.getIconName(\"settings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"settings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"settings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE );\n\n\t\tif (screenBounds.safeAreas.right)\n\t\t\tmargin += screenBounds.right / 2;\n\n\t\tvar optionsAlign = new ccui.RelativeLayoutParameter();\n\t\toptionsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\toptionsAlign.setMargin(0, ProgramControlLayer.VERTICAL_MARGIN, margin, 0);\n\t\toptionsAlign.setRelativeToWidgetName(relativeSpeedName);\n\t\tthis._settingsButton.setLayoutParameter(optionsAlign);\n\n\t\tthis._settingsButton.setName(\"settings\");\n\t\tthis._settingsButton.addClickEventListener(this._buttonPressed.bind(this));\n\t\tthis.addChild(this._settingsButton);\n\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.START_PROGRAM, this._startProgramButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.RESTART_PROGRAM, this._restartProgramButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.MAKE_STEP, this._makeStepButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.GLOBAL_HINT, this._infoButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.SETTINGS, this._settingsButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.CHANGE_SPEED, this._changeSpeedButton);\n\t},\n\n\t_findElementByTouch: function(touch)\n\t{\n\t\tif(!this._recognizeResultButton)\n\t\t\treturn null;\n\n\t\tvar localTouch = this.convertTouchToNodeSpace(touch);\n\t\tvar recognizeBB = this._recognizeResultButton.getBoundingBox();\n\n\t\tif(cc.rectContainsPoint(recognizeBB, localTouch))\n\t\t\treturn this._recognizeResultButton;\n\n\t\treturn null;\n\t},\n\n\t_cloneElement: function(element)\n\t{\n\t\treturn this._recognizeResultButton.cloneImage();\n\t},\n\n\t_dndEventCallback: function(element, eventType, touch)\n\t{\n\t\tif(eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t\telement.select();\n\t},\n\n\t_buttonPressed: function(sender)\n\t{\n\t\tswitch(sender.getName())\n\t\t{\n\t\t\tcase \"start\":\n\t\t\t\t// if(this._isNetGame)\n\t\t\t\t// pm.sendCustomEvent(pm.TEST_CURRENT_ROBOT_EVENT_STR);\n\t\t\t\t// else\n\t\t\t\tpm.sendCustomEvent(pm.PROGRAM_START_EVENT_STR);\n\n\t\t\t\tthis._startProgramButton.setEnabled(false);\n\t\t\t\tif(pm.appConfig.appType === \"pm-k\")\n\t\t\t\t\tthis._changeViewModeButton.setEnabled(false);\n\n\t\t\t\tif (this._startAllButton)\n\t\t\t\t\tthis._startAllButton.setEnabled(false);\n\n\t\t\t\tbreak;\n\t\t\tcase \"restart\":\n\t\t\t\tpm.sendCustomEvent(pm.PROGRAM_RESTART_EVENT_STR);\n\t\t\t\tthis._startProgramButton.setEnabled(true);\n\t\t\t\tif(pm.appConfig.appType === \"pm-k\")\n\t\t\t\t\tthis._changeViewModeButton.setEnabled(true);\n\t\t\t\tbreak;\n\t\t\tcase \"makeStep\":\n\t\t\t\tpm.sendCustomEvent(pm.PROGRAM_MAKE_STEP_EVENT_STR);\n\t\t\t\tthis._startProgramButton.setEnabled(true);\n\t\t\t\tif(pm.appConfig.appType === \"pm-k\")\n\t\t\t\t\tthis._changeViewModeButton.setEnabled(false);\n\n\t\t\t\tif (this._startAllButton)\n\t\t\t\t\tthis._startAllButton.setEnabled(false);\n\n\t\t\t\tbreak;\n\t\t\tcase \"startAll\":\n\t\t\t\tpm.sendCustomEvent(pm.PROGRAM_TESL_ALL_MAPS_EVENT_STR);\n\t\t\t\tthis._startProgramButton.setEnabled(false);\n\t\t\t\tthis._startAllButton.setEnabled(false);\n\t\t\t\tif(pm.appConfig.appType === \"pm-k\")\n\t\t\t\t\tthis._changeViewModeButton.setEnabled(false);\n\t\t\t\tthis._makeStepButton.setEnabled(false);\n\t\t\t\tbreak;\n\t\t\tcase \"info\":\n\t\t\t\tpm.sendCustomEvent(pm.SHOW_INFO);\n\t\t\t\tbreak;\n\t\t\tcase \"recognize\":\n\t\t\t\tpm.sendCustomEvent(pm.RECOGNIZE_PROGRAM);\n\t\t\t\tbreak;\n\t\t\tcase \"settings\":\n\t\t\t\tif (cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\t\t\treturn;\n\n\t\t\t\tvar settingsLayer = new SettingsLayer(this, this._closeOptions, false);\n\t\t\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t\t\t\tbreak;\n\t\t\tcase \"changerows\":\n\t\t\t\tpm.sendCustomEvent(pm.ADD_OR_REMOVE_ROWS, {\n\t\t\t\t\tbutton: sender\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_getVelocity: function()\n\t{\n\t\tvar animSpeed = pm.settings.getAnimationSpeed();\n\t\tif (animSpeed > pm.MIN_ANIMATION_SPEED && animSpeed <= pm.SMALL_ANIMATION_SPEED)\n\t\t\treturn this.VELOCITY.Fast;\n\t\telse if (animSpeed > pm.SMALL_ANIMATION_SPEED && animSpeed <= pm.MEDIUM_ANIMATION_SPEED)\n\t\t\treturn this.VELOCITY.Medium;\n\t\telse if (animSpeed <= pm.MAX_ANIMATION_SPEED)\n\t\t\treturn this.VELOCITY.Low;\n\t},\n\n\t_getSpeedButtonTexture: function()\n\t{\n\t\tswitch (this._velocity)\n\t\t{\n\t\t\tcase this.VELOCITY.Low:\n\t\t\t\treturn \"speedFirst\";\n\t\t\tcase this.VELOCITY.Medium:\n\t\t\t\treturn \"speedSecond\";\n\t\t\tcase this.VELOCITY.Fast:\n\t\t\t\treturn \"speedThird\";\n\t\t}\n\t},\n\n\t_getTurboButtonState: function()\n\t{\n\t\treturn this._isTurboEnabled() ? pm.SELECTED_STATE : pm.NORMAL_STATE;\n\t},\n\n\t_getSpeed: function()\n\t{\n\t\tswitch (this._velocity)\n\t\t{\n\t\t\tcase this.VELOCITY.Low:\n\t\t\t\treturn pm.MAX_ANIMATION_SPEED;\n\t\t\tcase this.VELOCITY.Medium:\n\t\t\t\treturn pm.MEDIUM_ANIMATION_SPEED;\n\t\t\tcase this.VELOCITY.Fast:\n\t\t\t\treturn pm.SMALL_ANIMATION_SPEED;\n\t\t}\n\t},\n\n\t_changeSpeed: function()\n\t{\n\t\tif (this._isTurboEnabled())\n\t\t{\n\t\t\tthis._turnOffMaxSpeed();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._velocity !== this.VELOCITY.Fast)\n\t\t\tthis._velocity++;\n\t\telse\n\t\t\tthis._velocity = this.VELOCITY.Low;\n\n\t\tvar texture = this._getSpeedButtonTexture();\n\n\t\tthis._changeSpeedButton.loadTextures(pm.spriteUtils.getIconName(texture, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(texture, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(texture, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tpm.settings.setAnimationSpeed(this._getSpeed());\n\t},\n\n\t_turnMaxSpeed: function()\n\t{\n\t\tif (this._isTurboEnabled())\n\t\t{\n\t\t\tthis._turnOffMaxSpeed();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._turboButton.loadTextureNormal(pm.spriteUtils.getIconName(\"speedMax\", pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\n\t\t\tif (this.getParent().isControlled())\n\t\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED);\n\t\t\telse\n\t\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED - 0.01);\n\n\t\t\tthis._changeSpeedButton.setBright(false);\n\t\t}\n\t},\n\n\t_turnOffMaxSpeed: function()\n\t{\n\t\tif (this._turboButton)\n\t\t\tthis._turboButton.loadTextureNormal(pm.spriteUtils.getIconName(\"speedMax\", pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\n\t\tpm.settings.setAnimationSpeed(this._getSpeed());\n\t\tthis._changeSpeedButton.setBright(true);\n\t},\n\n\t_isTurboEnabled: function()\n\t{\n\t\treturn pm.settings.getAnimationSpeed() <= pm.MIN_ANIMATION_SPEED;\n\t},\n\n\t_closeOptions: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t},\n\n\t/**\n * Sets buttons enabled.\n * @param {Boolean} flag\n */\n\tsetButtonsEnabled: function(flag)\n\t{\n\t\tthis._startProgramButton.setEnabled(flag);\n\t\tif(pm.appConfig.appType === \"pm-k\")\n\t\t\tthis._changeViewModeButton.setEnabled(flag);\n\t\tthis._restartProgramButton.setEnabled(flag);\n\t\tthis._makeStepButton.setEnabled(flag);\n\n\t\tif (flag === true && this._isTurboEnabled())\n\t\t\tthis._changeSpeedButton.setBright(false);\n\n\t\tif(this._showStartAllButton)\n\t\t\tthis._startAllButton.setEnabled(flag);\n\n\t\tif(this._recognizeResultButton)\n\t\t\tthis._recognizeResultButton.setEnabled(flag);\n\t},\n\n\tshowRecognizeResultButton: function(predictions)\n\t{\n\t\tif(this._recognizeResultButton)\n\t\t{\n\t\t\tthis._recognizeResultButton.setVisible(true);\n\t\t\tthis._recognizeResultButton.value = predictions;\n\t\t}\n\t},\n\n\thideRecognizeResultButton: function()\n\t{\n\t\tif(this._recognizeResultButton)\n\t\t\tthis._recognizeResultButton.setVisible(false);\n\t},\n\n\tVELOCITY: {\n\t\tLow: 0,\n\t\tMedium: 1,\n\t\tFast: 2\n\t}\n});\n\n/**\n * Separators for buttons in {@link ProgramControlLayer}.\n * @const\n * @default\n * @type {Number}\n */\nProgramControlLayer.BUTTON_SEPARATOR1 = 41.8;\nProgramControlLayer.BUTTON_SEPARATOR2 = 19.0;\nProgramControlLayer.BUTTON_SEPARATOR3 = 0.5;\nProgramControlLayer.TOP_SEPARATOR = 18;\nProgramControlLayer.HORIZONTAL_MARGIN1 = 1;\nProgramControlLayer.HORIZONTAL_MARGIN2 = 5;\nProgramControlLayer.VERTICAL_MARGIN = 3;\nProgramControlLayer.BORDER_X = 76;\nProgramControlLayer.BORDER_Y = 11;\nProgramControlLayer.HEIGHT = 134;\n\n","/**\n * Created by Nikita Besshaposhnikov on 31.07.15.\n */\n\n/**\n * @class Layer for display hints. Hints are stacked.\n * @example\n * var hint = new HintLayer(\"I'm hint!\");\n * hint.show();\n * @extends pmui.PopupLayer\n * @constructor\n * @param {String} text Text of hint.\n */\nvar HintLayer = pmui.PopupLayer.extend(/** @lends HintLayer# */{\n\t_visible: true,\n\n\tctor: function(text, isNetGame)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar worldLabelText = \"\";\n\t\tvar gameLabelText = \"\";\n\n\t\tif(!isNetGame)\n\t\t{\n\t\t\tworldLabelText = LocalizedString(\"WorldPattern\").format(pm.settings.getWorldRecord().name);\n\t\t\tgameLabelText = world.getGameName(pm.settings.getGame());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tworldLabelText = LocalizedString(\"NetGame\");\n\t\t\tgameLabelText = world.runningLevel.name;\n\t\t}\n\n\t\tvar worldLabel = new ccui.Text(worldLabelText, pm.settings.fontBoldName, 25);\n\t\tvar gameLabel = new ccui.Text(gameLabelText, pm.settings.fontBoldName, 15);\n\n\t\tvar worldLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tworldLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tworldLabelAlign.setMargin(0, pmui.OvalLayout.SLIM_BORDER_RADIUS + HintLayer.HINT_SEPARATOR, 0, 0);\n\t\tworldLabelAlign.setRelativeName(\"worldLabel\");\n\t\tworldLabel.setLayoutParameter(worldLabelAlign);\n\n\t\tvar gameLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tgameLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tgameLabelAlign.setRelativeName(\"gameLabel\");\n\t\tgameLabelAlign.setRelativeToWidgetName(\"worldLabel\");\n\t\tgameLabel.setLayoutParameter(gameLabelAlign);\n\n\t\tthis.addChild(worldLabel);\n\t\tthis.addChild(gameLabel);\n\n\t\tvar width = Math.max(worldLabel.getContentSize().width, gameLabel.getContentSize().width) + 2 * HintLayer.HINT_SEPARATOR;\n\t\tvar height = worldLabel.getContentSize().height + gameLabel.getContentSize().height + 2 * HintLayer.HINT_SEPARATOR;\n\n if (!isNetGame)\n {\n var levelLabelText = world.getLevelName(pm.settings.getGame(), pm.settings.getLevel());\n var levelLabel = new ccui.Text(levelLabelText, pm.settings.fontBoldName, 15);\n\n width = Math.max(width, levelLabel.getContentSize().width + 2 * HintLayer.HINT_SEPARATOR);\n height += levelLabel.getContentSize().height;\n\n var levelLabelAlign = new ccui.RelativeLayoutParameter();\n levelLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n levelLabelAlign.setRelativeName(\"levelLabel\");\n levelLabelAlign.setRelativeToWidgetName(\"gameLabel\");\n levelLabel.setLayoutParameter(levelLabelAlign);\n\n this.addChild(levelLabel);\n }\n\n\t\tif (text && text !== \"\")\n\t\t{\n\t\t\tvar label = new ccui.Text(text, pm.settings.fontName, pm.settings.fontSize);\n\t\t\tlabel.setTextAreaSize(cc.size(HintLayer.TEXT_WIDTH, 0));\n\t\t\tlabel.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\n\t\t\twidth = Math.max(width, label.getContentSize().width);\n\t\t\theight += label.getContentSize().height;\n\n\t\t\tvar relativeName = isNetGame ? \"gameLabel\" : \"levelLabel\";\n\n\t\t\tvar labelMargin = new ccui.RelativeLayoutParameter();\n\t\t\tlabelMargin.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\t\tlabelMargin.setRelativeToWidgetName(relativeName);\n\t\t\tlabelMargin.setMargin(0, HintLayer.HINT_SEPARATOR, 0, 0);\n\t\t\tlabel.setLayoutParameter(labelMargin);\n\n\t\t\tthis.addChild(label);\n\t\t}\n\n\t\tthis.setContentSizeWithBorder(width, height);\n\n\t\tthis.setHideCallback(this._onHide, this);\n\n\t\tHintLayer._hints.push(this);\n\t},\n\n\t_onHide: function()\n\t{\n\t\tthis._visible = false;\n\n\t\tvar index = HintLayer._hints.indexOf(this);\n\t\tHintLayer._hints.splice(index, 1);\n\n\t\tif(index === HintLayer._hints.length)\n\t\t\treturn;\n\n\t\tfor(var i = index; i < HintLayer._hints.length; ++i)\n\t\t{\n\t\t\tvar x = HintLayer._hints[i].getPositionX();\n\t\t\tvar y = HintLayer._hints[i].getPositionY() - this.getContentSize().height - HintLayer.HINT_SEPARATOR;\n\t\t\tvar move = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY, x, y);\n\n\t\t\tHintLayer._hints[i].runAction(move);\n\t\t}\n\t},\n\n\t/**\n * Shows hint on screen.\n */\n\tshow: function()\n\t{\n\t\tif(HintLayer._hints.length === 1)\n\t\t\tHintLayer._lastY = pm.settings.getMapSize().height - this.getContentSize().height - 15;\n\n\t\tvar positionX = pm.settings.getMapSize().width / 2 - this.getContentSize().width / 2;\n\n\t\tthis.setPosition(positionX, HintLayer._lastY);\n\n\t\tcc.director.getRunningScene().addChild(this, 10);\n\t\tthis._visible = true;\n\n\t\tHintLayer._lastY += this.getContentSize().height + HintLayer.HINT_SEPARATOR;\n\t},\n\n\t/**\n\t * Determines if the hint is visible.\n\t * @returns {boolean} true if the hint is visible, false if the hint is hidden.\n\t */\n\tisVisible: function()\n\t{\n\t\treturn this._visible;\n\t}\n});\n\nHintLayer._lastY = 0;\nHintLayer._hints = [];\n\n/**\n * Separator between hints.\n * @const\n * @default\n * @type {Number}\n */\nHintLayer.HINT_SEPARATOR = 5;\n/**\n * Limit for width of text.\n * @const\n * @default\n * @type {Number}\n */\nHintLayer.TEXT_WIDTH = 300;\n","/**\n * Created by Diana Agliamutdinova\n */\n\n/**\n * @class This layer is used for number input in PikromirK\n * @extends ccui.Layout\n * @constructor\n */\nvar NumberInputLayer = ccui.Layout.extend(/** @lends NumberInputLayer# */{\n\t_innerLayer: null,\n\t_hideButton: null,\n\t_originalAnimationSpeed: 0,\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t\tNumberInputLayer.isOpened = false;\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setBackGroundImage(\"System/interfaceBG.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(true);\n\t\tthis.setBackGroundImageCapInsets(cc.rect(80, 90, 100, 70));\n\n\t\tthis._innerLayer = new ccui.Layout();\n\t\tthis._innerLayer.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis._innerLayer.setCascadeOpacityEnabled(true);\n\t\tthis._innerLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_GRADIENT);\n\t\tthis._innerLayer.setBackGroundColorVector(cc.p(0, -1));\n\t\tthis._innerLayer.setBackGroundColor(NumberInputLayer.GRAD_START_COLOR, NumberInputLayer.GRAD_END_COLOR);\n\t\tthis.createALignSome(this._innerLayer, \"\", \"\", ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\n\t\tvar button = null;\n\t\tfor (var i = 0; i < 9; i++)\n\t\t{\n\t\t\tvar label = (i + 1) % 10;\n\t\t\tbutton = new pmui.Button(pm.spriteUtils.getNumberButtonSpriteName(label, pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getNumberButtonSpriteName(label, pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getNumberButtonSpriteName(label, pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tbutton.number = label;\n\t\t\tif (i === 0)\n\t\t\t{\n\t\t\t\tthis.createALignSome(button, \"\", NumberInputLayer.BUTTONS_RELATIVE_NAME + i, ccui.RelativeLayoutParameter.PARENT_TOP_LEFT, NumberInputLayer.INNER_MARGIN / 2, NumberInputLayer.INNER_MARGIN / 2, 0, 0);\n\t\t\t}\n\t\t\telse if (i % 3 !== 0)\n\t\t\t{\n\t\t\t\tthis.createALignSome(button, NumberInputLayer.BUTTONS_RELATIVE_NAME + (i - 1), NumberInputLayer.BUTTONS_RELATIVE_NAME + i, ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, NumberInputLayer.BUTTONS_MARGIN, 0, 0, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.createALignSome(button, NumberInputLayer.BUTTONS_RELATIVE_NAME + (i - 3), NumberInputLayer.BUTTONS_RELATIVE_NAME + i, ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, 0, NumberInputLayer.BUTTONS_MARGIN, 0, 0);\n\t\t\t}\n\t\t\tbutton.addClickEventListener(this._onNumberClick.bind(this));\n\t\t\tthis._innerLayer.addChild(button);\n\t\t}\n\n\t\tvar minus = new pmui.Button(pm.spriteUtils.getIconName(\"minus\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"minus\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"minus\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tminus.addClickEventListener(this._onMinusNumber.bind(this));\n\t\tthis.createALignSome(minus, \"zero\", \"minus\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, NumberInputLayer.BUTTONS_MARGIN, 0, 0, 0);\n\t\tthis._innerLayer.addChild(minus);\n\n\t\tvar zeroButton = new pmui.Button(pm.spriteUtils.getNumberButtonSpriteName(0, pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getNumberButtonSpriteName(0, pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getNumberButtonSpriteName(0, pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tzeroButton.number = 0;\n\t\tzeroButton.addClickEventListener(this._onNumberClick.bind(this));\n\t\tthis.createALignSome(zeroButton, \"remove\", \"zero\", ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER, NumberInputLayer.BUTTONS_MARGIN, 0, 0, 0);\n\t\tthis._innerLayer.addChild(zeroButton);\n\n\t\tthis._hideButton = new pmui.Button(pm.spriteUtils.getIconName(\"cfblHide\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tthis.createALignSome(this._hideButton, \"remove\", \"\", ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL, -this._hideButton.width, 0, 0, 0);\n\t\tthis._hideButton.addClickEventListener(this._hide.bind(this));\n\t\tthis.addChild(this._hideButton);\n\t\tthis._hideButton.setVisible(false);\n\n\t\tvar remove = new pmui.Button(pm.spriteUtils.getIconName(\"remove\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"remove\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"remove\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tremove.addClickEventListener(this._onRemoveNumber.bind(this));\n\t\tthis.createALignSome(remove, NumberInputLayer.BUTTONS_RELATIVE_NAME + 6, \"remove\", ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN, 0, NumberInputLayer.BUTTONS_MARGIN, 0, 0);\n\t\tthis._innerLayer.addChild(remove);\n\n\n\t\tvar butCount = 12;\n\t\tvar butRows = 4;\n\t\tthis._innerLayer.setContentSize(button.width * butCount / butRows + NumberInputLayer.BUTTONS_MARGIN * (butCount / butRows - 1) + NumberInputLayer.INNER_MARGIN,\n\t\t\tbutton.height * butRows + NumberInputLayer.BUTTONS_MARGIN * (butRows - 1) + NumberInputLayer.INNER_MARGIN);\n\t\tthis.setContentSize(this._innerLayer.width + NumberInputLayer.OUTER_MARGIN, this._innerLayer.height + NumberInputLayer.OUTER_MARGIN);\n\t\tthis.addChild(this._innerLayer, -10);\n\n\t\tpm.registerCustomEventListener(pm.ANIMATE_HIDE_BUTTON, this.animateHideButton.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.CHANGE_NUMBER_IN_INPUT_NODE, function (event)\n\t\t{\n\t\t\tthis._showNumberInput(event.getUserData());\n\t\t}.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.CLOSE_NUMBER_INPUT_LAYER, function (event)\n\t\t{\n\t\t\tthis._hide();\n\t\t}.bind(this), this);\n\t\tthis._innerLayer.forceDoLayout();\n\t},\n\n\t_showNumberInput: function (open)\n\t{\n\t\tif (NumberInputLayer.isOpened)\n\t\t\treturn;\n\t\tNumberInputLayer.isOpened = true;\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, -this.width, 0);\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 255);\n\t\tvar fadeColorLayer = cc.targetedAction(this._innerLayer, fadeLayer);\n\t\tvar moveEnd = cc.callFunc(this._showEnded, this);\n\n\t\tthis.runAction(cc.sequence(cc.spawn(moveLayer, fadeColorLayer), moveEnd));\n\t},\n\n\t_hide: function (sender)\n\t{\n\t\tif (!NumberInputLayer.isOpened)\n\t\t\t\treturn;\n\t\tNumberInputLayer.isOpened = false;\n\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, this.width, 0);\n\t\tvar fadeLayer = cc.fadeTo(pm.SYSTEM_ANIMATION_DELAY, 0);\n\t\tvar fadeColorLayer = cc.targetedAction(this._innerLayer, fadeLayer);\n\t\tvar moveEnd = cc.callFunc(this._hideEnded, this);\n\t\tthis.runAction(cc.sequence(cc.spawn(moveLayer, fadeColorLayer), moveEnd));\n\t\tProgramContainerLayer.deselect();\n\t},\n\n\t_toggleIcons: function ()\n\t{\n\t\tthis._hideButton.setVisible(!this._hideButton.isVisible());\n\t},\n\n\t_showEnded: function ()\n\t{\n\t\tthis._toggleIcons();\n\t\tthis._originalAnimationSpeed = pm.settings.getAnimationSpeed();\n\n\t\tif (pm.settings.isAnimationDisabled())\n\t\t\tpm.settings.setAnimationSpeed(pm.MIN_ANIMATION_SPEED);\n\t},\n\n\t_hideEnded: function ()\n\t{\n\t\tthis._toggleIcons();\n\t\tpm.settings.setAnimationSpeed(this._originalAnimationSpeed);\n\t},\n\n\tanimateHideButton: function ()\n\t{\n\t\tvar showSelected = cc.callFunc(function ()\n\t\t{\n\t\t\tthis.setHighlighted(true);\n\t\t}, this._hideButton);\n\n\t\tvar showNormal = cc.callFunc(function ()\n\t\t{\n\t\t\tthis.setHighlighted(false);\n\t\t}, this._hideButton);\n\n\t\tvar delay = cc.delayTime(pm.SYSTEM_ANIMATION_DELAY);\n\n\t\tthis._hideButton.runAction(cc.repeat(cc.sequence(showSelected, delay, showNormal, delay), 2));\n\t},\n\n\tcreateALignSome: function (layer, neighbour, name, type, left, top, right, bottom)\n\t{\n\t\tvar align = layer.getLayoutParameter();\n\t\tif (align === null || align === undefined)\n\t\t\talign = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(type);\n\t\tif (neighbour !== \"\")\n\t\t{\n\t\t\talign.setRelativeToWidgetName(neighbour);\n\t\t}\n\t\tif (name !== \"\")\n\t\t{\n\t\t\talign.setRelativeName(name);\n\t\t}\n\t\tif (top !== undefined)\n\t\t\talign.setMargin(left, top, right, bottom);\n\t\tlayer.setLayoutParameter(align);\n\t},\n\n\t_onNumberClick: function (sender)\n\t{\n\t\tpm.sendCustomEvent(pm.CHANGE_NUMBER_NODE,\n\t\t\t{number: sender.number, code: NumberInputLayer.NUMBER_CODE});\n\t},\n\n\t_onRemoveNumber: function (sender)\n\t{\n\t\tpm.sendCustomEvent(pm.CHANGE_NUMBER_NODE,\n\t\t\t{number: 0, code: NumberInputLayer.REMOVE_CODE});\n\t},\n\n\t_onMinusNumber: function (sender)\n\t{\n\t\tpm.sendCustomEvent(pm.CHANGE_NUMBER_NODE,\n\t\t\t{number: 0, code: NumberInputLayer.MINUS_CODE});\n\t}\n});\n\nNumberInputLayer.OUTER_MARGIN = 20;\nNumberInputLayer.INNER_MARGIN = 20;\nNumberInputLayer.CONTROL_BUTTONS_MARGIN = 40;\nNumberInputLayer.GRAD_START_COLOR = cc.color(18, 145, 204);\nNumberInputLayer.GRAD_END_COLOR = cc.color(99, 61, 165);\nNumberInputLayer.BUTTONS_RELATIVE_NAME = \"but\";\nNumberInputLayer.MINUS = \"-\";\nNumberInputLayer.BUTTONS_MARGIN = 5;\nNumberInputLayer.NUMBER_CODE = 0;\nNumberInputLayer.REMOVE_CODE = 1;\nNumberInputLayer.MINUS_CODE = 2;\n\nNumberInputLayer.isOpened = false;\n","/**\n * Created by Nikita Besshaposhnikov on 05.11.15.\n */\n\n/**\n * Layer that contains global robots and it's functions/conditions/repeaters\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level For what level construct.\n */\nvar GlobalRobotsLayer = ccui.Layout.extend({\n\n\t_level: null,\n\n\t_flagContainer: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getMapSize());\n\n\t\tthis._level = level;\n\n\t\tfor(var i = 0; i < level.globalRobots.length; ++i)\n\t\t{\n\n\t\t\tswitch(level.globalRobots[i].getType())\n\t\t\t{\n\t\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\t\tthis._placeCounter(level.globalRobots[i]); break;\n\t\t\t\tcase pm.GlobalRobotType.Output:\n\t\t\t\t\tthis._placeOutput(level.globalRobots[i]); break;\n\t\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\t\tthis._placeFlag(level.globalRobots[i]); break;\n\t\t\t\tdefault: break;\n\t\t\t}\n\n\t\t}\n\t},\n\n\taddRobot: function(robot)\n\t{\n\t\tswitch(robot.getType())\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Output:\n\t\t\t\tthis._placeOutput(robot); break;\n\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\tthis._placeCounter(robot); break;\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tthis._placeFlag(robot);\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t},\n\n\tredrawRobot: function(robot)\n\t{\n\t\tswitch(robot.getType())\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Output:\n\t\t\t\tthis.removeChild(this.getChildByName(GlobalRobotsLayer.OUTPUT_LAYER_NAME));\n\t\t\t\tthis._placeOutput(level.globalRobots[i]); break;\n\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\tthis.removeChild(this.getChildByName(GlobalRobotsLayer.COUNTER_LAYER_NAME));\n\t\t\t\tthis._placeCounter(robot);\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tthis._flagContainer.removeChild(this._flagContainer.getChildByName(GlobalRobotsLayer.GREEN_FLAG_LAYER_NAME));\n\t\t\t\tthis._placeFlag(robot);\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tthis._flagContainer.removeChild(this._flagContainer.getChildByName(GlobalRobotsLayer.ORANGE_FLAG_LAYER_NAME));\n\t\t\t\tthis._placeFlag(robot);\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t},\n\n\tremoveRobot: function(robot)\n\t{\n\t\tswitch(robot.getType())\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Output:\n\t\t\t\tthis.removeChild(this.getChildByName(GlobalRobotsLayer.OUTPUT_LAYER_NAME));break;\n\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\tthis.removeChild(this.getChildByName(GlobalRobotsLayer.COUNTER_LAYER_NAME)); break;\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tthis._flagContainer.removeChild(this._flagContainer.getChildByName(GlobalRobotsLayer.GREEN_FLAG_LAYER_NAME));\n\n\t\t\t\tthis._flagContainer.setContentSize(\n\t\t\t\t\tthis._flagContainer.width - GlobalRobotsLayer.FLAG_LAYER_SIZE.WIDTH,\n\t\t\t\t\tMath.max(this._flagContainer.height, GlobalRobotsLayer.FLAG_LAYER_SIZE.HEIGHT)\n\t\t\t\t);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tthis._flagContainer.removeChild(this._flagContainer.getChildByName(GlobalRobotsLayer.ORANGE_FLAG_LAYER_NAME));\n\n\t\t\t\tthis._flagContainer.setContentSize(\n\t\t\t\t\tthis._flagContainer.width - GlobalRobotsLayer.FLAG_LAYER_SIZE.WIDTH,\n\t\t\t\t\tMath.max(this._flagContainer.height, GlobalRobotsLayer.FLAG_LAYER_SIZE.HEIGHT)\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t},\n\n\t_placeCounter: function(counter)\n\t{\n\t\tvar fLayer = new CounterRobotLayer(counter);\n\n\t\tvar fLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tfLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tfLayerAlign.setRelativeName(GlobalRobotsLayer.COUNTER_LAYER_NAME);\n\t\tfLayer.setLayoutParameter(fLayerAlign);\n\n\t\tthis.addChild(fLayer, 0, GlobalRobotsLayer.COUNTER_LAYER_NAME);\n\t},\n\n\t_placeOutput: function(counter)\n\t{\n\t\tvar fLayer = new OutputRobotLayer(counter);\n\n\t\tvar fLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tfLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tfLayerAlign.setRelativeName(GlobalRobotsLayer.OUTPUT_LAYER_NAME);\n\t\tfLayer.setLayoutParameter(fLayerAlign);\n\n\t\tthis.addChild(fLayer, 0, GlobalRobotsLayer.OUTPUT_LAYER_NAME);\n\t},\n\n\t_placeFlag: function(robot)\n\t{\n\t\tif(!this._flagContainer)\n\t\t{\n\t\t\tthis._flagContainer = new ccui.Layout();\n\t\t\tthis._flagContainer.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\tvar containerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tcontainerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\n\t\t\tthis._flagContainer.setLayoutParameter(containerAlign);\n\t\t\tthis.addChild(this._flagContainer);\n\t\t}\n\n\t\tvar fLayer = new FlagRobotLayer(robot);\n\n\t\tvar fLayerAlign = new ccui.RelativeLayoutParameter();\n\n\t\tswitch (robot.getType())\n\t\t{\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tfLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\t\tfLayerAlign.setMargin(GlobalRobotsLayer.SHIFT, 0, 0, 0);\n\t\t\t\tfLayer.setLayoutParameter(fLayerAlign);\n\t\t\t\tthis._flagContainer.addChild(fLayer, 0, GlobalRobotsLayer.GREEN_FLAG_LAYER_NAME);\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tfLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\t\t\tfLayerAlign.setMargin(0, 0, GlobalRobotsLayer.SHIFT, 0);\n\t\t\t\tfLayer.setLayoutParameter(fLayerAlign);\n\t\t\t\tthis._flagContainer.addChild(fLayer, 0, GlobalRobotsLayer.ORANGE_FLAG_LAYER_NAME);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._flagContainer.setContentSize(\n\t\t\tthis._flagContainer.width + fLayer.width,\n\t\t\tMath.max(this._flagContainer.height, fLayer.height)\n\t\t);\n\t}\n\n});\n\nGlobalRobotsLayer.COUNTER_LAYER_NAME = \"counterLayer\";\nGlobalRobotsLayer.OUTPUT_LAYER_NAME = \"outputLayer\";\nGlobalRobotsLayer.GREEN_FLAG_LAYER_NAME = \"greenFlagLayer\";\nGlobalRobotsLayer.ORANGE_FLAG_LAYER_NAME = \"orangeFlagLayer\";\nGlobalRobotsLayer.FLAG_LAYER_SIZE = {\n\tWIDTH: 110,\n\tHEIGHT: 224.5\n};\nGlobalRobotsLayer.SHIFT = -5;\n\n","/**\n * Created by Nikita Besshaposhnikov on 19.01.16.\n */\n\n/**\n * Layer that contains counter an it's functions/conditions/repeaters\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level For what level construct.\n */\nvar CounterRobotLayer = ccui.Layout.extend({\n\n\t_counter: null,\n\n\t_innerLayout: null,\n\t_functionButtonLayout: null,\n\t_colorLayer: null,\n\t_showButton: null,\n\t_hideButton: null,\n\n\t_hidden: true,\n\n\t_controlledMode: false,\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\tctor: function(counter)\n\t{\n\t\tthis._super();\n\n\t\tthis._innerLayout = new ccui.Layout();\n\t\tthis._innerLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._counter = counter;\n\n\t\tthis._functionButtonLayout = new ccui.VBox();\n\t\tthis._functionButtonLayout.setContentSize(200, 200);\n\n\t\tthis._functionButtonLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._functionButtonLayout.setBackGroundImage(\"System/CFBL_Frame.png\");\n\t\tthis._functionButtonLayout.setBackGroundImageCapInsets(cc.rect(90, 90, 90, 90));\n\n\t\tvar fButtonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tfButtonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tfButtonLayoutAlign.setMargin(0, 0, -2, 0);\n\t\tfButtonLayoutAlign.setRelativeName(\"fButtonLayout\");\n\n\t\tthis._functionButtonLayout.setLayoutParameter(fButtonLayoutAlign);\n\n\t\tthis._colorLayer = new ccui.Layout();\n\t\tthis._colorLayer.setContentSize(200, 200);\n\t\tthis._colorLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._colorLayer.setBackGroundColor(ProgramLayer.PROGRAM_COLOR);\n\n\t\tvar colorLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tcolorLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tcolorLayerAlign.setMargin(0, 0, 20, 0);\n\t\tthis._colorLayer.setLayoutParameter(colorLayerAlign);\n\n\t\tthis._innerLayout.addChild(this._colorLayer, -10);\n\t\tthis._innerLayout.addChild(this._functionButtonLayout);\n\n\t\tthis._showButton = new pmui.Button(pm.spriteUtils.getIconName(\"cfblShow\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblShow\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblShow\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._hideButton = new pmui.Button(pm.spriteUtils.getIconName(\"cfblHide\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._hideButton.setVisible(false);\n\n\t\tvar showButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tshowButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_TOPALIGN);\n\t\tshowButtonAlign.setMargin(0, CounterRobotLayer.SH_BUTTON_BG_TOP_MARGIN, CounterRobotLayer.SH_BUTTON_BG_RIGHT_MARGIN, 0);\n\t\tshowButtonAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\n\t\tthis._showButton.setLayoutParameter(showButtonAlign);\n\t\tthis._hideButton.setLayoutParameter(showButtonAlign.clone());\n\n\t\tthis._showButton.addClickEventListener(this._showHide.bind(this));\n\t\tthis._hideButton.addClickEventListener(this._showHide.bind(this));\n\n\t\tthis._innerLayout.addChild(this._showButton);\n\t\tthis._innerLayout.addChild(this._hideButton);\n\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.COUNTER_SHOW, this._showButton);\n\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.COUNTER_HIDE, this._hideButton);\n\n\t\tvar robotSprite = this._counter.generateRobotSprite();\n\n\t\tvar robotLayout = new ccui.Layout();\n\t\trobotLayout.setContentSize(robotSprite.getSprite().getContentSize());\n\n\t\tvar robotLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\trobotLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_BOTTOMALIGN);\n\t\trobotLayoutAlign.setMargin(0, 0, this._showButton.width, CounterRobotLayer.ROBOT_BOTTOM_MARGIN);\n\t\trobotLayoutAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\t\trobotLayout.setLayoutParameter(robotLayoutAlign);\n\n\t\trobotLayout.addChild(robotSprite.getSprite());\n\n\t\tthis._innerLayout.addChild(robotLayout);\n\n\t\tthis._drawFunctionButtons();\n\n\t\tvar width = this._functionButtonLayout.width + this._showButton.width + robotSprite.getSprite().width;\n\t\tvar height = Math.max(this._functionButtonLayout.height, robotSprite.getSprite().height);\n\n\t\tthis._innerLayout.setContentSize(width, height);\n\t\tthis.setContentSize(width, height);\n\n\t\tthis.addChild(this._innerLayout);\n\n\t\tthis._innerLayout.setPosition(this._functionButtonLayout.width + CounterRobotLayer.SH_POSITION_CORRECTION, 0);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data !== undefined)\n\t\t\t\tthis._enableControlledMode(data);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, this._disableControlledMode.bind(this), this);\n\t},\n\n\t_showHide: function()\n\t{\n\t\tFunctionButton.deselect();\n\n\t\tif(this._hidden)\n\t\t{\n\t\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, -this._colorLayer.width - 6 + 3*(this._counter.getType() === pm.GlobalRobotType.ExtendedCounter), 0);\n\t\t\tvar onShow = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._toggleIcons();\n\t\t\t\tpm.sendCustomEvent(pm.COUNTER_LAYER_OPENED_EVENT_STR);\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onShow));\n\t\t\tthis._hidden = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar x = this._functionButtonLayout.width + CounterRobotLayer.SH_POSITION_CORRECTION;\n\t\t\tvar moveLayer = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY, x, 0);\n\t\t\tvar onClose = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._toggleIcons();\n\t\t\t\tpm.sendCustomEvent(pm.COUNTER_LAYER_CLOSED_EVENT_STR);\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onClose));\n\t\t\tthis._hidden = true;\n\t\t}\n\t},\n\n\t_toggleIcons: function()\n\t{\n\t\tthis._showButton.setVisible( !this._showButton.isVisible() );\n\t\tthis._hideButton.setVisible( !this._hideButton.isVisible() );\n\t},\n\n\t_drawFunctionButtons: function()\n\t{\n\t\tvar height = 0;\n\t\tvar width = 0;\n\n\t\tif (this._counter.repeaters.length > 0)\n\t\t{\n\t\t\tvar repeaterBar = this._createFunctionButtonsBar(FunctionButton.Type.Repeater, this._counter.repeaters);\n\n\t\t\theight += repeaterBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, repeaterBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(repeaterBar);\n\t\t}\n\n\t\tif (this._counter.nativeFunctions.length > 0)\n\t\t{\n\t\t\tvar methodBar = this._createFunctionButtonsBar(FunctionButton.Type.Method, this._counter.nativeFunctions);\n\n\t\t\theight += methodBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, methodBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(methodBar);\n\t\t}\n\n\t\tif (this._counter.conditions.length > 0)\n\t\t{\n\t\t\tvar conditionBar = this._createFunctionButtonsBar(FunctionButton.Type.Condition, this._counter.conditions);\n\n\t\t\theight += conditionBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, conditionBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(conditionBar);\n\t\t}\n\n\t\tfor(var i = 0; i < this._functionButtonLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\tvar align = new ccui.LinearLayoutParameter();\n\n\t\t\tif(i === 0)\n\t\t\t{\n\t\t\t\talign.setMargin(CounterRobotLayer.FBL_LEFT_MARGIN + CounterRobotLayer.FBL_BORDER,\n\t\t\t\t\t10 + CounterRobotLayer.FBL_TOP_MARGIN + CounterRobotLayer.FBL_BORDER, 0, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talign.setMargin(CounterRobotLayer.FBL_LEFT_MARGIN + CounterRobotLayer.FBL_BORDER,\n\t\t\t\t\tCounterRobotLayer.COMPONENT_SEPARATOR, 0, 0);\n\t\t\t}\n\n\t\t\tthis._functionButtonLayout.getChildren()[i].setLayoutParameter(align);\n\t\t}\n\n\t\twidth += 2 * CounterRobotLayer.FBL_BORDER;\n\t\theight += 2 * CounterRobotLayer.FBL_BORDER;\n\n\t\tthis._colorLayer.setContentSize(width + 2*CounterRobotLayer.FBL_BORDER, height + 15);\n\n\t\twidth += CounterRobotLayer.FBL_LEFT_MARGIN + 27;\n\t\theight += CounterRobotLayer.FBL_TOP_MARGIN;\n\n\t\tthis._functionButtonLayout.setContentSize(width, height + 20);\n\t},\n\n\t_createFunctionButtonsBar: function(type, values)\n\t{\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar button = pm.appUtils.generateFunctionButton(type, values[i]);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAME_PATTERNS.SELECT.format(values[i]), button, true);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif(i !== 0)\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\t\t}\n\n\t\tlayout.setContentSize(values.length * (ProgramContainerLayer.BUTTON_SIZE + ProgramLayer.MENU_SEPARATOR),\n\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\treturn layout;\n\t},\n\n\t_dragCallback: function(element, eventType, touch)\n\t{\n\t\tif(eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t{\n\t\t\tif(this._controlledMode)\n\t\t\t{\n\t\t\t\tif(this._buttonClickCallback)\n\t\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, element);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.select();\n\t\t}\n\t},\n\n\t_canDragButtons: function()\n\t{\n\t\treturn !this._controlledMode;\n\t},\n\n\t_enableControlledMode: function(controlledModeData)\n\t{\n\t\tthis._controlledMode = true;\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\t},\n\n\t_disableControlledMode: function()\n\t{\n\t\tthis._controlledMode = false;\n\t\tthis._buttonClickCallback = null;\n\t\tthis._buttonClickCallbackTarget = null;\n\t}\n});\n\nCounterRobotLayer.FBL_LEFT_MARGIN = 18;\nCounterRobotLayer.FBL_TOP_MARGIN = 20;\nCounterRobotLayer.FBL_BORDER = 5;\nCounterRobotLayer.SH_BUTTON_BG_TOP_MARGIN = 71.5;\nCounterRobotLayer.SH_BUTTON_BG_RIGHT_MARGIN = 0;\nCounterRobotLayer.SH_POSITION_CORRECTION = -2;\nCounterRobotLayer.ROBOT_BOTTOM_MARGIN = -5;\nCounterRobotLayer.COMPONENT_SEPARATOR = 5;\n","/**\n * Created by Nikita Besshaposhnikov on 19.01.16.\n */\n\n/**\n * Layer that contains counter an it's functions/conditions/repeaters\n * @extends ccui.Layout\n * @constructor\n * @param {pm.AbstractLevel} level For what level construct.\n */\nvar OutputRobotLayer = ccui.Layout.extend({\n\n\t_counter: null,\n\n\t_innerLayout: null,\n\t_functionButtonLayout: null,\n\t_colorLayer: null,\n\t_showButton: null,\n\t_hideButton: null,\n\n\t_hidden: true,\n\n\t_controlledMode: false,\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\tctor: function(counter)\n\t{\n\t\tthis._super();\n\n\t\tthis._innerLayout = new ccui.Layout();\n\t\tthis._innerLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._counter = counter;\n\n\t\tthis._functionButtonLayout = new ccui.VBox();\n\t\tthis._functionButtonLayout.setContentSize(200, 300);\n\n\t\tthis._functionButtonLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._functionButtonLayout.setBackGroundImage(\"System/CFBL_Frame.png\");\n\t\tthis._functionButtonLayout.setBackGroundImageCapInsets(cc.rect(90, 90, 90, 90));\n\n\t\tvar fButtonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tfButtonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tfButtonLayoutAlign.setMargin(0, 0, -5, 0);\n\t\tfButtonLayoutAlign.setRelativeName(\"fButtonLayout\");\n\n\t\tthis._functionButtonLayout.setLayoutParameter(fButtonLayoutAlign);\n\n\t\tthis._colorLayer = new ccui.Layout();\n\t\tthis._colorLayer.setContentSize(200, 200);\n\t\tthis._colorLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._colorLayer.setBackGroundColor(ProgramLayer.PROGRAM_COLOR);\n\n\t\tvar colorLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tcolorLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tcolorLayerAlign.setMargin(0, 0, 20, 0);\n\t\tthis._colorLayer.setLayoutParameter(colorLayerAlign);\n\n\t\tthis._innerLayout.addChild(this._colorLayer, -10);\n\t\tthis._innerLayout.addChild(this._functionButtonLayout);\n\n\t\tthis._showButton = new pmui.Button(pm.spriteUtils.getIconName(\"cfblShow\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblShow\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblShow\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._hideButton = new pmui.Button(pm.spriteUtils.getIconName(\"cfblHide\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"cfblHide\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._hideButton.setVisible(false);\n\n\t\tvar showButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tshowButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tshowButtonAlign.setMargin(0, 0, 0, 0);\n\t\tshowButtonAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\n\t\tthis._showButton.setLayoutParameter(showButtonAlign);\n\t\tthis._hideButton.setLayoutParameter(showButtonAlign.clone());\n\n\t\tthis._showButton.addClickEventListener(this._showHide.bind(this));\n\t\tthis._hideButton.addClickEventListener(this._showHide.bind(this));\n\n\t\tthis._innerLayout.addChild(this._showButton, -1);\n\t\tthis._innerLayout.addChild(this._hideButton, -1);\n\n\t\t// pm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.COUNTER_SHOW, this._showButton);\n\t\t// pm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.COUNTER_HIDE, this._hideButton);\n\n\t\tvar robotSprite = this._counter.generateRobotSprite();\n\n\t\tvar robotLayout = new ccui.Layout();\n\t\trobotLayout.setContentSize(robotSprite.getSprite().getContentSize());\n\n\t\tvar robotLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\trobotLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_BOTTOMALIGN);\n\t\trobotLayoutAlign.setMargin(0, 0, this._showButton.width, CounterRobotLayer.ROBOT_BOTTOM_MARGIN);\n\t\trobotLayoutAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\t\trobotLayout.setLayoutParameter(robotLayoutAlign);\n\n\t\trobotLayout.addChild(robotSprite.getSprite());\n\n\t\tthis._innerLayout.addChild(robotLayout);\n\n\t\tthis._drawFunctionButtons();\n\n\t\tvar width = this._functionButtonLayout.width + this._showButton.width + robotSprite.getSprite().width;\n\t\tvar height = Math.max(this._functionButtonLayout.height, robotSprite.getSprite().height);\n\n\t\tthis._innerLayout.setContentSize(width, height);\n\t\tthis.setContentSize(width, height);\n\n\t\tthis.addChild(this._innerLayout);\n\n\t\tthis._innerLayout.setPosition(this._functionButtonLayout.width + CounterRobotLayer.SH_POSITION_CORRECTION, 0);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data !== undefined)\n\t\t\t\tthis._enableControlledMode(data);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, this._disableControlledMode.bind(this), this);\n\t},\n\n\t_showHide: function()\n\t{\n\t\tFunctionButton.deselect();\n\n\t\tif(this._hidden)\n\t\t{\n\t\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, -this._colorLayer.width - 6 + 3*(this._counter.getType() === pm.GlobalRobotType.ExtendedCounter), 0);\n\t\t\tvar onShow = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._toggleIcons();\n\t\t\t\tpm.sendCustomEvent(pm.COUNTER_LAYER_OPENED_EVENT_STR);\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onShow));\n\t\t\tthis._hidden = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar x = this._functionButtonLayout.width + CounterRobotLayer.SH_POSITION_CORRECTION;\n\t\t\tvar moveLayer = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY, x, 0);\n\t\t\tvar onClose = cc.callFunc(function()\n\t\t\t{\n\t\t\t\tthis._toggleIcons();\n\t\t\t\tpm.sendCustomEvent(pm.COUNTER_LAYER_CLOSED_EVENT_STR);\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onClose));\n\t\t\tthis._hidden = true;\n\t\t}\n\t},\n\n\t_toggleIcons: function()\n\t{\n\t\tthis._showButton.setVisible( !this._showButton.isVisible() );\n\t\tthis._hideButton.setVisible( !this._hideButton.isVisible() );\n\t},\n\n\t_drawFunctionButtons: function()\n\t{\n\t\tvar height = 0;\n\t\tvar width = 0;\n\n\t\tif (this._counter.repeaters.length > 0)\n\t\t{\n\t\t\tvar repeaterBar = this._createFunctionButtonsBar(FunctionButton.Type.Repeater, this._counter.repeaters);\n\n\t\t\theight += repeaterBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, repeaterBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(repeaterBar);\n\t\t}\n\n\t\tif (this._counter.nativeFunctions.length > 0)\n\t\t{\n\t\t\tvar methodBar = this._createFunctionButtonsBar(FunctionButton.Type.Method, this._counter.nativeFunctions);\n\n\t\t\theight += methodBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, methodBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(methodBar);\n\t\t}\n\n\t\tif (this._counter.conditions.length > 0)\n\t\t{\n\t\t\tvar conditionBar = this._createFunctionButtonsBar(FunctionButton.Type.Condition, this._counter.conditions);\n\n\t\t\theight += conditionBar.height + CounterRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, conditionBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(conditionBar);\n\t\t}\n\n\t\tfor(var i = 0; i < this._functionButtonLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\tvar align = new ccui.LinearLayoutParameter();\n\n\t\t\tif(i === 0)\n\t\t\t{\n\t\t\t\talign.setMargin(CounterRobotLayer.FBL_LEFT_MARGIN + CounterRobotLayer.FBL_BORDER,\n\t\t\t\t\t10 + CounterRobotLayer.FBL_TOP_MARGIN + CounterRobotLayer.FBL_BORDER, 0, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\talign.setMargin(CounterRobotLayer.FBL_LEFT_MARGIN + CounterRobotLayer.FBL_BORDER,\n\t\t\t\t\tCounterRobotLayer.COMPONENT_SEPARATOR, 0, 0);\n\t\t\t}\n\n\t\t\tthis._functionButtonLayout.getChildren()[i].setLayoutParameter(align);\n\t\t}\n\n\t\twidth += 2 * CounterRobotLayer.FBL_BORDER;\n\t\theight += 2 * CounterRobotLayer.FBL_BORDER;\n\n\t\tthis._colorLayer.setContentSize(width + 2*CounterRobotLayer.FBL_BORDER,\n\t\t\tMath.max(85,height + 15));\n\n\t\twidth += CounterRobotLayer.FBL_LEFT_MARGIN + 20;\n\t\theight += CounterRobotLayer.FBL_TOP_MARGIN;\n\n\t\tthis._functionButtonLayout.setContentSize(width, Math.max(100, height));\n\t},\n\n\t_createFunctionButtonsBar: function(type, values)\n\t{\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tvar width = 0;\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar button = new VarFunctionButton(type, values[i], true);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif(i !== 0)\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\t\t\t//button.setContentSize(new ccui.Text(LocalizedString(values[i])).width + 10, ProgramContainerLayer.BUTTON_SIZE);\n\t\t\tlayout.addChild(button);\n\t\t\twidth += button.width;\n\t\t}\n\n\t\tlayout.setContentSize((values.length + 1)* ProgramLayer.MENU_SEPARATOR + width,\n\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\treturn layout;\n\t},\n\n\t_dragCallback: function(element, eventType, touch)\n\t{\n\t\tif(eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t{\n\t\t\tif(this._controlledMode)\n\t\t\t{\n\t\t\t\tif(this._buttonClickCallback)\n\t\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, element);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.select();\n\t\t}\n\t},\n\n\t_canDragButtons: function()\n\t{\n\t\treturn !this._controlledMode;\n\t},\n\n\t_enableControlledMode: function(controlledModeData)\n\t{\n\t\tthis._controlledMode = true;\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\t},\n\n\t_disableControlledMode: function()\n\t{\n\t\tthis._controlledMode = false;\n\t\tthis._buttonClickCallback = null;\n\t\tthis._buttonClickCallbackTarget = null;\n\t}\n});\n\nCounterRobotLayer.FBL_LEFT_MARGIN = 18;\nCounterRobotLayer.FBL_TOP_MARGIN = 20;\nCounterRobotLayer.FBL_BORDER = 5;\nCounterRobotLayer.SH_BUTTON_BG_TOP_MARGIN = 71.5;\nCounterRobotLayer.SH_BUTTON_BG_RIGHT_MARGIN = 0;\nCounterRobotLayer.SH_POSITION_CORRECTION = -2;\nCounterRobotLayer.ROBOT_BOTTOM_MARGIN = -5;\nCounterRobotLayer.COMPONENT_SEPARATOR = 5;\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\nvar FlagRobotLayer = ccui.Layout.extend({\n\n\t_innerLayout: null,\n\t_functionButtonLayout: null,\n\t_colorLayer: null,\n\t_borderLayout: null,\n\t_showHideButton: null,\n\n\t_hidden: true,\n\n\t_controlledMode: false,\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\tctor: function (robot)\n\t{\n\t\tthis._super();\n\n\t\tthis._robot = robot;\n\n\t\tthis._innerLayout = new ccui.Layout();\n\t\tthis._innerLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._borderLayout = new ccui.Layout();\n\t\tthis._borderLayout.setContentSize(200, 200);\n\n\t\tthis._borderLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._borderLayout.setBackGroundImage(\"System/FFBL_Frame.png\");\n\t\tthis._borderLayout.setBackGroundImageCapInsets(cc.rect(80, 90, 50, 20));\n\n\t\tthis._functionButtonLayout = new ccui.VBox();\n\t\tthis._functionButtonLayout.setContentSize(200, 200);\n\n\t\tvar fButtonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tfButtonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tfButtonLayoutAlign.setRelativeName(\"fButtonLayout\");\n\n\t\tthis._functionButtonLayout.setLayoutParameter(fButtonLayoutAlign);\n\n\t\tthis._colorLayer = new ccui.Layout();\n\t\tthis._colorLayer.setContentSize(200 - 2*FlagRobotLayer.FBL_BORDER, 200 - 2*FlagRobotLayer.FBL_BORDER);\n\t\tthis._colorLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._colorLayer.setBackGroundColor(ProgramLayer.PROGRAM_COLOR);\n\n\t\tvar colorAlign = new ccui.RelativeLayoutParameter();\n\t\tcolorAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\n\t\tthis._colorLayer.setLayoutParameter(colorAlign);\n\n\t\tthis._innerLayout.addChild(this._borderLayout);\n\t\tthis._innerLayout.addChild(this._colorLayer, -10);\n\t\tthis._innerLayout.addChild(this._functionButtonLayout);\n\n\t\tvar showHideButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tshowHideButtonAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\n\t\tvar borderAlign = new ccui.RelativeLayoutParameter();\n\t\tborderAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\n\t\tif(this._robot.getType() === pm.GlobalRobotType.OrangeFlag)\n\t\t{\n\t\t\tthis._borderLayout.setScaleX(-1);\n\t\t\tborderAlign.setMargin(this._borderLayout.width / 2 + FlagRobotLayer.SCALE_SHIFT, 0, 0, 0);\n\n\t\t\tshowHideButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t\tshowHideButtonAlign.setMargin(FlagRobotLayer.POSITION_CORRECTION, 0, 0, -FlagRobotLayer.SH_POSITION_CORRECTION);\n\n\t\t\tthis._showHideButton = new pmui.Button(pm.spriteUtils.getIconName(\"offblShow\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"offblShow\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"offblShow\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.ORANGE_FLAG_SHOW_HIDE, this._showHideButton);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tshowHideButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER);\n\t\t\tshowHideButtonAlign.setMargin(FlagRobotLayer.POSITION_CORRECTION, 0, 0, -FlagRobotLayer.SH_POSITION_CORRECTION);\n\n\t\t\tthis._showHideButton = new pmui.Button(pm.spriteUtils.getIconName(\"gffblShow\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"gffblShow\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"gffblShow\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAMES.GREEN_FLAG_SHOW_HIDE, this._showHideButton);\n\t\t}\n\n\t\tthis._borderLayout.setLayoutParameter(borderAlign);\n\t\tthis._showHideButton.setLayoutParameter(showHideButtonAlign);\n\n\t\tthis._showHideButton.addClickEventListener(this._showHide.bind(this));\n\n\t\tthis._innerLayout.addChild(this._showHideButton);\n\n\t\tvar robotSprite = this._robot.generateRobotSprite();\n\t\trobotSprite.getSprite().setAnchorPoint(cc.p(0, 0));\n\n\t\tvar robotLayout = new ccui.Layout();\n\t\trobotLayout.setContentSize(robotSprite.getSprite().getContentSize());\n\n\t\tvar robotLayoutAlign = new ccui.RelativeLayoutParameter();\n\n\t\tif(this._robot.getType() === pm.GlobalRobotType.GreenFlag)\n\t\t\trobotLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_RIGHTALIGN);\n\t\telse\n\t\t\trobotLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\n\t\trobotLayoutAlign.setRelativeToWidgetName(\"fButtonLayout\");\n\t\trobotLayout.setLayoutParameter(robotLayoutAlign);\n\n\t\trobotLayout.addChild(robotSprite.getSprite());\n\n\t\tthis._innerLayout.addChild(robotLayout);\n\n\t\tthis._drawFunctionButtons();\n\n\t\tvar width = this._functionButtonLayout.width;\n\t\tvar height = this._functionButtonLayout.height + this._showHideButton.height + robotSprite.getSprite().height;\n\n\t\tthis._innerLayout.setContentSize(width, height);\n\t\tthis.setContentSize(width, height);\n\n\t\tthis.addChild(this._innerLayout);\n\n\t\tthis._innerLayout.setPosition(0, -this._functionButtonLayout.height);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data !== undefined)\n\t\t\t\tthis._enableControlledMode(data);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, this._disableControlledMode.bind(this), this);\n\t},\n\n\t_drawFunctionButtons: function()\n\t{\n\t\tvar height = 0;\n\t\tvar width = 0;\n\n\t\tif (this._robot.nativeFunctions.length > 0)\n\t\t{\n\t\t\tvar methodBar = this._createFunctionButtonsBar(FunctionButton.Type.Method, this._robot.nativeFunctions);\n\n\t\t\theight += methodBar.height + FlagRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, methodBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(methodBar);\n\t\t}\n\n\t\tif (this._robot.conditions.length > 0)\n\t\t{\n\t\t\tvar conditionBar = this._createFunctionButtonsBar(FunctionButton.Type.Condition, this._robot.conditions);\n\n\t\t\theight += conditionBar.height + FlagRobotLayer.COMPONENT_SEPARATOR;\n\t\t\twidth = Math.max(width, conditionBar.width);\n\n\t\t\tthis._functionButtonLayout.addChild(conditionBar);\n\t\t}\n\n\t\tfor(var i = 0; i < this._functionButtonLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\tvar align = new ccui.LinearLayoutParameter();\n\t\t\talign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\n\t\t\tif(i === 0)\n\t\t\t{\n\t\t\t\talign.setMargin(FlagRobotLayer.POSITION_CORRECTION,\n\t\t\t\t\tFlagRobotLayer.FBL_TOP_MARGIN + FlagRobotLayer.FBL_BORDER, 0, 0);\n\t\t\t}\n\t\t\telse\n\t\t\t{ align.setMargin(FlagRobotLayer.POSITION_CORRECTION, FlagRobotLayer.COMPONENT_SEPARATOR, 0, 0); }\n\n\t\t\tthis._functionButtonLayout.getChildren()[i].setLayoutParameter(align);\n\t\t}\n\n\t\twidth += 2 * FlagRobotLayer.FBL_LEFT_MARGIN;\n\t\theight += 2* FlagRobotLayer.FBL_TOP_MARGIN;\n\n\t\tthis._colorLayer.setContentSize(width, height);\n\n\t\twidth += 2 * FlagRobotLayer.FBL_BORDER;\n\t\theight += FlagRobotLayer.FBL_BORDER;\n\n\t\tthis._borderLayout.setContentSize(width, height);\n\t\tthis._functionButtonLayout.setContentSize(width, height);\n\t},\n\n\t_createFunctionButtonsBar: function(type, values)\n\t{\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar button = pm.appUtils.generateFunctionButton(type, values[i]);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAME_PATTERNS.SELECT.format(values[i]), button, true);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif(i !== 0)\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\t\t}\n\n\t\tlayout.setContentSize(values.length * (ProgramContainerLayer.BUTTON_SIZE + ProgramLayer.MENU_SEPARATOR),\n\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\treturn layout;\n\t},\n\n\t_showHide: function()\n\t{\n\t\tFunctionButton.deselect();\n\n\t\tvar y = this._functionButtonLayout.height;\n\n\t\tif (this._hidden)\n\t\t{\n\t\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, cc.p(0, y));\n\n\t\t\tvar type = this._robot.getType();\n\n\t\t\tvar onShow = cc.callFunc(function (button)\n\t\t\t{\n\t\t\t\tif(type === pm.GlobalRobotType.OrangeFlag)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.ORANGE_FLAG_LAYER_OPENED_EVENT_STR);\n\n\t\t\t\t\tthis._showHideButton.loadTextures(pm.spriteUtils.getIconName(\"offblHide\", pm.NORMAL_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"offblHide\", pm.SELECTED_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"offblHide\", pm.DISABLED_STATE),\n\t\t\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.GREEN_FLAG_LAYER_OPENED_EVENT_STR);\n\n\t\t\t\t\tthis._showHideButton.loadTextures(pm.spriteUtils.getIconName(\"gffblHide\", pm.NORMAL_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"gffblHide\", pm.SELECTED_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"gffblHide\", pm.DISABLED_STATE),\n\t\t\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onShow));\n\n\t\t\tthis._hidden = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar moveLayer = cc.moveBy(pm.SYSTEM_ANIMATION_DELAY, cc.p(0, -y));\n\n\t\t\tvar type = this._robot.getType();\n\n\t\t\tvar onClose = cc.callFunc(function ()\n\t\t\t{\n\t\t\t\tif(type === pm.GlobalRobotType.OrangeFlag)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.ORANGE_FLAG_LAYER_CLOSED_EVENT_STR);\n\n\t\t\t\t\tthis._showHideButton.loadTextures(pm.spriteUtils.getIconName(\"offblShow\", pm.NORMAL_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"offblShow\", pm.SELECTED_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"offblShow\", pm.DISABLED_STATE),\n\t\t\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.GREEN_FLAG_LAYER_CLOSED_EVENT_STR);\n\n\t\t\t\t\tthis._showHideButton.loadTextures(pm.spriteUtils.getIconName(\"gffblShow\", pm.NORMAL_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"gffblShow\", pm.SELECTED_STATE),\n\t\t\t\t\t\tpm.spriteUtils.getIconName(\"gffblShow\", pm.DISABLED_STATE),\n\t\t\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tthis._innerLayout.runAction(cc.sequence(moveLayer, onClose));\n\n\t\t\tthis._hidden = true;\n\t\t}\n\t},\n\n\t_dragCallback: function(element, eventType, touch)\n\t{\n\t\tif(eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t{\n\t\t\tif(this._controlledMode)\n\t\t\t{\n\t\t\t\tif(this._buttonClickCallback)\n\t\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, element);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.select();\n\t\t}\n\t},\n\n\t_canDragButtons: function()\n\t{\n\t\treturn !this._controlledMode;\n\t},\n\n\t_enableControlledMode: function(controlledModeData)\n\t{\n\t\tthis._controlledMode = true;\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\t},\n\n\t_disableControlledMode: function()\n\t{\n\t\tthis._controlledMode = false;\n\t\tthis._buttonClickCallback = null;\n\t\tthis._buttonClickCallbackTarget = null;\n\t}\n\n});\n\nFlagRobotLayer.FBL_LEFT_MARGIN = 10;\nFlagRobotLayer.FBL_TOP_MARGIN = 10;\nFlagRobotLayer.FBL_BORDER = 7;\nFlagRobotLayer.SH_POSITION_CORRECTION = 1;\nFlagRobotLayer.COMPONENT_SEPARATOR = 5;\nFlagRobotLayer.SCALE_SHIFT = 25;\nFlagRobotLayer.POSITION_CORRECTION = 3;\n","/**\n * Created by Nikita Besshaposhnikov on 12.11.14.\n */\n/**\n * @class This layer contains view of whole level.\n * @extends ccui.Layout\n * @constructor\n * @param {Number} game Index of game for level.\n * @param {Number} level Index of level to load.\n * @param {GameType} gameType\n * @param {Number} [robotIndex] Index of base robot to override in level.\n */\nvar LevelLayer = ccui.Layout.extend(/** @lends LevelLayer# */{\n\t_programLayer: null,\n\t_mapsContainerLayer: null,\n\t_levelMenuLayer: null,\n\t_globalRobotsLayer: null,\n\t_tutorialData: {},\n\t_timerID: null,\n\n\t_gameIndex: 0,\n\t_levelIndex: 0,\n\t_robotIndex: null,\n\n\t_level: null,\n\t_gameType: GameType.Local,\n\n\t_programStarted: false,\n\t_testAllMaps: false,\n\n\t_wasMethodStackOpened: false,\n\n\t_completedMaps: {},\n\n\tctor: function(gameType, robotIndex, game, level, levelObject, tutorialData)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._gameIndex = game;\n\t\tthis._levelIndex = level;\n\t\tthis._gameType = gameType;\n\t\tthis._robotIndex = robotIndex;\n\t\tthis._tutorialData = tutorialData;\n\n\t\tif(levelObject !== undefined)\n\t\t\tthis._level = levelObject;\n\n\t\tif (tutorialData === undefined)\n\t\t{\n\t\t\tthis._tutorialData = {\n\t\t\t\tshow: false,\n\t\t\t\tscale: 1\n\t\t\t};\n\t\t}\n\n\t\tif (tutorialData && tutorialData.show)\n\t\t\tthis.setScale(tutorialData.scale);\n\n\t\tpm.tutorialUtils.clearTutorialObjects();\n\n\t\tpm.registerCustomEventListener(pm.ROBOT_WIN_EVENT_STR, this._onWin.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.ROBOT_LOOSE_EVENT_STR, this._onLoose.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.ROBOT_FAILURE_EVENT_STR, this._onFailure.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.CURRENT_ROBOT_TESTED_EVENT_STR, this._onRobotTested.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.PROGRAM_RESTART_EVENT_STR, this._restartLevel.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.PROGRAM_START_EVENT_STR, this._startLevel.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.PROGRAM_MAKE_STEP_EVENT_STR, this._makeStep.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.PROGRAM_TESL_ALL_MAPS_EVENT_STR, this._testWholeLevel.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.RESET_LEVEL_EVENT_STR, this._resetLevel.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.START_NETWORK_GAME_EVENT_STR, this._startNetworkGame.bind(this), this);\n\t\tpm.registerCustomEventListener(pm.MAP_COMPLETED_STR, this._onMapCompleted.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.SET_ROBOT_PROGRAM_EVEN_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data !== undefined)\n\t\t\t\tthis._setRobotProgram(data.robotIndex, data.program, data.programDataIndex);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function(event)\n\t\t{\n\t\t\tthis._wasMethodStackOpened = true;\n\n\t\t}.bind(this), this);\n\n\t\tthis._registerUpdateSceneEvent();\n\t},\n\n\t_registerUpdateSceneEvent: function()\n\t{\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new LevelScene(this._gameType, this._robotIndex, this._gameIndex, this._levelIndex, this._level));\n\t\t}.bind(this), this);\n\t},\n\n\t_loadLevel: function(robotIndex)\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tif(!this._level)\n\t\t{\n\t\t\tthis._level = world.loadLevel(false, this._gameIndex, this._levelIndex, robotIndex);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tworld.runningLevel = this._level;\n\t\t\tthis._level.load(false, robotIndex);\n\t\t}\n\n\t\tif(this._level)\n\t\t{\n\t\t\tthis._levelMenuLayer = new LevelMenuLayer(this._level, this.isNetGame(), !this._tutorialData.show);\n\n\t\t\tvar levelMenuAlign = new ccui.RelativeLayoutParameter();\n\t\t\tlevelMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tthis._levelMenuLayer.setLayoutParameter(levelMenuAlign);\n\n\t\t\tthis.addChild(this._levelMenuLayer, 2);\n\n\t\t\tvar baseRobot = this._level.getCurrentRobot();\n\n\t\t\tvar useMethodStack = pm.moduleUtils.canUseMethodStack(this._level.getType()) && this._level.useMethodStack;\n\n\t\t\tthis._programLayer = pm.appUtils.generateProgramLayer(this._gameType, useMethodStack, baseRobot, this._level);\n\n\t\t\tvar programLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tprogramLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\t\tprogramLayerAlign.setRelativeName(\"programLayer\");\n\t\t\tthis._programLayer.setLayoutParameter(programLayerAlign);\n\n\t\t\tthis.addChild(this._programLayer, 2);\n\n\t\t\tthis._mapsContainerLayer = new pm.MapsContainerLayer(this._level, false, this._tutorialData.show);\n\n\t\t\tvar mapsContainerLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tmapsContainerLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tthis._mapsContainerLayer.setLayoutParameter(mapsContainerLayerAlign);\n\n\t\t\tthis.addChild(this._mapsContainerLayer);\n\n\t\t\tif (this.isNetGame())\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t{\n\t\t\t\t\tvar mapLayer = this._level.maps[i].mapLayer;\n\n\t\t\t\t\tmapLayer.enableClicks(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._level.activeMap.mapLayer instanceof pm.MapLayer2D && this._level.activeMap.mapLayer.hasChangeOrientationOption() && this._level.activeMap.mapLayer.needToDrawOrientationOption())\n\t\t\t\tthis._levelMenuLayer.drawChangeOrientationButton();\n\n\t\t\tthis._globalRobotsLayer = new GlobalRobotsLayer(this._level);\n\n\t\t\tvar rightMargin = screenBounds.safeAreas.right ? screenBounds.right / 2 : 0;\n\n\t\t\tvar globalRobotsLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tglobalRobotsLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tglobalRobotsLayerAlign.setMargin(-rightMargin, 0, 0, 0);\n\t\t\tthis._globalRobotsLayer.setLayoutParameter(globalRobotsLayerAlign);\n\n\t\t\tthis.addChild(this._globalRobotsLayer, 1);\n\t\t}\n\t},\n\n\t_setRobotProgram: function(robotIndex, programData, programDataIndex)\n\t{\n\t\tif(robotIndex < 0 || robotIndex > this._level.robots.length)\n\t\t\treturn;\n\n\t\t//TODO validate program data\n\t\tvar data = pm.appUtils.generateProgramData(true);\n\t\tdata.deserialize(programData, false);\n\n\t\tthis._level.robots[robotIndex].setProgramData(data, programDataIndex);\n\t},\n\n\t_startLevel: function()\n\t{\n\t\tif(!this._programStarted || this._wasMethodStackOpened)\n\t\t{\n\t\t\tthis._levelMenuLayer.onStartGame();\n\t\t\tthis._programLayer.reset();\n\t\t\tthis._mapsContainerLayer.setEnabled(false);\n\t\t\tthis._mapsContainerLayer.clean();\n\t\t\tthis._programStarted = true;\n\t\t\tthis._wasMethodStackOpened = false;\n\t\t\tFunctionButton.deselect();\n\t\t\tthis._completedMaps = {};\n\t\t}\n\t\tthis._programLayer.setEnabled(false);\n\t},\n\n\t_startNetworkGame: function()\n\t{\n\t\tpm.sendCustomEvent(pm.PROGRAM_START_EVENT_STR);\n\t},\n\n\t_makeStep: function()\n\t{\n\t\tif(!this._programStarted || this._wasMethodStackOpened)\n\t\t{\n\t\t\tthis._levelMenuLayer.onStartGame();\n\t\t\tthis._programLayer.reset();\n\t\t\tthis._mapsContainerLayer.setEnabled(false);\n\t\t\tthis._mapsContainerLayer.clean();\n\t\t\tthis._programStarted = true;\n\t\t\tthis._wasMethodStackOpened = false;\n\t\t\tFunctionButton.deselect();\n\t\t\tthis._completedMaps = {};\n\t\t}\n\t\tthis._programLayer.setEnabled(false, true);\n\t},\n\n\t_testWholeLevel: function()\n\t{\n\t\tthis._levelMenuLayer.onStartGame();\n\t\tthis._programLayer.reset();\n\t\tthis._programLayer.setEnabled(false);\n\t\tthis._mapsContainerLayer.setEnabled(false);\n\t\tthis._mapsContainerLayer.clean();\n\t\tthis._programStarted = true;\n\t\tthis._testAllMaps = true;\n\t\tthis._completedMaps = {};\n\t},\n\n\t_restartLevel: function(object)\n\t{\n\t\tthis._levelMenuLayer.onRestartGame();\n\t\tthis._programLayer.reset();\n\t\tthis._mapsContainerLayer.clean();\n\t\tthis._mapsContainerLayer.setEnabled(true);\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t\tthis._completedMaps = {};\n\t},\n\n\t_resetLevel: function(object)\n\t{\n\t\tthis._mapsContainerLayer.clean();\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t\tthis._completedMaps = {};\n\t},\n\n\t_onWin: function()\n\t{\n\t\tif(!this.isNetGame())\n\t\t{\n\t\t\tpm.userCache.setScore(this._level, this._mapsContainerLayer.activeMapIndex, this._level.getCurrentRobot().stepCount);\n\n\t\t\tif(pm.settings.userLoggedIn && pm.settings.getUserData().accountType === pm.USER_TYPE.USER)\n\t\t\t\tthis._uploadResult();\n\t\t}\n\n\t\tthis._completedMaps[this._mapsContainerLayer.activeMapIndex] = this._level.getCurrentRobot().stepCount;\n\n\t\tthis._levelMenuLayer.onWin();\n\t\tthis._programLayer.setEnabled(true);\n\t\tthis._programLayer.setProgramControlEnabled(true);\n\t\tthis._mapsContainerLayer.setEnabled(true);\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t},\n\n\t_onLoose: function()\n\t{\n\t\tthis._levelMenuLayer.onLoose();\n\t\tthis._programLayer.setEnabled(true);\n\t\tthis._programLayer.setProgramControlEnabled(true);\n\t\tthis._mapsContainerLayer.setEnabled(true);\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t},\n\n\t_onFailure: function()\n\t{\n\t\tthis._levelMenuLayer.onFailure();\n\t\tthis._programLayer.setEnabled(true);\n\t\tthis._programLayer.setProgramControlEnabled(true);\n\t\tthis._mapsContainerLayer.setEnabled(true);\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t},\n\n\t_onRobotTested: function()\n\t{\n\t\tthis._levelMenuLayer.onRobotTested();\n\t\tthis._programLayer.setEnabled(true);\n\t\tthis._programLayer.setProgramControlEnabled(true);\n\t\tthis._mapsContainerLayer.setEnabled(true);\n\t\tthis._programStarted = false;\n\t\tthis._testAllMaps = false;\n\t},\n\n\t_onMapCompleted: function ()\n\t{\n\t\tthis._completedMaps[this._level.getActiveMapIndex()] = this._level.getCurrentRobot().stepCount;\n\n\t\tif (!this._testAllMaps)\n\t\t\tthis._levelMenuLayer.onMapCompleted();\n\t},\n\n\t_uploadResult: function ()\n\t{\n\t\tvar solution = {\n\t\t\tlevelId: this._level.id,\n\t\t\tversion: this._level.version,\n\t\t\trevision: this._level.revision,\n\t\t\tdata: this._level.programDataCache\n\t\t};\n\n\t\tpm.apiServerUtils.uploadSolution(function(error, res)\n\t\t{\n\t\t\tif(error)\n\t\t\t\tcc.log(error);\n\n\t\t}.bind(this), solution);\n\n\t},\n\n\t/**\n * Return if game is Network\n * @returns {Boolean}\n */\n\tisNetGame: function() { return this._gameType === GameType.Net; },\n\n\tonExit: function ()\n\t{\n\t\tthis._super();\n\t},\n\n\tonExitTransitionDidStart: function()\n\t{\n\t\tif (this._timerID)\n\t\t\tclearTimeout(this._timerID);\n\n\t\tif(this.isNetGame())\n\t\t{\n\t\t\tfor(var i = 0; i < this._level.robots.length; ++i)\n\t\t\t{\n\t\t\t\tif (this._level.programDataCache[i])\n\t\t\t\t{\n\t\t\t\t\tfor (var j = 0; j < this._level.programDataCache[i].programDataArray.length; ++j)\n\t\t\t\t\t\tthis._level.robots[i].setProgramData(null, j);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tworld.runningLevel = null;\n\t\tthis._level.destroy();\n\n\t\tFunctionButton.deselect();\n\n\t\tthis._super();\n\t},\n\n\tonEnter: function()\n\t{\n\t\tthis._super();\n\n\t\tthis._loadLevel(this._robotIndex);\n\t},\n\n\tonEnterTransitionDidFinish: function()\n\t{\n\t\tthis._super();\n\n\t\tif(this._level.isTutorial)\n\t\t{\n\t\t\tpm.tutorialUtils.setTutorialScenario(this._level.tutorialScenario);\n\n\t\t\tthis._timerID = setTimeout(function()\n\t\t\t{\n\t\t\t\tif (this.getParent())\n\t\t\t\t\tpm.tutorialUtils.startTutorial(this.getParent(), this._tutorialData);\n\t\t\t}.bind(this), LevelLayer.TUTORIAL_TIMEOUT);\n\t\t}\n\n\t\tif (this.isNetGame())\n\t\t\tpm.sendCustomEvent(pm.LEVEL_SCENE_ENTERED);\n\t},\n\n\tgetCompletedMaps: function ()\n\t{\n\t\treturn this._completedMaps;\n\t}\n});\n\nLevelLayer.TUTORIAL_TIMEOUT = 500;\n\nvar LevelScene = cc.Scene.extend({\n\tctor: function(gameType, robotIndex, game, level, levelObject)\n\t{\n\t\tthis._super();\n\n\t\tvar layer = new LevelLayer(gameType, robotIndex, game, level, levelObject);\n\t\tthis.addChild(layer);\n\t},\n\n\tonEnter: function ()\n\t{\n\t\tthis._super();\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 28.07.15.\n */\n\n/**\n * @class FUnctionButton used by {@link ProgramContainerLayer} and {@link ProgramLayer}.\n * @extends pmui.Button\n * @property {FunctionButton.Type} type\n * @property {*} value\n * @constructor\n * @param {FunctionButton.Type} type\n * @param {*} value\n */\nvar FunctionButton = pmui.Button.extend(/** @lends FunctionButton#*/{\n\n\t_type: 0,\n\t_value: null,\n\t_backSprite: null,\n\t_drawBackground: false,\n\n\tctor: function(type)\n\t{\n\t\tthis._super();\n\n\t\tpm.appUtils.getFunctionButtonPrototype().setType.call(this, type);\n\n\t\tthis.setTouchEnabled(false);\n\t\tthis.setCascadeOpacityEnabled(true);\n\t},\n\n\tgetValue: function() {},\n\n\tsetValue: function(value) {},\n\n\tgetType: function() {},\n\n\tsetType: function(type, value) {},\n\n\t/**\n * Clones button normal image.\n * @returns {ccui.ImageView}\n */\n\tcloneImage: function() {},\n\n\t/**\n\t * Clones button disabled image.\n\t * @returns {ccui.ImageView}\n\t */\n\tcloneDisabledImage: function()\n\t{\n\t\treturn new ccui.ImageView(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t/**\n * @returns {boolean}\n */\n\tisMethod: function() { return this._type === FunctionButton.Type.Method; },\n\n\t/**\n * @returns {boolean}\n */\n\tisCondition: function() { return this._type === FunctionButton.Type.Condition; },\n\n\t/**\n * @returns {boolean}\n */\n\tisRepeater: function() { return this._type === FunctionButton.Type.Repeater; },\n\n\t/**\n * @returns {boolean}\n */\n\tisCondRepeater: function() { return this._type === FunctionButton.Type.CondRepeater; },\n\n\t/**\n * Selects function button and writes to {@link FunctionButton.selectedButton}\n */\n\tselect: function() {},\n\n\t/**\n * Start endless scale animation of button.\n */\n\tstartAnimation: function()\n\t{\n\t\tvar scaleTo = new cc.ScaleBy(0.8 * pm.SYSTEM_ANIMATION_DELAY, 0.90);\n\t\tvar scaleFrom = new cc.ScaleBy(0.8 * pm.SYSTEM_ANIMATION_DELAY, 1/0.90);\n\n\t\tthis.runAction( new cc.RepeatForever(new cc.Sequence(scaleTo, scaleFrom)) );\n\t},\n\n\t/**\n * Plays scale animation once.\n */\n\tanimateOnce: function()\n\t{\n\t\tvar scaleTo = new cc.ScaleBy(0.8 * pm.SYSTEM_ANIMATION_DELAY, 0.90);\n\t\tvar scaleFrom = new cc.ScaleBy(0.8 * pm.SYSTEM_ANIMATION_DELAY, 1/0.90);\n\n\t\tthis.runAction( new cc.Sequence(scaleTo, scaleFrom) );\n\t},\n\n\t/**\n * Stops endless scale animation.\n */\n\tstopAnimation: function()\n\t{\n\t\tthis.stopAllActions();\n\n\t\tvar initial = new cc.ScaleBy(0.4 * pm.SYSTEM_ANIMATION_DELAY, 1 / this.getScale());\n\n\t\tthis.runAction(initial);\n\t},\n\n\t_valueChanged: function() {},\n\n\t_getSpriteName: function(state) {},\n\n\t_isEmpty: function() {},\n\n\t_getBackgroundSprite: function() {}\n\n});\n\nFunctionButton.BACKGROUND_SPRITE_TAG = 1;\nFunctionButton.COND_REPEATER_SCALE = 0.9;\n\nFunctionButton.selectedButton = null;","/**\n * Created by Kirill Mashchenko on 24.04.20.\n */\n\nvar FunctionButtonP = FunctionButton.extend(/** @lends FunctionButtonP#*/{\n\n\t_drawBackground: false,\n\n\tctor: function(type, value, drawBackground)\n\t{\n\t\tthis._value = value;\n\n\t\tif (drawBackground === undefined)\n\t\t\tdrawBackground = false;\n\n\t\tthis._drawBackground = drawBackground;\n\n\t\tthis._super(type);\n\t},\n\n\tgetValue: function()\n\t{\n\t\treturn this._value;\n\t},\n\n\tsetValue: function(value)\n\t{\n\t\tthis._value = value;\n\t\tthis._valueChanged();\n\t},\n\n\tgetType: function()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetType: function(type, value)\n\t{\n\t\tif (type === FunctionButton.Type.Empty)\n\t\t{\n\t\t\tthis._type = type;\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._type === FunctionButton.Type.CondRepeater)\n\t\t{\n\t\t\tthis.removeChildByTag(FunctionButton.BACKGROUND_SPRITE_TAG);\n\t\t\tthis.getVirtualRenderer().setScale(1.0);\n\t\t}\n\n\t\tthis._type = type;\n\n\t\tif (value === undefined)\n\t\t\tthis.setValue(this._value);\n\t\telse\n\t\t\tthis.setValue(value);\n\n\t\tif (this._type === FunctionButton.Type.CondRepeater)\n\t\t{\n\t\t\tvar sprite = pm.spriteUtils.getRepeaterSprite(\"cond\");\n\t\t\tsprite.setPosition(0, this.height);\n\t\t\tsprite.setAnchorPoint(cc.p(0, 1));\n\n\t\t\tthis.addChild(sprite, -1, FunctionButton.BACKGROUND_SPRITE_TAG);\n\n\t\t\tthis.getVirtualRenderer().setScale(FunctionButton.COND_REPEATER_SCALE);\n\t\t}\n\n\t\tif(this._backSprite)\n\t\t{\n\t\t\tthis._backSprite.removeFromParent();\n\t\t\tthis._backSprite = null;\n\t\t}\n\n\t\tif (this._drawBackground)\n\t\t{\n\t\t\tthis._backSprite = this._getBackgroundSprite();\n\n\t\t\tif (this._backSprite !== \"\")\n\t\t\t{\n\t\t\t\tthis._backSprite.setPosition(cc.p(0, this.height));\n\t\t\t\tthis._backSprite.setAnchorPoint(cc.p(0, 1));\n\t\t\t\tthis.addChild(this._backSprite, -2);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Clones button normal image.\n\t * @returns {ccui.ImageView}\n\t */\n\tcloneImage: function()\n\t{\n\t\treturn new ccui.ImageView(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t/**\n\t * Selects function button and writes to {@link FunctionButton.selectedButton}\n\t */\n\tselect: function()\n\t{\n\t\tif(FunctionButton.selectedButton !== this)\n\t\t{\n\t\t\tif(FunctionButton.selectedButton)\n\t\t\t\tFunctionButton.selectedButton.stopAnimation();\n\n\t\t\tFunctionButton.selectedButton = this;\n\t\t\tthis.startAnimation();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tFunctionButton.deselect();\n\t\t}\n\t},\n\n\t_valueChanged: function()\n\t{\n\t\tif(this._type === FunctionButton.Type.Empty)\n\t\t\treturn;\n\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getSpriteName: function(state)\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn pm.spriteUtils.getRobotConditionSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\treturn pm.spriteUtils.getRobotMethodSpriteName(this._value, state);\n\t\t}\n\t\treturn \"\";\n\t},\n\n\t_isEmpty: function()\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn (this._value === pm.REPEATER_EMPTY);\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn (this._value === pm.CONDITION_EMPTY);\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\treturn (this._value === pm.EMPTY_METHOD);\n\t\t}\n\t},\n\n\t_getBackgroundSprite: function()\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater: return pm.spriteUtils.getRepeaterSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Condition: return pm.spriteUtils.getRobotConditionSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.CondRepeater: return pm.spriteUtils.getRepeaterSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Method: return pm.spriteUtils.getRobotMethodSprite(\"shadow\");\n\t\t}\n\n\t\treturn \"\";\n\t}\n});\n\nvar _p = FunctionButtonP.prototype;\n\n/** @expose */\n_p.value;\ncc.defineGetterSetter(_p, \"value\", _p.getValue, _p.setValue);\n\n/** @expose */\n_p.type;\ncc.defineGetterSetter(_p, \"type\", _p.getType, _p.setType);\n","/**\n * Created by Kirill Mashchenko on 24.04.20.\n */\n\nvar FunctionButtonK = FunctionButton.extend(/** @lends FunctionButtonK#*/{\n\n\tselected: false,\n\t_isNative: true,\n\n\tctor: function(type, value, isNative)\n\t{\n\t\tthis._value = value;\n\t\tif(isNative !== undefined)\n\t\t\tthis._isNative = isNative;\n\t\tthis._super(type);\n\t\tpm.registerCustomEventListener(pm.DESELECT_FUNCTIONBUTTON, function (event)\n\t\t{\n\t\t\tthis.stopAnimation();\n\t\t\tthis.selected = false;\n\t\t}.bind(this), this);\n\t},\n\n\tisNativeMethod: function ()\n\t{\n\t\treturn this._isNative;\n\t},\n\n\tgetValue: function()\n\t{\n\t\treturn this._value;\n\t},\n\n\tsetValue: function(value)\n\t{\n\t\tthis._value = value;\n\t\tthis._valueChanged();\n\t},\n\n\tgetType: function()\n\t{\n\t\treturn this._type;\n\t},\n\n\tsetType: function(type, value)\n\t{\n\t\tif (this._type === FunctionButton.Type.CondRepeater)\n\t\t{\n\t\t\tthis.removeChildByTag(FunctionButton.BACKGROUND_SPRITE_TAG);\n\t\t\tthis.getVirtualRenderer().setScale(1.0);\n\t\t}\n\n\t\tthis._type = type;\n\n\t\tif (value === undefined)\n\t\t\tthis.setValue(this._value);\n\t\telse\n\t\t\tthis.setValue(value);\n\n\t\tif (this._type === FunctionButton.Type.CondRepeater)\n\t\t{\n\t\t\tvar sprite = pm.spriteUtils.getRepeaterSprite(\"cond\");\n\t\t\tsprite.setPosition(0, this.height);\n\t\t\tsprite.setAnchorPoint(cc.p(0, 1));\n\n\t\t\tthis.addChild(sprite, -1, FunctionButton.BACKGROUND_SPRITE_TAG);\n\n\t\t\tthis.getVirtualRenderer().setScale(FunctionButton.COND_REPEATER_SCALE);\n\t\t}\n\n\t\tif(this._backSprite)\n\t\t{\n\t\t\tthis._backSprite.removeFromParent();\n\t\t\tthis._backSprite = null;\n\t\t}\n\n\t\tif (this._drawBackground)\n\t\t{\n\t\t\tthis._backSprite = this._getBackgroundSprite();\n\n\t\t\tif (this._backSprite !== \"\")\n\t\t\t{\n\t\t\t\tthis._backSprite.setPosition(cc.p(0, this.height));\n\t\t\t\tthis._backSprite.setAnchorPoint(cc.p(0, 1));\n\t\t\t\tthis.addChild(this._backSprite, -2);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Clones button normal image.\n\t * @returns {ccui.ImageView}\n\t */\n\tcloneImage: function()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this._type, this._value);\n\t},\n\n\tclone: function()\n\t{\n\t\treturn pm.appUtils.generateFunctionButton(this._type, this._value);\n\t},\n\n\t/**\n\t * Selects function button and writes to {@link FunctionButton.selectedButton}\n\t */\n\tselect: function()\n\t{\n\t\tif(this.selected)\n\t\t{\n\t\t\tthis.stopAnimation();\n\t\t\tthis.selected = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.sendCustomEvent(pm.DESELECT_FUNCTIONBUTTON);\n\t\t\tFunctionButton.selectedButton = this.clone();\n\t\t\tthis.selected = true;\n\t\t\tthis.startAnimation();\n\t\t}\n\t},\n\n\t_valueChanged: function()\n\t{\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getSpriteName: function(state)\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Constant:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value % 7, state);\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.LogicExpression:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn pm.spriteUtils.getRobotConditionSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Alloc:\n\t\t\t\treturn pm.spriteUtils.getAllocSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.IntMethod:\n\t\t\t\treturn pm.spriteUtils.getIntMethodSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\tcase FunctionButton.Type.Function:\n\t\t\t\treturn pm.spriteUtils.getRobotMethodSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Empty:\n\t\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t\tcase FunctionButton.Type.IfStatement:\n\t\t\tcase FunctionButton.Type.ElseBlock:\n\t\t\t\treturn pm.spriteUtils.getConditionStatementSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.Expression:\n\t\t\t\treturn pm.spriteUtils.getExprSpriteName(this._value, state);\n\t\t\tcase FunctionButton.Type.HorizontalBar:\n\t\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t}\n\t\treturn \"\";\n\t},\n\n\t_isEmpty: function()\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn (this._value === pm.REPEATER_EMPTY);\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn (this._value === pm.CONDITION_EMPTY);\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\tcase FunctionButton.Type.Expression:\n\t\t\t\treturn (this._value === pm.EMPTY_METHOD);\n\t\t}\n\t},\n\n\t_getBackgroundSprite: function()\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\treturn pm.spriteUtils.getRobotConditionSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Function:\n\t\t\tcase FunctionButton.Type.Alloc:\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\treturn pm.spriteUtils.getRobotMethodSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Empty:\n\t\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName();\n\t\t\tcase FunctionButton.Type.Variable:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSprite(\"shadow\");\n\t\t\tcase FunctionButton.Type.Statement:\n\t\t\tcase FunctionButton.Type.Number:\n\t\t\t\treturn pm.spriteUtils.getRobotVariableSprite(\"shadow\");\n\t\t}\n\t},\n\n\tswitchPointsNumberR: function(iterNumber)\n\t{\n\t\tthis.loadTextureNormal(this._getRSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getRSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getRSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getRSpriteName: function(state, iterNumber)\n\t{\n\t\tif(iterNumber === 0 || iterNumber === undefined)\n\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value, state);\n\n\t\treturn pm.spriteUtils.getRepeaterSpriteName(\"{0}_{1}\".format(this._value, iterNumber), state);\n\t}\n});\n\nvar _p = FunctionButtonK.prototype;\n\n/** @expose */\n_p.value;\ncc.defineGetterSetter(_p, \"value\", _p.getValue, _p.setValue);\n\n/** @expose */\n_p.type;\ncc.defineGetterSetter(_p, \"type\", _p.getType, _p.setType);\n","/**\n * Created by Nikita Besshaposhnikov on 10.03.16.\n */\n\n/**\n * @class MethodListButtonP used by {@link MethodStackLayer}.\n * @extends FunctionButtonP\n * @constructor\n * @param {Number} value\n */\nvar MethodListButtonP = FunctionButtonP.extend(/** @lends MethodListButtonP#*/{\n\n\t_label: null,\n\t_getMethodListCallback: null,\n\t_getMethodListCallbackTarget: null,\n\n\tctor: function(value)\n\t{\n\t\tthis._label = new cc.LabelTTF(String(value), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._super(FunctionButton.Type.MethodList, value);\n\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._label.setPosition(this.width / 2, this.height / 2);\n\t\tthis._label.setFontFillColor(pm.settings.levelFontColor);\n\n\t\tthis.addChild(this._label);\n\t},\n\n\tcloneImage: function()\n\t{\n\t\tvar image = new ccui.ImageView(pm.spriteUtils.getIconName(\"mslDrag\"), ccui.Widget.PLIST_TEXTURE);\n\t\timage.setCascadeOpacityEnabled(true);\n\n\t\tvar label = new cc.LabelTTF(String(this._value), pm.settings.fontName, pm.settings.fontSize);\n\t\tlabel.setPosition(image.width / 2, image.height / 2);\n\t\tlabel.setFontFillColor(pm.settings.levelFontColor);\n\n\t\timage.addChild(label);\n\n\t\treturn image;\n\t},\n\n\t/**\n * Sets method list\n * @param callback\n * @param target\n */\n\tsetMethodListCallback: function(callback, target)\n\t{\n\t\tthis._getMethodListCallback = callback;\n\t\tthis._getMethodListCallbackTarget = target;\n\t},\n\n\t/**\n * Retirns method list associated with button.\n * @returns {Array}\n */\n\tgetMethodList: function()\n\t{\n\t\treturn this._getMethodListCallback.call(this._getMethodListCallbackTarget);\n\t},\n\n\t_valueChanged: function()\n\t{\n\t\tthis._label.setString(String(this._value));\n\t},\n\n\t_getSpriteName: function(state)\n\t{\n\t\treturn pm.spriteUtils.getIconName(\"mslDrag\", state);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 10.03.16.\n */\n\n/**\n * @class MethodListButtonK used by {@link MethodStackLayer}.\n * @extends FunctionButtonK\n * @constructor\n * @param {Number} value\n */\nvar MethodListButtonK = FunctionButtonK.extend(/** @lends MethodListButtonK#*/{\n\n\t_label: null,\n\t_getMethodListCallback: null,\n\t_getMethodListCallbackTarget: null,\n\n\tctor: function(value)\n\t{\n\t\tthis._label = new cc.LabelTTF(String(value), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._super(FunctionButton.Type.MethodList, value);\n\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._label.setPosition(this.width / 2, this.height / 2);\n\t\tthis._label.setFontFillColor(pm.settings.levelFontColor);\n\n\t\tthis.addChild(this._label);\n\t},\n\n\tselect: function()\n\t{\n\t\tif(this.selected)\n\t\t{\n\t\t\tthis.stopAnimation();\n\t\t\tthis.selected = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.sendCustomEvent(pm.DESELECT_FUNCTIONBUTTON);\n\t\t\tFunctionButton.selectedButton = this.clone();\n\t\t\tthis.selected = true;\n\t\t\tthis.startAnimation();\n\t\t}\n\t},\n\n\tclone: function()\n\t{\n\t\tvar but = new MethodListButtonK(this.value);\n\t\tbut.getMethodList = this.getMethodList;\n\t\treturn but;\n\t},\n\n\tcloneImage: function()\n\t{\n\t\treturn this.clone();\n\t},\n\n\t/**\n\t * Sets method list\n\t * @param callback\n\t * @param target\n\t */\n\tsetMethodListCallback: function(callback, target)\n\t{\n\t\tthis._getMethodListCallback = callback;\n\t\tthis._getMethodListCallbackTarget = target;\n\t},\n\n\t_valueChanged: function()\n\t{\n\t\tthis._label.setString(String(this._value));\n\t},\n\n\t_getSpriteName: function(state)\n\t{\n\t\treturn pm.spriteUtils.getIconName(\"mslDrag\", state);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 10.03.16.\n */\n\n/**\n * @class RecognizeResultButton used for result of recognition.\n * @extends FunctionButtonP\n * @constructor\n * @param {Number} value\n */\nvar RecognizeResultButton = FunctionButtonP.extend(/** @lends RecognizeResultButton#*/{\n\n\t_label: null,\n\n\tctor: function(value)\n\t{\n\t\tthis._label = new cc.LabelTTF(String(0), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tthis._super(FunctionButton.Type.RecognizeResult, value);\n\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.SELECTED_STATE), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.DISABLED_STATE), ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._label.setPosition(this.width / 2, this.height / 2);\n\t\tthis._label.setFontFillColor(pm.settings.levelFontColor);\n\n\t\tthis.addChild(this._label);\n\t},\n\n\tcloneImage: function()\n\t{\n\t\tvar image = new ccui.ImageView(pm.spriteUtils.getIconName(\"mslDrag\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tvar label = new cc.LabelTTF(String(this._value.length || 0), pm.settings.fontName, pm.settings.fontSize);\n\t\tlabel.setPosition(image.width / 2, image.height / 2);\n\t\tlabel.setFontFillColor(pm.settings.levelFontColor);\n\n\t\timage.addChild(label);\n\n\t\treturn image;\n\t},\n\n\t_valueChanged: function()\n\t{\n\t\tthis._label.setString(String(this._value.length || 0));\n\t},\n\n\t_getSpriteName: function(state)\n\t{\n\t\treturn pm.spriteUtils.getIconName(\"mslDrag\", state);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 10.07.2018.\n */\n\n/**\n * @extends FunctionButtonP\n * @constructor\n * @param {String} value\n */\nvar EmptyFunctionButton = FunctionButtonP.extend(/** @lends EmptyFunctionButton#*/{\n\n\tctor: function (type)\n\t{\n\t\tthis._super(type, \"empty\");\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\tthis._value = pm.REPEATER_EMPTY;\n\t\t\t\tbreak;\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\tthis._value = pm.CONDITION_EMPTY;\n\t\t\t\tbreak;\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\tthis._value = pm.EMPTY_METHOD;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tcloneImage: function ()\n\t{\n\t\tif (this._type === FunctionButton.Type.CondRepeater)\n\t\t\treturn new ccui.ImageView(pm.spriteUtils.getRepeaterSpriteName(\"cond\"), ccui.Widget.PLIST_TEXTURE);\n\t\telse\n\t\t\treturn new ccui.ImageView(this._getSpriteName(pm.NORMAL_STATE), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getSpriteName: function (state)\n\t{\n\t\tswitch (this._type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\treturn pm.spriteUtils.getRobotMethodSpriteName(\"shadow\", state);\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\treturn pm.spriteUtils.getRobotConditionSpriteName(\"shadow\", state);\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(\"shadow\", state);\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn pm.spriteUtils.getRobotConditionSpriteName(\"empty\", state);\n\t\t}\n\t\treturn \"\";\n\t}\n});\n","/**\n * Created by Diana Agl on 01.06.2019.\n */\n\n/**\n * @extends FunctionButtonK\n * @constructor\n * @param {String} value\n */\n\nvar VarFunctionButton = FunctionButtonK.extend(/** @lends VarFunctionButton#*/{\n\t_title: null,\n\n\tctor: function (type, name, isNative)\n\t{\n\t\tif(!isNative)\n\t\t\tthis._super(type, name, false);\n\t\telse\n\t\t\tthis._super(type, name, true);\n\n\t\tthis.setTitleText(LocalizedString(name));\n\t\tthis.setTitleFontName(ProgramContainerLayer.FONT_NAME);\n\t\tthis.setTitleColor(pmui.NodeLayer.VAR_COLOR);\n\t\tthis.setTitleFontSize(ProgramContainerLayer.FONT_SIZE);\n\t\tthis.setScale9Enabled(true);\n\t\tthis.setContentSize(Math.max(this.getTitleRenderer().width + 5, ProgramLayer.BUTTON_WIDTH), this.height);\n\t},\n\n\tcloneImage: function ()\n\t{\n\t\tvar but = new VarFunctionButton(this._type, this._value);\n\t\tbut._parentNode = this._parentNode;\n\t\treturn but;\n\t},\n\n\tclone: function ()\n\t{\n\t\tvar but = new VarFunctionButton(this._type, this._value, this._varType);\n\t\tbut._parentNode = this._parentNode;\n\t\treturn but;\n\t},\n\n\t_getSpriteName: function (state)\n\t{\n\t\tif (this._type === FunctionButton.Type.Variable)\n\t\t{\n\t\t\tif (this.isInt())\n\t\t\t\treturn pm.spriteUtils.getNumberSpriteName(state);\n\t\t\telse if (this.isBool())\n\t\t\t\treturn pm.spriteUtils.getBoolSpriteName(state);\n\t\t}\n\t\telse if (this._type === FunctionButton.Type.Empty)\n\t\t{\n\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t}\n\t\telse if (this._type === FunctionButton.Type.Method || this._type === FunctionButton.Type.Function)\n\t\t{\n\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t}\n\t\telse if (this._type === FunctionButton.Type.Statement)\n\t\t{\n\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t}\n\t\telse if (this._type === FunctionButton.Type.IntMethod || this._type === FunctionButton.Type.Constant)\n\t\t{\n\t\t\treturn pm.spriteUtils.getNumberSpriteName(state);\n\t\t}\n\t\telse if(this._type === FunctionButton.Type.Alloc)\n\t\t{\n\t\t\treturn pm.spriteUtils.getEmptyMethodSpriteName(state);\n\t\t}\n\t},\n\n\tisBool: function ()\n\t{\n\t\treturn pmui.AllocNode.boolVals.indexOf(this.value) !== -1;\n\t},\n\n\tisInt: function ()\n\t{\n\t\treturn pmui.AllocNode.intVals.indexOf(this.value) !== -1;\n\t},\n\n\tgetVarType: function ()\n\t{\n\t\treturn pmui.AllocNode.intVals.indexOf(this.value) !== -1 ? pm.AllocVals.INT: pm.AllocVals.BOOL;\n\t}\n});\n","/**\n * Created by Diana Agliamutdinova 01.2019\n */\n\n/**\n * @class RepeaterButton used by {@link RobotManager} and {@link ProgramLayer}.\n * @extends FunctionButtonP\n * @constructor\n * @param {String} value\n */\nvar RepeaterButton = FunctionButtonP.extend(/** @lends RepeaterButton#*/{\n\n\tctor: function(value, drawBackground)\n\t{\n\t\tthis._super(FunctionButton.Type.Repeater, value, drawBackground);\n\t},\n\n\tcloneImage: function()\n\t{\n\t\treturn new ccui.ImageView(pm.spriteUtils.getRepeaterSpriteName(this._value), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\tswitchPointsNumber: function(iterNumber)\n\t{\n\t\tthis.loadTextureNormal(this._getSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTexturePressed(this._getSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.loadTextureDisabled(this._getSpriteName(pm.NORMAL_STATE, iterNumber), ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_getSpriteName: function(state, iterNumber)\n\t{\n\t\tif(iterNumber === 0 || iterNumber === undefined)\n\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value, state);\n\n\t\treturn pm.spriteUtils.getRepeaterSpriteName(\"{0}_{1}\".format(this._value, iterNumber), state);\n\t}\n});\n","/**\n * Created by Antony Orlovsky on 13.03.2019.\n */\n\n/**\n * @class CounterRepeaterButton used by {@link RobotManager} and {@link ProgramLayer}.\n * @extends RepeaterButton\n * @constructor\n * @param {String} value\n */\nvar CounterRepeaterButton = RepeaterButton.extend(/** @lends RepeaterButton#*/{\n\n\t_iterNum: 0,\n\n\tctor: function(value, drawBackground)\n\t{\n\t\tthis._super(value, drawBackground);\n\n\t\tthis._iterNum = new ccui.Text(\"\", pm.settings.fontName, pm.settings.fontSize);\n\t\tthis._iterNum.setColor(CounterRepeaterButton.TEXT_COLOR);\n\t\tthis._iterNum.setAnchorPoint(cc.p(0.5, 0.5));\n\t\tthis._iterNum.setPosition(this.width / 2 - CounterRepeaterButton.LEFT_MARGIN, this.height / 2 - CounterRepeaterButton.UPPER_MARGIN);\n\n\t\tthis.addChild(this._iterNum, 1);\n\t},\n\n\tswitchPointsNumber: function(num, iterNumber)\n\t{\n\t\tRepeaterButton.prototype.switchPointsNumber.call(this, iterNumber);\n\n\t\tif (iterNumber === 0 || iterNumber === undefined)\n\t\t\tthis._iterNum.setVisible(false);\n\t\telse\n\t\t{\n\t\t\tthis._iterNum.setString(num - iterNumber + 1);\n\t\t\tthis._iterNum.setVisible(true);\n\t\t}\n\t},\n\n\t_getSpriteName: function(state, iterNumber)\n\t{\n\t\tif (iterNumber === 0 || iterNumber === undefined)\n\t\t\treturn pm.spriteUtils.getRepeaterSpriteName(this._value, state);\n\n\t\treturn pm.spriteUtils.getRepeaterSpriteName(\"{0}_{1}\".format(this._value, pm.REPEATER_EMPTY), state);\n\t}\n});\n\nCounterRepeaterButton.UPPER_MARGIN = 2.5;\nCounterRepeaterButton.LEFT_MARGIN = 1.0;\nCounterRepeaterButton.TEXT_COLOR = cc.color(255, 144, 0);\n","/**\n * Created by Nikita Besshaposhnikov on 19.01.16.\n */\n\n/**\n * This callback is used to check can drag button in bar.\n * @callback FunctionButtonBar~canDragFunction\n * @returns {Boolean}\n */\n\n/**\n * Layer that contains select buttons.
\n * Buttons can be clicked and dragged.\n * @extends pmui.DragAndDropLayout\n * @constructor\n * @param {String} dropTarget Drop target for DND\n * @param {pmui.DragAndDropLayout~event} callback Callback fro DND events.\n * @param {FunctionButtonBar~canDragFunction} Callback for check is elements draggable.\n * @param {ccui.Widget} target for callback.\n */\nvar FunctionButtonBar = pmui.DragAndDropLayout.extend({\n\t_canDragFunction: null,\n\t_canDragFunctionTarget: null,\n\n\tctor: function(dropTarget, callback, canDragFunction, target)\n\t{\n\t\tthis._super(pmui.DragAndDropLayout.Type.DRAG_ONLY);\n\n\t\tthis._canDragFunction = canDragFunction;\n\t\tthis._canDragFunctionTarget = target;\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_HORIZONTAL);\n\n\t\tthis.addDropTargetName(dropTarget);\n\n\t\tthis.addDNDEventListener(callback, target);\n\t},\n\n\t_isElementDraggable: function(element) { return this._canDragFunction.call(this._canDragFunctionTarget); },\n\n\t_findElementByTouch: function(touch)\n\t{\n\t\tvar children = this.getChildren();\n\t\tfor(var i = 0; i < this.getChildrenCount(); ++i)\n\t\t{\n\t\t\tif(cc.rectContainsPoint(children[i].getBoundingBox(), this.convertTouchToNodeSpace(touch)))\n\t\t\t\treturn children[i];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_cloneElement: function(element)\n\t{\n\t\treturn element.cloneImage();\n\t},\n\n\tsetEnabled: function(flag)\n\t{\n\t\tccui.Layout.prototype.setEnabled.call(this, flag);\n\n\t\tfor(var i = 0; i < this.getChildrenCount(); ++i)\n\t\t\tthis.getChildren()[i].setEnabled(flag);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 03.07.2018.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar ProgramContainerLayer = pmui.DragAndDropLayout.extend(/** @lends ProgramContainerLayer# */{\n\n\t_programLayer: null,\n\t_program: null,\n\n\t_highlightedMethodsStack: [],\n\t_startedRepeatersStack: [],\n\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\tctor: function (programLayer, program)\n\t{\n\t\tthis._super(pmui.DragAndDropLayout.Type.DRAG_AND_DROP, ProgramContainerLayer.DNDNAME);\n\t\tthis.addDNDEventListener(this._dragCallback, this);\n\n\t\tthis._programLayer = programLayer;\n\t\tthis._program = program;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._highlightedMethodsStack = [];\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined)\n\t\t\t\tthis._enableControlledMode(data);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, this._disableControlledMode.bind(this), this);\n\t},\n\n\t/**\n * Enables Controlled mode of function block layer.
\n * In this mode buttons animates once and called click callback passed to function.\n * @param {pm.ControlledModeData} controlledModeData\n * @private\n */\n\t_enableControlledMode: function (controlledModeData)\n\t{\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\t},\n\n\t/**\n * Disables Controlled mode of function block layer.\n * @private\n */\n\t_disableControlledMode: function ()\n\t{\n\t\tthis._buttonClickCallback = null;\n\t\tthis._buttonClickCallbackTarget = null;\n\t},\n\n\t_parseProgram: function () {},\n\n\tupdateProgram: function(program) {},\n\n\t_recalculateSizes: function() {},\n\n\t_findElementByTouch: function(touch, button) {},\n\n\t_isElementDraggable: function(element, touch) {},\n\n\t_isElementClickable: function(element) {},\n\n\t_cloneElement: function(element) {},\n\n\t_isEmptyButton: function(button) {},\n\n\t_dragCallback: function(element, eventType, touch) {},\n\n\thighlightMethodBroken: function(methodPlace) {},\n\n\thighlightMethod: function(methodPlace) {},\n\n\tswitchPointsInRepeater: function(repPlace, num, rep) {},\n\n\treloadRepeaters: function() {},\n\n\tclearLastHighlight: function() {},\n\n\tclearAllHighlights: function() {},\n\n\t_isEditable: function()\n\t{\n\t\treturn this._programLayer.isProgramPatternEditable();\n\t}\n});\n\nProgramContainerLayer.EMPTY_ROW_SEPARATOR_HEIGHT = 10;\nProgramContainerLayer.REPEATER_BUTTON_NAME = \"repeater\";\nProgramContainerLayer.RESIZE_SPRITE_NAME = \"resize\";\n\nProgramContainerLayer.SEPARATOR_COLOR = cc.color(255, 255, 255, 144);\nProgramContainerLayer.SEPARATOR_LWIDTH = 0.5;\nProgramContainerLayer.BUTTON_SIZE = 40.0;\nProgramContainerLayer.BUTTON_SEPARATOR = 4.0;\nProgramContainerLayer.SYMBOL_TABLE_MARGIN = 0.25;\nProgramContainerLayer.DNDNAME = \"function_drag_and_drop\";\nProgramContainerLayer.BOTTOM_BORDER = 43.0;\nProgramContainerLayer.ID_PATTERN = \"{0}_{1}\";\nProgramContainerLayer.NORMAL_STATE = 0;\nProgramContainerLayer.ADD_ROWS_STATE = 1;\nProgramContainerLayer.REMOVE_ROWS_STATE = 2;\n","/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar ProgramContainerLayerK = ProgramContainerLayer.extend(/** @lends ProgramContainerLayer# */{\n\n\t_visualType: 0,\n\t_programTree: null,\n\tshift: 0,\n\n\tctor: function (programLayer, program)\n\t{\n\t\tthis._super(programLayer, program);\n\n\t\tthis._createNodeTree(this._program.programTree);\n\n\t\tpm.registerCustomEventListener(pm.ADD_OR_REMOVE_ROWS, function (event)\n\t\t{\n\t\t\tthis._visualType++;\n\t\t\tthis._visualType %= 3;\n\n\t\t\tthis.updateProgram(this._program, this._programLayer);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.ADD_GLOBAL_ROBOT, function (event)\n\t\t{\n\t\t\tthis._programTree.addOutput(event.getUserData());\n\t\t}.bind(this), this);\n\t},\n\n\t/** makes Visual tree from ProgramData\n\t * adds it to ProgramContainer\n\t * @param programTree syntax tree from ProgramData\n\t * @private\n\t */\n\t_createNodeTree: function (programTree)\n\t{\n\t\t!this._programTree\n\t\t\t? this._programTree = new ProgramTree(\n\t\t\t\t\t\t\t\t\tthis._visualType,\n\t\t\t\t\t\t\t\t\tprogramTree,\n\t\t\t\t\t\t\t\t\tthis._programLayer.getRobot(),\n\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\tthis._programLayer.getOutputRobot())\n\t\t\t: this._programTree.createTree(this._visualType,\n\t\t\t\t\t\t\t\t\tprogramTree,\n\t\t\t\t\t\t\t\t\tthis._programLayer.getRobot(),\n\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\tthis._programLayer.getOutputRobot());\n\n\t\tvar nodeTree = this._programTree.getTree();\n\t\tthis._visualType = this._programTree.getMode();\n\n\t\tvar treeAlign = new ccui.RelativeLayoutParameter();\n\t\ttreeAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\ttreeAlign.setMargin(0, 0, pmui.NodeLayer.SEPARATORX, 0);\n\t\tnodeTree.setLayoutParameter(treeAlign);\n\t\tnodeTree.setTag(ProgramContainerLayer.TREE_TAG);\n\n\t\tthis._recalculateSizes();\n\t},\n\n\t_recalculateSizes: function ()\n\t{\n\t\tvar oldHeight = this.height;\n\t\tvar height = 0;\n\t\tvar width = 0;\n\t\tif (this._programTree)\n\t\t{\n\t\t\twidth = pm.appUtils.getProgramLayerWidth() - ProgramLayer.SCROLL_BAR_WIDTH;\n\t\t\theight += this.getChildByTag(ProgramContainerLayer.TREE_TAG).height;\n\t\t}\n\n\t\tthis.shift = height - oldHeight;\n\t\tthis.setContentSize(width, height);\n\t\tpm.sendCustomEvent(pm.UPDATE_INNER_PROGRAM_LAYER_CONTAINER);\n\t},\n\n\t_cloneElement: function (element, touch)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn false;\n\t\tif (element.isPartlyClonable)\n\t\t{\n\t\t\tvar touchCoords = element.getParent().convertTouchToNodeSpace(touch);\n\t\t\tvar box = element.getBoundingBox();\n\t\t\treturn cc.rectContainsPoint(new cc.rect(box.x, box.y, box.width/2, box.height), touchCoords)\n\t\t\t\t\t? element.clone()\n\t\t\t\t\t: null;\n\t\t}\n\t\treturn element.clone();\n\t},\n\n\t_dragCallback: function (element, eventType, touch, clonedElem)\n\t{\n\t\tvar activeObject = null;\n\t\tswitch (eventType)\n\t\t{\n\t\t\tcase pmui.DragAndDropLayout.Event.CLICKED:\n\t\t\t\tactiveObject = this._onClick(element, touch);\n\t\t\t\tbreak;\n\t\t\tcase pmui.DragAndDropLayout.Event.DRAG_CANCELLED:\n\t\t\t\tif (pm.tutorialUtils.onDragCancelled(touch))\n\t\t\t\t\tactiveObject = this._onDragCancel(element, touch);\n\t\t\t\tbreak;\n\t\t\tcase pmui.DragAndDropLayout.Event.DROP:\n\t\t\t\tactiveObject = this._onDropButton(element, touch);\n\t\t\t\tbreak;\n\t\t\tcase pmui.DragAndDropLayout.Event.DRAG_START:\n\t\t\t\tif(this._visualType === ProgramContainerLayer.PIKTO_K_MODE)\n\t\t\t\t\tthis._programLayer.onDragStart(clonedElem, touch);\n\t\t\t\tbreak;\n\t\t}\n\t\tif(activeObject)\n\t\t{\n\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\tvar pos = this.convertToWorldSpace(this.convertTouchToNodeSpace(touch));\n\t\t\tthis._recalculateSizes();\n\t\t\tthis._programLayer.updateView(activeObject.height, pos.y);\n\t\t}\n\t},\n\n\t_onClick: function (button, touch)\n\t{\n\t\tvar element = this._programLayer._findDropBody(touch, null);\n\t\tif(!element)\n\t\t\treturn;\n\t\tif(this._program.canEditProgramPattern && element.setNonEditable())\n\t\t\treturn;\n\n\t\tvar selectedButton = FunctionButton.selectedButton;\n\t\tif(selectedButton)\n\t\t{\n\t\t\tProgramContainerLayer.select(element);\n\n\t\t\tif ((element.canReplace(selectedButton.type) && element.isEditable())\n\t\t\t\t|| element._parentNode.canAdd(selectedButton.type)) {\n\t\t\t\tFunctionButton.deselect();\n\t\t\t\treturn this._onDropButton(selectedButton, touch);\n\t\t\t}\n\t\t\tProgramContainerLayer.deselect();\n\t\t}\n\t\treturn element.clickCallback();\n\t},\n\n\tcanAdd: function()\n\t{\n\t\treturn false;\n\t},\n\n\t_onDropButton: function (button, touch)\n\t{\n\t\tvar pasteObject = null;\n\t\tvar element = this.getSelectedNode();\n\n\t\tif(!element)\n\t\t\treturn;\n\n\t\tif(button instanceof pmui.NodeLayer)\n\t\t\tpasteObject = this._programTree.moveNode(button, element);\n\t\telse if (button.type === FunctionButton.Type.MethodList)\n\t\t\tpasteObject = this._programTree.pasteNodeList(element, button.getMethodList());\n\t\telse\n\t\t\tpasteObject = this._programTree.pasteNode(element._parentNode, button, element);\n\n\t\tif (element instanceof pmui.ReplaceNode && button.type !== FunctionButton.Type.Empty)\n\t\t\telement._removeNodeFromTree();\n\n\t\tif (pasteObject)\n\t\t\tpasteObject.calculateSize();\n\n\t\tif(this._programTree.getTree().width > this.width)\n\t\t{\n\t\t\tvar elem = pasteObject._removeNodeFromTree();\n\t\t\tpm.sendCustomEvent(pm.RESET_HIGHLIGHT);\n\t\t\telem.calculateSize();\n\t\t}\n\t\tif(this._programTree.getMethodsCount() >= this._program.maxMethodCount)\n\t\t\tthis._programLayer._formatButs(ProgramLayer.FUNCTIONS_BUTTON_TAG);\n\n\t\tProgramContainerLayer.deselect();\n\t\treturn pasteObject;\n\t},\n\n\t_findElementByTouch: function (touch, button)\n\t{\n\t\tif(this._visualType === ProgramContainerLayer.PIKTO_K_MODE)\n\t\t\treturn this._programLayer._findNode(touch, this.getChildByTag(ProgramContainerLayer.TREE_TAG), button);\n\t},\n\n\t_isElementClickable: function(element)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE ||\n\t\t\t(element instanceof pmui.NodeLayer &&\n\t\t\t\t(element.isBody() || element.isProgram() || element.isMain())))\n\t\t\treturn false;\n\t\treturn true;\n\t},\n\n\t_isElementDraggable: function (element, touch)\n\t{\n\t\tif(element instanceof pmui.NodeLayer &&\n\t\t\t(element.isBody() || element.isProgram() || element.isMain()))\n\t\t\treturn false;\n\t\tif(element.isPartlyClonable)\n\t\t{\n\t\t\tvar box = element.getBoundingBox();\n\t\t\tvar touchCoords = element.getParent().convertTouchToNodeSpace(touch);\n\t\t\treturn cc.rectContainsPoint(\n\t\t\t\tnew cc.rect(box.x, box.y, box.width / 2, box.height), touchCoords);\n\t\t}\n\t\treturn true;\n\t},\n\n\t_onDragCancel: function (button, touch)\n\t{\n\t\tFunctionButton.deselect();\n\t\tProgramContainerLayer.deselect();\n\t\tif(!(pm.settings.isEditorMode || button.isEditable()))\n\t\t{\n\t\t\tbutton.removeCallbackAction();\n\t\t\treturn;\n\t\t}\n\n\t\tvar par = button._removeNodeFromTree();\n\t\tpm.sendCustomEvent(pm.RESET_HIGHLIGHT);\n\t\treturn par;\n\t},\n\n\tupdateProgram: function (program, programLayer)\n\t{\n\t\tthis._programLayer = programLayer;\n\t\tthis._program = program;\n\n\t\tthis._createNodeTree(this._program.programTree);\n\t},\n\n\treset: function ()\n\t{\n\t\tthis._programTree.reset();\n\t},\n\n\tgetSelectedNode: function ()\n\t{\n\t\treturn this._findSelected(this.getChildByTag(ProgramContainerLayer.TREE_TAG));\n\t},\n\n\t_findSelected: function (node)\n\t{\n\t\tif (node.getTag() === ProgramContainerLayer.SELECTED_TAG)\n\t\t\treturn node;\n\n\t\tvar selectedNode = null;\n\t\tnode.getChildren().forEach(function (kid){\n\t\t\tvar res = this._findSelected(kid);\n\t\t\tif(res)\n\t\t\t{\n\t\t\t\tselectedNode = res;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}, this);\n\t\treturn selectedNode;\n\t}\n});\n\nProgramContainerLayer.FONT_NAME = pm.fonts.getRealFontName(\"Evolventa\");\nProgramContainerLayer.FONT_SIZE = 20;\nProgramContainerLayer.SEPARATOR_SIZEX = 40;\nProgramContainerLayer.BORDER_X = 10;\nProgramContainerLayer.PIKTO_MODE = 1;\nProgramContainerLayer.KUMIR_MODE = 2;\nProgramContainerLayer.PIKTO_K_MODE = 0;\nProgramContainerLayer.TREE_TAG = 100;\nProgramContainerLayer.SELECTED_TAG = 199;\nProgramContainerLayer.NOT_SELECTED_TAG = 299;\n\nProgramContainerLayer.deselect = function()\n{\n\tpm.sendCustomEvent(pm.DESELECT_NODE);\n};\n\nProgramContainerLayer.select = function(elem)\n{\n\tProgramContainerLayer.deselect();\n\telem.select();\n};\n","/**\n * Created by Kirill Mashchenko on 03.07.2018.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar ProgramContainerLayerP = ProgramContainerLayer.extend(/** @lends ProgramContainerLayer# */{\n\n\t_symbolTable: null,\n\n\t_backgroundLayer: null,\n\t_arrowsLayer: null,\n\n\t_parsedProgram: [],\n\n\t_resizing: false,\n\t_resizeSprite: null,\n\n\t_realWidth: 0,\n\t_realHeight: 0,\n\n\t_brokenSprite: null,\n\n\t_canAddRemoveRowsState: null,\n\n\tctor: function (programLayer, program)\n\t{\n\t\tthis._super(programLayer, program);\n\n\t\tthis._startedRepeatersStack = [];\n\n\t\tthis._drawLayout();\n\n\t\tthis._canAddRemoveRowsState = ProgramContainerLayer.NORMAL_STATE;\n\n\t\tpm.registerCustomEventListener(pm.ADD_OR_REMOVE_ROWS, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data)\n\t\t\t\tthis._loadAddRemoveRowTexture(data.button);\n\n\t\t}.bind(this), this);\n\t},\n\n\t_getProgramHeight: function ()\n\t{\n\t\tvar lastNotEmptyRow = this._program.height;\n\n\t\tif (!this._isEditable())\n\t\t{\n\t\t\tfor (var i = 0; i < this._program.height; ++i)\n\t\t\t{\n\t\t\t\tvar isEmptyRow = true;\n\t\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t\t{\n\t\t\t\t\tvar symbol = this._program.symbols[i][j];\n\n\t\t\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\t\t{\n\t\t\t\t\t\tisEmptyRow = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isEmptyRow)\n\t\t\t\t\tlastNotEmptyRow = i+1;\n\t\t\t}\n\t\t}\n\n\t\treturn lastNotEmptyRow;\n\t},\n\n\t_drawProgram: function ()\n\t{\n\t\tfor (var i = 0; i < this._getProgramHeight(); ++i)\n\t\t{\n\t\t\tvar isEmptyRow = true;\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tvar symbol = this._program.symbols[i][j];\n\n\t\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\t{\n\t\t\t\t\tthis._drawFunctionButton(i, j, symbol.type, symbol.value);\n\t\t\t\t\tisEmptyRow = false;\n\t\t\t\t}\n\t\t\t\telse if (this._isEditable())\n\t\t\t\t{\n\t\t\t\t\tthis._drawFunctionButton(i, j, symbol.type, symbol.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isEmptyRow && !this._isEditable())\n\t\t\t\tthis._symbolTable.setPlaceholderRow(i, ProgramContainerLayer.EMPTY_ROW_SEPARATOR_HEIGHT);\n\t\t}\n\n\t\tthis._updateFunctionInfo();\n\t\tthis._parseProgram();\n\t\tthis._drawBackgroundObjects();\n\t\tthis._drawResizeImage();\n\t},\n\n\t_parseProgram: function ()\n\t{\n\t\tthis._parsedProgram = pm.programUtilsP.parseProgram(this._program);\n\t},\n\n\tupdateProgram: function(program)\n\t{\n\t\tthis.removeAllChildren();\n\t\tthis._program = program;\n\t\tthis._drawLayout();\n\t},\n\n\t_drawBackgroundObjects: function()\n\t{\n\t\tthis._backgroundLayer.removeAllChildren(true);\n\n\t\tthis._brokenSprite = new cc.Sprite(\"#empty-failed.png\");\n\t\tthis._brokenSprite.setAnchorPoint(0, 1);\n\t\tthis._brokenSprite.setVisible(false);\n\t\tthis._brokenSprite.setPosition(cc.p(0, 0));\n\n\t\tthis._backgroundLayer.addChild(this._brokenSprite, 10);\n\n\t\tthis._drawRectangles(this._parsedProgram, 0);\n\t\tthis._drawBackSprites();\n\t},\n\n\t_drawRectangles: function(curChild, parity)\n\t{\n\t\tif (curChild.type !== pm.FunctionBlockType.Root && curChild.type !== pm.FunctionBlockType.Simple && curChild.depth === 0 &&\n\t\t\tcurChild.rightDown.x >= curChild.leftUp.x && curChild.rightDown.y >= curChild.leftUp.y)\n\t\t{\n\t\t\tvar rectangle = new cc.Scale9Sprite(\"System/algorithmBack.png\");\n\t\t\trectangle.setCapInsets(cc.rect(20, 20, 20, 20));\n\n\t\t\trectangle.setAnchorPoint(0, 0);\n\n\t\t\tvar cellSize = ProgramContainerLayer.BUTTON_SIZE + ProgramContainerLayer.BUTTON_SEPARATOR;\n\t\t\tvar height = (curChild.rightDown.x - curChild.leftUp.x) * cellSize;\n\t\t\tvar width = (-curChild.leftUp.y + curChild.rightDown.y) * cellSize;\n\n\t\t\tvar button = null;\n\n\t\t\tfor (var x = 0; x < this._program.width; ++x)\n\t\t\t{\n\t\t\t\tvar symbol = this._program.symbols[curChild.rightDown.x][x];\n\n\t\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\t{\n\t\t\t\t\tbutton = this._symbolTable.getCell(curChild.rightDown.x, x);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar rightX = ProgramContainerLayer.BUTTON_SEPARATOR / (Math.pow(2, curChild.depth));\n\t\t\tvar leftX, bottomY, topY;\n\n\t\t\tleftX = bottomY = topY = rightX;\n\n\t\t\tif (curChild.value !== pm.CMD_MAIN && curChild.type === pm.FunctionBlockType.Function)\n\t\t\t\ttopY *= 0.7;\n\n\t\t\t// if (curChild.depth === 0)\n\t\t\t// {\n\t\t\t// leftX = 2 * ProgramContainerLayer.BUTTON_SEPARATOR / 5;\n\t\t\t// bottomY = 2 * ProgramContainerLayer.BUTTON_SEPARATOR / 5;\n\t\t\t// }\n\n\t\t\trectangle.setContentSize(\n\t\t\t\twidth + ProgramContainerLayer.BUTTON_SIZE + rightX + leftX,\n\t\t\t\theight + ProgramContainerLayer.BUTTON_SIZE + bottomY + topY\n\t\t\t);\n\n\t\t\trectangle.setPosition(curChild.leftUp.y * cellSize + ProgramContainerLayer.BUTTON_SEPARATOR - leftX,\n\t\t\t\tbutton.getPosition().y - ProgramContainerLayer.BUTTON_SIZE - bottomY);\n\n\t\t\tthis._backgroundLayer.addChild(rectangle, curChild.depth);\n\t\t}\n\n\t\tfor (var i = 0; i < curChild.children.length; ++i)\n\t\t{\n\t\t\tthis._drawRectangles(curChild.children[i], parity);\n\n\t\t\tif (curChild.type === pm.FunctionBlockType.Root)\n\t\t\t\t++parity;\n\t\t}\n\t},\n\n\t_drawBackSprites: function()\n\t{\n\t\tif(!this._isEditable())\n\t\t\treturn;\n\n\t\tfor (var i = 0; i < this._program.height; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tvar backSprite = pm.spriteUtils.getRobotMethodSprite(pm.EMPTY_METHOD, \"back\");\n\n\t\t\t\tvar pos = this._symbolTable.getCellPosition(i, j);\n\n\t\t\t\tpos.x += ProgramContainerLayer.BUTTON_SIZE - backSprite.width;\n\t\t\t\tpos.y += ProgramContainerLayer.BUTTON_SIZE - backSprite.height;\n\n\t\t\t\tbackSprite.setPosition(pos);\n\t\t\t\tbackSprite.setAnchorPoint(0.0, 1.0);\n\n\t\t\t\tthis._backgroundLayer.addChild(backSprite, -1);\n\t\t\t}\n\t\t}\n\t},\n\n\t_drawFunctionButton: function(row, col, type, value)\n\t{\n\t\tvar symbolButton = null;\n\t\tvar tutorialPattern = \"\";\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase pm.SymbolType.Method:\n\t\t\t\tsymbolButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, value, true);\n\t\t\t\ttutorialPattern = pm.tutorialUtils.OBJECT_NAME_PATTERNS.METHOD;\n\t\t\t\tbreak;\n\t\t\tcase pm.SymbolType.Condition:\n\t\t\t\tsymbolButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.Condition, value, true);\n\t\t\t\ttutorialPattern = pm.tutorialUtils.OBJECT_NAME_PATTERNS.CONDITION;\n\t\t\t\tbreak;\n\t\t\tcase pm.SymbolType.Repeater:\n\t\t\t\tif (value === pm.Counter.Repeater.Value)\n\t\t\t\t\tsymbolButton = new CounterRepeaterButton(value, true);\n\t\t\t\telse\n\t\t\t\t\tsymbolButton = new RepeaterButton(value, true);\n\t\t\t\ttutorialPattern = pm.tutorialUtils.OBJECT_NAME_PATTERNS.REPEATER;\n\t\t\t\tbreak;\n\t\t\tcase pm.SymbolType.CondRepeater:\n\t\t\t\tsymbolButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.CondRepeater, value, true);\n\t\t\t\ttutorialPattern = pm.tutorialUtils.OBJECT_NAME_PATTERNS.REPEATER;\n\t\t\t\tbreak;\n\t\t\tcase pm.SymbolType.Function:\n\t\t\t\tsymbolButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, value);\n\t\t\t\ttutorialPattern = pm.tutorialUtils.OBJECT_NAME_PATTERNS.METHOD;\n\t\t\t\tbreak;\n\t\t\tcase pm.SymbolType.Empty:\n\t\t\t\tsymbolButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.Empty, value, true);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._symbolTable.setCell(row, col, symbolButton);\n\n\t\tif (tutorialPattern !== \"\")\n\t\t{\n\t\t\tpm.tutorialUtils.registerTutorialObject(\n\t\t\t\ttutorialPattern.format(row, col),\n\t\t\t\tsymbolButton, true, true\n\t\t\t);\n\t\t}\n\n\t\treturn symbolButton;\n\t},\n\n\t_drawLayout: function()\n\t{\n\t\tthis._realHeight = 0;\n\t\tthis._realWidth = 0;\n\n\t\tvar cellSize = cc.size(ProgramContainerLayer.BUTTON_SIZE, ProgramContainerLayer.BUTTON_SIZE);\n\t\tvar separator = cc.size(ProgramContainerLayer.BUTTON_SEPARATOR, ProgramContainerLayer.BUTTON_SEPARATOR);\n\n\t\tthis._symbolTable = new pmui.TableView(cellSize, separator, this._getProgramHeight(), this._program.width);\n\n\t\tvar symbolTableAlign = new ccui.RelativeLayoutParameter();\n\t\tsymbolTableAlign.setRelativeName(\"functionLayout\");\n\t\tsymbolTableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tsymbolTableAlign.setMargin(ProgramContainerLayer.SYMBOL_TABLE_MARGIN, 0, 0, 0);\n\t\tthis._symbolTable.setLayoutParameter(symbolTableAlign);\n\n\t\tthis.addChild(this._symbolTable);\n\n\t\tthis._backgroundLayer = new ccui.Layout();\n\t\tthis.addChild(this._backgroundLayer, -1);\n\n\t\tthis._arrowsLayer = new ccui.Layout();\n\t\tthis.addChild(this._arrowsLayer, -1);\n\n\t\tthis._drawProgram();\n\t\tthis._recalculateSizes();\n\t},\n\n\t_recalculateSizes: function()\n\t{\n\t\tvar oldHeight = this._realHeight;\n\n\t\tthis._realWidth = Math.max(this._realWidth, this._symbolTable.getContentSize().width);\n\t\tthis._realHeight = this._symbolTable.getContentSize().height + ProgramContainerLayer.BOTTOM_BORDER;\n\n\t\tthis.setContentSize(this._realWidth, this._realHeight);\n\t\tthis._backgroundLayer.setContentSize(this._symbolTable.getContentSize());\n\t\tthis._arrowsLayer.setContentSize(this._symbolTable.getContentSize());\n\n\t\tif(this._canAddRemoveRowsState === ProgramContainerLayer.ADD_ROWS_STATE)\n\t\t\tthis._drawAddArrows();\n\n\t\telse if(this._canAddRemoveRowsState === ProgramContainerLayer.REMOVE_ROWS_STATE)\n\t\t\tthis._drawRemoveArrows();\n\n\t\tthis.forceDoLayout();\n\n\t\tpm.sendCustomEvent(pm.UPDATE_INNER_PROGRAM_LAYER_CONTAINER, this._realHeight - oldHeight);\n\t},\n\n\t_findElementByTouch: function(touch)\n\t{\n\t\tvar elementPos = this._symbolTable.cellAtPosition(this._symbolTable.convertTouchToNodeSpace(touch));\n\n\t\tif (!elementPos)\n\t\t\treturn null;\n\n\t\tvar element = this._symbolTable.getCell(elementPos);\n\n\t\tif(element instanceof FunctionButton)\n\t\t\treturn element;\n\n\t\treturn null;\n\t},\n\n\t_isElementDraggable: function(element)\n\t{\n\t\treturn (this._programLayer.getRobot().canEditProgramSymbol(this._symbolTable.cellAtPosition(element.getPosition())) &&\n\t\t\t(!this._isEmptyButton(element)||(this._isEditable() && element.type !== FunctionButton.Type.Empty)));\n\t},\n\n\t_isElementClickable: function(element)\n\t{\n\t\treturn (this._programLayer.getRobot().canEditProgramSymbol(this._symbolTable.cellAtPosition(element.getPosition())) &&\n\t\t\t(!this._isEditable() || element.type !== FunctionButton.Type.Empty || FunctionButton.selectedButton !== null));\n\t},\n\n\t_cloneElement: function(element)\n\t{\n\t\tif (this._isEditable() && this._isEmptyButton(element))\n\t\t{\n\t\t\tvar spriteName = null;\n\n\t\t\tswitch (element.type)\n\t\t\t{\n\t\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\t\tspriteName = pm.spriteUtils.getRobotMethodSpriteName(\"shadow\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\t\tspriteName = pm.spriteUtils.getRobotConditionSpriteName(\"shadow\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\t\tspriteName = pm.spriteUtils.getRepeaterSpriteName(\"shadow\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\t\tspriteName = pm.spriteUtils.getRepeaterSpriteName(\"cond\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn new ccui.ImageView(spriteName, ccui.Widget.PLIST_TEXTURE);\n\t\t}\n\t\treturn element.cloneImage();\n\t},\n\n\t_isEmptyButton: function(button)\n\t{\n\t\tswitch(button.type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Method: return button.value === pm.EMPTY_METHOD;\n\t\t\tcase FunctionButton.Type.Repeater: return button.value === pm.REPEATER_EMPTY || button.value === 1;\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn button.value === pm.CONDITION_EMPTY;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_dragCallback: function(element, eventType, touch)\n\t{\n\t\tswitch (eventType)\n\t\t{\n\t\t\tcase pmui.DragAndDropLayout.Event.CLICKED:\n\t\t\t\tthis._onClick(element, touch);\n\t\t\t\tbreak;\n\t\t\tcase pmui.DragAndDropLayout.Event.DRAG_CANCELLED:\n\t\t\t\tif(pm.tutorialUtils.onDragCancelled(touch))\n\t\t\t\t\tthis._onDragCancel(element, touch);\n\t\t\t\tbreak;\n\t\t\tcase pmui.DragAndDropLayout.Event.DROP:\n\t\t\t\tthis._onDropButton(element, touch);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_onClick: function(button, touch)\n\t{\n\t\tvar elementPos = this._symbolTable.cellAtPosition(button.getPosition());\n\n\t\tif (this._buttonClickCallback)\n\t\t{\n\t\t\tif (this._program.symbols[elementPos.x][elementPos.y].type === pm.SymbolType.Function)\n\t\t\t{\n\t\t\t\tif(pm.robotManager.state !== pm.RobotManager.State.Paused)\n\t\t\t\t\treturn false;\n\n\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, button);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tvar selectedButton = FunctionButton.selectedButton;\n\n\t\tif (this._program.symbols[elementPos.x][elementPos.y].type === pm.SymbolType.Function)\n\t\t{\n\t\t\tbutton.select();\n\t\t\treturn;\n\t\t}\n\n\t\tif(selectedButton)\n\t\t{\n\t\t\tFunctionButton.deselect();\n\n\t\t\tif(button.type === FunctionButton.Type.Method && selectedButton.type === FunctionButton.Type.MethodList)\n\t\t\t{\n\t\t\t\tvar buttonPosition = this._symbolTable.cellAtPosition(button.getPosition());\n\t\t\t\tthis._pasteMethodList(buttonPosition, selectedButton.getMethodList());\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(button.type === FunctionButton.Type.RecognizeResult)\n\t\t\t{\n\t\t\t\tthis._pasteRecognizeResult(button, touch);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._isEditable() && !(!this._isEmptyButton(selectedButton) &&\n\t\t\t\tselectedButton.type === FunctionButton.Type.Condition && button.type === FunctionButton.Type.CondRepeater))\n\t\t\t{\n\t\t\t\tthis._replaceButton(selectedButton, touch);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(selectedButton.type === button.type ||\n\t\t\t\t(button.type === FunctionButton.Type.CondRepeater &&\n\t\t\t\t\tselectedButton.type === FunctionButton.Type.Condition))\n\t\t\t\tthis.setSymbol(button, button.type, selectedButton.value);\n\t\t}\n\t},\n\n\t_getSymbolTypeForButton: function(type)\n\t{\n\t\tswitch (type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\treturn pm.SymbolType.Method;\n\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\treturn pm.SymbolType.Repeater;\n\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\treturn pm.SymbolType.Condition;\n\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\treturn pm.SymbolType.CondRepeater;\n\t\t}\n\t},\n\n\t_onDragCancel: function(button, touch)\n\t{\n\t\tvar elementPos = this._symbolTable.cellAtPosition(button.getPosition());\n\n\t\tvar isFunctionSymbol = false;\n\n\t\tif (elementPos)\n\t\t{\n\t\t\tif (this._program.symbols[elementPos.x][elementPos.y].type === pm.SymbolType.Function)\n\t\t\t\tisFunctionSymbol = true;\n\t\t}\n\n\t\tif (!this._isEmptyButton(button) && !isFunctionSymbol)\n\t\t{\n\t\t\tswitch (button.type)\n\t\t\t{\n\t\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\t\tthis.setSymbol(button, button.type, pm.EMPTY_METHOD);\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\t\tthis.setSymbol(button, button.type, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\t\tthis.setSymbol(button, button.type, pm.CONDITION_EMPTY);\n\t\t\t\t\tbreak;\n\t\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\t\t\tthis.setSymbol(button, button.type, pm.CONDITION_EMPTY);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse if (this._isEditable())\n\t\t{\n\t\t\tvar notEmptySymbolsCount = 0;\n\t\t\tvar notEmptySymbolX = -1;\n\t\t\tvar notEmptySymbolY = -1;\n\n\t\t\tfor (var i = 0; i < this._program.height; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (this._program.symbols[i][j].type !== pm.SymbolType.Empty)\n\t\t\t\t\t{\n\t\t\t\t\t\tnotEmptySymbolX = i;\n\t\t\t\t\t\tnotEmptySymbolY = j;\n\t\t\t\t\t\t++notEmptySymbolsCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (notEmptySymbolsCount === 1)\n\t\t\t{\n\t\t\t\tif (!(notEmptySymbolX === 0 && notEmptySymbolY === 0))\n\t\t\t\t{\n\t\t\t\t\tthis._program.symbols[0][0].value = pm.EMPTY_METHOD;\n\t\t\t\t\tthis._program.symbols[0][0].type = pm.SymbolType.Method;\n\n\t\t\t\t\tvar button = this._symbolTable.getCell(0, 0);\n\n\t\t\t\t\tbutton._drawBackground = true;\n\t\t\t\t\tbutton.setType(FunctionButton.Type.Method, pm.EMPTY_METHOD)\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._program.symbols[elementPos.x][elementPos.y].type = pm.SymbolType.Empty;\n\t\t\tthis._program.symbols[elementPos.x][elementPos.y].value = -1;\n\n\t\t\tvar newButton = pm.appUtils.generateFunctionButton(FunctionButton.Type.Empty, -1, false);\n\n\t\t\tthis._symbolTable.setCell(elementPos.x, elementPos.y, newButton);\n\n\t\t\tthis._updateFunctionInfo();\n\t\t\tthis._parseProgram();\n\t\t\tthis._drawBackgroundObjects();\n\t\t}\n\t},\n\n\t_checkIfCanAddBlock: function(curChild)\n\t{\n\t\tif (curChild.type !== pm.FunctionBlockType.Root && curChild.leftUp.y !== curChild.depth)\n\t\t\treturn false;\n\n\t\tfor (var i = 0; i < curChild.children.length; ++i)\n\t\t{\n\t\t\tif (!this._checkIfCanAddBlock(curChild.children[i]))\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_checkNextBlock: function(pos, type)\n\t{\n\t\tif (type === FunctionButton.Type.Repeater || type === FunctionButton.Type.Condition || type === FunctionButton.Type.CondRepeater)\n\t\t{\n\t\t\treturn this._symbolTable.getCell(pos.x, pos.y + 1);\n\t\t}\n\t\treturn true;\n\t},\n\n\t_checkIfCanAddButton: function(type, notUpdated)\n\t{\n\t\tif (notUpdated === undefined)\n\t\t\tnotUpdated = false;\n\n\t\tvar countSymbols = notUpdated ? 1 : 0;\n\n\t\tfor (var i = 0; i < this._program.height; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[i][j].type === type)\n\t\t\t\t\t++countSymbols;\n\t\t\t}\n\t\t}\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase pm.SymbolType.Method:\n\t\t\t\treturn countSymbols <= this._program.maxMethodCount || this._program.maxMethodCount === 0;\n\t\t\tcase pm.SymbolType.Condition:\n\t\t\t\treturn countSymbols <= this._program.maxConditionCount || this._program.maxConditionCount === 0;\n\t\t\tcase pm.SymbolType.Repeater:\n\t\t\t\treturn countSymbols <= this._program.maxRepeaterCount || this._program.maxRepeaterCount === 0;\n\t\t\tcase pm.SymbolType.CondRepeater:\n\t\t\t\treturn countSymbols <= this._program.maxCondRepeaterCount || this._program.maxCondRepeaterCount === 0;\n\t\t\tcase pm.SymbolType.Function:\n\t\t\t\treturn countSymbols < this._program.maxFunctionCount - 1 || this._program.maxFunctionCount === 0;\n\t\t}\n\t},\n\n\t_updateFunctionInfo: function()\n\t{\n\t\tvar functionMap = {};\n\n\t\tfor (var i = 0; i < 2; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[i][j].value >= pm.CMD_A && this._program.symbols[i][j].value <= pm.CMD_E)\n\t\t\t\t{\n\t\t\t\t\tvar button = this._symbolTable.getCell(i, j);\n\n\t\t\t\t\tthis._program.symbols[i][j].type = pm.SymbolType.Method;\n\t\t\t\t\tbutton._drawBackground = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 2; i < this._program.height; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[i][j].value >= pm.CMD_A && this._program.symbols[i][j].value <= pm.CMD_E)\n\t\t\t\t{\n\t\t\t\t\tvar isFunction = true;\n\n\t\t\t\t\tfor (var y = 0; y < this._program.width; ++y)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar symbol = this._program.symbols[i-1][y];\n\n\t\t\t\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\t\t\t\tisFunction = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (var y = 1; y < this._program.width; ++y)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar symbol = this._program.symbols[i][y];\n\n\t\t\t\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\t\t\t\tisFunction = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (j !== 0)\n\t\t\t\t\t\tisFunction = false;\n\n\t\t\t\t\tvar button = this._symbolTable.getCell(i, j);\n\n\t\t\t\t\tif (isFunction && !functionMap[this._program.symbols[i][j].value])\n\t\t\t\t\t{\n\t\t\t\t\t\tfunctionMap[this._program.symbols[i][j].value] = true;\n\t\t\t\t\t\tthis._program.symbols[i][j].type = pm.SymbolType.Function;\n\t\t\t\t\t\tbutton._drawBackground = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._program.symbols[i][j].type = pm.SymbolType.Method;\n\t\t\t\t\t\tbutton._drawBackground = true;\n\t\t\t\t\t\tbutton.setType(FunctionButton.Type.Method, button.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_replaceButton: function(button, touch)\n\t{\n\t\tvar newElementPos = this._symbolTable.cellAtPosition(this._symbolTable.convertTouchToNodeSpace(touch));\n\n\t\tif (newElementPos)\n\t\t{\n\t\t\tvar oldType = this._program.symbols[newElementPos.x][newElementPos.y].type;\n\t\t\tvar oldValue = this._program.symbols[newElementPos.x][newElementPos.y].value;\n\n\t\t\tvar newType = this._getSymbolTypeForButton(button.type);\n\n\t\t\tthis._program.symbols[newElementPos.x][newElementPos.y].type = newType;\n\t\t\tthis._program.symbols[newElementPos.x][newElementPos.y].value = button.value;\n\n\t\t\tthis._parseProgram();\n\n\t\t\tif (!this._checkIfCanAddBlock(this._parsedProgram) || !this._checkNextBlock(newElementPos, button.type)\n\t\t\t\t|| (newType !== oldType && !this._checkIfCanAddButton(newType)))\n\t\t\t{\n\t\t\t\tthis._program.symbols[newElementPos.x][newElementPos.y].type = oldType;\n\t\t\t\tthis._program.symbols[newElementPos.x][newElementPos.y].value = oldValue;\n\n\t\t\t\tthis._parseProgram();\n\t\t\t\tthis._drawBackgroundObjects();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._updateFunctionInfo();\n\n\t\t\tif (this._symbolTable.getCell(newElementPos.x, newElementPos.y).type === FunctionButton.Type.Repeater)\n\t\t\t\tthis._symbolTable.setCell(newElementPos.x, newElementPos.y, pm.appUtils.generateFunctionButton(button.type, button.value));\n\n\t\t\tvar newButton = this._symbolTable.getCell(newElementPos.x, newElementPos.y);\n\n\t\t\tif (this._program.symbols[newElementPos.x][newElementPos.y].type === pm.SymbolType.Function)\n\t\t\t\tnewButton._drawBackground = false;\n\t\t\telse\n\t\t\t\tnewButton._drawBackground = true;\n\n\t\t\tnewButton.setType(button.type, button.value);\n\n\t\t\tif (button.type === FunctionButton.Type.Repeater)\n\t\t\t{\n\t\t\t\tif (button.value === pm.Counter.Repeater.Value)\n\t\t\t\t\tthis._symbolTable.setCell(newElementPos.x, newElementPos.y, new CounterRepeaterButton(button.value));\n\t\t\t\telse\n\t\t\t\t\tthis._symbolTable.setCell(newElementPos.x, newElementPos.y, new RepeaterButton(button.value));\n\t\t\t}\n\n\t\t\tthis._parseProgram();\n\t\t\tthis._drawBackgroundObjects();\n\t\t}\n\t},\n\n\t_onDropButton: function(button, touch)\n\t{\n\t\tif(button.type === FunctionButton.Type.MethodList)\n\t\t{\n\t\t\tvar suitableButton = this._findSuitableDropButton(touch, FunctionButton.Type.Method);\n\n\t\t\tif (suitableButton && this._checkCanDropInTutorial(suitableButton.button, suitableButton.position))\n\t\t\t\tthis._pasteMethodList(suitableButton.position, button.getMethodList());\n\n\t\t\treturn;\n\t\t}\n\n\t\tif(button.type === FunctionButton.Type.RecognizeResult)\n\t\t{\n\t\t\tthis._pasteRecognizeResult(button, touch);\n\t\t\treturn;\n\t\t}\n\n\t\tvar suitableButton = this._findSuitableDropButton(touch, button.type);\n\n\t\tif (this._isEditable() && !(!this._isEmptyButton(button) && suitableButton &&\n\t\t\tsuitableButton.button.type === FunctionButton.Type.CondRepeater && button.type === FunctionButton.Type.Condition))\n\t\t{\n\t\t\tthis._replaceButton(button, touch);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!suitableButton)\n\t\t\treturn;\n\n\t\tif(!this._checkCanDropInTutorial(suitableButton.button, suitableButton.position))\n\t\t\treturn;\n\n\t\tif (this._program.symbols[suitableButton.position.x][suitableButton.position.y].type === pm.SymbolType.Function)\n\t\t\treturn;\n\n\t\tif (this._programLayer.getRobot().canEditProgramSymbol(this._symbolTable.cellAtTouch(touch)))\n\t\t\tthis.setSymbol(suitableButton.button, suitableButton.button.type, button.value);\n\t},\n\n\t_pasteMethodList: function(fromPosition, methodList)\n\t{\n\t\tvar row = fromPosition.x;\n\t\tvar col = fromPosition.y;\n\n\t\tvar i = 0;\n\n\t\tfor (var y = col; y < this._program.width; ++y)\n\t\t{\n\t\t\tif (this._program.symbols[row][y].type !== pm.SymbolType.Empty)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[row][y].type !== pm.SymbolType.Method)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (i >= methodList.length)\n\t\t\t\t{\n\t\t\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._setSymbol(cc.p(row, y), FunctionButton.Type.Method, methodList[i]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\n\t\tfor (var x = row + 1; x < this._program.height; ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < this._program.width; ++y)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[x][y].type !== pm.SymbolType.Empty)\n\t\t\t\t{\n\t\t\t\t\tif (this._program.symbols[x][y].type !== pm.SymbolType.Method)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i >= methodList.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._setSymbol(cc.p(x, y), FunctionButton.Type.Method, methodList[i]);\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t},\n\n\t/**\n\t * Setts symbol.\n\t * @param {cc.Point|FunctionButton} symbolPosOrButton\n\t * @param {FunctionButton.Type} type\n\t * @param {String} value\n\t */\n\tsetSymbol: function(symbolPosOrButton, type, value)\n\t{\n\t\tif(this._setSymbol(symbolPosOrButton, type, value))\n\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t},\n\n\t_setSymbol: function(symbolPosOrButton, type, value)\n\t{\n\t\tvar symbolPos = symbolPosOrButton;\n\t\tvar button = symbolPosOrButton;\n\n\t\tif(symbolPosOrButton instanceof FunctionButton)\n\t\t{\n\t\t\tif(type !== null && type !== undefined && symbolPosOrButton.type !== type)\n\t\t\t\treturn;\n\n\t\t\tsymbolPos = this._symbolTable.cellAtPosition(button.getPosition());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbutton = this._symbolTable.getCell(symbolPos);\n\t\t}\n\n\t\tif(this._program.symbols[symbolPos.x][symbolPos.y].value !== value)\n\t\t{\n\t\t\tthis._program.symbols[symbolPos.x][symbolPos.y].value = value;\n\t\t\tbutton.value = value;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_findSuitableDropButton: function(touch, type)\n\t{\n\t\tvar elementPos = this._symbolTable.cellAtTouch(touch);\n\n\t\tif (!elementPos)\n\t\t\treturn null;\n\n\t\tvar element = this._symbolTable.getCell(elementPos);\n\n\t\tif (!element)\n\t\t\treturn null;\n\n\t\tif (element.type === type ||\n\t\t\t(type === FunctionButton.Type.Condition && element.type === FunctionButton.Type.CondRepeater) ||\n\t\t\t(element.type === FunctionButton.Type.Condition && type === FunctionButton.Type.CondRepeater))\n\t\t{\n\t\t\treturn {\n\t\t\t\tposition: elementPos,\n\t\t\t\tbutton: element\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_checkCanDropInTutorial: function(button, buttonPos)\n\t{\n\t\tvar objectName = \"\";\n\n\t\tswitch(button.type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\tobjectName = pm.tutorialUtils.OBJECT_NAME_PATTERNS.METHOD.format(buttonPos.x, buttonPos.y);\n\t\t\t\tbreak;\n\t\t\tcase FunctionButton.Type.CondRepeater:\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\tobjectName = pm.tutorialUtils.OBJECT_NAME_PATTERNS.REPEATER.format(buttonPos.x, buttonPos.y);\n\t\t\t\tbreak;\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\tobjectName = pm.tutorialUtils.OBJECT_NAME_PATTERNS.CONDITION.format(buttonPos.x, buttonPos.y);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn pm.tutorialUtils.onDropToObject(objectName);\n\t},\n\n\t_drawResizeImage: function()\n\t{\n\t\tif(!this._isEditable())\n\t\t\treturn;\n\n\t\tthis._resizeSprite = new ccui.ImageView(pm.spriteUtils.getIconName(\"resize\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN);\n\t\talign.setRelativeToWidgetName(\"functionLayout\");\n\t\talign.setMargin(-this._resizeSprite.getContentSize().width / 2, 0, 0, -this._resizeSprite.getContentSize().height / 2);\n\n\t\tthis._resizeSprite.setLayoutParameter(align);\n\n\t\tthis.addChild(this._resizeSprite, 1, ProgramContainerLayer.RESIZE_SPRITE_NAME);\n\n\t\t// pm.tutorialUtils.registerTutorialObject(\n\t\t// pm.tutorialUtils.OBJECT_NAME_PATTERNS.RESIZE_BLOCK.format(this._id),\n\t\t// resizeImage\n\t\t// );\n\t},\n\n\t_interceptTouchBegan: function(touch, event)\n\t{\n\t\tif (this._resizeSprite && cc.rectContainsPoint(this._resizeSprite.getBoundingBox(), this.convertTouchToNodeSpace(touch)))\n\t\t{\n\t\t\tthis._resizeSprite.loadTexture(\n\t\t\t\tpm.spriteUtils.getIconName(\"resize\", pm.SELECTED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t\t);\n\n\t\t\tthis._startTouchPoint = touch.getLocation();\n\t\t\tthis._resizing = true;\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_interceptTouchMoved: function(touch, event)\n\t{\n\t\tif(!this._resizing)\n\t\t\treturn;\n\n\t\tvar touchPoint = touch.getLocation();\n\n\t\tvar dif = cc.pSub(touchPoint, this._startTouchPoint);\n\n\t\tif(dif.y >= ProgramContainerLayer.BUTTON_SIZE)\n\t\t{\n\t\t\tif(this._program.height < 2)\n\t\t\t\treturn;\n\n\t\t\tthis._resizeHeight(-1);\n\t\t\tthis._startTouchPoint.y = touchPoint.y;\n\t\t}\n\t\telse if(dif.y <= -ProgramContainerLayer.BUTTON_SIZE)\n\t\t{\n\t\t\tthis._resizeHeight(1);\n\t\t\tthis._startTouchPoint.y = touchPoint.y;\n\t\t}\n\n\t\tif(dif.x >= ProgramContainerLayer.BUTTON_SIZE)\n\t\t{\n\t\t\tthis._resizeWidth(1);\n\t\t\tthis._startTouchPoint.x = touchPoint.x;\n\t\t}\n\t\telse if(dif.x <= -ProgramContainerLayer.BUTTON_SIZE)\n\t\t{\n\t\t\tif(this._program.width < 2)\n\t\t\t\treturn;\n\n\t\t\tthis._resizeWidth(-1);\n\t\t\tthis._startTouchPoint.x = touchPoint.x;\n\t\t}\n\t},\n\n\t_interceptTouchEnded: function(touch, event)\n\t{\n\t\tif(!this._resizing)\n\t\t\treturn;\n\n\t\tthis._resizing = false;\n\n\t\tthis._resizeSprite.loadTexture(\n\t\t\tpm.spriteUtils.getIconName(\"resize\", pm.NORMAL_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t},\n\n\t_resizeWidth: function(sgn)\n\t{\n\t\tvar oldWidth = this._program.width;\n\n\t\tif(sgn === 1)\n\t\t{\n\t\t\tif (oldWidth === pm.MAX_PROGRAM_WIDTH)\n\t\t\t\treturn;\n\n\t\t\tthis._program.width++;\n\t\t\tthis._symbolTable.setColumnCount(this._program.width);\n\n\t\t\tfor(var i = 0; i < this._program.height; ++i)\n\t\t\t{\n\t\t\t\tthis._program.symbols[i].push({\n\t\t\t\t\ttype: pm.SymbolType.Empty,\n\t\t\t\t\tvalue: -1\n\t\t\t\t});\n\n\t\t\t\tthis._drawFunctionButton(i, this._program.width-1, pm.SymbolType.Empty, -1);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (oldWidth === 1)\n\t\t\t\treturn;\n\n\t\t\tthis._program.width--;\n\n\t\t\tfor(var i = 0; i < this._program.height; ++i)\n\n\t\t\t\tthis._program.symbols[i].pop();\n\n\t\t\tthis._symbolTable.setColumnCount(this._program.width);\n\t\t}\n\n\t\tif(oldWidth !== this._program.width)\n\t\t{\n\t\t\t// this._recalculateMethodTags();\n\t\t\tthis._recalculateSizes();\n\t\t\tthis._parseProgram();\n\t\t\tthis._drawBackgroundObjects();\n\n\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t}\n\t},\n\n\t_resizeHeight: function(sgn)\n\t{\n\t\tvar oldHeight = this._program.height;\n\n\t\tif(sgn === 1)\n\t\t{\n\t\t\tthis._program.height++;\n\t\t\tthis._symbolTable.setRowCount(this._program.height);\n\n\t\t\tvar array = [];\n\n\t\t\tfor(var i = 0; i < this._program.width; ++i)\n\t\t\t{\n\t\t\t\tarray.push({\n\t\t\t\t\ttype: pm.SymbolType.Empty,\n\t\t\t\t\tvalue: -1\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._program.symbols.push(array);\n\n\t\t\tfor(var i = 0; i < this._program.width; ++i)\n\n\t\t\t\tthis._drawFunctionButton(this._program.height-1, i, pm.SymbolType.Empty, -1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(oldHeight === 1)\n\t\t\t\treturn;\n\n\t\t\tthis._program.height--;\n\n\t\t\tthis._program.symbols.pop();\n\n\t\t\tthis._symbolTable.setRowCount(this._program.height);\n\t\t}\n\n\t\tif(oldHeight !== this._program.height)\n\t\t{\n\t\t\tthis._updateFunctionInfo();\n\n\t\t\tthis._recalculateSizes();\n\t\t\tthis._parseProgram();\n\t\t\tthis._drawBackgroundObjects();\n\n\t\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t\t}\n\t},\n\n\thighlightMethodBroken: function(methodPlace)\n\t{\n\t\tthis._brokenSprite.setVisible(true);\n\n\t\tvar pos = this._symbolTable.getCell(methodPlace.x, methodPlace.y).getPosition();\n\n\t\tvar delta = (this._brokenSprite.getContentSize().height - ProgramContainerLayer.BUTTON_SIZE)/2;\n\n\t\tthis._brokenSprite.setPosition(pos.x - delta, pos.y + delta);\n\t},\n\n\thighlightMethod: function(methodPlace)\n\t{\n\t\tthis._symbolTable.getCell(methodPlace.x, methodPlace.y).setHighlighted(true);\n\n\t\tthis._highlightedMethodsStack.push(methodPlace);\n\t},\n\n\tswitchPointsInRepeater: function(repPlace, num, rep)\n\t{\n\t\tvar index = (num === rep + 1) ? 0 : num;\n\n\t\tif (num === 1)\n\t\t\tthis._startedRepeatersStack.push(repPlace);\n\t\telse if (num === rep + 1)\n\t\t\trepPlace = this._startedRepeatersStack.pop();\n\n\t\tif (this._program.symbols[repPlace.x][repPlace.y].value !== \"cnt_value\")\n\t\t\tthis._symbolTable.getCell(repPlace.x, repPlace.y).switchPointsNumber(index);\n\t\telse\n\t\t\tthis._symbolTable.getCell(repPlace.x, repPlace.y).switchPointsNumber(rep, index);\n\t},\n\n\treloadRepeaters: function()\n\t{\n\t\twhile(this._startedRepeatersStack.length > 0)\n\t\t{\n\t\t\tvar repPlace = this._startedRepeatersStack.pop();\n\t\t\tthis._symbolTable.getCell(repPlace.x, repPlace.y).switchPointsNumber(0);\n\t\t}\n\t},\n\n\tclearLastHighlight: function()\n\t{\n\t\tvar methodStackLength = this._highlightedMethodsStack.length;\n\n\t\tif (methodStackLength !== 0)\n\t\t{\n\t\t\tvar lastElem = this._highlightedMethodsStack[methodStackLength - 1];\n\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < this._highlightedMethodsStack.length - 1; ++i)\n\t\t\t{\n\t\t\t\tif (this._highlightedMethodsStack[i].x === lastElem.x && this._highlightedMethodsStack[i].y === lastElem.y)\n\t\t\t\t{\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found)\n\t\t\t\tthis._symbolTable.getCell(lastElem.x, lastElem.y).setHighlighted(false);\n\n\t\t\tthis._highlightedMethodsStack.pop();\n\t\t}\n\n\t\tthis._brokenSprite.setVisible(false);\n\t},\n\n\tclearAllHighlights: function()\n\t{\n\t\tfor (var i = 0; i < this._highlightedMethodsStack.length; ++i)\n\t\t{\n\t\t\tvar curElem = this._highlightedMethodsStack[i];\n\n\t\t\tthis._symbolTable.getCell(curElem.x, curElem.y).setHighlighted(false);\n\t\t}\n\n\t\tthis._highlightedMethodsStack = [];\n\n\t\tthis._brokenSprite.setVisible(false);\n\t},\n\n\t_isEditable: function()\n\t{\n\t\treturn this._programLayer.isProgramPatternEditable();\n\t},\n\n\t_pasteRecognizeResult: function(button, touch)\n\t{\n\t\tvar elementPos = this._symbolTable.cellAtTouch(touch);\n\n\t\tif (!elementPos)\n\t\t\treturn;\n\n\t\tvar element = this._symbolTable.getCell(elementPos);\n\n\t\tif (!element)\n\t\t\treturn;\n\n\t\tvar predictions = button.value;\n\t\tvar program = this._program;\n\t\tvar functions = this._parsedProgram.children;\n\t\tvar recSignIndex = 0;\n\n\t\tfor (var i = elementPos.x; i < program.height; ++i)\n\t\t{\n\t\t\tvar startIndex = i === elementPos.x ? elementPos.y : 0;\n\n\t\t\tfor (var j = startIndex; j < program.width; ++j)\n\t\t\t{\n\t\t\t\tif(recSignIndex >= predictions.length)\n\t\t\t\t\tbreak;\n\n\t\t\t\tvar symbol = this._program.symbols[i][j];\n\n\t\t\t\tvar sign = predictions[recSignIndex].getLabel();\n\n\t\t\t\tif(sign === pm.EMPTY_METHOD)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvar isRepeater = sign.indexOf(\"repeater_\") !== -1;\n\t\t\t\tvar isFunctionID = false;\n\t\t\t\tvar robotHasMethod = false;\n\n\t\t\t\tif(!isRepeater)\n\t\t\t\t{\n\t\t\t\t\trobotHasMethod = (this._programLayer.robot.nativeFunctions.indexOf(sign) !== -1);\n\n\t\t\t\t\tfor (var f = 0; f < functions.length; ++f)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (functions[f].value === sign)\n\t\t\t\t\t\t\tisFunctionID = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsign = Math.min(Math.max(1, Number(sign.replace(\"repeater_\", \"\"))), 6);\n\t\t\t\t}\n\n\t\t\t\tswitch (symbol.type)\n\t\t\t\t{\n\t\t\t\t\tcase pm.SymbolType.Repeater:\n\n\t\t\t\t\t\tif(!isRepeater)\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t++recSignIndex;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase pm.SymbolType.Method:\n\n\t\t\t\t\t\tif(isRepeater)\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t++recSignIndex;\n\n\t\t\t\t\t\tif(!robotHasMethod && !isFunctionID)\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase pm.SymbolType.Function:\n\t\t\t\t\t\tif(!isFunctionID)\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t++recSignIndex;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif(isRepeater || robotHasMethod || isFunctionID)\n\t\t\t\t\tthis.setSymbol(cc.p(i, j), null, sign);\n\t\t\t}\n\t\t}\n\t},\n\n\t_isEmptyTailRow: function(index)\n\t{\n\t\tvar isEmptyTailNextRow = true;\n\n\t\tfor (var j = 1; j < this._program.width; ++j)\n\t\t{\n\t\t\tvar symbol = this._program.symbols[index][j];\n\t\t\tif (symbol.type !== pm.SymbolType.Empty)\n\t\t\t\tisEmptyTailNextRow = false;\n\t\t}\n\t\treturn isEmptyTailNextRow;\n\t},\n\n\t_drawRemoveArrows: function() //offsety = 0.5\n\t{\n\t\tthis._arrowsLayer.removeAllChildren(false);\n\t\tthis._createAddRemoveRowsButton(\"removeArrow\", 0.5, this._program.height);\n\t},\n\n\t_drawAddArrows: function()//offsety = 1.0\n\t{\n\t\tthis._arrowsLayer.removeAllChildren(false);\n\t\tthis._createAddRemoveRowsButton(\"addArrow\", 0.0, this._program.height + 1);\n\t},\n\n\t_createAddRemoveRowsButton: function(iconName, offsetY, arrowsCount)\n\t{\n\t\tfor (var i = 0; i < arrowsCount; ++i)\n\t\t{\n\t\t\tvar pos = this._symbolTable.getCellPosition(i, this._program.width - 1);\n\n\t\t\tvar button = new pmui.Button(pm.spriteUtils.getIconName(iconName, pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(iconName, pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(iconName, pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tpos.x += ProgramContainerLayer.BUTTON_SIZE;\n\t\t\tpos.y -= ProgramContainerLayer.BUTTON_SIZE * offsetY + ProgramContainerLayer.BUTTON_SEPARATOR / 2;\n\n\t\t\tbutton.setPosition(pos);\n\t\t\tbutton.setName(i);\n\t\t\tbutton.addClickEventListener(this._rowsButtonClick.bind(this));\n\t\t\tbutton.setAnchorPoint(0.0, 0.5);\n\n\t\t\tthis._arrowsLayer.addChild(button, 10);\n\t\t}\n\t},\n\n\t_rowsButtonClick: function(sender)\n\t{\n\t\tvar name = sender.getName();\n\t\tif(this._canAddRemoveRowsState === ProgramContainerLayer.ADD_ROWS_STATE)\n\t\t\tthis._addEmptyRowAtPosition(name);\n\t\telse\n\t\t\tthis._removeRowFromPosition(name);\n\t},\n\n\t_addEmptyRowAtPosition: function(index)\n\t{\n\t\tthis._program.height++;\n\t\tthis._symbolTable.setRowCount(this._program.height);\n\n\t\tvar array = [];\n\n\t\tfor(var i = 0; i < this._program.width; ++i)\n\t\t{\n\t\t\tarray.push({\n\t\t\t\ttype: pm.SymbolType.Empty,\n\t\t\t\tvalue: -1\n\t\t\t});\n\t\t}\n\n\t\tthis._program.symbols.splice(\n\t\t\tindex,\n\t\t\t0,\n\t\t\tarray\n\t\t);\n\n\t\tthis._recalculateSizes();\n\t\tthis._drawProgram();\n\n\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t},\n\n\t_removeRowFromPosition: function(index)\n\t{\n\t\tif (this._program.height === 1)\n\t\t\treturn;\n\n\t\tthis._program.height--;\n\t\tthis._program.symbols.splice(index, 1);\n\t\tthis._symbolTable.setRowCount(this._program.height);\n\n\t\tvar prevInd = index;\n\t\t--prevInd;\n\t\tvar nextInd = index;\n\t\t++nextInd;\n\n\t\tvar notEmptySymbolsCount = 0;\n\t\tvar notEmptySymbolX = -1;\n\t\tvar notEmptySymbolY = -1;\n\n\t\tfor (var i = 0; i < this._program.height; ++i)\n\t\t{\n\t\t\tfor (var j = 0; j < this._program.width; ++j)\n\t\t\t{\n\t\t\t\tif (this._program.symbols[i][j].type !== pm.SymbolType.Empty)\n\t\t\t\t{\n\t\t\t\t\tnotEmptySymbolX = i;\n\t\t\t\t\tnotEmptySymbolY = j;\n\t\t\t\t\t++notEmptySymbolsCount;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (notEmptySymbolsCount === 0)\n\t\t{\n\t\t\tif (!(notEmptySymbolX === 0 && notEmptySymbolY === 0))\n\t\t\t{\n\t\t\t\tthis._program.symbols[0][0].value = pm.EMPTY_METHOD;\n\t\t\t\tthis._program.symbols[0][0].type = pm.SymbolType.Method;\n\n\t\t\t\tvar button = this._symbolTable.getCell(0, 0);\n\n\t\t\t\tbutton._drawBackground = true;\n\t\t\t\tbutton.setType(FunctionButton.Type.Method, pm.EMPTY_METHOD)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis._recalculateSizes();\n\t\tthis._drawProgram();\n\n\t\tpm.sendCustomEvent(pm.USER_PROGRAM_UPDATED_STR);\n\t},\n\n\t_loadAddRemoveRowTexture: function(button)\n\t{\n\t\tvar normal, positive, negative;\n\n\t\tswitch (this._canAddRemoveRowsState)\n\t\t{\n\t\t\tcase ProgramContainerLayer.NORMAL_STATE:\n\t\t\t\tnormal = pm.spriteUtils.getIconName(\"addRows\", pm.NORMAL_STATE);\n\t\t\t\tpositive = pm.spriteUtils.getIconName(\"addRows\", pm.SELECTED_STATE);\n\t\t\t\tnegative = pm.spriteUtils.getIconName(\"addRows\", pm.DISABLED_STATE);\n\n\t\t\t\tthis._canAddRemoveRowsState = ProgramContainerLayer.ADD_ROWS_STATE;\n\t\t\t\tthis._drawAddArrows();\n\t\t\t\tbreak;\n\n\t\t\tcase ProgramContainerLayer.ADD_ROWS_STATE:\n\t\t\t\tnormal = pm.spriteUtils.getIconName(\"removeRows\", pm.NORMAL_STATE);\n\t\t\t\tpositive = pm.spriteUtils.getIconName(\"removeRows\", pm.SELECTED_STATE);\n\t\t\t\tnegative = pm.spriteUtils.getIconName(\"removeRows\", pm.DISABLED_STATE);\n\n\t\t\t\tthis._canAddRemoveRowsState = ProgramContainerLayer.REMOVE_ROWS_STATE;\n\t\t\t\tthis._drawRemoveArrows();\n\t\t\t\tbreak;\n\n\t\t\tcase ProgramContainerLayer.REMOVE_ROWS_STATE:\n\t\t\t\tnormal = pm.spriteUtils.getIconName(\"rowsChange\", pm.NORMAL_STATE);\n\t\t\t\tpositive = pm.spriteUtils.getIconName(\"rowsChange\", pm.SELECTED_STATE);\n\t\t\t\tnegative = pm.spriteUtils.getIconName(\"rowsChange\", pm.DISABLED_STATE);\n\n\t\t\t\tthis._canAddRemoveRowsState = ProgramContainerLayer.NORMAL_STATE;\n\t\t\t\tthis._arrowsLayer.removeAllChildren(false);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tbutton.loadTextureNormal(normal, ccui.Widget.PLIST_TEXTURE);\n\t\tbutton.loadTexturePressed(positive, ccui.Widget.PLIST_TEXTURE);\n\t\tbutton.loadTextureDisabled(negative, ccui.Widget.PLIST_TEXTURE);\n\t}\n\n});\n","/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar TextualTree = cc.Class.extend(/** @lends ProgramContainerLayer# */{\n\t_robot: null,\n\t_outputRobot: null,\n\t_programContainer: null,\n\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\t_nodeTree: null,\n\t_dynamicObjects: new MapClass(),\n\t_dynamicParams: new MapClass(),\n\t_programData: null,\n\t_highlightedMethodsStack: [],\n\n\tctor: function (programTree, robot, parent, outputRobot)\n\t{\n\t\tpmui.StatementNode.vals.clear();\n\t\tpmui.FunctionNode.vals.clear();\n\t\tthis._robot = robot;\n\t\tif(outputRobot)\n\t\t\tthis._outputRobot = outputRobot;\n\t\tthis._programContainer = parent;\n\t\tthis._programData = robot.getProgramData();\n\t\tthis._highlightedMethodsStack = [];\n\n\t\tthis._createVisualTree(programTree, parent);\n\t},\n\n\taddOutputRobot: function (robot)\n\t{\n\t\tthis._outputRobot = robot;\n\t},\n\n\tchangeParamsValues: function ()\n\t{\n\t\tthis._dynamicParams.values().forEach(function (param){\n\t\t\tpm.sendCustomEvent(pm.VARIABLE_VALUE_CHANGED, {\n\t\t\t\tname: param.getVarName(),\n\t\t\t\tval: 0\n\t\t\t});\n\t\t});\n\n\t},\n\n\thighlightMethod: function (nodeView)\n\t{\n\t\tnodeView.highlight();\n\t\tnodeView._parentNode.highlight();\n\t\tthis._highlightedMethodsStack.push(nodeView);\n\t},\n\n\thighlightMethodBroken: function (nodeView)\n\t{\n\t\tnodeView.highlightBroken();\n\t\tnodeView._parentNode.highlight();\n\t\tthis._highlightedMethodsStack.push(nodeView);\n\t},\n\n\tclearLastHighlight: function ()\n\t{\n\t\tvar elem = this._highlightedMethodsStack.pop();\n\t\tif (elem)\n\t\t{\n\t\t\telem.removeHighlight();\n\t\t\telem._parentNode.removeHighlight();\n\t\t}\n\t},\n\n\tclearAllHighlight: function ()\n\t{\n\t\tthis._highlightedMethodsStack.forEach(function(elem) {\n\t\t\tif (elem)\n\t\t\t{\n\t\t\t\telem.removeHighlight();\n\t\t\t\telem._parentNode.removeHighlight();\n\t\t\t}\n\t\t});\n\t\tthis._highlightedMethodsStack = [];\n\t},\n\n\tswitchPointsInRepeater: function (nodeView, num, rep)\n\t{\n\t\tnodeView.updateIteratorVal(num);\n\t},\n\t/** makes Visual tree from ProgramData\n\t * adds it to ProgramContainer\n\t * @param programTree syntax tree from ProgramData\n\t * @private\n\t */\n\t_createVisualTree: function (programTree, parent)\n\t{\n\t\tthis._nodeTree = this.parseTree(programTree.head);\n\t\tparent.addChild(this._nodeTree);\n\t},\n\n\t/**\n\t * parses node to visual Layer and adds it to vTree\n\t * @param node node of syntax tree\n\t * @param vTree parent of node in visual tree\n\t * @returns {number}\n\t */\n\tparseTree: function (node, vTree, selectedNode)\n\t{\n\t\tif(!node)\n\t\t\treturn;\n\t\tvar visualNode = null;\n\t\tif(vTree)\n\t\t\tnode.parentNode = vTree._treeNode;\n\t\tswitch (node.type)\n\t\t{\n\t\t\tcase pm.data.Node.Type.Prog:\n\t\t\t\tvisualNode = new pmui.StartNode(node, vTree, this._robot.parentLevel.getType(), this._robot.getType());\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tvar parsed = this.parseTree(node.getChildren()[i], visualNode);\n\t\t\t\t\tif(!parsed) i--;\n\t\t\t\t}\n\t\t\t\tvisualNode.calculateSize();\n\t\t\t\treturn visualNode;\n\n\t\t\tcase pm.data.Node.Type.MainAlg:\n\t\t\t\tvisualNode = new pmui.FunctionNode(node, vTree);\n\t\t\t\tvTree.setMain(visualNode);\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tthis.parseTree(node.getChildren()[i], visualNode);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t//\n\t\t\t// case pm.data.Node.Type.Globals:\n\t\t\t//\n\t\t\t// \tvisualNode = vTree.setGlobals(node);\n\t\t\t//\n\t\t\t// \tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t// \t{\n\t\t\t// \t\tthis.parseTree(node.getChildren()[i], globals);\n\t\t\t// \t}\n\t\t\t// \tglobals.calculateSize(true);\n\t\t\t// \treturn globals;\n\n\t\t\tcase pm.data.Node.Type.Func:\n\t\t\t\tvisualNode = new pmui.FunctionNode(node, vTree, node.value);\n\t\t\t\tvar body = null;\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t\tbody = node.children[i];\n\t\t\t\t\telse if(node.children[i].type === pm.data.Node.Type.Alloc)\n\t\t\t\t\t\tthis.parseTree(node.children[i], visualNode);\n\t\t\t\t}\n\t\t\t\tthis.parseTree(body, visualNode);\n\t\t\t\tthis._addFunc(node.value);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Body:\n\t\t\t\tif (node.getTagName() === pm.IFThenTag)\n\t\t\t\t\tvisualNode = new pmui.BodyNode(node, vTree);\n\t\t\t\telse if (node.getTagName() === pm.IFElseTag)\n\t\t\t\t\tvisualNode = new pmui.ElseBlock(node, vTree);\n\t\t\t\telse\n\t\t\t\t\tvisualNode = new pmui.BodyNode(node, vTree);\n\n\t\t\t\tvar child = null;\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tchild = this.parseTree(node.getChildren()[i], visualNode);\n\t\t\t\t\tif(!child)\n\t\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\tif(node.getChildren().length === 0)\n\t\t\t\t{\n\t\t\t\t\tpm.data.SyntaxTree.createNode(node, pm.data.Node.Type.Empty, \"\");\n\t\t\t\t\tthis.parseTree(node.getChildren()[0], visualNode);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Empty:\n\t\t\t\tvisualNode = new pmui.ReplaceNode(vTree._addTypes, vTree, node);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Alloc:\n\t\t\t\tvar variable = node.getChildren().find(function (elem){\n\t\t\t\t\treturn elem.type === pm.data.Node.Type.Identifier;\n\t\t\t\t});\n\t\t\t\tvar varType = node.getChildren().find(function (elem){\n\t\t\t\t\treturn elem.type === pm.data.Node.Type.Type;\n\t\t\t\t});\n\n\t\t\t\tvisualNode = new pmui.AllocNode(node, vTree);\n\n\t\t\t\tvisualNode.setTypeName(varType.value);\n\t\t\t\tif(vTree.isFunction())\n\t\t\t\t\tthis._dynamicParams.set(variable.value, visualNode);\n\t\t\t\telse\n\t\t\t\t\tthis._dynamicObjects.set(variable.value, visualNode);\n\t\t\t\tthis.parseTree(variable, visualNode);\n\n\t\t\t\tthis._programData.alloc.filter(function (allocVal, index, arr){\n\t\t\t\t\tif(allocVal === variable.value)\n\t\t\t\t\t{\n\t\t\t\t\t\tarr.splice(index, 1);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\n\t\t\t\tif(varType.value === pm.AllocVals.INT)\n\t\t\t\t{\n\t\t\t\t\tif (pmui.AllocNode.intVals.indexOf(variable.value) === -1)\n\t\t\t\t\t\tpmui.AllocNode.intVals.push(variable.value);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (pmui.AllocNode.boolVals.indexOf(variable.value) === -1)\n\t\t\t\t\t\tpmui.AllocNode.boolVals.push(variable.value);\n\t\t\t\t}\n\n\t\t\t\tif(!vTree.isFunction())\n\t\t\t\t\tpmui.StatementNode.vals.set(variable.value, varType.value);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Statement:\n\n\t\t\t\tvar variable = null;\n\t\t\t\tvar value = null;\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.getChildren()[i].getTagName() === pm.StatementVarTag)\n\t\t\t\t\t\tvariable = node.getChildren()[i];\n\t\t\t\t\telse if(node.getChildren()[i].getTagName() === pm.StatementValueTag)\n\t\t\t\t\t\tvalue = node.getChildren()[i];\n\t\t\t\t}\n\t\t\t\tif(!this._dynamicObjects.has(variable.value)\n\t\t\t\t\t|| !this._isAllocationHigher(node, variable.value))\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvisualNode = new pmui.StatementNode(node, vTree);\n\n\t\t\t\tthis.parseTree(variable, visualNode);\n\t\t\t\tthis.parseTree(value, visualNode);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Identifier:\n\t\t\t\tif(selectedNode) node.setTagName(selectedNode.getTagName());\n\t\t\t\tif(!vTree.isAlloc())\n\t\t\t\t\tif(!this._isAllocationHigher(vTree._treeNode, node.value))\n\t\t\t\t\t{\n\t\t\t\t\t\tvTree._treeNode.removeChild(node);\n\t\t\t\t\t\tvar syntTreeNode = pm.data.SyntaxTree.createNode(vTree._treeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\t\tsyntTreeNode.setTagName(node.getTagName());\n\t\t\t\t\t\treturn this.parseTree(syntTreeNode, vTree)\n\t\t\t\t\t}\n\t\t\t\tvar typeName = null;\n\t\t\t\tif(this._dynamicObjects.has(node.value))\n\t\t\t\t\ttypeName = this._dynamicObjects.get(node.value);\n\t\t\t\telse\n\t\t\t\t\ttypeName = this._dynamicParams.get(node.value);\n\n\t\t\t\tvisualNode = new pmui.VariableNode(node, vTree, node.value, typeName.getTypeName());\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Bool:\n\t\t\t\tvisualNode = new pmui.BoolNode(node, vTree);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Number:\n\t\t\t\tif(selectedNode) node.setTagName(selectedNode.getTagName());\n\t\t\t\tvisualNode = new pmui.NumberNode(node, vTree);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Expression:\n\t\t\t\tif(selectedNode) node.setTagName(selectedNode.getTagName());\n\t\t\t\tvisualNode = new pmui.NumericExpressionNode(node, vTree, node.value);\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tvar op = this.parseTree(node.getChildren()[i], visualNode);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.IfStatement:\n\t\t\t\tvisualNode = new pmui.IfNode(node, vTree, node.value);\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tthis.parseTree(node.getChildren()[i], visualNode);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Condition:\n\t\t\t\tif(selectedNode)\n\t\t\t\t\tnode.setTagName(selectedNode.getTagName());\n\n\t\t\t\tvisualNode = new pmui.ConditionNode(node, vTree, node.value, this._robot.parentLevel.getType());\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.LogicExpression:\n\t\t\t\tvar leftOp;\n\t\t\t\tvar rightOp;\n\t\t\t\tif(selectedNode) node.setTagName(selectedNode.getTagName());\n\t\t\t\tvisualNode = new pmui.LogicExpressionNode(node, vTree, node.value);\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].getTagName() === pm.ExpressionLeftTag)\n\t\t\t\t\t\tleftOp = node.children[i];\n\t\t\t\t\telse if (node.children[i].getTagName() === pm.ExpressionRightTag)\n\t\t\t\t\t\trightOp = node.children[i];\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parseTree(node.children[i], visualNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (rightOp)\n\t\t\t\t\tthis.parseTree(rightOp, visualNode);\n\t\t\t\tif (leftOp)\n\t\t\t\t\tthis.parseTree(leftOp, visualNode);\n\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Loop:\n\n\t\t\t\tswitch (node.value)\n\t\t\t\t{\n\t\t\t\t\tcase pm.LoopVals.nTimes:\n\n\t\t\t\t\t\tvar repVal = null;\n\t\t\t\t\t\tvar repBody = null;\n\n\t\t\t\t\t\tvisualNode = new pmui.NTimesRepeaterNode(node, vTree, node.value);\n\t\t\t\t\t\trepVal = node.children[1];\n\t\t\t\t\t\trepBody = node.children[0];\n\n\t\t\t\t\t\tthis.parseTree(repVal, visualNode);\n\t\t\t\t\t\tthis.parseTree(repBody, visualNode);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.for:\n\n\t\t\t\t\t\tvar repIndex = null;\n\t\t\t\t\t\tvar repBeg = null;\n\t\t\t\t\t\tvar repVal = null;\n\t\t\t\t\t\tvar repStep = null;\n\t\t\t\t\t\tvar repBody = null;\n\n\t\t\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (node.children[i].getTagName() === pm.ForIteratorTag)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trepIndex = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (node.children[i].getTagName() === pm.ForBegTag)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trepBeg = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (node.children[i].getTagName() === pm.ForEndTag)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trepVal = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (node.children[i].getTagName() === pm.ForStepTag)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trepStep = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trepBody = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(!this._dynamicObjects.has(repIndex.value)\n\t\t\t\t\t\t\t|| !this._isAllocationHigher(node, repIndex.value))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvTree._treeNode.removeChild(node);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvisualNode = new pmui.ForRepeaterNode(node, vTree, node.value);\n\n\t\t\t\t\t\tif (repStep !== null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.parseTree(repStep, visualNode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.parseTree(repBeg, visualNode);\n\t\t\t\t\t\tthis.parseTree(repVal, visualNode);\n\t\t\t\t\t\tthis.parseTree(repIndex, visualNode);\n\t\t\t\t\t\tthis.parseTree(repBody, visualNode);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.whileC:\n\n\t\t\t\t\t\tvar body = null;\n\n\t\t\t\t\t\tvisualNode = new pmui.WhileRepeaterNode(node, vTree, node.value);\n\n\t\t\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbody = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse this.parseTree(node.children[i], visualNode);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.parseTree(body, visualNode);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.until:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Action:\n\n\t\t\t\tvar robot = this._outputRobot && this._outputRobot.nativeFunctionMap[node.value]\n\t\t\t\t\t? this._outputRobot\n\t\t\t\t\t: this._robot;\n\n\t\t\t\tif(robot.nativeFunctionMap[node.value])\n\t\t\t\t{\n\t\t\t\t\tif (robot.nativeFunctionMap[node.value].returnArgs())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(selectedNode) node.setTagName(selectedNode.getTagName());\n\t\t\t\t\t\tvisualNode = new pmui.CommandNode(node, vTree, robot.getRobotMethodName(node.value), robot.getType(), true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!visualNode)\n\t\t\t\t{\n\t\t\t\t\tvisualNode = new pmui.CommandNode(node, vTree, robot.getRobotMethodName(node.value), robot.getType(), false);\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tthis.parseTree(node.children[i], visualNode);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif(!visualNode) {\n\t\t\tvTree._treeNode.removeChild(node);\n\t\t\treturn null;\n\t\t}\n\n\t\tvisualNode.calculateSize(true);\n\t\tvTree.addChildNode(visualNode, selectedNode);\n\t\treturn visualNode;\n\t},\n\n\tupdateTree: function (node, parent)\n\t{\n\t\tthis.parseTree(node, parent);\n\t\tparent.calculateSize();\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._nodeTree;\n\t},\n\n\t_addFunc: function(value)\n\t{\n\t\tif (this._programData.funcs.indexOf(value) !== -1)\n\t\t\tthis._programData.funcs.splice(this._programData.funcs.indexOf(value), 1);\n\t\tpmui.FunctionNode.vals.add(value);\n\t},\n\n\t_isAllocationHigher: function(treeNode, varName)\n\t{\n\t\tvar curParent = treeNode.parentNode;\n\t\tvar curElem = treeNode;\n\t\twhile(curParent)\n\t\t{\n\t\t\tfor(var i = 0;i < curParent.getChildren().length;i++)\n\t\t\t{\n\t\t\t\tif(curParent.getChildren()[i].type === pm.data.Node.Type.Alloc\n\t\t\t\t\t&& curParent.getChildren()[i].getNodeView().getVarName() === varName)\n\t\t\t\t\treturn true;\n\n\t\t\t\tif(curParent.getChildren()[i] === curElem)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurElem = curParent;\n\t\t\tcurParent = curElem.parentNode;\n\t\t}\n\t\treturn false;\n\t}\n});\n\n","\nvar PiktoTree = cc.Class.extend(/** @lends ProgramContainerLayer# */{\n\n\t_nodeTree: null,\n\t_maxPikts: 6,\n\t_robot: null,\n\t_variablesNumber: 0,\n\t_startedRepeatersStack: [],\n\t_highlightedMethodsStack: [],\n\n\tctor: function (programTree, robot, parent)\n\t{\n\t\tthis._robot = robot;\n\t\tthis._startedRepeatersStack = [];\n\t\tthis._highlightedMethodsStack = [];\n\t\tif(this.isParceable(programTree.head))\n\t\t{\n\t\t\tthis.addCounterSprites();\n\t\t\tthis._createVisualTree(programTree, parent);\n\t\t}\n\t},\n\n\taddCounterSprites: function()\n\t{\n\t\tif(this._variablesNumber > 0)\n\t\t{\n\t\t\tpm.spriteUtils.addTempSpriteFrames(\"Robot Methods/counter-methods.plist\");\n\t\t\tpm.spriteUtils.addTempSpriteFrames(\"Conditions/counter-conditions.plist\");\n\t\t\tpm.spriteUtils.addTempSpriteFrames(\"Repeaters/counter-repeaters.plist\");\n\t\t}\n\t},\n\n\t_createVisualTree: function (programTree, parent)\n\t{\n\t\tthis._nodeTree = this.parseTree(programTree.head, parent);\n\t\tparent.addChild(this._nodeTree);\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._nodeTree;\n\t},\n\n\tswitchPointsInRepeater: function(nodeView, num, rep)\n\t{\n\t\tvar index = (num === rep + 1) ? 0 : num;\n\n\t\tif (num === 1)\n\t\t\tthis._startedRepeatersStack.push(nodeView);\n\t\telse if (num === rep + 1)\n\t\t\tnodeView = this._startedRepeatersStack.pop();\n\n\t\tif (nodeView.value !== \"cnt_value\")\n\t\t\tnodeView.switchPointsNumberR(index);\n\t\telse\n\t\t\tnodeView.switchPointsNumber(rep, index);\n\t},\n\n\treloadRepeaters: function()\n\t{\n\t\twhile(this._startedRepeatersStack.length > 0)\n\t\t{\n\t\t\tvar repPlace = this._startedRepeatersStack.pop();\n\t\t\tif (repPlace.value !== \"cnt_value\")\n\t\t\t\trepPlace.switchPointsNumberR(0);\n\t\t\telse\n\t\t\t\trepPlace.switchPointsNumber(0);\n\t\t}\n\t},\n\n\thighlightMethod: function (nodeView)\n\t{\n\t\tnodeView.setHighlighted(true);\n\t\tthis._highlightedMethodsStack.push(nodeView);\n\t},\n\n\thighlightMethodBroken: function (nodeView)\n\t{\n\t\tnodeView.setHighlighted(true);\n\t\tthis._highlightedMethodsStack.push(nodeView);\n\t},\n\n\tclearAllHighlight: function ()\n\t{\n\t\tthis._highlightedMethodsStack.forEach(function (elem){\n\t\t\telem.setHighlighted(false);\n\t\t});\n\t\tthis._highlightedMethodsStack = [];\n\t},\n\n\tclearLastHighlight: function ()\n\t{\n\t\tvar elem = this._highlightedMethodsStack.pop()\n\t\tif(elem)\n\t\t\telem.setHighlighted(false);\n\t},\n\n\tisParceable: function(node)\n\t{\n\t\tif (!node)\n\t\t\treturn;\n\n\t\tswitch (node.type)\n\t\t{\n\n\t\t\tcase pm.data.Node.Type.Func:\n\t\t\t\tif(!pmui.FunctionNode.piktoVals.has(node.value))\n\t\t\t\t\treturn false;\n\t\t\tcase pm.data.Node.Type.Prog:\n\t\t\tcase pm.data.Node.Type.MainAlg:\n\t\t\tcase pm.data.Node.Type.Body:\n\t\t\t\tvar parsed = true;\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tparsed = this.isParceable(node.getChildren()[i]);\n\t\t\t\t\tif (!parsed)\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Globals:\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Empty:\n\t\t\tcase pm.data.Node.Type.Bool:\n\t\t\tcase pm.data.Node.Type.Condition:\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Alloc:\n\t\t\t\tthis._variablesNumber++;\n\t\t\t\tif(this._variablesNumber > 1)\n\t\t\t\t\treturn false;\n\t\t\t\telse\n\t\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Statement:\n\t\t\t\tvar variable = null;\n\t\t\t\tvar value = null;\n\t\t\t\tvar statement = null;\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif(node.getChildren()[i].getTagName() === pm.StatementValueTag)\n\t\t\t\t\t\tvalue = node.getChildren()[i];\n\t\t\t\t}\n\t\t\t\tif(value.type === pm.data.Node.Type.Number && value.value === 0)\n\t\t\t\t\treturn true;\n\t\t\t\telse if(value.type === pm.data.Node.Type.Expression)\n\t\t\t\t{\n\t\t\t\t\tif(!this.isParceable(value))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Identifier:\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Expression:\n\t\t\t\tif(node.value === pm.ArythmMethods.Addition || node.value === pm.ArythmMethods.Substraction)\n\t\t\t\t{\n\t\t\t\t\tvar variable = null;\n\t\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(node.getChildren()[i].type === pm.data.Node.Type.Identifier)\n\t\t\t\t\t\t\tvariable = node.getChildren()[i];\n\t\t\t\t\t\telse if(node.getChildren()[i].type === pm.data.Node.Type.Number)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(node.getChildren()[i].value !== 1)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\treturn false;\n\n\t\t\tcase pm.data.Node.Type.LogicExpression:\n\t\t\t\tif (node.value === pm.ArythmConditions.Equal || node.value === pm.ArythmConditions.NotEqual)\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif(node.getChildren()[i].type === pm.data.Node.Type.Identifier)\n\t\t\t\t\t\t\tvariable = node.getChildren()[i];\n\t\t\t\t\t\telse if(node.getChildren()[i].type === pm.data.Node.Type.Number)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(node.getChildren()[i].value !== 0)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\treturn false;\n\n\t\t\tcase pm.data.Node.Type.IfStatement:\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (node.children[i].value === pm.IFElseTag)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tparsed = this.isParceable(node.getChildren()[i]);\n\t\t\t\t\tif (!parsed)\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Number:\n\t\t\t\tif(node.value > 6 || node.value < 1)\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\n\t\t\tcase pm.data.Node.Type.Loop:\n\n\t\t\t\tswitch (node.value)\n\t\t\t\t{\n\t\t\t\t\tcase pm.LoopVals.nTimes:\n\t\t\t\t\t\tvar repVal = node.children[1];\n\t\t\t\t\t\tif(repVal.type === pm.data.Node.Type.Expression)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\tcase pm.LoopVals.whileC:\n\t\t\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparsed = this.isParceable(node.getChildren()[i]);\n\t\t\t\t\t\t\tif (!parsed)\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\tcase pm.LoopVals.for:\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Action:\n\n\t\t\t\tvar action = null;\n\t\t\t\tvar tagName = \"\";\n\n\t\t\t\tif (this._robot.nativeFunctionMap[node.value])\n\t\t\t\t{\n\t\t\t\t\tif (this._robot.nativeFunctionMap[node.value].returnArgs())\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (node.children.length > 0)\n\t\t\t\t\treturn false;\n\n\t\t\t\treturn true;\n\t\t}\n\t},\n\n\tparseTree: function (node, vTree)\n\t{\n\t\tif (!node)\n\t\t\treturn;\n\t\tvar nodeView = null;\n\n\t\tvar marginParam = new ccui.LinearLayoutParameter();\n\t\tmarginParam.setMargin(pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORX, 0, 0);\n\n\t\tvar emptyParam = new ccui.LinearLayoutParameter();\n\t\t//marginParam.setMargin(pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORX, 0, 0);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tswitch (node.type)\n\t\t{\n\t\t\tcase pm.data.Node.Type.Prog:\n\t\t\t\tvar mainAlg = null;\n\t\t\t\tvar funcView = null;\n\n\t\t\t\tnodeView = new ccui.Layout();\n\t\t\t\tnodeView.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\t\t\tvar vBox = new ccui.VBox();\n\t\t\t\tvar treeAlign = new ccui.RelativeLayoutParameter();\n\t\t\t\ttreeAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\t\ttreeAlign.setMargin(pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORX, pmui.NodeLayer.SEPARATORX, 0);\n\t\t\t\tvBox.setLayoutParameter(treeAlign);\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.getChildren()[i].isMain())\n\t\t\t\t\t\tmainAlg = node.getChildren()[i];\n\t\t\t\t}\n\n\t\t\t\tvar mainView = this.parseTree(mainAlg, vBox);\n\t\t\t\twidth = mainView.width;\n\t\t\t\theight = mainView.height;\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.getChildren()[i].type === pm.data.Node.Type.Func)\n\t\t\t\t\t{\n\t\t\t\t\t\tfuncView = this.parseTree(node.getChildren()[i], vBox);\n\t\t\t\t\t\twidth = Math.max(funcView.width, width);\n\t\t\t\t\t\theight += funcView.height;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnodeView.addChild(vBox);\n\t\t\t\tvBox.setContentSize(width, height);\n\t\t\t\tnodeView.setContentSize(width, height);\n\t\t\t\treturn nodeView;\n\n\t\t\tcase pm.data.Node.Type.MainAlg:\n\t\t\t\tvar childView = null;\n\t\t\t\tnodeView = new ccui.VBox();\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tchildView = this.parseTree(node.getChildren()[i], nodeView);\n\t\t\t\t\tif (childView)\n\t\t\t\t\t{\n\t\t\t\t\t\theight += childView.height;\n\t\t\t\t\t\twidth += childView.width;\n\t\t\t\t\t\tchildView.setContentSize(width + marginParam.getMargin().left, height + marginParam.getMargin().top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Func:\n\t\t\t\tvar nameView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Function, node.value);\n\t\t\t\tnode.setNodeView(nameView);\n\n\t\t\t\tvar childView = null;\n\t\t\t\tnodeView = new ccui.VBox();\n\n\t\t\t\tnodeView.addChild(nameView);\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; ++i)\n\t\t\t\t{\n\t\t\t\t\tchildView = this.parseTree(node.getChildren()[i], nodeView);\n\t\t\t\t\tif (childView)\n\t\t\t\t\t{\n\t\t\t\t\t\theight += childView.height;\n\t\t\t\t\t\twidth += childView.width;\n\t\t\t\t\t\tchildView.setContentSize(width + marginParam.getMargin().left, height + marginParam.getMargin().top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\theight += nameView.height + 15;\n\n\t\t\t\tvar linearLayoutParameter = new ccui.LinearLayoutParameter();\n\t\t\t\tlinearLayoutParameter.setMargin(0, 15, 0, 0);\n\t\t\t\tnodeView.setLayoutParameter(linearLayoutParameter);\n\t\t\t\tnode.setNodeView(nameView);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Body:\n\t\t\t\tvar horContainer = new ccui.HBox();\n\t\t\t\tvar count = 0;\n\t\t\t\tvar child = null;\n\t\t\t\tvar maxCount = this._maxPikts;\n\t\t\t\tvar horContWidth = 0;\n\t\t\t\tvar childView = null;\n\t\t\t\tnodeView = new ccui.VBox;\n\t\t\t\tnodeView.setBackGroundImageScale9Enabled(true);\n\t\t\t\tnodeView.setBackGroundImage(\"System/algorithmBack.png\");\n\t\t\t\tnodeView.setBackGroundImageCapInsets(cc.rect(20, 20, 20, 20));\n\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tchild = node.getChildren()[i];\n\t\t\t\t\tif ((child.type === pm.data.Node.Type.Action || child.type === pm.data.Node.Type.Statement || child.type === pm.data.Node.Type.Empty) && count < maxCount)\n\t\t\t\t\t{\n\t\t\t\t\t\tchildView = this.parseTree(child, horContainer);\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t\telse if(child.type !== pm.data.Node.Type.Alloc)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (i !== 0 && childView !== null)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnodeView.addChild(horContainer);\n\n\t\t\t\t\t\t\thorContainer.setContentSize(horContWidth,\n\t\t\t\t\t\t\t\tMath.max(ProgramLayer.BUTTON_HEIGHT,\n\t\t\t\t\t\t\t\t\tchildView.height + childView.getLayoutParameter().getMargin().top));\n\n\t\t\t\t\t\t\theight += horContainer.height;\n\t\t\t\t\t\t\twidth = Math.max(width, horContWidth);\n\n\t\t\t\t\t\t\tcount = 0;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\thorContainer = new ccui.HBox();\n\t\t\t\t\t\thorContWidth = 0;\n\t\t\t\t\t\tchildView = this.parseTree(child, horContainer);\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t\tif (child.type !== pm.data.Node.Type.Action)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmaxCount--;\n\t\t\t\t\t\t\tcount = maxCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tchild.setNodeView(null);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\thorContWidth += childView.width + marginParam.getMargin().left;\n\t\t\t\t}\n\t\t\t\tnodeView.addChild(horContainer);\n\t\t\t\tif(!childView)\n\t\t\t\t\tbreak;\n\t\t\t\thorContainer.setContentSize(horContWidth,\n\t\t\t\t\tMath.max(ProgramLayer.BUTTON_HEIGHT,\n\t\t\t\t\t\tchildView.height + childView.getLayoutParameter().getMargin().top));\n\t\t\t\theight += horContainer.height;\n\t\t\t\twidth = Math.max(width, horContWidth);\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Empty:\n\t\t\t\tnodeView = new EmptyFunctionButton(FunctionButton.Type.Method);\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Bool:\n\t\t\t\tnodeView = new EmptyFunctionButton(FunctionButton.Type.Condition);\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Identifier:\n\t\t\t\tnodeView = new CounterRepeaterButton(\"cnt_value\");\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam);\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Number:\n\t\t\t\tvar number = node.value % 7;\n\t\t\t\tif (!number)\n\t\t\t\t\tnumber = 1;\n\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Constant, number);\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam);\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.IfStatement:\n\t\t\t\tvar thenBody = null;\n\t\t\t\tvar conditionView = null;\n\t\t\t\tnodeView = new ccui.HBox();\n\n\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (node.children[i].value === pm.IFThenTag)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthenBody = node.children[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconditionView = this.parseTree(node.getChildren()[i], nodeView);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._maxPikts--;\n\t\t\t\tvar bodyView = this.parseTree(thenBody, nodeView);\n\t\t\t\tthis._maxPikts++;\n\n\t\t\t\twidth = conditionView.width + bodyView.width;\n\t\t\t\theight = bodyView.height;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.LogicExpression:\n\t\t\t\tvar condName = \"\";\n\t\t\t\tif(node.value === pm.ArythmConditions.Equal)\n\t\t\t\t\tcondName = \"cnt_empty\";\n\t\t\t\telse\n\t\t\t\t\tcondName = \"cnt_not_empty\";\n\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Condition, condName);\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Condition:\n\n\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Condition, node.value);\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Loop:\n\n\t\t\t\tswitch (node.value)\n\t\t\t\t{\n\t\t\t\t\tcase pm.LoopVals.nTimes:\n\t\t\t\t\t\tvar repVal = null;\n\t\t\t\t\t\tvar repBody = null;\n\n\t\t\t\t\t\tnodeView = new ccui.HBox();\n\t\t\t\t\t\trepVal = node.children[1];\n\t\t\t\t\t\trepBody = node.children[0];\n\n\t\t\t\t\t\tvar repView = this.parseTree(repVal, nodeView);\n\t\t\t\t\t\trepView.setLayoutParameter(marginParam.clone());\n\t\t\t\t\t\tthis._maxPikts--;\n\t\t\t\t\t\tvar bodyView = this.parseTree(repBody, nodeView);\n\t\t\t\t\t\tthis._maxPikts++;\n\n\t\t\t\t\t\twidth += repView.width + bodyView.width;\n\t\t\t\t\t\theight = Math.max(bodyView.height, repView.height);\n\t\t\t\t\t\tnode.setNodeView(repView);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.whileC:\n\t\t\t\t\t\tvar conditionView = null;\n\t\t\t\t\t\tvar body = null;\n\n\t\t\t\t\t\tnodeView = new ccui.HBox();\n\n\t\t\t\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (node.children[i].type === pm.data.Node.Type.Body)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbody = node.children[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse conditionView = this.parseTree(node.children[i], nodeView);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar sprite = pm.spriteUtils.getRepeaterSprite(\"cond\");\n\t\t\t\t\t\tsprite.setPosition(0, conditionView.height);\n\t\t\t\t\t\tsprite.setAnchorPoint(cc.p(0, 1));\n\n\t\t\t\t\t\tconditionView.addChild(sprite, -1, FunctionButton.BACKGROUND_SPRITE_TAG);\n\t\t\t\t\t\tconditionView.getVirtualRenderer().setScale(FunctionButton.COND_REPEATER_SCALE);\n\t\t\t\t\t\tnode.setNodeView(conditionView);\n\t\t\t\t\t\tthis._maxPikts--;\n\t\t\t\t\t\tvar bodyView = this.parseTree(body, nodeView);\n\t\t\t\t\t\tthis._maxPikts++;\n\n\t\t\t\t\t\twidth = conditionView.width + bodyView.width;\n\t\t\t\t\t\theight = Math.max(bodyView.height, conditionView.height);\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Action:\n\n\t\t\t\tif (this._robot.nativeFunctionMap[node.value])\n\t\t\t\t{\n\t\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, node.value);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Function, node.value);\n\t\t\t\t}\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\n\t\t\tcase pm.data.Node.Type.Statement:\n\n\t\t\t\tvar methodName = \"\";\n\t\t\t\tvar valueObj = null;\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tif(node.getChildren()[i].getTagName() === pm.StatementValueTag)\n\t\t\t\t\t\tvalueObj = node.getChildren()[i];\n\t\t\t\t}\n\t\t\t\tif(valueObj.type === pm.data.Node.Type.Number)\n\t\t\t\t\tmethodName = \"empty_counter\";\n\t\t\t\telse if(valueObj.type === pm.data.Node.Type.Expression)\n\t\t\t\t{\n\t\t\t\t\tif(valueObj.value === pm.ArythmMethods.Addition)\n\t\t\t\t\t\tmethodName = \"cnt_inc\";\n\t\t\t\t\telse\n\t\t\t\t\t\tmethodName = \"cnt_dec\";\n\n\t\t\t\t}\n\t\t\t\tnodeView = pm.appUtils.generateFunctionButton(FunctionButton.Type.Method, methodName);\n\t\t\t\tnode.setNodeView(nodeView);\n\t\t\t\tfor (var i = 0; i < node.getChildren().length; i++)\n\t\t\t\t{\n\t\t\t\t\tnode.getChildren()[i].setNodeView(nodeView);\n\t\t\t\t}\n\t\t\t\tnodeView.setLayoutParameter(marginParam.clone());\n\t\t\t\twidth = nodeView.width + nodeView.getLayoutParameter().getMargin().left;\n\t\t\t\theight = nodeView.height + nodeView.getLayoutParameter().getMargin().top;\n\t\t\t\tbreak;\n\t\t}\n\t\tif (!nodeView)\n\t\t{\n\t\t\tnodeView = new ccui.Layout();\n\t\t\tnodeView.setLayoutParameter(emptyParam);\n\t\t\tnode.setNodeView(null);\n\t\t\twidth = 0;\n\t\t\theight = 0;\n\t\t\treturn nodeView;\n\t\t}\n\n\t\tnodeView.setContentSize(width, height);\n\t\tvTree.addChild(nodeView);\n\t\treturn nodeView;\n\t}\n});\n","/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar PiktoTreeCreator = cc.Class.extend({\n\n\t_visualTree: null,\n\n\tctor: function (programTree, robot, programContainer)\n\t{\n\t\tthis._visualTree = new PiktoTree(\n\t\t\tprogramTree,\n\t\t\trobot,\n\t\t\tprogramContainer);\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._visualTree.getVisualTree();\n\t},\n\n\tupdateTree: function (node, parent)\n\t{\n\t\tthis._visualTree.updateTree(node, parent);\n\t},\n\n\tswitchPointsInRepeater: function (nodeView, num, rep)\n\t{\n\t\tthis._visualTree.switchPointsInRepeater(nodeView, num, rep);\n\t},\n\n\thighlightMethod: function (nodeView)\n\t{\n\t\tthis._visualTree.highlightMethod(nodeView);\n\t},\n\n\thighlightMethodBroken: function (nodeView)\n\t{\n\t\tthis._visualTree.highlightMethodBroken(nodeView);\n\t},\n\n\tclearLastHighlight: function ()\n\t{\n\t\tthis._visualTree.clearLastHighlight();\n\t},\n\n\tclearAllHighlight: function ()\n\t{\n\t\tthis._visualTree.clearAllHighlight();\n\t},\n\n\treloadRepeaters: function()\n\t{\n\t\tthis._visualTree.reloadRepeaters();\n\t},\n\n\tpasteNode: function (parent, button, selectedElem)\n\t{\n\n\t},\n\n\tpasteNodeList: function (element, methodList)\n\t{\n\n\t},\n\n\tmoveNode: function(node, selectedNode)\n\t{\n\n\t},\n\n\taddOutput: function (outputRobot)\n\t{},\n\n\treset: function ()\n\t{\n\t\tthis.clearAllHighlight();\n\t\tthis.reloadRepeaters();\n\t}\n});\n","/**\n * Created by Diana Agliamutdinova on 01.05.2019.\n */\n\n/**\n * @class Represents program of one robot.\n */\nvar TextualTreeCreator = cc.Class.extend({\n\n\t_visualTree: null,\n\t_robot: null,\n\t_outputRobot: null,\n\n\tctor: function (programTree, robot, programContainer, outputRobot)\n\t{\n\t\tthis._visualTree = new TextualTree(\n\t\t\tprogramTree,\n\t\t\trobot,\n\t\t\tprogramContainer,\n\t\t\toutputRobot);\n\n\t\tthis._robot = robot;\n\t\tif(outputRobot)\n\t\t\tthis._outputRobot = outputRobot;\n\t},\n\n\taddOutput: function (outputRobot)\n\t{\n\t\tthis._outputRobot = outputRobot;\n\t\tthis._visualTree.addOutputRobot(outputRobot);\n\t},\n\n\thighlightMethod: function (nodeView)\n\t{\n\t\tthis._visualTree.highlightMethod(nodeView);\n\t},\n\n\thighlightMethodBroken: function (nodeView)\n\t{\n\t\tthis._visualTree.highlightMethodBroken(nodeView);\n\t},\n\n\tclearLastHighlight: function ()\n\t{\n\t\tthis._visualTree.clearLastHighlight();\n\t},\n\n\tclearAllHighlight: function ()\n\t{\n\t\tthis._visualTree.clearAllHighlight();\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._visualTree.getVisualTree();\n\t},\n\n\treset: function ()\n\t{\n\t\tthis.clearAllHighlight();\n\t\tthis.changeParamsValues();\n\t},\n\n\tgetNativeFunction: function (val)\n\t{\n\t\treturn this._robot.nativeFunctionMap[val] ? this._robot.nativeFunctionMap[val]\n\t\t\t: this._outputRobot.nativeFunctionMap[val];\n\t},\n\n\tchangeParamsValues: function ()\n\t{\n\t\tthis._visualTree.changeParamsValues();\n\t},\n\n\tswitchPointsInRepeater: function (nodeView, num, rep)\n\t{\n\t\tthis._visualTree.switchPointsInRepeater(nodeView, num, rep);\n\t},\n\n\tpasteNode: function (parent, button, selectedElem)\n\t{\n\t\tvar index = null;\n\t\tif (selectedElem)\n\t\t{\n\t\t\tif (selectedElem._id === parent._id + pm.BodyFirstChildTag)\n\t\t\t\tindex = pm.BodyFirstChildTag;\n\t\t\telse\n\t\t\t\tindex = selectedElem._treeNode;\n\t\t}\n\t\tvar object = null;\n\t\tvar syntTreeNode = null;\n\t\tvar updateSelectL = false;\n\t\tswitch (button.type)\n\t\t{\n\t\t\tcase FunctionButton.Type.Method:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Action, button.value, index);\n\n\t\t\t\tvar paramsN = 0;\n\t\t\t\tparamsN = button.isNativeMethod() ? this.getNativeFunction(button.value).getParamsNumber()\n\t\t\t\t\t: this._robot.getProgramData().funcsMap[button.value];\n\n\t\t\t\tfor (var i = 0; i < paramsN; i++)\n\t\t\t\t{\n\t\t\t\t\tnum = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\tnum.setTagName(pm.CommanParamTag + i);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.IntMethod:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Action, button.value, index);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Function:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Func, button.value);\n\t\t\t\tvar body = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, \"\");\n\t\t\t\tbody.setTagName(pm.BodyTag);\n\n\t\t\t\tupdateSelectL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.IfStatement:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.IfStatement, button.value, index);\n\t\t\t\tvar body = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, pm.IFThenTag);\n\t\t\t\tbody.setTagName(pm.IFThenTag);\n\n\t\t\t\tvar boolNode = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\t\t\t\tboolNode.setTagName(pm.IFCondTag);\n\n\t\t\t\tif (button.value === pm.IfVals.IF_ELSE)\n\t\t\t\t{\n\t\t\t\t\tvar elseBody = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, pm.IFElseTag);\n\t\t\t\t\telseBody.setTagName(pm.IFElseTag);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.ElseBlock:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Body, pm.IFElseTag);\n\t\t\t\tsyntTreeNode.setTagName(pm.IFElseTag);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Condition:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Condition, button.value);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.LogicExpression:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.LogicExpression, button.value);\n\n\t\t\t\tvar left = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\tvar right = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\tleft.setTagName(pm.ExpressionLeftTag);\n\t\t\t\tright.setTagName(pm.ExpressionRightTag);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Repeater:\n\t\t\t\tvar body = null;\n\n\t\t\t\tswitch (button.value)\n\t\t\t\t{\n\t\t\t\t\tcase pm.LoopVals.whileC:\n\t\t\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Loop, button.value, index);\n\n\t\t\t\t\t\tbody = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, \"\");\n\t\t\t\t\t\tbody.setTagName(pm.BodyTag);\n\t\t\t\t\t\tvar boolNode = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\t\t\t\t\t\tboolNode.setTagName(pm.WhileCondTag);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.nTimes:\n\t\t\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Loop, button.value, index);\n\t\t\t\t\t\tbody = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, \"\");\n\t\t\t\t\t\tbody.setTagName(pm.BodyTag);\n\t\t\t\t\t\tvar number = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\t\tnumber.setTagName(pm.NTimesNumTag);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase pm.LoopVals.for:\n\t\t\t\t\t\tvar name = \"i\";\n\t\t\t\t\t\tvar i = 1;\n\t\t\t\t\t\twhile(pmui.AllocNode.intVals.indexOf(name) !== -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname = \"i{0}\".format(i);\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpmui.AllocNode.intVals.push(name);\n\t\t\t\t\t\tvar mainBody = parent;\n\t\t\t\t\t\tvar selected = selectedElem;\n\t\t\t\t\t\twhile(!(mainBody instanceof pmui.FunctionNode))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmainBody = mainBody._parentNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmainBody = mainBody.getBody();\n\n\t\t\t\t\t\tvar alloc = pm.data.SyntaxTree.createNode(mainBody._treeNode, pm.data.Node.Type.Alloc, \"\", pm.BodyFirstChildTag);\n\t\t\t\t\t\tvar type = pm.data.SyntaxTree.createNode(alloc, pm.data.Node.Type.Type, pm.AllocVals.INT);\n\t\t\t\t\t\tvar id = pm.data.SyntaxTree.createNode(alloc, pm.data.Node.Type.Identifier, name);\n\t\t\t\t\t\tvar allocView = this._visualTree.parseTree(alloc, mainBody, mainBody._firstElem);\n\n\t\t\t\t\t\tif(mainBody._firstElem === selected)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tindex = alloc;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Loop, button.value, index);\n\t\t\t\t\t\tbody = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Body, \"\");\n\t\t\t\t\t\tbody.setTagName(pm.BodyTag);\n\n\t\t\t\t\t\tvar indexVar = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Identifier, name);\n\t\t\t\t\t\tindexVar.setTagName(pm.ForIteratorTag);\n\n\t\t\t\t\t\tvar num1 = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\t\tnum1.setTagName(pm.ForBegTag);\n\n\t\t\t\t\t\tvar num2 = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\t\tnum2.setTagName(pm.ForEndTag);\n\n\t\t\t\t\t\tupdateSelectL = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Alloc:\n\t\t\t\tif(!parent._parentNode.isFunction() && !parent.isFunction())\n\t\t\t\t\treturn ;\n\t\t\t\tvar name = null;\n\t\t\t\tif(parent.isFunction())\n\t\t\t\t{\n\t\t\t\t\tvar ind = 0;\n\t\t\t\t\twhile(parent._treeNode.getChildren()[ind].type === pm.data.Node.Type.Alloc)\n\t\t\t\t\t{\n\t\t\t\t\t\tindex = parent._treeNode.getChildren()[ind];\n\t\t\t\t\t\tind++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tname = button.value;\n\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Alloc, \"\", index);\n\t\t\t\tvar varType = pmui.AllocNode.intVals.indexOf(button.value) !== -1 ? pm.AllocVals.INT : pm.AllocVals.BOOL;\n\t\t\t\tvar type = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Type, varType);\n\t\t\t\tvar id = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Identifier, name);\n\n\t\t\t\tupdateSelectL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Statement:\n\t\t\t\tvar statType = button.getVarType();\n\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Statement, statType, index);\n\t\t\t\tvar variable = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Identifier, button.value);\n\t\t\t\tvariable.setTagName(pm.StatementVarTag);\n\t\t\t\tif (statType === pm.AllocVals.INT)\n\t\t\t\t{\n\t\t\t\t\tvar num = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\t\tnum.setTagName(pm.StatementValueTag);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar num = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Bool, pm.BoolTrue);\n\t\t\t\t\tnum.setTagName(pm.StatementValueTag);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Variable:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Identifier, button.value);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Number:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Number, button.value);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Expression:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Expression, button.value);\n\n\t\t\t\tvar num = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\tnum.setTagName(pm.ExpressionLeftTag);\n\n\t\t\t\tvar num2 = pm.data.SyntaxTree.createNode(syntTreeNode, pm.data.Node.Type.Number, 0);\n\t\t\t\tnum2.setTagName(pm.ExpressionRightTag);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Empty:\n\t\t\t\tsyntTreeNode = pm.data.SyntaxTree.createNode(parent._treeNode, pm.data.Node.Type.Empty, \"\", index);\n\t\t\t\tbreak;\n\n\t\t\tcase FunctionButton.Type.Constant:\n\t\t\t\tobject = selectedElem.setValue(button.value);\n\t\t\t\tbreak;\n\t\t}\n\t\tif(syntTreeNode)\n\t\t\tobject = this._visualTree.parseTree(syntTreeNode, parent, selectedElem);\n\n\t\tif(updateSelectL || this.getMethodsCount() >= this._robot.getProgramData().maxMethodCount)\n\t\t\tpm.sendCustomEvent(pm.COMMANDS_CHANGED);\n\t\treturn object;\n\t},\n\n\tpasteNodeList: function (element, methodList)\n\t{\n\t\tvar selected = null;\n\t\tif (element._id === element._parentNode._id + pm.BodyFirstChildTag)\n\t\t\tselected = pm.BodyFirstChildTag;\n\t\telse\n\t\t\tselected = element._treeNode;\n\n\t\tvar selectedNode = element;\n\t\tfor (var i = 0; i < methodList.length && this.getMethodsCount() < this._robot.getProgramData().maxMethodCount; i++)\n\t\t{\n\t\t\tselected = pm.data.SyntaxTree.createNode(\n\t\t\t\telement._parentNode._treeNode,\n\t\t\t\tpm.data.Node.Type.Action,\n\t\t\t\tmethodList[i],\n\t\t\t\tselected);\n\t\t\tselectedNode = this._visualTree.parseTree(selected, element._parentNode, selectedNode);\n\t\t}\n\t\treturn selectedNode;\n\t},\n\n\tmoveNode: function(node, selectedNode)\n\t{\n\t\tvar index = null;\n\t\tif (selectedNode)\n\t\t{\n\t\t\tif (selectedNode._id === selectedNode._parentNode._id + pm.BodyFirstChildTag)\n\t\t\t{\n\t\t\t\tindex = pm.BodyFirstChildTag;\n\t\t\t\tif(node.isEmpty() && node._parentNode._treeNode.getChildren().length === 1)\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t\telse\n\t\t\t\tindex = selectedNode._treeNode;\n\t\t}\n\t\tvar treeNode = node._treeNode.clone();\n\t\tif(!treeNode || this.getMethodsCount() + treeNode.getUsedMethodsCount() > this._robot.getProgramData().maxMethodCount)\n\t\t\treturn null;\n\t\tpm.data.SyntaxTree.moveNode(selectedNode._parentNode._treeNode, treeNode, index);\n\n\t\tvar pasted = this._visualTree.parseTree(treeNode, selectedNode._parentNode, selectedNode);\n\t\treturn pasted;\n\t},\n\n\tgetMethodsCount: function ()\n\t{\n\t\treturn this._robot.getProgramData().programTree.getUsedMethodsCount();\n\t},\n\n\tupdateTree: function (node, parent)\n\t{\n\t\tthis._visualTree.updateTree(node, parent);\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._visualTree.getVisualTree();\n\t},\n\n\t_isParentUpper: function(node, parent)\n\t{\n\t\tvar curParent = node._parentNode;\n\t\twhile(!curParent.isFunction())\n\t\t{\n\t\t\tif(curParent === parent)\n\t\t\t\treturn true;\n\t\t\telse\n\t\t\t\tcurParent = curParent._parentNode;\n\t\t}\n\t\treturn false;\n\t},\n\n\t_isVariableLower: function(treeNode, varName)\n\t{\n\t\tif(!treeNode)\n\t\t\treturn false;\n\t\tvar curParent = treeNode.parentNode;\n\t\tvar curElem = treeNode;\n\t\tfor (var i = 0; i < curParent.getChildren().length; i++)\n\t\t{\n\t\t\tif (curParent.getChildren()[i].type === pm.data.Node.Type.Identifier\n\t\t\t\t&& curParent.getChildren()[i].value === varName)\n\t\t\t\treturn true;\n\n\t\t\tif (curParent.getChildren()[i].type === pm.data.Node.Type.Statement\n\t\t\t\t&& curParent.getChildren()[i].getNodeView().getVarName() === varName)\n\t\t\t\treturn true;\n\n\t\t\tif (curParent.getChildren()[i] === curElem)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(curParent.getChildren()[i].getChildren().length !== 0)\n\t\t\t\tif(this._isVariableLower(curParent.getChildren()[i].getChildren()\n\t\t\t\t\t[curParent.getChildren()[i].getChildren().length - 1], varName))\n\t\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n});\n","\nvar ProgramTree = cc.Class.extend(/** @lends ProgramContainerLayer# */{\n\n\t_tree: null,\n\t_treeCreator: null,\n\t_mode: 0,\n\n\tctor: function (mode, programTree, robot, parent, outputRobot)\n\t{\n\t\tthis.createTree(mode, programTree, robot, parent, outputRobot);\n\t},\n\n\tcreateTree: function (mode, programTree, robot, parent, outputRobot)\n\t{\n\t\tpmui.NodeLayer.KUMIR_MODE = false;\n\t\tthis._mode = mode;\n\t\tif(this._tree)\n\t\t\tthis._tree.removeFromParent();\n\n\t\tswitch(this._mode)\n\t\t{\n\t\t\tcase ProgramContainerLayer.PIKTO_MODE:\n\t\t\t\tthis._treeCreator = new PiktoTreeCreator(\n\t\t\t\t\tprogramTree,\n\t\t\t\t\trobot,\n\t\t\t\t\tparent\n\t\t\t\t);\n\t\t\t\tif(this._treeCreator.getVisualTree())\n\t\t\t\t\tbreak;\n\t\t\t\tthis._mode = ProgramContainerLayer.KUMIR_MODE;\n\n\t\t\tcase ProgramContainerLayer.KUMIR_MODE:\n\t\t\t\tpmui.NodeLayer.KUMIR_MODE = true;\n\n\t\t\tcase ProgramContainerLayer.PIKTO_K_MODE:\n\t\t\t\tthis._treeCreator = new TextualTreeCreator(\n\t\t\t\t\tprogramTree,\n\t\t\t\t\trobot,\n\t\t\t\t\tparent,\n\t\t\t\t\toutputRobot);\n\t\t}\n\t\tthis._tree = this._treeCreator.getVisualTree();\n\t\tpm.registerCustomEventListener(pm.PARSE_NODE, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tthis.updateTree(data.node, data.parent);\n\t\t}.bind(this), this._tree);\n\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_METHOD_EVENT_STR, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data && robot.id === data.robotIndex && data.nodeView)\n\t\t\t\tthis._treeCreator.highlightMethod(data.nodeView);\n\t\t}.bind(this), this._tree);\n\n\t\tpm.registerCustomEventListener(pm.REM_LAST_HIGHLIGHT_EVENT_STR, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined && robot.id === data.robotIndex)\n\t\t\t\tthis._treeCreator.clearLastHighlight();\n\t\t}.bind(this), this._tree);\n\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_BROKEN_METHOD_EVENT_STR, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined && robot.id === data.robotIndex)\n\t\t\t\tthis._treeCreator.highlightMethodBroken(data.nodeView);\n\t\t}.bind(this), this._tree);\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_POINT_IN_REP_EVENT, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data && robot.id === data.robotIndex)\n\t\t\t\tthis._treeCreator.switchPointsInRepeater(data.nodeView, data.iterNum, data.rep);\n\t\t}.bind(this), this._tree);\n\t},\n\n\taddOutput: function (robot)\n\t{\n\t\tthis._treeCreator.addOutput(robot);\n\t},\n\n\tgetMode: function ()\n\t{\n\t\treturn this._mode;\n\t},\n\n\tgetTree: function ()\n\t{\n\t\treturn this._tree;\n\t},\n\n\tupdateTree: function (node, parent)\n\t{\n\t\tthis._treeCreator.updateTree(node, parent);\n\t},\n\n\tpasteNode: function (parent, button, selectedElem)\n\t{\n\t\treturn this._treeCreator.pasteNode(parent, button, selectedElem);\n\t},\n\n\tpasteNodeList: function (element, methodList)\n\t{\n\t\treturn this._treeCreator.pasteNodeList(element, methodList);\n\t},\n\n\tmoveNode: function(node, selectedNode)\n\t{\n\t\treturn this._treeCreator.moveNode(node, selectedNode);\n\t},\n\n\tgetMethodsCount: function ()\n\t{\n\t\treturn this._treeCreator.getMethodsCount();\n\t},\n\n\tgetVisualTree: function()\n\t{\n\t\treturn this._tree;\n\t},\n\n\treset: function ()\n\t{\n\t\tthis._treeCreator.reset();\n\t}\n});\n\n\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * @class Layer for displaying program of robot.\n * @extends ccui.VBox\n * @property {pm.AbstractRobot} robot\n * @property {Number} curMethodCount\n * @constructor\n * @param {GameType} gameType\n * @param {Boolean} useMethodStack Use method stack or not.\n * @param {pm.AbstractRobot} [robot] For which robot construct layer.\n */\nvar ProgramLayer = ccui.Layout.extend(/** @lends ProgramLayer# */{\n\n\t_robot: null,\n\n\t_gameType: 0,\n\t_selectPatternMenu: null,\n\t_patternContainer: null,\n\n\t_programContainer: null,\n\t_functionScroll: null,\n\t_methodStackLayer: null,\n\t_gameLabel: null,\n\t_worldLabel: null,\n\t_selectLayout: null,\n\t_workLayout: null,\n\n\t_controlledMode: false,\n\t_buttonClickCallback: null,\n\t_buttonClickCallbackTarget: null,\n\n\t_programControlLayer: null,\n\n\t_colorBarLayer: null,\n\t_colorProgramLayer: null,\n\t_middleBorder: null,\n\t_colorBorder: null,\n\n\t_recognizeResultButton: null,\n\t_clearProgramButton: null,\n\n\n\tctor: function(gameType, robot)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._gameType = gameType;\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar width = pm.appUtils.getProgramLayerWidth();\n\n\t\tif(screenBounds.safeAreas.right)\n\t\t\twidth += screenBounds.right / 2;\n\n\t\tthis.setContentSize(width, pm.settings.getScreenSize().height);\n\n\t\tthis._createProgramControlLayer(robot);\n\t\tthis._drawClearProgramButton();\n\n\t\tthis._workLayout = new ccui.Layout();\n\n\t\tthis._workLayout.setBackGroundImage(\"System/PL_Border.png\");\n\t\tthis._workLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._workLayout.setCascadeOpacityEnabled(true);\n\t\tthis._workLayout.setBackGroundImageCapInsets(cc.rect(80, 90, 100, 70));\n\t\tthis._workLayout.setContentSize(width - ProgramLayer.METHOD_STACK_WIDTH, pm.settings.getScreenSize().height - ProgramLayer.HEADER_HEIGHT);\n\t\tthis._workLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar workLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tworkLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tworkLayoutAlign.setMargin(0, ProgramLayer.HEADER_HEIGHT, 0, 0);\n\t\tthis._workLayout.setLayoutParameter(workLayoutAlign);\n\n\t\tthis.addChild(this._workLayout, 2);\n\n\t\tpm.registerCustomEventListener(pm.ROBOT_TOUCH_EVENT_STR, function (event)\n\t\t{\n\t\t\tif (this._gameType !== GameType.Net && event.getUserData() && event.getUserData().id !== this.robot.id)\n\t\t\t\tpm.appUtils.getProgramLayerPrototype().setRobot.call(this, event.getUserData());\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.ENABLE_CONTROLLED_MODE_STR, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined)\n\t\t\t\tthis._enableControlledMode(data);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.DISABLE_CONTROLLED_MODE_STR, this._disableControlledMode.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.COMMANDS_CHANGED, function ()\n\t\t{\n\t\t\tthis._drawSelectLayout();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.COOPERATIVE_MODE, function (event)\n\t\t{\n\t\t\tvar cooperativeMode = event.getUserData();\n\n\t\t\tif(cooperativeMode)\n\t\t\t{\n\t\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(this._robot.groupID),\n\t\t\t\t\tpm.appUtils.getProgramLayerWidth() - ProgramLayer.METHOD_STACK_WIDTH - 30, 15);\n\t\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._colorBorder.removeFromParent();\n\t\t\t\tthis._colorBorder = null;\n\t\t\t}\n\n\t\t\tthis.updateProgramContainer();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_CLEAR_PROGRAM_BUTTON, function()\n\t\t{\n\t\t\tif (this._clearProgramButton)\n\t\t\t{\n\t\t\t\tthis._clearProgramButton.removeFromParent();\n\t\t\t\tthis._clearProgramButton = null;\n\t\t\t}\n\n\t\t\tthis._drawClearProgramButton();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.TURN_TURBO_MODE, function()\n\t\t{\n\t\t\tif (this._programControlLayer)\n\t\t\t\tthis._programControlLayer.reloadInterface();\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.PATTERNS_COUNT_CHANGED_EVENT_STR, this._updateSelectPatternMenu.bind(this), this);\n\t},\n\n\t_drawClearProgramButton: function()\n\t{\n\t\tif (pm.settings.getUseClearProgramButton())\n\t\t{\n\t\t\tthis._clearProgramButton = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tthis._clearProgramButton.addClickEventListener(this._clearProgramConfirm.bind(this));\n\n\t\t\tvar clearProgramButtonAlign = new ccui.RelativeLayoutParameter();\n\t\t\tclearProgramButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tclearProgramButtonAlign.setMargin(ProgramLayer.METHOD_STACK_WIDTH - this._clearProgramButton.width, 0, 0, 0);\n\t\t\tthis._clearProgramButton.setLayoutParameter(clearProgramButtonAlign);\n\n\t\t\tthis.addChild(this._clearProgramButton);\n\t\t}\n\t},\n\n\t_clearProgramConfirm: function()\n\t{\n\t\tif (!cc.director.getRunningScene().getChildByTag(StartMenuLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar input = new pmui.ConfirmWindow(LocalizedString(\"ClearProgram\"));\n\n\t\t\tinput.setCallback(this, this._clearProgram, function () {});\n\n\t\t\tinput.setPosition((pm.settings.getScreenSize().width - input.width) / 2, (pm.settings.getScreenSize().height - input.height) / 2);\n\n\t\t\tcc.director.getRunningScene().addChild(input, 100, ProgramLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_clearProgram: function()\n\t{\n\t\tif (this._robot.parentLevel.programDataCache[this._robot.groupID])\n\t\t{\n\t\t\tthis._robot.parentLevel.programDataCache[this._robot.groupID] = null;\n\n\t\t\tthis._updateSelectPatternMenu();\n\t\t}\n\t},\n\n\t_getRobotPatternCount: function(robot)\n\t{\n\t\treturn robot.parentLevel.programData[robot.groupID].programDataArray.length;\n\t},\n\n\t/**\n * Sets robot and redraws interface.\n * @param {pm.AbstractRobot} robot\n */\n\tsetRobot: function(robot) {},\n\n\t/**\n\t * Updates program container and interface.\n\t */\n\tupdateProgramContainer: function() {},\n\n\t/**\n * Returns robot of layer.\n * @returns {pm.AbstractRobot}\n */\n\tgetRobot: function() { return this._robot; },\n\n\t/**\n * Returns if program pattern is editable.\n * @returns {Boolean}\n */\n\tisProgramPatternEditable: function()\n\t{\n\t\treturn this._robot.getProgramData().canEditProgramPattern;\n\t},\n\n\t_createProgramControlLayer: function(robot)\n\t{\n\t\tif (robot === undefined)\n\t\t\trobot = this._robot;\n\n\t\tvar useProgramRecognizer = cc.sys.isMobile && pm.settings.getUseProgramRecognizer() && robot.parentLevel.useProgramRecognizer;\n\t\tthis._programControlLayer = new ProgramControlLayer(robot.parentLevel.maps.length > 1, this._gameType === GameType.Net, useProgramRecognizer);\n\n\t\tvar programMenuAlign = new ccui.RelativeLayoutParameter();\n\t\tprogramMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tprogramMenuAlign.setRelativeName(\"programMenu\");\n\t\tprogramMenuAlign.setMargin(0, 0, 0, 0);\n\n\t\tthis._programControlLayer.setLayoutParameter(programMenuAlign);\n\n\t\tthis.addChild(this._programControlLayer);\n\t},\n\n\t_createSelectButtonsBar: function(type, values, registerTutorial) {},\n\n\t/**\n * Updates interface.\n * @param {?Number} offset Offset fo correct scroll position after changes\n */\n\tupdateView: function(offset) {},\n\n\t_recalculateSizes: function() {},\n\n\t_dragCallback: function(element, eventType, touch) {},\n\n\t_canDragButtons: function()\n\t{\n\t\treturn !this._controlledMode;\n\t},\n\n\t/**\n * Enables Controlled mode of program layer.
\n * In this mode buttons animates once and called click callback passed to function.\n * @param {pm.ControlledModeData} controlledModeData\n * @private\n */\n\t_enableControlledMode: function(controlledModeData) {},\n\n\t/**\n * Disables Controlled mode of program layer.\n * @private\n */\n\t_disableControlledMode: function()\n\t{\n\t\tthis._controlledMode = false;\n\t\tthis._buttonClickCallback = null;\n\t\tthis._buttonClickCallbackTarget = null;\n\n\t\tthis._programControlLayer.setButtonsEnabled(true);\n\t},\n\n\tisControlled: function()\n\t{\n\t\treturn this._controlledMode;\n\t},\n\n\t_onRecognizeError: function(error)\n\t{\n\t\tif(error !== \"\")\n\t\t{\n\t\t\tvar messageBox = new pmui.MessageBox(this, error);\n\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\t\t\tmessageBox.setPosition(x, y);\n\t\t\tcc.director.getRunningScene().addChild(messageBox, 1000);\n\t\t}\n\t},\n\n\t_onProgramRecognize: function(predictions)\n\t{\n\t\tthis._programControlLayer.showRecognizeResultButton(predictions);\n\t},\n\n\t/**\n * Resets layer\n */\n\treset: function() {},\n\n\tsetEnabled: function(flag, steppedWorking) {},\n\n\tsetProgramControlEnabled: function(flag)\n\t{\n\t\tthis._programControlLayer.setButtonsEnabled(flag);\n\t}\n});\n\n\n/** @expose */\n_p.curMethodCount;\ncc.defineGetterSetter(_p, \"curMethodCount\", _p.getCurMethodCount, _p.setCurMethodCount);\n\nProgramLayer.SELECTDNDNAME = \"select_menu_drag_and_drop\";\nProgramLayer.MENU_SEPARATOR = 5.0;\nProgramLayer.COMPONENT_SEPARATOR = 5.0;\nProgramLayer.PROGRAM_SEPARATOR = 10.0;\nProgramLayer.METHOD_STACK_WIDTH = 44;\nProgramLayer.HEADER_HEIGHT = 50;\nProgramLayer.BORDER_X = 15.0;\nProgramLayer.BORDER_Y = 5.0;\nProgramLayer.REPEATER_BUTTON_NUM = 6;\nProgramLayer.SCROLL_BAR_WIDTH = 5;\nProgramLayer.BORDER_RADIUS = 20;\nProgramLayer.SECOND_ROW_MARGIN = 10;\nProgramLayer.WORK_LAYOUT_MARGIN = 20;\nProgramLayer.CONDITIONS_MARGIN = 3;\nProgramLayer.CONDITIONS_MARGIN_EDITOR = 2;\nProgramLayer.COLOR_BAR_MARGIN = 14;\nProgramLayer.BAR_COLOR = cc.color(135, 160, 180);\nProgramLayer.PROGRAM_COLOR = cc.color(224, 224, 224);\nProgramLayer.PATTERN_COLOR = cc.color(38, 38, 149);\nProgramLayer.PATTERN_HEIGHT = 30;\nProgramLayer.CONFIRM_LAYER_TAG = 4963;\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * @class Layer for displaying program of robot.\n * @extends ccui.VBox\n * @property {pm.AbstractRobot} robot\n * @property {Number} curMethodCount\n * @constructor\n * @param {GameType} gameType\n * @param {Boolean} useMethodStack Use method stack or not.\n * @param {pm.AbstractRobot} [robot] For which robot construct layer.\n */\nvar ProgramLayerK = ProgramLayer.extend(/** @lends ProgramLayer# */{\n\n\t_buttonGroup: null,\n\t_butCont: null,\n\t_programData: null,\n\t_numberInputLayer: null,\n\n\t_oldScrollPos : 0,\n\n\tctor: function (gameType, useMethodStack, robot, level)\n\t{\n\t\tthis._super(gameType, robot);\n\t\tthis._programData = robot.getProgramData();\n\t\tthis._programData.usedMethodsCount = this._programData.programTree.getUsedMethodsCount();\n\n\t\tthis._middleBorder = new cc.Scale9Sprite(\"System/PL_Middle.png\");\n\t\tthis._middleBorder.setCapInsets(cc.rect(28, 18, 7, 4));\n\t\tthis._middleBorder.setAnchorPoint(0, 0.5);\n\n\t\tthis._workLayout.addChild(this._middleBorder, -1);\n\n\t\tif (level.getRobotCount() >= 2)\n\t\t{\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(robot.id), this.getContentSize().width, 15);\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\n\t\tif (useMethodStack)\n\t\t{\n\t\t\tthis._methodStackLayer = new MethodStackLayer(this.getContentSize().height - 350, robot.parentLevel);\n\n\t\t\tvar msShift = ProgramLayer.METHOD_STACK_WIDTH - this._methodStackLayer.width;\n\t\t\tmsShift += MethodStackLayer.INNER_WIDTH;\n\t\t\tmsShift -= MethodStackLayer.OUTER_RIGHT_MARGIN;\n\n\t\t\tvar methodStackLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tmethodStackLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\t\tmethodStackLayerAlign.setMargin(msShift + 5, ProgramLayer.COMPONENT_SEPARATOR, 0, 0);\n\t\t\tthis._methodStackLayer.setLayoutParameter(methodStackLayerAlign);\n\n\t\t\tthis.addChild(this._methodStackLayer, -100);\n\t\t}\n\n\t\tthis._numberInputLayer = new NumberInputLayer();\n\t\tvar numberInputLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tnumberInputLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tnumberInputLayerAlign.setMargin(ProgramLayer.METHOD_STACK_WIDTH, 0, 0, this._numberInputLayer.height);\n\t\tthis._numberInputLayer.setLayoutParameter(numberInputLayerAlign);\n\t\tthis.addChild(this._numberInputLayer, -100);\n\n\t\tthis._selectLayout = new ccui.Layout();\n\t\tthis._selectLayout.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._selectLayout.setBackGroundColor(cc.color(135, 160, 180));\n\t\tthis._selectLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar selectLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tselectLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tselectLayoutAlign.setRelativeName(\"selectLayout\");\n\t\tselectLayoutAlign.setMargin(ProgramLayer.BORDER_X, 3 * ProgramLayer.BORDER_Y, 0, 0);\n\t\tthis._selectLayout.setLayoutParameter(selectLayoutAlign);\n\n\t\tthis._workLayout.addChild(this._selectLayout, -2);\n\n\t\tthis._functionScroll = new ccui.ListView();\n\t\tthis._functionScroll.setBackGroundColor(cc.color(224, 224, 224));\n\t\tthis._functionScroll.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._functionScroll.setScrollBarOpacity(255 * 0.9);\n\t\tthis._functionScroll.setScrollBarWidth(ProgramLayer.SCROLL_BAR_WIDTH);\n\t\tthis._functionScroll.setItemsMargin(5);\n\t\tthis._functionScroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._functionScroll.setInnerContainerSize(cc.size(480, 350));\n\t\tthis._functionScroll.setSwallowTouches(true);\n\n\t\tvar functionsAlign = new ccui.RelativeLayoutParameter();\n\t\tfunctionsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tfunctionsAlign.setMargin(0, ProgramLayer.PROGRAM_SEPARATOR, 0, 0);\n\t\tfunctionsAlign.setRelativeToWidgetName(\"selectLayout\");\n\t\tthis._functionScroll.setLayoutParameter(functionsAlign);\n\n\t\tthis._workLayout.addChild(this._functionScroll, -2);\n\n\t\tif (robot)\n\t\t\tthis.robot = robot;\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_INNER_PROGRAM_LAYER_CONTAINER, function (event)\n\t\t{\n\t\t\tthis._recalculateSizes(event.getUserData());\n\t\t}.bind(this), this);\n\n\n\t\tpm.registerCustomEventListener(pm.ADD_FUNCTION_METHOD, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tpmui.FunctionNode.vals.add(data.name);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.VARIABLES_CHANGED, this._formatButs.bind(this, ProgramLayer.OPTIONAL_BUTTON_TAG), this);\n\n\t\tpm.registerCustomEventListener(pm.FUNCTION_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined)\n\t\t\t{\n\t\t\t\tif(!this._programData.useCustomFuncs && this._programData.funcs.indexOf(data) === -1)\n\t\t\t\t\tthis._programData.funcs.push(data);\n\t\t\t\tthis._drawSelectLayout();\n\t\t\t}\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.FUNCTION_PARAMS_CHANGED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined)\n\t\t\t{\n\t\t\t\tthis._robot.getProgramData().funcsMap[data.name] = data.params;\n\t\t\t}\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.VARIABLE_DEFINITION_REMOVED, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tif (data !== undefined)\n\t\t\t{\n\t\t\t\tif (this._programData.alloc.indexOf(data) === -1)\n\t\t\t\t\tthis._programData.alloc.push(data);\n\t\t\t\tpmui.StatementNode.vals.delete(data);\n\t\t\t\tthis._drawSelectLayout(ProgramLayer.OPTIONAL_BUTTON_TAG);\n\t\t\t}\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.COMMAND_REMOVED, function (event)\n\t\t{\n\t\t\tthis._programData.usedMethodsCount--;\n\t\t\tthis.setEnabledKids(this._buttonGroup, this._programData.usedMethodsCount < this._programData.maxMethodCount);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCROLL_POS, function (event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\t\t\tthis.updateView(data.height, data.posY);\n\t\t}.bind(this), this);\n\t},\n\n\t/**\n\t * Sets robot and redraws interface.\n\t * @param {pm.AbstractRobot} robot\n\t */\n\tsetRobot: function (robot)\n\t{\n\t\tvar isControlled = this._methodStackLayer && !this._methodStackLayer.hidden;\n\n\t\tif (isControlled)\n\t\t\tthis._methodStackLayer.drawRobotMethodList(robot.groupID);\n\n\t\tthis._robot = robot;\n\t\tthis._robot.parentLevel.setCurrentRobot(this._robot);\n\n\t\tthis._updateSelectPatternMenu();\n\n\t\tif (isControlled)\n\t\t\tpm.robotManager.setControlledMode(true);\n\n\t\tif (this._colorBorder)\n\t\t{\n\t\t\tvar width = this._colorBorder.getContentSize().width;\n\t\t\tvar height = this._colorBorder.getContentSize().height;\n\n\t\t\tthis._colorBorder.removeFromParent();\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(this._robot.id), width, height);\n\t\t\tthis._colorBorder.setPosition(cc.p(this._middleBorder.getPosition().x, this._middleBorder.getPosition().y - 12));\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\t},\n\n\t_fillButtonsGroup: function(tag)\n\t{\n\t\tvar height = 0;\n\t\tvar width = 0;\n\t\tthis._buttonGroup.removeAllChildren();\n\t\tif(!this._programData.useGroupButtons) {\n\t\t\tvar buttonsGroup = new ccui.VBox();\n\t\t\tvar methods = this._drawRobotMethods();\n\n\t\t\tbuttonsGroup.addChild(methods);\n\t\t\tbuttonsGroup.addChild(this._drawRobotConditions());\n\t\t\tbuttonsGroup.addChild(this._drawCommonRepeaters());\n\t\t\tbuttonsGroup.addChild(this._drawOptionalButtons());\n\n\t\t\tfor (var i = 0; i < buttonsGroup.getChildrenCount(); i++)\n\t\t\t{\n\t\t\t\theight += buttonsGroup.getChildren()[i].height;\n\t\t\t\twidth = Math.max(width, buttonsGroup.getChildren()[i].width);\n\t\t\t}\n\t\t\theight += ProgramLayer.BORDER_Y;\n\n\t\t\tbuttonsGroup.setContentSize(width, height);\n\t\t\tthis._buttonGroup.addChild(buttonsGroup);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar buttonsGroup = null;\n\t\t\tswitch (tag) {\n\t\t\t\tcase ProgramLayer.FUNCTIONS_BUTTON_TAG:\n\t\t\t\t\tbuttonsGroup = this._drawRobotMethods();\n\t\t\t\t\tbreak;\n\t\t\t\tcase ProgramLayer.CONDITIONS_BUTTON_TAG:\n\t\t\t\t\tbuttonsGroup = this._drawRobotConditions();\n\t\t\t\t\tbreak;\n\t\t\t\tcase ProgramLayer.CONSTRUCTIONS_BUTTON_TAG:\n\t\t\t\t\tbuttonsGroup = this._drawCommonRepeaters();\n\t\t\t\t\tbreak;\n\t\t\t\tcase ProgramLayer.OPTIONAL_BUTTON_TAG:\n\t\t\t\t\tbuttonsGroup = this._drawOptionalButtons();\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (buttonsGroup !== null) {\n\t\t\t\tbuttonsGroup.forceDoLayout();\n\t\t\t\tthis._buttonGroup.addChild(buttonsGroup);\n\t\t\t\theight = buttonsGroup.height;\n\t\t\t\twidth = buttonsGroup.width;\n\t\t\t}\n\t\t\tif(this._butCont.getChildByTag(tag))\n\t\t\t{\n\t\t\t\tfor(var i = 0;i < this._butCont.getChildren().length;i++)\n\t\t\t\t\tthis._butCont.getChildren()[i].setNormalTexture();\n\t\t\t\tthis._butCont.getChildByTag(tag).setSelectedTexture();\n\t\t\t}\n\t\t}\n\t\tthis.setEnabledKids(this._buttonGroup, this._programData.programTree.getUsedMethodsCount() < this._programData.maxMethodCount);\n\t\tthis._buttonGroup.setContentSize(width, height);\n\t},\n\n\t_drawSelectLayout: function (tag)\n\t{\n\t\tif(!tag)\n\t\t\ttag = ProgramLayer.FUNCTIONS_BUTTON_TAG;\n\n\t\tthis._selectLayout.removeAllChildren();\n\t\tthis._programData = this._robot.getProgramData();\n\n\t\tif (this._getRobotPatternCount(this._robot) > 1)\n\t\t\tthis._selectPatternMenu.setPosition((this._patternContainer.width - this._selectPatternMenu.width) / 2,\n\t\t\t\t(this._patternContainer.height - this._selectPatternMenu.height) / 2 + 2);\n\n\t\tif(this._programData.useGroupButtons)\n\t\t{\n\t\t\tthis._drawTabButtons();\n\t\t\tthis._buttonGroup = new ccui.VBox();\n\t\t\tvar buttonGroupAlign = new ccui.RelativeLayoutParameter();\n\t\t\tbuttonGroupAlign.setRelativeName(\"buttonGroup\");\n\t\t\tbuttonGroupAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\t\tbuttonGroupAlign.setRelativeToWidgetName(\"sectionButtons\");\n\t\t\tbuttonGroupAlign.setMargin(ProgramLayer.BORDER_X, ProgramLayer.BORDER_Y, 0, 0);\n\t\t\tthis._buttonGroup.setLayoutParameter(buttonGroupAlign);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._butCont = null;\n\t\t\tthis._buttonGroup = new ccui.VBox();\n\t\t\tvar buttonGroupAlign = new ccui.RelativeLayoutParameter();\n\t\t\tbuttonGroupAlign.setRelativeName(\"buttonGroup\");\n\t\t\tbuttonGroupAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\tbuttonGroupAlign.setMargin(ProgramLayer.BORDER_X, ProgramLayer.BORDER_Y, 0, 0);\n\t\t\tthis._buttonGroup.setLayoutParameter(buttonGroupAlign);\n\t\t}\n\t\tthis._selectLayout.addChild(this._buttonGroup);\n\t\tthis._fillButtonsGroup(tag);\n\t\tvar height = this._butCont ? Math.max(this._butCont.height, this._buttonGroup.height) : this._buttonGroup.height;\n\t\tvar width = pm.appUtils.getProgramLayerWidth() - ProgramLayer.BORDER_X - ProgramLayer.METHOD_STACK_WIDTH;\n\n\t\tif(this._butCont)\n\t\t\tthis._butCont.setContentSize(this._butCont.width, height);\n\t\tthis._middleBorder.setPosition(cc.p(15, this._workLayout.height - height - 20));\n\t\tif(this._colorBorder)\n\t\t\tthis._colorBorder.setPosition(cc.p(this._middleBorder.getPosition().x, this._middleBorder.getPosition().y - 12));\n\t\tthis._middleBorder.setContentSize(width - 15, 41);\n\t\tif(width !== this._selectLayout.width || height !== this._selectLayout.height)\n\t\t{\n\t\t\tthis._selectLayout.setContentSize(width, height);\n\t\t\tthis._recalculateSizes();\n\t\t}\n\t},\n\n\t_formatButs: function (tag)\n\t{\n\t\tvar oldHeight = this._selectLayout.height;\n\t\tthis._fillButtonsGroup(tag);\n\t\tFunctionButton.deselect();\n\t\tvar height = this._butCont ? Math.max(this._butCont.height, this._buttonGroup.height) : this._buttonGroup.height;\n\n\t\tthis._selectLayout.setContentSize(this._selectLayout.width, height);\n\t\tif(this._butCont)\n\t\t{\n\t\t\tthis._butCont.setContentSize(this._butCont.width, height);\n\t\t\tthis._butCont.forceDoLayout();\n\t\t}\n\t\tthis._middleBorder.setPosition(cc.p(15, this._workLayout.height - this._selectLayout.height - 20));\n\t\tif(this._colorBorder)\n\t\t\tthis._colorBorder.setPosition(cc.p(this._middleBorder.getPosition().x, this._middleBorder.getPosition().y - 12));\n\n\t\tthis._selectLayout.forceDoLayout();\n\n\t\tif (oldHeight !== this._selectLayout.height || oldHeight === 0)\n\t\t\tthis._recalculateSizes();\n\t},\n\n\t_drawTabButtons: function()\n\t{\n\t\tthis._butCont = new ccui.VBox();\n\t\tthis._butCont.setBackGroundImage(\"PiktomirK/grey-panel.png\");\n\t\tthis._butCont.setBackGroundImageScale9Enabled(true);\n\t\tthis._butCont.setCascadeOpacityEnabled(false);\n\t\tthis._butCont.setBackGroundImageCapInsets(cc.rect(10, 10, 20, 20));\n\t\tvar contAlign = new ccui.RelativeLayoutParameter();\n\t\tcontAlign.setRelativeName(\"sectionButtons\");\n\t\tcontAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tthis._butCont.setLayoutParameter(contAlign);\n\n\t\tvar func = new pmui.SelectionButton(pm.spriteUtils.getButtonGroupName(\"methods\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getButtonGroupName(\"methods\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getButtonGroupName(\"methods\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tvar tabButtonAlign = new ccui.LinearLayoutParameter();\n\t\ttabButtonAlign.setMargin(ProgramLayer.TAB_BUTTON_MARGIN, ProgramLayer.TAB_BUTTON_MARGIN, ProgramLayer.TAB_BUTTON_MARGIN, 0);\n\t\tfunc.setLayoutParameter(tabButtonAlign);\n\t\tfunc.addClickEventListener(this._formatButs.bind(this, ProgramLayer.FUNCTIONS_BUTTON_TAG));\n\n\t\tthis._butCont.addChild(func, 0, ProgramLayer.FUNCTIONS_BUTTON_TAG);\n\n\t\tif (this._programData.conds.length + this._programData.logicOperatorsEquals.length + this._programData.logicOperatorsLessGreater.length !== 0)\n\t\t{\n\t\t\tvar cond = new pmui.SelectionButton(pm.spriteUtils.getButtonGroupName(\"conds\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"conds\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"conds\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tthis._butCont.addChild(cond, 0, ProgramLayer.CONDITIONS_BUTTON_TAG);\n\t\t\tcond.setLayoutParameter(tabButtonAlign.clone());\n\t\t\tcond.addClickEventListener(this._formatButs.bind(this, ProgramLayer.CONDITIONS_BUTTON_TAG));\n\t\t}\n\t\tif (this._programData.loops.length + this._programData.ifConstructions.length !== 0)\n\t\t{\n\t\t\tvar rep = new pmui.SelectionButton(pm.spriteUtils.getButtonGroupName(\"constr\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"constr\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"constr\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tthis._butCont.addChild(rep, 0, ProgramLayer.CONSTRUCTIONS_BUTTON_TAG);\n\t\t\trep.setLayoutParameter(tabButtonAlign.clone());\n\t\t\trep.addClickEventListener(this._formatButs.bind(this, ProgramLayer.CONSTRUCTIONS_BUTTON_TAG));\n\t\t}\n\t\tif (this._programData.alloc.length +\n\t\t\tpmui.StatementNode.vals.size() +\n\t\t\tthis._programData.expressions.length !== 0\n\t\t\t|| pm.settings.isEditorMode)\n\t\t{\n\t\t\tvar optional = new pmui.SelectionButton(pm.spriteUtils.getButtonGroupName(\"optional\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"optional\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getButtonGroupName(\"optional\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\tthis._butCont.addChild(optional, 0, ProgramLayer.OPTIONAL_BUTTON_TAG);\n\t\t\toptional.setLayoutParameter(tabButtonAlign.clone());\n\t\t\toptional.addClickEventListener(this._formatButs.bind(this, ProgramLayer.OPTIONAL_BUTTON_TAG));\n\t\t}\n\n\t\tthis._butCont.setContentSize(this._butCont.getChildrenCount() ? ProgramLayer.BUTTON_WIDTH + ProgramLayer.TAB_BUTTON_MARGIN * 2 : 0,\n\t\t\tProgramLayer.BUTTON_HEIGHT * this._butCont.getChildrenCount() + ProgramLayer.TAB_BUTTON_MARGIN * (this._butCont.getChildrenCount() + 1));\n\t\tthis._selectLayout.addChild(this._butCont);\n\t},\n\n\t_createSelectButtonsBar: function (type, values, isVarFunctionButton)\n\t{\n\t\tif (isVarFunctionButton === undefined)\n\t\t\tisVarFunctionButton = false;\n\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tfor (var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar button = isVarFunctionButton ? new VarFunctionButton(type, values[i]) :pm.appUtils.generateFunctionButton(type, values[i]);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif (i !== 0)\n\t\t\t{\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\t\t\t\twidth += ProgramLayer.MENU_SEPARATOR;\n\t\t\t}\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\t\t\twidth += button.width;\n\t\t\theight = Math.max(button.height, height);\n\t\t}\n\t\tlayout.setContentSize(width, height);\n\t\treturn layout;\n\t},\n\n\t_drawRobotMethods: function ()\n\t{\n\t\tvar layout = new ccui.VBox();\n\t\tvar separator = new ccui.Layout();\n\t\tseparator.setContentSize(ProgramLayer.MENU_SEPARATOR, ProgramLayer.MENU_SEPARATOR);\n\n\t\tvar exportedFunctions = cc.clone(this._robot.nativeFunctions);\n\n\t\tpm.moduleUtils.addExtraMethods(this._robot.parentLevel.getType(), this._robot, exportedFunctions);\n\t\tif (this._robot.parentLevel.robotsCanBeIndicated)\n\t\t\texportedFunctions.push(pm.CMD_INDICATE);\n\n\t\tfor (var i = 0; i < exportedFunctions.length; i++)\n\t\t{\n\t\t\tif (this._robot.nativeFunctionMap[exportedFunctions[i]].returnArgs())\n\t\t\t{\n\t\t\t\texportedFunctions.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\n\t\tvar methods = this._createSelectButtonsBar(FunctionButton.Type.Method, exportedFunctions.slice(0, Math.min(6, exportedFunctions.length)));\n\t\tmethods.forceDoLayout();\n\t\tlayout.addChild(methods);\n\t\tlayout.addChild(separator.clone());\n\n\t\tif (exportedFunctions.length > 6)\n\t\t{\n\t\t\tvar methods2 = this._createSelectButtonsBar(FunctionButton.Type.Method, exportedFunctions.slice(Math.min(6, exportedFunctions.length), exportedFunctions.length));\n\t\t\tmethods2.forceDoLayout();\n\t\t\tlayout.addChild(methods2);\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\n\t\tif (this._programData.intMethods.length !== 0)\n\t\t{\n\t\t\tvar intMethodsLayer = this._createSelectButtonsBar(FunctionButton.Type.IntMethod, this._robot.getProgramData().intMethods);\n\t\t\tintMethodsLayer.forceDoLayout();\n\t\t\tlayout.addChild(intMethodsLayer);\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\n\t\tif (this._robot.getProgramData().funcs.length !== 0)\n\t\t{\n\t\t\tthis._robot.getProgramData().funcs.sort();\n\t\t\tlayout.addChild(this._createSelectButtonsBar(FunctionButton.Type.Function, this._robot.getProgramData().funcs, true));\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\t\tif(this._programData.useCustomFuncs)\n\t\t{\n\t\t\tvar addButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\taddButton.addClickEventListener(this._addCustomFunc.bind(this));\n\t\t\tlayout.addChild(addButton);\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\t\tif(pmui.FunctionNode.vals.size())\n\t\t{\n\t\t\tlayout.addChild(this._createSelectButtonsBar(FunctionButton.Type.Method, pmui.FunctionNode.vals.values(), true));\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\n\t\tif (this._programData.constants.length !== 0)\n\t\t{\n\t\t\tlayout.addChild(this._createSelectButtonsBar(FunctionButton.Type.Constant, this._programData.constants));\n\t\t\tlayout.addChild(separator.clone());\n\t\t}\n\n\t\tlayout.addChild(separator.clone());\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tfor (var i = 0; i < layout.getChildrenCount(); i++)\n\t\t{\n\t\t\twidth = Math.max(layout.getChildren()[i].width, width);\n\t\t\theight += layout.getChildren()[i].height;\n\t\t}\n\t\tlayout.setContentSize(width, height);\n\t\treturn layout;\n\t},\n\n\t_addCustomFunc: function()\n\t{\n\t\tif(this._controlledMode)\n\t\t\treturn;\n\t\tvar addCustomFuncLayer = new pmui.TextInputDialog(LocalizedString(\"AlgorythmName\"), \"\", LocalizedString(\"NewName\"));\n\t\taddCustomFuncLayer.setCallback(this, function (name) {\n\t\t\tif(name.trim() === \"\")\n\t\t\t\treturn;\n\t\t\tthis._programData.funcs.push(name);\n\t\t\tthis._drawSelectLayout();\n\t\t}, function ()\n\t\t{\n\t\t});\n\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\taddCustomFuncLayer.setLayoutParameter(align);\n\n\t\tthis.addChild(addCustomFuncLayer, 100, ProgramLayerK.POPUP_LAYER_TAG);\n\t},\n\n\t_drawCommonRepeaters: function ()\n\t{\n\t\tvar cont = new ccui.VBox();\n\n\t\tvar separator = new ccui.Layout();\n\t\tseparator.setContentSize(ProgramLayer.MENU_SEPARATOR, ProgramLayer.MENU_SEPARATOR);\n\n\t\tif (this._programData.loops.length)\n\t\t{\n\t\t\tcont.addChild(this._createSelectButtonsBar(FunctionButton.Type.Repeater, this._programData.loops));\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\n\t\tif(this._programData.ifConstructions.length !== 0)\n\t\t{\n\t\t\tvar elseBlocksContainer = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\t\t\tvar i = 0;\n\t\t\tvar width = 0;\n\t\t\tvar height = 0;\n\t\t\tif(this._programData.ifConstructions.indexOf(pm.IfVals.IF_ST) !== -1)\n\t\t\t{\n\t\t\t\tvar button = pm.appUtils.generateFunctionButton(FunctionButton.Type.IfStatement, pm.IfVals.IF_ST);\n\t\t\t\telseBlocksContainer.addChild(button);\n\t\t\t\twidth += button.width;\n\t\t\t\theight = button.height;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif(this._programData.ifConstructions.indexOf(pm.IfVals.IF_ELSE) !== -1)\n\t\t\t{\n\t\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\t\t\tvar button = pm.appUtils.generateFunctionButton(FunctionButton.Type.ElseBlock, pm.IfVals.IF_ELSE);\n\t\t\t\telseBlocksContainer.addChild(button);\n\t\t\t\tif (i !== 0)\n\t\t\t\t{\n\t\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\t\t\t\t\twidth += ProgramLayer.MENU_SEPARATOR;\n\t\t\t\t}\n\t\t\t\twidth += button.width;\n\t\t\t\theight = Math.max(button.height, height);\n\t\t\t\tbutton.setLayoutParameter(buttonMargin);\n\t\t\t}\n\t\t\telseBlocksContainer.setContentSize(width, height);\n\t\t\tcont.addChild(elseBlocksContainer);\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tfor (var i = 0; i < cont.getChildrenCount(); i++)\n\t\t{\n\t\t\twidth = Math.max(cont.getChildren()[i].width, width);\n\t\t\theight += cont.getChildren()[i].height;\n\t\t}\n\t\tcont.setContentSize(width, height);\n\t\treturn cont;\n\t},\n\n\t_drawRobotConditions: function ()\n\t{\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tvar separator = new ccui.Layout();\n\t\tseparator.setContentSize(5, 5);\n\n\t\tthis._robot.updateConditions();\n\n\t\tvar compare = pm.moduleUtils.compareConditions(this._robot.parentLevel.getType());\n\t\tthis._robot.conditions.sort(compare.bind(this));\n\n\t\tvar firstRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, this._robot.getProgramData().conds);\n\n\t\tvar optCondsValues = [];\n\t\tif(this._robot.getProgramData().logicOperatorsLessGreater.length)\n\t\t{\n\t\t\toptCondsValues.push(this._robot.getProgramData().logicOperatorsLessGreater[0]);\n\t\t}\n\t\tif(this._robot.getProgramData().logicOperatorsEquals.length)\n\t\t{\n\t\t\toptCondsValues.push(this._robot.getProgramData().logicOperatorsEquals[0]);\n\t\t}\n\t\tvar optCond = this._createSelectButtonsBar(FunctionButton.Type.LogicExpression, optCondsValues);\n\n\t\tvar layout = new ccui.Layout();\n\t\tlayout.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\t\tif (this._programData.condsOpp && this._programData.condsOpp.length > 0)\n\t\t{\n\t\t\tthis._programData.condsOpp.sort(compare.bind(this));\n\n\t\t\tvar secondRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, this._programData.condsOpp);\n\n\t\t\tvar rowAlign = new ccui.LinearLayoutParameter();\n\t\t\trowAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\trowAlign.setMargin(ProgramContainerLayer.BUTTON_SIZE / 2 + ProgramLayer.MENU_SEPARATOR / 2, -ProgramContainerLayer.BUTTON_SIZE / 2 + ProgramLayer.SECOND_ROW_MARGIN + ProgramLayer.MENU_SEPARATOR, 0, 0);\n\n\t\t\tsecondRow.setLayoutParameter(rowAlign);\n\n\t\t\tlayout.addChild(firstRow);\n\t\t\tlayout.addChild(secondRow);\n\t\t\tlayout.addChild(separator);\n\t\t\tlayout.addChild(optCond);\n\n\t\t\tfor (var i = 0; i < layout.getChildrenCount(); i++)\n\t\t\t{\n\t\t\t\twidth = Math.max(layout.getChildren()[i].width, width);\n\t\t\t\theight += layout.getChildren()[i].height;\n\t\t\t}\n\t\t\tlayout.setContentSize(width, height);\n\t\t\treturn layout;\n\t\t}\n\t\tlayout.addChild(firstRow);\n\t\tlayout.addChild(optCond);\n\n\t\tfor (var i = 0; i < layout.getChildrenCount(); i++)\n\t\t{\n\t\t\twidth = Math.max(layout.getChildren()[i].width, width);\n\t\t\theight += layout.getChildren()[i].height;\n\t\t}\n\t\tlayout.setContentSize(width, height);\n\n\t\treturn layout;\n\t},\n\n\t_drawOptionalButtons: function ()\n\t{\n\t\tvar cont = new ccui.VBox();\n\n\t\tvar separator = new ccui.Layout();\n\t\tseparator.setContentSize(5, 5);\n\n\t\tif (this._robot.getProgramData().alloc.length)\n\t\t{\n\t\t\tcont.addChild(this._createSelectButtonsBar(FunctionButton.Type.Alloc, this._robot.getProgramData().alloc, true));\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\t\tif(pmui.StatementNode.vals.size())\n\t\t{\n\t\t\tcont.addChild(this._createSelectButtonsBar(FunctionButton.Type.Statement, Array.from(pmui.StatementNode.vals.keys()), true));\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\t\tif (this._robot.getProgramData().expressions.length)\n\t\t{\n\t\t\tcont.addChild(this._createSelectButtonsBar(FunctionButton.Type.Expression, [this._robot.getProgramData().expressions[0]]));\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\t\tif (pm.settings.isEditorMode)\n\t\t{\n\t\t\tcont.addChild(this._createSelectButtonsBar(FunctionButton.Type.Empty, [\"\"]));\n\t\t\tcont.addChild(separator.clone());\n\t\t}\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\t\tfor (var i = 0; i < cont.getChildrenCount(); i++)\n\t\t{\n\t\t\twidth = Math.max(cont.getChildren()[i].width, width);\n\t\t\theight += cont.getChildren()[i].height;\n\t\t}\n\t\tcont.setContentSize(width, height);\n\t\treturn cont;\n\t},\n\n\t/**\n\t * Updates interface.\n\t * @param {?Number} offset Offset fo correct scroll position after changes\n\t */\n\tupdateView: function (height, posY)\n\t{\n\t\tvar oldY = this._oldScrollPos + (ProgramLayer.BORDER_Y < posY - height\n\t\t\t? -this._programContainer.shift\n\t\t\t: 0);\n\t\tvar curY = this._functionScroll.getInnerContainer().y;\n\n\t\tif(curY === oldY && curY === 0)\n\t\t\treturn;\n\t\tthis._functionScroll.jumpToPercentVertical(\n\t\t\t100 - Math.min(\n\t\t\t\t\tMath.max((oldY)/ (curY) * 100, 0),\n\t\t\t\t\t100)\n\t\t);\n\t},\n\n\t_recalculateSizes: function ()\n\t{\n\t\tthis._oldScrollPos = this._functionScroll.getInnerContainer().y;\n\n\t\tvar functionScrollHeight = this._workLayout.height;\n\t\tfunctionScrollHeight -= this._middleBorder.height;\n\t\tfunctionScrollHeight -= this._selectLayout.height;\n\t\tfunctionScrollHeight += 5;\n\t\tvar funcScrollWidth = this.getContentSize().width - ProgramLayer.METHOD_STACK_WIDTH - ProgramLayer.BORDER_X * 2;\n\n\t\tthis._functionScroll.setContentSize(funcScrollWidth, functionScrollHeight);\n\t\tthis._functionScroll.forceDoLayout();\n\t\tthis._workLayout.forceDoLayout();\n\t\tthis._selectLayout.forceDoLayout();\n\t},\n\n\t_dragCallback: function (element, eventType, touch)\n\t{\n\t\tif (eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t{\n\t\t\tif (this._controlledMode)\n\t\t\t{\n\t\t\t\tif (this._robot.isPlayingAnimation())\n\t\t\t\t\treturn;\n\n\t\t\t\tif(element.isMethod())\n\t\t\t\t{\n\t\t\t\t\tif(this._robot.getProgramData().funcsMap && this._robot.getProgramData().funcsMap[element.value] && this._robot.getProgramData().funcsMap[element.value] !== 0)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._buttonClickCallback)\n\t\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, element);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telement.select();\n\t\t}\n\t\telse if (eventType === pmui.DragAndDropLayout.Event.DRAG_START && !this.getRobot().parentLevel.isTutorial)\n\t\t{\n\t\t\tthis.onDragStart(element, touch);\n\t\t}\n\t\telse if (eventType === pmui.DragAndDropLayout.Event.DRAG_CANCELLED)\n\t\t{\n\t\t\tProgramContainerLayer.deselect();\n\t\t}\n\t},\n\n\tonDragStart: function(element, touch)\n\t{\n\t\tif(pmui.NodeLayer.KUMIR_MODE)\n\t\t\treturn;\n\n\t\tProgramContainerLayer.deselect();\n\t\tif (element.type === FunctionButton.Type.Function)\n\t\t{\n\t\t\tvar elem = this._findFuncPlace(touch);\n\t\t\tif (elem && elem instanceof pmui.FunctionNode)\n\t\t\t\tProgramContainerLayer.select(elem);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar elem = this._findDropBody(touch, element);\n\t\t\tif (!elem || !(elem instanceof pmui.NodeLayer))\n\t\t\t\treturn;\n\n\t\t\twhile(!elem.isProgram())\n\t\t\t{\n\t\t\t\tif (elem._parentNode.canAdd(element.type))\n\t\t\t\t{\n\t\t\t\t\tProgramContainerLayer.select(elem);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (elem.canReplace(element.type))\n\t\t\t\t{\n\t\t\t\t\tif(elem.isEditable())\n\t\t\t\t\t\tProgramContainerLayer.select(elem);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telem = elem._parentNode;\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Enables Controlled mode of program layer.
\n\t * In this mode buttons animates once and called click callback passed to function.\n\t * @param {pm.ControlledModeData} controlledModeData\n\t * @private\n\t */\n\t_enableControlledMode: function(controlledModeData)\n\t{\n\t\tthis._controlledMode = true;\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\n\t\tthis._programControlLayer.setButtonsEnabled(false);\n\t},\n\n\t/**\n\t * Resets layer\n\t */\n\treset: function ()\n\t{\n\t\tthis._programContainer.reset();\n\t\tthis._programControlLayer.setButtonsEnabled(true);\n\t\tthis.setEnabled(true);\n\t\tthis._formatButs(ProgramLayer.FUNCTIONS_BUTTON_TAG);\n\t\tpmui.StatementNode.vals.keys().forEach(function (variable){\n\t\t\tpm.sendCustomEvent(pm.VARIABLE_VALUE_CHANGED, {\n\t\t\t\tname: variable,\n\t\t\t\tval: 0\n\t\t\t});\n\t\t});\n\t},\n\n\tsetEnabled: function (flag, steppedWorking)\n\t{\n\t\tthis._programContainer.enabled = flag;\n\n\t\tif(this._programData.useGroupButtons)\n\t\t\tthis.setEnabledKids(this._butCont, flag);\n\n\t\tthis.setEnabledKids(this._buttonGroup, this._programData.programTree.getUsedMethodsCount() < this._programData.maxMethodCount);\n\n\t\tif(this._methodStackLayer)\n\t\t{\n\t\t\tif (steppedWorking)\n\t\t\t\tthis._methodStackLayer.setEnabled(true);\n\t\t\telse\n\t\t\t\tthis._methodStackLayer.setEnabled(flag);\n\n\t\t}\n\t},\n\n\tsetEnabledKids: function (parent, flag)\n\t{\n\t\tfor (var i = 0; i < parent.getChildrenCount(); i++)\n\t\t{\n\t\t\tparent.getChildren()[i].setEnabled(flag);\n\t\t\tif (!(parent.getChildren()[i] instanceof FunctionButtonBar))\n\t\t\t{\n\t\t\t\tthis.setEnabledKids(parent.getChildren()[i], flag);\n\t\t\t}\n\t\t}\n\t},\n\n\t_findDropBody: function (touch, button)\n\t{\n\t\treturn this._findNode(\n\t\t\t\ttouch,\n\t\t\t\tthis._programContainer.getChildByTag(ProgramContainerLayer.TREE_TAG),\n\t\t\t\tbutton);\n\t},\n\n\t_findNode: function (touch, node, button)\n\t{\n\t\tif (!node instanceof pmui.NodeLayer)\n\t\t\treturn null;\n\t\tvar childNodes = node.getChildrenNodes();\n\t\tvar found = 0;\n\t\tvar child = null;\n\t\tvar intersec = null;\n\t\tvar butWidth = button ? button.width : 5;\n\t\tvar butHeight = button ? button.height : 5;\n\t\tvar touchCoords = null;\n\t\tchildNodes.filter(function (elem){\n\t\t\treturn elem;\n\t\t}).forEach(function (childNode){\n\t\t\ttouchCoords = childNode.getParent().convertTouchToNodeSpace(touch);\n\t\t\tintersec = cc.rectIntersection(childNode.getBoundingBox(),\n\t\t\t\tnew cc.rect(\n\t\t\t\t\ttouchCoords.x - 0.5 * butWidth ,\n\t\t\t\t\ttouchCoords.y - 0.5 * butHeight,\n\t\t\t\t\tbutWidth,\n\t\t\t\t\tbutHeight));\n\n\t\t\tif (intersec.width > 0 &&\n\t\t\t\tintersec.width * intersec.height > found)\n\t\t\t{\n\t\t\t\tfound = intersec.width * intersec.height;\n\t\t\t\tchild = childNode;\n\t\t\t}\n\t\t});\n\t\treturn child ? this._findNode(touch, child, button) : node;\n\t},\n\n\t_findFuncPlace: function (touch)\n\t{\n\t\tvar node = this._programContainer.getChildByTag(ProgramContainerLayer.TREE_TAG);\n\t\tvar childNodes = node.getFuncs();\n\t\tfor (var i = 0; i < childNodes.length; i++)\n\t\t{\n\t\t\tvar butWidth = ProgramLayer.BUTTON_WIDTH;\n\t\t\tvar butHeight = ProgramLayer.BUTTON_HEIGHT;\n\t\t\tvar touchCoords = childNodes[i].getParent().convertTouchToNodeSpace(touch);\n\t\t\tif (cc.rectIntersectsRect(childNodes[i].getBoundingBox(), new cc.rect(touchCoords.x - 0.65 * butWidth , touchCoords.y - 0.65 * butHeight, butWidth * 1.3, butHeight * 1.3)))\n\t\t\t{\n\t\t\t\treturn childNodes[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\t_updateSelectPatternMenu: function ()\n\t{\n\t\tif (this._patternContainer)\n\t\t{\n\t\t\tthis._workLayout.setContentSize(this._workLayout.width, this._workLayout.height + this._patternContainer.height);\n\n\t\t\tthis._patternContainer.removeFromParent();\n\t\t\tthis._patternContainer = null;\n\t\t}\n\t\tif (this._getRobotPatternCount(this._robot) > 1)\n\t\t{\n\t\t\tthis._patternContainer = new cc.LayerColor(ProgramLayer.PATTERN_COLOR, this._workLayout.width, ProgramLayer.PATTERN_HEIGHT);\n\t\t\tthis._patternContainer.setPosition(this.width - this._patternContainer.width, 0);\n\n\t\t\tthis._selectPatternMenu = new SelectPatternMenu(this._robot.parentLevel, this._robot, this, this.updateProgramContainer);\n\t\t\tthis._selectPatternMenu.updateCircles();\n\n\t\t\tthis._patternContainer.addChild(this._selectPatternMenu, 1);\n\t\t\tthis.addChild(this._patternContainer);\n\t\t\tthis._workLayout.setContentSize(this._workLayout.width, this._workLayout.height - this._patternContainer.height);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.updateProgramContainer();\n\t\t}\n\t\tthis._drawSelectLayout();\n\t},\n\n\tupdateProgramContainer: function ()\n\t{\n\t\tif (this._programContainer)\n\t\t{\n\t\t\tthis._programContainer.updateProgram(this._robot.getProgramData(), this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._functionScroll.removeAllChildren();\n\t\t\tthis._programContainer = new ProgramContainerLayerK(this, this._robot.getProgramData());\n\t\t\tthis._functionScroll.pushBackCustomItem(this._programContainer);\n\t\t}\n\n\t\tif (this._colorBorder)\n\t\t{\n\t\t\tvar width = this._colorBorder.getContentSize().width;\n\t\t\tvar height = this._colorBorder.getContentSize().height;\n\n\t\t\tthis._colorBorder.removeFromParent();\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(this._robot.id), width, height);\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\t},\n\n\tgetOutputRobot: function ()\n\t{\n\t\treturn this._robot.parentLevel.globalRobots.find(function (elem){\n\t\t\treturn elem.getType() === pm.GlobalRobotType.Output;\n\t\t});\n\t}\n});\nvar _p = ProgramLayerK.prototype;\n\n/** @expose */\n_p.robot;\ncc.defineGetterSetter(_p, \"robot\", _p.getRobot, _p.setRobot);\nProgramLayer.FUNCTIONS_BUTTON_TAG = 1;\nProgramLayer.CONDITIONS_BUTTON_TAG = 2;\nProgramLayer.OPTIONAL_BUTTON_TAG = 3;\nProgramLayer.CONSTRUCTIONS_BUTTON_TAG = 4;\nProgramLayer.BUTTON_HEIGHT = 40;\nProgramLayer.BUTTON_WIDTH = 40;\nProgramLayer.TAB_BUTTON_MARGIN = 5;\n","/**\n * Created by Nikita Besshaposhnikov on 13.11.14.\n */\n\n/**\n * @class Layer for displaying program of robot.\n * @extends ccui.VBox\n * @property {pm.AbstractRobot} robot\n * @property {Number} curMethodCount\n * @constructor\n * @param {GameType} gameType\n * @param {Boolean} useMethodStack Use method stack or not.\n * @param {pm.AbstractRobot} [robot] For which robot construct layer.\n */\nvar ProgramLayerP = ProgramLayer.extend(/** @lends ProgramLayer# */{\n\n\tctor: function(gameType, useMethodStack, robot, level)\n\t{\n\t\tthis._super(gameType, robot);\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar width = pm.appUtils.getProgramLayerWidth();\n\n\t\tif(screenBounds.safeAreas.right)\n\t\t\twidth += screenBounds.right / 2;\n\n\t\tthis._middleBorder = new cc.Scale9Sprite(\"System/PL_Middle.png\");\n\t\tthis._middleBorder.setCapInsets(cc.rect(28, 18, 7, 4));\n\t\tthis._middleBorder.setContentSize(width - ProgramLayer.METHOD_STACK_WIDTH - 30, 41);\n\t\tthis._middleBorder.setAnchorPoint(0, 0.5);\n\n\t\tthis._workLayout.addChild(this._middleBorder, -1);\n\n\t\tif (level.getRobotCount() >= 2)\n\t\t{\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(robot.groupID), width - ProgramLayer.METHOD_STACK_WIDTH - 30, 15);\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\n\t\tthis._selectLayout = new ccui.VBox();\n\n\t\tvar selectLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tselectLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tselectLayoutAlign.setRelativeName(\"selectLayout\");\n\t\tselectLayoutAlign.setMargin(1.5*ProgramLayer.BORDER_X, 3*ProgramLayer.BORDER_Y, 0, 0);\n\n\t\tthis._selectLayout.setLayoutParameter(selectLayoutAlign);\n\n\t\tthis._functionScroll = new ccui.ListView();\n\n\t\tvar functionsAlign = new ccui.RelativeLayoutParameter();\n\t\tfunctionsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tfunctionsAlign.setMargin(-3, ProgramLayer.PROGRAM_SEPARATOR + ProgramLayer.COMPONENT_SEPARATOR + 14, 0, 0);\n\t\tfunctionsAlign.setRelativeToWidgetName(\"selectLayout\");\n\n\t\tthis._functionScroll.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._functionScroll.setLayoutParameter(functionsAlign);\n\t\tthis._functionScroll.setItemsMargin(ProgramLayer.PROGRAM_SEPARATOR);\n\t\tthis._functionScroll.setScrollBarEnabled(false);\n\n\t\tthis._workLayout.addChild(this._selectLayout, 3);\n\t\tthis._workLayout.addChild(this._functionScroll, 0);\n\n\t\tif(robot)\n\t\t\tthis.robot = robot;\n\n\t\tthis._updateSelectPatternMenu();\n\n\t\tif(useMethodStack)\n\t\t{\n\t\t\tthis._methodStackLayer = new MethodStackLayer(this.getContentSize().height - 350, this.robot.parentLevel);\n\n\t\t\tvar msShift = ProgramLayer.METHOD_STACK_WIDTH - this._methodStackLayer.width;\n\t\t\tmsShift += MethodStackLayer.INNER_WIDTH;\n\t\t\tmsShift -= MethodStackLayer.OUTER_RIGHT_MARGIN;\n\n\t\t\tvar methodStackLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tmethodStackLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\t\tmethodStackLayerAlign.setMargin(msShift + 5, ProgramLayer.COMPONENT_SEPARATOR, 0, 0);\n\t\t\tthis._methodStackLayer.setLayoutParameter(methodStackLayerAlign);\n\n\t\t\tthis.addChild(this._methodStackLayer, -100);\n\t\t}\n\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_METHOD_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data && this._robot.id === data.robotIndex)\n\t\t\t\tthis._programContainer.highlightMethod(data.methodPlace);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_POINT_IN_REP_EVENT, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data && this._robot.id === data.robotIndex)\n\t\t\t\tthis._programContainer.switchPointsInRepeater(data.repPlace, data.iterNum, data.rep);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.REM_LAST_HIGHLIGHT_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data !== undefined && this._robot.id === data.robotIndex)\n\t\t\t\tthis._programContainer.clearLastHighlight();\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.RELOAD_REPEATERS_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data !== undefined && this._robot.id === data.robotIndex)\n\t\t\t\tthis._programContainer.reloadRepeaters();\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.HIGHLIGHT_BROKEN_METHOD_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar data = event.getUserData();\n\n\t\t\tif(data !== undefined && this._robot.id === data.robotIndex)\n\t\t\t\tthis._programContainer.highlightMethodBroken(data.methodPlace);\n\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_INNER_PROGRAM_LAYER_CONTAINER, function(event)\n\t\t{\n\t\t\tthis.updateView(event.getUserData());\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.RECOGNIZE_PROGRAM, this._recognizeProgram.bind(this), this);\n\n\t},\n\n\t_updateSelectPatternMenu: function()\n\t{\n\t\tif (this._patternContainer)\n\t\t{\n\t\t\tthis._workLayout.setContentSize(this._workLayout.width, this._workLayout.height + this._patternContainer.height);\n\n\t\t\tthis._patternContainer.removeFromParent();\n\t\t\tthis._patternContainer = null;\n\t\t}\n\n\t\tif (this._getRobotPatternCount(this._robot) > 1)\n\t\t{\n\t\t\tthis._patternContainer = new cc.LayerColor(ProgramLayer.PATTERN_COLOR, this._workLayout.width, ProgramLayer.PATTERN_HEIGHT);\n\n\t\t\tthis._patternContainer.setPosition(this.width - this._patternContainer.width, 0);\n\n\t\t\tthis.addChild(this._patternContainer);\n\n\t\t\tthis._workLayout.setContentSize(this._workLayout.width, this._workLayout.height - this._patternContainer.height);\n\n\t\t\tthis._selectPatternMenu = new SelectPatternMenu(this._robot.parentLevel, this._robot, this, this.updateProgramContainer);\n\t\t\tthis._patternContainer.addChild(this._selectPatternMenu, 1);\n\n\t\t\tthis._selectPatternMenu.updateCircles();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.updateProgramContainer();\n\t\t}\n\t},\n\n\t/**\n * Sets robot and redraws interface.\n * @param {pm.AbstractRobot} robot\n */\n\tsetRobot: function(robot)\n\t{\n\t\tvar isControlled = this._methodStackLayer && !this._methodStackLayer.hidden;\n\n\t\tif (isControlled)\n\t\t\tthis._methodStackLayer.drawRobotMethodList(robot.groupID);\n\n\t\tthis._robot = robot;\n\n\t\tthis._robot.parentLevel.setCurrentRobot(this._robot);\n\n\t\tif (this._programContainer)\n\t\t{\n\t\t\tthis._programContainer.updateProgram(this._robot.getProgramData());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._functionScroll.removeAllChildren();\n\t\t\tthis._programContainer = new ProgramContainerLayerP(this, false, this._robot.getProgramData());\n\t\t\tthis._functionScroll.pushBackCustomItem(this._programContainer);\n\t\t}\n\n\t\tif (isControlled)\n\t\t\tpm.robotManager.setControlledMode(true);\n\n\t\tif (this._colorBorder)\n\t\t{\n\t\t\tvar width = this._colorBorder.getContentSize().width;\n\t\t\tvar height = this._colorBorder.getContentSize().height;\n\n\t\t\tthis._colorBorder.removeFromParent();\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(this._robot.groupID), width, height);\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\n\t\tthis._updateSelectPatternMenu();\n\n\t\tthis._drawSelectLayout();\n\t\tthis._recalculateSizes();\n\t},\n\n\t/**\n\t * Updates program container and interface.\n\t */\n\tupdateProgramContainer: function()\n\t{\n\t\tif (this._programContainer)\n\t\t{\n\t\t\tthis._programContainer.updateProgram(this._robot.getProgramData());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._functionScroll.removeAllChildren();\n\t\t\tthis._programContainer = new ProgramContainerLayerP(this, false, this._robot.getProgramData());\n\t\t\tthis._functionScroll.pushBackCustomItem(this._programContainer);\n\t\t}\n\n\t\tif (this._colorBorder)\n\t\t{\n\t\t\tvar width = this._colorBorder.getContentSize().width;\n\t\t\tvar height = this._colorBorder.getContentSize().height;\n\n\t\t\tthis._colorBorder.removeFromParent();\n\t\t\tthis._colorBorder = new cc.LayerColor(pm.RobotSprite2D.getRobotColor(this._robot.groupID), width, height);\n\t\t\tthis._workLayout.addChild(this._colorBorder, -2);\n\t\t}\n\n\t\tthis._drawSelectLayout();\n\t\tthis._recalculateSizes();\n\t},\n\n\t/**\n * Returns robot of layer.\n * @returns {pm.AbstractRobot}\n */\n\tgetRobot: function() { return this._robot; },\n\n\t/**\n * Returns if program pattern is editable.\n * @returns {Boolean}\n */\n\tisProgramPatternEditable: function()\n\t{\n\t\treturn this._robot.getProgramData().canEditProgramPattern;\n\t},\n\n\t_drawSelectLayout: function()\n\t{\n\t\tthis._selectLayout.removeAllChildren();\n\n\t\tvar useRepeaters = false;\n\t\tvar useConditions = false;\n\t\tvar useCondRepeaters = false;\n\n\t\tvar program = this._robot.getProgramData();\n\n\t\tif(!this.isProgramPatternEditable())\n\t\t{\n\t\t\tfor (var i = 0; i < program.height; ++i)\n\t\t\t{\n\t\t\t\tfor (var j = 0; j < program.width; ++j)\n\t\t\t\t{\n\t\t\t\t\tif (program.symbols[i][j].type === pm.SymbolType.Repeater)\n\t\t\t\t\t\tuseRepeaters = true;\n\n\t\t\t\t\tif (program.symbols[i][j].type === pm.SymbolType.CondRepeater || program.symbols[i][j].type === pm.SymbolType.Condition)\n\t\t\t\t\t\tuseConditions = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tuseCondRepeaters = useConditions;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (pm.settings.isEditorMode)\n\t\t\t{\n\t\t\t\tuseRepeaters = useConditions = useCondRepeaters = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tuseRepeaters = this._robot.getProgramData().maxRepeaterCount !== -1;\n\t\t\t\tuseConditions = this._robot.getProgramData().maxConditionCount !== -1;\n\t\t\t\tuseCondRepeaters = useConditions && this._robot.getProgramData().maxCondRepeaterCount !== -1;\n\t\t\t}\n\t\t}\n\n\t\tvar layoutMargin = new ccui.LinearLayoutParameter();\n\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\n\t\tvar layout = null;\n\n\t\tif(useRepeaters)\n\t\t{\n\t\t\tlayout = this._drawCommonRepeaters();\n\t\t\tvar repeatersMargin = new ccui.LinearLayoutParameter();\n\t\t\trepeatersMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\n\t\t\tlayout.setLayoutParameter(repeatersMargin);\n\n\t\t\tthis._selectLayout.addChild(layout);\n\n\t\t\tlayout = this._drawRobotRepeaters();\n\n\t\t\tif(layout)\n\t\t\t{\n\t\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\t\tthis._selectLayout.addChild(layout);\n\t\t\t}\n\t\t}\n\n\t\tlayout = this._drawRobotMethods();\n\n\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\n\t\tthis._selectLayout.addChild(layout);\n\n\t\tvar isConditions = false;\n\n\t\tif(useConditions)\n\t\t{\n\t\t\tlayout = this._drawRobotConditions();\n\n\t\t\tif(layout)\n\t\t\t{\n\t\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\t\tthis._selectLayout.addChild(layout);\n\n\t\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR - ProgramLayer.SECOND_ROW_MARGIN, 0, 0);\n\n\t\t\t\tisConditions = true;\n\t\t\t}\n\t\t}\n\n\t\tif(useRepeaters)\n\t\t{\n\t\t\tlayout = this._drawChildRobotRepeaters();\n\t\t\tif(layout)\n\t\t\t{\n\t\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\t\tthis._selectLayout.addChild(layout);\n\t\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t\t}\n\t\t}\n\n\t\tlayout = this._drawRobotChildMethods();\n\n\t\tif(layout)\n\t\t{\n\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\tthis._selectLayout.addChild(layout);\n\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t}\n\n\t\tif(useConditions)\n\t\t{\n\t\t\tlayout = this._drawRobotChildConditions();\n\n\t\t\tif(layout)\n\t\t\t{\n\t\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\t\tthis._selectLayout.addChild(layout);\n\t\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t\t}\n\t\t}\n\n\t\tlayout = this._drawFunctionEditButtons();\n\n\t\tif(layout)\n\t\t{\n\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\tthis._selectLayout.addChild(layout);\n\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t}\n\n\t\tlayout = this._createEditButtonsBar(useRepeaters, useConditions, useCondRepeaters);\n\n\t\tif(layout)\n\t\t{\n\t\t\tlayout.setLayoutParameter(layoutMargin.clone());\n\t\t\tthis._selectLayout.addChild(layout);\n\t\t\tlayoutMargin.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t}\n\n\t\tvar width = 0;\n\t\tvar height = 0;\n\n\t\tvar children = this._selectLayout.getChildren();\n\n\t\tfor(var i = 0; i < this._selectLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\twidth = Math.max(width, children[i].getContentSize().width);\n\t\t\theight += children[i].getContentSize().height + ProgramLayer.MENU_SEPARATOR;\n\t\t}\n\n\t\tvar extraHeight = 0;\n\t\tvar lessHeight = 0;\n\n\t\tif (isConditions)\n\t\t{\n\t\t\theight -= ProgramLayer.SECOND_ROW_MARGIN;\n\t\t\textraHeight += ProgramLayer.CONDITIONS_MARGIN;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlessHeight -= ProgramLayer.CONDITIONS_MARGIN;\n\n\t\t\tif (pm.settings.isEditorMode)\n\t\t\t\textraHeight += ProgramLayer.CONDITIONS_MARGIN_EDITOR;\n\t\t}\n\n\t\tthis._selectLayout.setContentSize(this.getContentSize().width, height + lessHeight);\n\n\t\tvar functionsAlign = new ccui.RelativeLayoutParameter();\n\t\tfunctionsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tfunctionsAlign.setMargin(-3, ProgramLayer.PROGRAM_SEPARATOR + ProgramLayer.COMPONENT_SEPARATOR + 14, 0, 0);\n\t\tfunctionsAlign.setRelativeToWidgetName(\"selectLayout\");\n\t\tthis._functionScroll.setLayoutParameter(functionsAlign);\n\n\t\tif (this._getRobotPatternCount(this._robot) > 1)\n\t\t\tthis._selectPatternMenu.setPosition((this._patternContainer.width - this._selectPatternMenu.width) / 2,\n\t\t\t\t(this._patternContainer.height - this._selectPatternMenu.height) / 2 + 2);\n\n\t\tif (this._colorBarLayer)\n\t\t\tthis._colorBarLayer.removeFromParent();\n\n\t\tif (this._colorProgramLayer)\n\t\t\tthis._colorProgramLayer.removeFromParent();\n\n\t\tvar newHeight = height + extraHeight;\n\t\tvar newWidth = this._workLayout.width - ProgramLayer.WORK_LAYOUT_MARGIN;\n\n\t\tthis._colorBarLayer = new cc.LayerColor(ProgramLayer.BAR_COLOR, newWidth, newHeight + ProgramLayer.COLOR_BAR_MARGIN);\n\t\tthis._colorBarLayer.setPosition(cc.p(10, this._workLayout.height - this._colorBarLayer.height - 10));\n\t\tthis._workLayout.addChild(this._colorBarLayer, -3);\n\n\t\tthis._colorProgramLayer = new cc.LayerColor(ProgramLayer.PROGRAM_COLOR, newWidth,\n\t\t\tthis._workLayout.height - ProgramLayer.WORK_LAYOUT_MARGIN - height - ProgramLayer.COLOR_BAR_MARGIN);\n\t\tthis._colorProgramLayer.setPosition(cc.p(10, 10));\n\t\tthis._workLayout.addChild(this._colorProgramLayer, -3);\n\n\t\tthis._middleBorder.setContentSize(this._middleBorder.width, 41);\n\t\tthis._middleBorder.setPosition(cc.p(15, this._colorBarLayer.getPosition().y - 3));\n\n\t\tif (this._colorBorder)\n\t\t\tthis._colorBorder.setPosition(cc.p(this._middleBorder.getPosition().x, this._middleBorder.getPosition().y - 12));\n\n\t\tthis._workLayout.forceDoLayout();\n\t},\n\n\t_createSelectButtonsBar: function(type, values, registerTutorial)\n\t{\n\t\tif (registerTutorial === undefined)\n\t\t\tregisterTutorial = false;\n\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tlayout.setContentSize(Math.max(values.length, 6) * (ProgramContainerLayer.BUTTON_SIZE + ProgramLayer.MENU_SEPARATOR),\n\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\tfor(var i = 0; i < values.length; ++i)\n\t\t{\n\t\t\tvar button;\n\n\t\t\tif(type === FunctionButton.Type.Repeater)\n\t\t\t\tbutton = new RepeaterButton(type, values[i]);\n\t\t\telse\n\t\t\t\tbutton = pm.appUtils.generateFunctionButton(type, values[i]);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif (i !== 0)\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\n\t\t\tif (registerTutorial)\n\t\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAME_PATTERNS.SELECT.format(values[i]), button, true);\n\t\t}\n\n\t\treturn layout;\n\t},\n\n\t_createEditButtonsBar: function(useRepeaters, useConditions, useCondRepeaters)\n\t{\n\t\tif (this.isProgramPatternEditable())\n\t\t{\n\t\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\t\tvar button = new EmptyFunctionButton(FunctionButton.Type.Method);\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\n\t\t\tvar countButtons = 1;\n\n\t\t\tif (useRepeaters)\n\t\t\t{\n\t\t\t\tvar button = new EmptyFunctionButton(FunctionButton.Type.Repeater);\n\t\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\t\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\t\tlayout.addChild(button);\n\n\t\t\t\t++countButtons;\n\t\t\t}\n\n\t\t\tif (useConditions)\n\t\t\t{\n\t\t\t\tvar button = new EmptyFunctionButton(FunctionButton.Type.Condition);\n\t\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\t\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\t\tlayout.addChild(button);\n\n\t\t\t\t++countButtons;\n\t\t\t}\n\n\t\t\tif (useCondRepeaters)\n\t\t\t{\n\t\t\t\tvar button = new EmptyFunctionButton(FunctionButton.Type.CondRepeater);\n\t\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\t\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\t\tlayout.addChild(button);\n\n\t\t\t\t++countButtons;\n\t\t\t}\n\n\t\t\tlayout.setContentSize(countButtons * (ProgramContainerLayer.BUTTON_SIZE + ProgramLayer.MENU_SEPARATOR),\n\t\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\t\treturn layout;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_drawRobotMethods: function()\n\t{\n\t\tvar exportedFunctions = cc.clone(this._robot.nativeFunctions);\n\n\t\tpm.moduleUtils.addExtraMethods(this._robot.parentLevel.getType(), this._robot, exportedFunctions);\n\n\t\tif (this._robot.parentLevel.robotsCanBeIndicated)\n\t\t\texportedFunctions.push(pm.CMD_INDICATE);\n\n\t\tif (exportedFunctions.length > 6)\n\t\t{\n\t\t\tvar firstRowFunctions = exportedFunctions.slice(0, 6);\n\t\t\tvar secondRowFunctions = exportedFunctions.slice(6, exportedFunctions.length);\n\n\t\t\tvar firstRow = this._createSelectButtonsBar(FunctionButton.Type.Method, firstRowFunctions, true);\n\t\t\tvar secondRow = this._createSelectButtonsBar(FunctionButton.Type.Method, secondRowFunctions, true);\n\n\t\t\tvar layout = new ccui.Layout();\n\n\t\t\tlayout.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\t\t\tlayout.setContentSize(firstRow.width, firstRow.height + ProgramLayer.MENU_SEPARATOR + secondRow.height);\n\n\t\t\tvar rowAlign = new ccui.LinearLayoutParameter();\n\t\t\trowAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\trowAlign.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\t\t\tsecondRow.setLayoutParameter(rowAlign);\n\n\t\t\tlayout.addChild(firstRow);\n\t\t\tlayout.addChild(secondRow);\n\n\t\t\treturn layout;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this._createSelectButtonsBar(FunctionButton.Type.Method, exportedFunctions, true);\n\t\t}\n\t},\n\n\t_drawRobotChildMethods: function()\n\t{\n\t\tvar exportedFunctions = this._robot.getChildFunctions();\n\n\t\tif(exportedFunctions && exportedFunctions.length !== 0)\n\t\t\treturn this._createSelectButtonsBar(FunctionButton.Type.Method, exportedFunctions);\n\n\t\treturn null;\n\t},\n\n\t_drawCommonRepeaters: function()\n\t{\n\t\tvar layout = new FunctionButtonBar(ProgramContainerLayer.DNDNAME, this._dragCallback, this._canDragButtons, this);\n\n\t\tfor(var i = 1; i <= ProgramLayer.REPEATER_BUTTON_NUM; ++i)\n\t\t{\n\t\t\tvar button = new RepeaterButton(i);\n\n\t\t\tvar buttonMargin = new ccui.LinearLayoutParameter();\n\n\t\t\tif (i !== 1)\n\t\t\t\tbuttonMargin.setMargin(ProgramLayer.MENU_SEPARATOR, 0, 0, 0);\n\n\t\t\tbutton.setLayoutParameter(buttonMargin);\n\n\t\t\tlayout.addChild(button);\n\n\t\t\tpm.tutorialUtils.registerTutorialObject(pm.tutorialUtils.OBJECT_NAME_PATTERNS.SELECT.format(i), button, true);\n\t\t}\n\n\t\tvar repeaterNum = ProgramLayer.REPEATER_BUTTON_NUM;\n\n\t\tlayout.setContentSize(repeaterNum * (ProgramContainerLayer.BUTTON_SIZE + ProgramLayer.MENU_SEPARATOR),\n\t\t\tProgramContainerLayer.BUTTON_SIZE);\n\n\t\treturn layout;\n\t},\n\n\t_drawRobotRepeaters: function()\n\t{\n\t\tvar repeaters = this._robot.repeaters;\n\n\t\tif(repeaters && repeaters.length > 0)\n\t\t\treturn this._createSelectButtonsBar(FunctionButton.Type.Repeater, repeaters);\n\n\t\treturn null;\n\t},\n\n\t_drawChildRobotRepeaters: function()\n\t{\n\t\tvar externalRepeaters = this._robot.getChildRepeaters();\n\n\t\tif(externalRepeaters && externalRepeaters.length > 0)\n\t\t\treturn this._createSelectButtonsBar(FunctionButton.Type.Repeater, externalRepeaters);\n\n\t\treturn null;\n\t},\n\n\t_drawRobotConditions: function()\n\t{\n\t\tif (this._robot.conditions.length === 0)\n\t\t\treturn null;\n\n\t\tthis._robot.updateConditions();\n\n\t\tvar compare = pm.moduleUtils.compareConditions(this._robot.parentLevel.getType());\n\t\tthis._robot.conditions.sort(compare.bind(this));\n\n\t\tvar firstRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, this._robot.conditions, true);\n\n\t\tif (this._robot.conditionOpposites && this._robot.conditionOpposites.length > 0)\n\t\t{\n\t\t\tthis._robot.conditionOpposites.sort(compare.bind(this));\n\n\t\t\tvar secondRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, this._robot.conditionOpposites, true);\n\n\t\t\tvar layout = new ccui.Layout();\n\n\t\t\tlayout.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\t\t\tlayout.setContentSize(firstRow.width, firstRow.height + ProgramLayer.MENU_SEPARATOR + secondRow.height);\n\n\t\t\tvar rowAlign = new ccui.LinearLayoutParameter();\n\t\t\trowAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\trowAlign.setMargin(ProgramContainerLayer.BUTTON_SIZE / 2 + ProgramLayer.MENU_SEPARATOR /2, -ProgramContainerLayer.BUTTON_SIZE / 2 + ProgramLayer.SECOND_ROW_MARGIN + ProgramLayer.MENU_SEPARATOR, 0, 0);\n\n\t\t\tsecondRow.setLayoutParameter(rowAlign);\n\n\t\t\tlayout.addChild(firstRow);\n\t\t\tlayout.addChild(secondRow);\n\n\t\t\treturn layout;\n\t\t}\n\n\t\treturn firstRow;\n\t},\n\n\t_drawRobotChildConditions: function()\n\t{\n\t\tvar childConditions = this._robot.getChildConditions();\n\t\tvar childConditionOpposites = this._robot.getChildConditionOpposites();\n\n\t\tif(childConditions && childConditions.length > 0)\n\t\t{\n\t\t\tvar compare = pm.moduleUtils.compareConditions(this._robot.parentLevel.getType());\n\t\t\tchildConditions.sort(compare.bind(this));\n\n\t\t\tvar firstRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, childConditions);\n\n\t\t\tif (childConditionOpposites)\n\t\t\t{\n\t\t\t\tchildConditionOpposites.sort(compare.bind(this));\n\n\t\t\t\tvar secondRow = this._createSelectButtonsBar(FunctionButton.Type.Condition, childConditionOpposites);\n\n\t\t\t\tvar layout = new ccui.Layout();\n\n\t\t\t\tlayout.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\t\t\t\tlayout.setContentSize(firstRow.width, firstRow.height + ProgramLayer.MENU_SEPARATOR + secondRow.height);\n\n\t\t\t\tvar rowAlign = new ccui.LinearLayoutParameter();\n\t\t\t\trowAlign.setGravity(ccui.LinearLayoutParameter.LEFT);\n\t\t\t\trowAlign.setMargin(0, ProgramLayer.MENU_SEPARATOR, 0, 0);\n\n\t\t\t\tsecondRow.setLayoutParameter(rowAlign);\n\n\t\t\t\tlayout.addChild(firstRow);\n\t\t\t\tlayout.addChild(secondRow);\n\n\t\t\t\treturn layout;\n\t\t\t}\n\n\t\t\treturn firstRow;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_drawFunctionEditButtons: function()\n\t{\n\t\tif (this.isProgramPatternEditable())\n\t\t{\n\t\t\tvar exportedFunctions = [];\n\n\t\t\tvar functionsCount = this._robot.getProgramData().maxFunctionCount;\n\n\t\t\tif (functionsCount === 0 || pm.settings.isEditorMode)\n\t\t\t\tfunctionsCount = 6;\n\n\t\t\t--functionsCount;\n\n\t\t\tif (functionsCount === 0)\n\t\t\t\treturn null;\n\n\t\t\tvar i = 0;\n\t\t\tvar c = pm.CMD_A;\n\n\t\t\twhile (i < functionsCount)\n\t\t\t{\n\t\t\t\texportedFunctions.push(c);\n\t\t\t\tc = String.fromCharCode(c.charCodeAt(0) + 1);\n\t\t\t\t++i;\n\t\t\t}\n\n\t\t\treturn this._createSelectButtonsBar(FunctionButton.Type.Method, exportedFunctions);\n\t\t}\n\t\treturn null;\n\t},\n\n\t/**\n * Updates interface.\n * @param {?Number} offset Offset fo correct scroll position after changes\n */\n\tupdateView: function(offset)\n\t{\n\t\toffset = offset || 0;\n\n\t\tvar oldY = this._functionScroll.getInnerContainer().y;\n\n\t\toldY -= offset;\n\n\t\tthis._functionScroll.forceDoLayout();\n\n\t\tvar curY = this._functionScroll.getInnerContainer().y;\n\n\t\tvar percent = 0;\n\n\t\tif (curY !== 0)\n\t\t{\n\t\t\tpercent = ((curY - oldY) / curY) * 100;\n\t\t\tpercent = Math.min(Math.max(percent, 0), 100);\n\t\t}\n\n\t\tthis._functionScroll.jumpToPercentVertical(percent);\n\t},\n\n\t_recalculateSizes: function()\n\t{\n\t\tvar functionScrollHeight = this._workLayout.getContentSize().height;\n\t\tfunctionScrollHeight -= 2*ProgramLayer.BORDER_RADIUS;\n\t\tfunctionScrollHeight -= this._selectLayout.getContentSize().height;\n\t\tfunctionScrollHeight -= ProgramLayer.COMPONENT_SEPARATOR;\n\n\t\tthis._functionScroll.setContentSize(this.getContentSize().width - ProgramLayer.METHOD_STACK_WIDTH - ProgramLayer.BORDER_X, functionScrollHeight - 14);\n\n\t\tthis._workLayout.requestDoLayout();\n\t},\n\n\t_dragCallback: function(element, eventType, touch)\n\t{\n\t\tif (eventType === pmui.DragAndDropLayout.Event.CLICKED)\n\t\t{\n\t\t\tif(this._controlledMode)\n\t\t\t{\n\t\t\t\tif (this._robot.isPlayingAnimation())\n\t\t\t\t\treturn;\n\n\t\t\t\tif (element.value === pm.EMPTY_METHOD)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (element.value >= pm.CMD_A && element.value <= pm.CMD_E)\n\t\t\t\t{\n\t\t\t\t\tvar program = this._robot.getProgramData();\n\t\t\t\t\tvar functionExists = false;\n\n\t\t\t\t\tfor (var i = 0; i < program.height; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (program.symbols[i][0].type === pm.SymbolType.Function && program.symbols[i][0].value === element.value)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfunctionExists = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!functionExists)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this._buttonClickCallback)\n\t\t\t\t\tthis._buttonClickCallback.call(this._buttonClickCallbackTarget, element);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telement.select();\n\t\t}\n\t},\n\n\t/**\n * Enables Controlled mode of program layer.
\n * In this mode buttons animates once and called click callback passed to function.\n * @param {pm.ControlledModeData} controlledModeData\n * @private\n */\n\t_enableControlledMode: function(controlledModeData)\n\t{\n\t\tthis._controlledMode = true;\n\t\tthis._buttonClickCallback = controlledModeData.addMethodCallback;\n\t\tthis._buttonClickCallbackTarget = controlledModeData.callbackTarget;\n\n\t\tvar child = this._selectLayout.getChildren();\n\n\t\tfor(var i = 0 ; i < this._selectLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\tchild[i].setEnabled(true);\n\t\t\tchild[i].setBright(true);\n\t\t}\n\n\t\tthis._programControlLayer.setButtonsEnabled(false);\n\t},\n\n\t/**\n\t * Start recognizing of program\n\t * @private\n\t */\n\t_recognizeProgram: function()\n\t{\n\t\tthis._programControlLayer.hideRecognizeResultButton();\n\n\t\tvar program = this._robot.getProgramData();\n\n\t\tvar sendData = {\n munich_mode: true,\n\t\t\twidth: program.width,\n\t\t\theight: program.height,\n\t\t\tsigns: []\n\t\t};\n\n\t\tfor (var i = 0; i < program.height; ++i)\n\t\t{\n\t\t\tsendData.signs.push([]);\n\n\t\t\tfor (var j = 0; j < program.width; ++j)\n\t\t\t{\n\t\t\t\tvar symbol = program.symbols[i][j];\n\t\t\t\tvar notEmpty = symbol.type !== pm.SymbolType.Empty;\n\n\t\t\t\tsendData.signs[i].push(notEmpty);\n\t\t\t}\n\t\t}\n\n\t\tvar taskID = \"{0}_{1}_{2}\".format(world.id, pm.settings.getGame(), pm.settings.getGame());\n\n\t\tpm.programRecognizer.recognize(JSON.stringify(sendData), taskID);\n\t\tpm.programRecognizer.setSuccessCallback(this._onProgramRecognize.bind(this));\n\t\tpm.programRecognizer.setErrorCallback(this._onRecognizeError.bind(this));\n\t},\n\n\t_onRecognizeError: function(error)\n\t{\n\t\tif(error !== \"\")\n\t\t{\n\t\t\tvar messageBox = new pmui.MessageBox(this, error);\n\n\t\t\tvar x = pm.settings.getScreenSize().width / 2 - messageBox.getContentSize().width / 2;\n\t\t\tvar y = pm.settings.getScreenSize().height / 2 - messageBox.getContentSize().height / 2;\n\t\t\tmessageBox.setPosition(x, y);\n\t\t\tcc.director.getRunningScene().addChild(messageBox, 1000);\n\t\t}\n\t},\n\n\t_onProgramRecognize: function(predictions)\n\t{\n\t\tthis._programControlLayer.showRecognizeResultButton(predictions);\n\t},\n\n\t/**\n * Resets layer\n */\n\treset: function()\n\t{\n\t\tthis._programContainer.clearAllHighlights();\n\n\t\tthis._programControlLayer.setButtonsEnabled(true);\n\n\t\tthis._programContainer.reloadRepeaters();\n\n\t\tthis.setEnabled(true);\n\t},\n\n\tsetEnabled: function(flag, steppedWorking)\n\t{\n\t\tthis._programContainer.enabled = flag;\n\n\t\tvar child = this._selectLayout.getChildren();\n\n\t\tfor(var i = 0 ; i < this._selectLayout.getChildrenCount(); ++i)\n\t\t{\n\t\t\tchild[i].setEnabled(flag);\n\t\t\tchild[i].setBright(flag);\n\t\t}\n\n\t\tif(this._methodStackLayer)\n\t\t{\n\t\t\tif (steppedWorking)\n\t\t\t\tthis._methodStackLayer.setEnabled(true);\n\t\t\telse\n\t\t\t\tthis._methodStackLayer.setEnabled(flag);\n\n\t\t}\n\t}\n});\nvar _p = ProgramLayerP.prototype;\n\n/** @expose */\n_p.robot;\ncc.defineGetterSetter(_p, \"robot\", _p.getRobot, _p.setRobot);","/** Created by Kirill Mashchenko on 09.08.17. ...*/\n\n/**\n * @class Layer for controlling class.\n * @extends ccui.Layout\n */\n\nvar ClassControlLayer = ccui.Layout.extend(/** @lends ClassControlLayer# */{\n\n\t_freeStudentsList: null,\n\t_teamList: null,\n\n\t_freeStudents: [],\n\t_freeStudentsSelectedMap: {},\n\n\t_server: null,\n\n\tchooseGameLevelLayout: null,\n\t_changeLevelMenu: null,\n\n\t_unionInput: null,\n\n\t_commonAutoChange: true,\n\n\t_unionCount: 0,\n\t_unionGameIndex: 0,\n\t_unionLevelIndex: 0,\n\n\t_timeLayout: null,\n\t_workHeight: 0,\n\n\tctor: function()\n\t{\n\t\tthis._super();\n\t\tthis._teams = [];\n\n\t\tthis._freeStudentsSelectedMap = {};\n\t\tthis._freeStudents = [];\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tif(cc.sys.isNative)\n\t\t\tcc.textureCache.removeAllTextures();\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tpm.broadcastClient.setPaused(true);\n\t\tpm.broadcastServer.setDiscoverTimeout(2000);\n\t\tpm.broadcastServer.setDataCallback(this._dataCallback.bind(this));\n\t\tpm.networkUtils.startDiscover(this._discoverServerCallback.bind(this), pm.BROADCAST_PACKET_PRIORITY.HIGH);\n\n\t\tthis._server = new pm.TeacherServerImpl();\n\t\tthis._server.start(pm.TEACHER_SERVER_PORT);\n\t\tthis._server.setRefreshCallback(this._refreshTeam.bind(this));\n\n\t\tthis._loadInterface();\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_TIME_TABLE, function()\n\t\t{\n\t\t\tthis._showTime(null, true);\n\t\t}.bind(this), this);\n\t},\n\n\tonExit: function()\n\t{\n\t\tpm.settings.isEditorMode = false;\n\n\t\tthis._super();\n\t\tpm.broadcastClient.setPaused(false);\n\t\tpm.networkUtils.stopDiscover();\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\t\tvar screenSize = pm.settings.getScreenSize();\n\n\t\tpm.settings.isEditorMode = true;\n\t\tthis._commonAutoChange = true;\n\n\t\tvar autoChangeCheckbox = new pmui.CheckBox(LocalizedString(\"AutoChangeForAll\"), this._autoChangeAll, this, 18, this._commonAutoChange);\n\n\t\tvar autoChangeAlign = new ccui.RelativeLayoutParameter();\n\t\tautoChangeAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tautoChangeAlign.setRelativeName(\"autoChange\");\n\t\tautoChangeAlign.setMargin(screenBounds.left + ClassControlLayer.BORDER, screenBounds.top + ClassControlLayer.BORDER, 0, 0);\n\t\tautoChangeCheckbox.setLayoutParameter(autoChangeAlign);\n\t\tthis.addChild(autoChangeCheckbox);\n\n\t\tvar showTime = new pmui.Button(pm.spriteUtils.getIconName(\"time\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"time\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"time\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tshowTime.addClickEventListener(this._showTime.bind(this));\n\n\t\tvar showTimeAlign = new ccui.RelativeLayoutParameter();\n\t\tshowTimeAlign.setRelativeName(\"time\");\n\t\tshowTimeAlign.setRelativeToWidgetName(\"autoChange\");\n\t\tshowTimeAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tshowTimeAlign.setMargin(ClassControlLayer.BORDER, 0, 0, 0);\n\t\tshowTime.setLayoutParameter(showTimeAlign);\n\n\t\tthis.addChild(showTime);\n\n\t\tvar editLevel = new pmui.Button(pm.spriteUtils.getIconName(\"edit\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\teditLevel.addClickEventListener(this._editLevel.bind(this));\n\t\teditLevel.setScale(0.8);\n\n\t\tvar editLevelAlign = new ccui.RelativeLayoutParameter();\n\t\teditLevelAlign.setRelativeName(\"edit\");\n\t\teditLevelAlign.setRelativeToWidgetName(\"time\");\n\t\teditLevelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\teditLevelAlign.setMargin(ClassControlLayer.BORDER, 0, 0, 0);\n\t\teditLevel.setLayoutParameter(editLevelAlign);\n\n\t\tthis.addChild(editLevel);\n\n\t\tthis._changeLevelMenu = new ChangeLevelClassControl(this);\n\n\t\tvar changeLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tchangeLevelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tchangeLevelAlign.setMargin(ClassControlLayer.BORDER, 0, 0, 0);\n\t\tchangeLevelAlign.setRelativeName(\"changeLevel\");\n\t\tchangeLevelAlign.setRelativeToWidgetName(\"edit\");\n\t\tthis._changeLevelMenu.setLayoutParameter(changeLevelAlign);\n\n\t\tthis._changeLevelMenu.setScale(0.8);\n\t\tthis._refreshChangeLevelMenu();\n\n\t\tthis.addChild(this._changeLevelMenu);\n\n\t\tvar selectWorldLayer = new SelectWorldEditorLayer(this, null, true, SelectWorldEditorLayer.Gravity.HORIZONTAL);\n\n\t\tvar worldLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tworldLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tworldLayerAlign.setRelativeName(\"worldSelect\");\n\t\tworldLayerAlign.setMargin(0, screenBounds.top, screenBounds.right + ClassControlLayer.BORDER, 0);\n\t\tselectWorldLayer.setLayoutParameter(worldLayerAlign);\n\n\t\tthis.addChild(selectWorldLayer, 1);\n\n\t\tvar workSpaceWidth = screenSize.width - ClassControlLayer.SEPARATOR_NUMBER * ClassControlLayer.SEPARATOR;\n\t\tvar classLayoutWidth = workSpaceWidth * ClassControlLayer.CLASS_WIDTH_PERCENT;\n\t\tvar gameLayoutWidth = workSpaceWidth * ClassControlLayer.GAME_WIDTH_PERCENT;\n\n\t\tvar workSpaceHeight = screenSize.height - 2 * ClassControlLayer.BORDER - selectWorldLayer.height - ClassControlLayer.BOTTOM_MARGIN;\n\t\tthis._workHeight = workSpaceHeight;\n\n\t\tvar classLayout = new ccui.Layout();\n\t\tclassLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tclassLayout.setContentSize(classLayoutWidth, workSpaceHeight);\n\n\t\tvar image = \"System/interfaceBG.png\";\n\t\tclassLayout.setBackGroundImageCapInsets(cc.rect(89, 89, 72, 72));\n\t\tclassLayout.setBackGroundImage(image);\n\t\tclassLayout.setBackGroundImageScale9Enabled(true);\n\t\tclassLayout.setCascadeOpacityEnabled(true);\n\n\t\tvar staticClassLayer = new ccui.Layout();\n\t\tstaticClassLayer.setContentSize(classLayoutWidth - 2 * ClassControlLayer.BORDER_RADIUS, workSpaceHeight - 2 * ClassControlLayer.BORDER_RADIUS);\n\t\tstaticClassLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tstaticClassLayer.setBackGroundColor(cc.color.RED);\n\t\tstaticClassLayer.setOpacity(50);\n\n\t\tvar staticLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tstaticLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tstaticLayerAlign.setMargin(ClassControlLayer.BORDER_RADIUS, ClassControlLayer.BORDER_RADIUS, 0, 0);\n\n\t\tstaticClassLayer.setLayoutParameter(staticLayerAlign);\n\t\tclassLayout.addChild(staticClassLayer, -2);\n\n\t\tvar classLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tclassLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tclassLayoutAlign.setRelativeName(\"class\");\n\t\tclassLayoutAlign.setRelativeToWidgetName(\"autoChange\");\n\t\tclassLayoutAlign.setMargin(0, ClassControlLayer.BORDER + (selectWorldLayer.height - autoChangeCheckbox.height) / 2, 0, 0);\n\t\tclassLayout.setLayoutParameter(classLayoutAlign);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Class\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setRelativeName(\"classLabel\");\n\t\tlabelAlign.setMargin(0, ClassControlLayer.BORDER + ClassControlLayer.BORDER_RADIUS, 0, 0);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tclassLayout.addChild(label);\n\n\t\tvar unionIntoGameN = new ccui.Layout();\n\t\tunionIntoGameN.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar unionIntoGameNAlign = new ccui.RelativeLayoutParameter();\n\t\tunionIntoGameNAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tunionIntoGameNAlign.setRelativeName(\"unionN\");\n\t\tunionIntoGameNAlign.setRelativeToWidgetName(\"class\");\n\t\tunionIntoGameNAlign.setMargin(0, ClassControlLayer.BORDER, 0, 0);\n\t\tunionIntoGameN.setLayoutParameter(unionIntoGameNAlign);\n\n\t\tvar unionLabel = new ccui.Text(\"Объединить по: \", pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar unionLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tunionLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tunionLabelAlign.setRelativeName(\"unionNLabel\");\n\t\tunionLabel.setLayoutParameter(unionLabelAlign);\n\n\t\tvar unionWidth = unionLabel.width;\n\n\t\tthis._unionInput = new pmui.TextInput(2, \" \", pm.settings.fontSize, 25);\n\n\t\tvar unionInputAlign = new ccui.RelativeLayoutParameter();\n\t\tunionInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tunionInputAlign.setMargin(ClassControlLayer.SMALL_SEPARATOR, 0, 0, 0);\n\t\tunionInputAlign.setRelativeName(\"unionNInput\");\n\t\tunionInputAlign.setRelativeToWidgetName(\"unionNLabel\");\n\t\tthis._unionInput.setLayoutParameter(unionInputAlign);\n\n\t\tunionWidth += ClassControlLayer.SMALL_SEPARATOR + this._unionInput.width;\n\n\t\tvar unionButton = new pmui.InterfaceButton(this._unionIntoGameN, this, \"OK\");\n\n\t\tvar unionButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tunionButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tunionButtonAlign.setRelativeName(\"OK\");\n\t\tunionButtonAlign.setRelativeToWidgetName(\"unionNInput\");\n\t\tunionButtonAlign.setMargin(ClassControlLayer.MEDIUM_SEPARATOR, 0, 0, 0);\n\t\tunionButton.setLayoutParameter(unionButtonAlign);\n\n\t\tunionWidth += ClassControlLayer.MEDIUM_SEPARATOR + unionButton.width;\n\n\t\tunionIntoGameN.setContentSize(unionWidth, unionButton.height);\n\n\t\tunionIntoGameN.addChild(unionLabel);\n\t\tunionIntoGameN.addChild(this._unionInput);\n\t\tunionIntoGameN.addChild(unionButton);\n\n\t\tthis.addChild(unionIntoGameN);\n\n\t\tvar unionIntoGame = new pmui.InterfaceButton(this._unionIntoGame, this, LocalizedString(\"UnionIntoGame\"));\n\n\t\tvar unionIntoGameAlign = new ccui.RelativeLayoutParameter();\n\t\tunionIntoGameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tunionIntoGameAlign.setRelativeName(\"union\");\n\t\tunionIntoGameAlign.setRelativeToWidgetName(\"unionN\");\n\t\tunionIntoGameAlign.setMargin(ClassControlLayer.BORDER, 0, 0, 0);\n\t\tunionIntoGame.setLayoutParameter(unionIntoGameAlign);\n\n\t\tthis.addChild(unionIntoGame);\n\n\t\tvar reconnectButton = new pmui.InterfaceButton(this._reconnectAll, this, \"Переподключить всех\");\n\n\t\tvar reconnectButtonAlign = new ccui.RelativeLayoutParameter();\n\t\treconnectButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\treconnectButtonAlign.setRelativeName(\"reconnect\");\n\t\treconnectButtonAlign.setRelativeToWidgetName(\"union\");\n\t\treconnectButtonAlign.setMargin(ClassControlLayer.BORDER, 0, 0, 0);\n\t\treconnectButton.setLayoutParameter(reconnectButtonAlign);\n\n\t\tthis.addChild(reconnectButton);\n\n\t\tvar classListHeight = workSpaceHeight - label.height - 4 * ClassControlLayer.BORDER;\n\n\t\tthis._freeStudentsList = new ccui.ListView();\n\t\tthis._freeStudentsList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._freeStudentsList.setContentSize(classLayoutWidth - 2 * ClassControlLayer.BORDER - 6, classListHeight);\n\t\tthis._freeStudentsList.setItemsMargin(5);\n\t\tthis._freeStudentsList.setGravity(3);\n\n\t\tvar listAlign = new ccui.RelativeLayoutParameter();\n\t\tlistAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tlistAlign.setRelativeToWidgetName(\"class\");\n\t\tlistAlign.setMargin(ClassControlLayer.BORDER_RADIUS + ClassControlLayer.BORDER, label.height + 2 * ClassControlLayer.BORDER, 0, 0);\n\t\tthis._freeStudentsList.setLayoutParameter(listAlign);\n\n\t\tclassLayout.addChild(this._freeStudentsList);\n\t\tthis.addChild(classLayout);\n\n\t\tvar gameLayout = new ccui.Layout();\n\t\tgameLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tgameLayout.setContentSize(gameLayoutWidth, workSpaceHeight);\n\n\t\tvar image = \"System/interfaceBG.png\";\n\t\tgameLayout.setBackGroundImageCapInsets(cc.rect(89, 89, 72, 72));\n\t\tgameLayout.setBackGroundImage(image);\n\t\tgameLayout.setBackGroundImageScale9Enabled(true);\n\t\tgameLayout.setCascadeOpacityEnabled(true);\n\n\t\tvar staticGameLayer = new ccui.Layout();\n\t\tstaticGameLayer.setContentSize(gameLayoutWidth - 2 * ClassControlLayer.BORDER_RADIUS, workSpaceHeight - 2 * ClassControlLayer.BORDER_RADIUS);\n\t\tstaticGameLayer.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tstaticGameLayer.setBackGroundColor(cc.color.BLUE);\n\t\tstaticGameLayer.setOpacity(50);\n\n\t\tstaticGameLayer.setLayoutParameter(staticLayerAlign.clone());\n\t\tgameLayout.addChild(staticGameLayer, -2);\n\n\t\tvar gameLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tgameLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tgameLayoutAlign.setRelativeName(\"game\");\n\t\tgameLayoutAlign.setRelativeToWidgetName(\"class\");\n\t\tgameLayoutAlign.setMargin(ClassControlLayer.SEPARATOR, 0, 0, 0);\n\t\tgameLayout.setLayoutParameter(gameLayoutAlign);\n\n\t\tvar gameListHeight = workSpaceHeight - 4 * ClassControlLayer.BORDER;\n\n\t\tthis._teamList = new ccui.ListView();\n\t\tthis._teamList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._teamList.setContentSize(gameLayoutWidth - 2 * ClassControlLayer.BORDER, gameListHeight);\n\t\tthis._teamList.setItemsMargin(15);\n\t\tthis._teamList.setGravity(3);\n\n\t\tvar teamsAlign = new ccui.RelativeLayoutParameter();\n\t\tteamsAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tteamsAlign.setMargin(ClassControlLayer.BORDER_RADIUS + ClassControlLayer.BORDER, ClassControlLayer.BORDER_RADIUS + ClassControlLayer.BORDER, 0, 0);\n\t\tthis._teamList.setLayoutParameter(teamsAlign);\n\n\t\tgameLayout.addChild(this._teamList);\n\t\tthis.addChild(gameLayout);\n\n\t\tvar toPiktomirButton = new pmui.Button( pm.spriteUtils.getIconName(\"toPiktomir\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"toPiktomir\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"toPiktomir\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\ttoPiktomirButton.addClickEventListener(this._piktomir.bind(this));\n\n\t\tvar toPiktomirAlign = new ccui.RelativeLayoutParameter();\n\t\ttoPiktomirAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\ttoPiktomirAlign.setRelativeName(\"toPiktomir\");\n\t\ttoPiktomirAlign.setRelativeToWidgetName(\"game\");\n\t\ttoPiktomirAlign.setMargin(0, ClassControlLayer.MEDIUM_SEPARATOR, 0, 0);\n\t\ttoPiktomirButton.setLayoutParameter(toPiktomirAlign);\n\n\t\tthis.addChild(toPiktomirButton);\n\n\t\tvar clearAllCache = new pmui.Button( pm.spriteUtils.getIconName(\"clearAllProgress\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clearAllProgress\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clearAllProgress\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tclearAllCache.addClickEventListener(this._clearAllCache.bind(this));\n\n\t\tvar clearAllCacheAlign = new ccui.RelativeLayoutParameter();\n\t\tclearAllCacheAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tclearAllCacheAlign.setMargin(0, 0, ClassControlLayer.BORDER, 0);\n\t\tclearAllCacheAlign.setRelativeName(\"clearAllCache\");\n\t\tclearAllCacheAlign.setRelativeToWidgetName(\"toPiktomir\");\n\t\tclearAllCache.setLayoutParameter(clearAllCacheAlign);\n\n\t\tthis.addChild(clearAllCache);\n\n\t\tvar destroyAllTeams = new pmui.Button( pm.spriteUtils.getIconName(\"deleteAllTeams\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteAllTeams\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteAllTeams\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tdestroyAllTeams.addClickEventListener(this._destroyAllTeamsConfirm.bind(this));\n\n\t\tvar destroyAllTeamsAlign = new ccui.RelativeLayoutParameter();\n\t\tdestroyAllTeamsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tdestroyAllTeamsAlign.setMargin(0, 0, ClassControlLayer.BORDER, 0);\n\t\tdestroyAllTeamsAlign.setRelativeToWidgetName(\"clearAllCache\");\n\t\tdestroyAllTeams.setLayoutParameter(destroyAllTeamsAlign);\n\n\t\tthis.addChild(destroyAllTeams);\n\t},\n\n\t_refreshChangeLevelMenu: function()\n\t{\n\t\tvar noPrevLevel = false;\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t{\n\t\t\tvar team = this._server.teams[i];\n\t\t\tif (team.level !== 0)\n\t\t\t{\n\t\t\t\tnoPrevLevel = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis._changeLevelMenu.setEnabledPrevLevelButton(noPrevLevel);\n\n\t\tvar noNextLevel = false;\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t{\n\t\t\tvar team = this._server.teams[i];\n\t\t\tif (team.level !== world.getLevelCount(team.game) - 1)\n\t\t\t{\n\t\t\t\tnoNextLevel = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis._changeLevelMenu.setEnabledNextLevelButton(noNextLevel);\n\t},\n\n\t_autoChangeAll: function(flag)\n\t{\n\t\tthis._commonAutoChange = flag;\n\n\t\tfor (var i = 0; i < this._teamList.getChildrenCount(); ++i)\n\t\t{\n\t\t\tvar layout = this._teamList.getItem(i);\n\t\t\tlayout.setAutoConnect(flag);\n\t\t}\n\t},\n\n\t_clearAllCache: function ()\n\t{\n\t\tvar packet = {\n\t\t\tt: pm.BROADCAST_DATA_PACKET_TYPE.CLEAR_CACHE\n\t\t};\n\n\t\tvar sendPacket = JSON.stringify(packet);\n\n\t\tfor (var j = 0; j < this._freeStudents.length; ++j)\n\t\t\tpm.broadcastServer.sendPacket(this._freeStudents[j].host, sendPacket);\n\t},\n\n\t_reconnectAll: function()\n\t{\n\t\tvar packet = {\n\t\t\tt: pm.BROADCAST_DATA_PACKET_TYPE.DEBUG_RECONNECT\n\t\t};\n\n\t\tvar sendPacket = JSON.stringify(packet);\n\n\t\tfor (var j = 0; j < this._freeStudents.length; ++j)\n\t\t\tpm.broadcastServer.sendPacket(this._freeStudents[j].host, sendPacket);\n\n\t\tpm.networkUtils.startDebug();\n\t},\n\n\t_destroyAllTeamsConfirm: function()\n\t{\n\t\tif (!this.getChildByTag(ClassControlLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar input = new pmui.ConfirmWindow(LocalizedString(\"DestroyAllTeams\"));\n\n\t\t\tinput.setCallback(this, this._destroyAllTeams, function () {});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, ClassControlLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_destroyAllTeams: function()\n\t{\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t\tthis._teamLayerCallback(TeamGameLayout.EVENT.DESTROY_TEAM, i);\n\t},\n\n\t_discoverServerCallback: function(clients)\n\t{\n\t\tvar oldHeight = this._freeStudentsList.getInnerContainerSize().height;\n\t\tvar currentFreeStudents = [];\n\n\t\tthis._freeStudentsList.removeAllChildren(false);\n\n\t\tvar createdTeams = [];\n\n\t\tvar ifDifferent = false;\n\n\t\tfor (var i = 0; i < clients.length; ++i)\n\t\t{\n\t\t\tvar parsedPacket = JSON.parse(clients[i].getData());\n\n\t\t\tcc.log(\"Recieved broadcast discover from client: \" + clients[i].getHost() + \" data: \\n\" + clients[i].getData());\n\n\t\t\tvar student = null;\n\t\t\tvar team = null;\n\t\t\tvar teamIndex = -1;\n\n\t\t\tfor(var t = 0; t < this._server.teams.length; ++t)\n\t\t\t{\n\t\t\t\tif(this._server.teams[t].hostStudent.host === clients[i].getHost())\n\t\t\t\t{\n\t\t\t\t\tteam = this._server.teams[t];\n\t\t\t\t\tteamIndex = t;\n\t\t\t\t\tstudent = this._server.teams[t].hostStudent;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tfor(var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif(this._server.teams[t].students[c].host === clients[i].getHost())\n\t\t\t\t\t{\n\t\t\t\t\t\tteam = this._server.teams[t];\n\t\t\t\t\t\tteamIndex = t;\n\t\t\t\t\t\tstudent = this._server.teams[t].students[c];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (student)\n\t\t\t\tstudent.discoverDate = new Date();\n\n\t\t\tswitch (parsedPacket.t)\n\t\t\t{\n\t\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.SERVER:\n\n\t\t\t\t\tif(!student)\n\t\t\t\t\t{\n\t\t\t\t\t\tteam = new pm.ControlledTeam(clients[i].getHost(), parsedPacket.u, parsedPacket.g, parsedPacket.l);\n\t\t\t\t\t\tthis._server.teams.push(team);\n\t\t\t\t\t\tcreatedTeams.push(team);\n\t\t\t\t\t\tthis._refreshChangeLevelMenu();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstudent.name = parsedPacket.u;\n\n\t\t\t\t\t\tif(!team.markDeleted)\n\t\t\t\t\t\t\tthis._handleStudentConnection(student, teamIndex)\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.CLIENT:\n\n\t\t\t\t\tif(!student)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(var t = 0; t < this._server.teams.length; ++t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(this._server.teams[t].hostStudent.host === parsedPacket.h)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tteam = this._server.teams[t];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(!team)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tteam = new pm.ControlledTeam(parsedPacket.h, \"\", parsedPacket.g, parsedPacket.l);\n\t\t\t\t\t\t\tthis._server.teams.push(team);\n\t\t\t\t\t\t\tcreatedTeams.push(team);\n\t\t\t\t\t\t\tthis._refreshChangeLevelMenu();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstudent = new pm.ControlledStudent(\n\t\t\t\t\t\t\tclients[i].getHost(),\n\t\t\t\t\t\t\tparsedPacket.u,\n\t\t\t\t\t\t\tpm.ControlledStudent.State.Disconnected\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tteam.students.push(student);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!team.markDeleted)\n\t\t\t\t\t\tthis._handleStudentConnection(student, teamIndex);\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.BROADCAST_DATA_PACKET_TYPE.FREE:\n\n\t\t\t\t\tif(!student)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!team || !team.markDeleted)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar freeStudent = new pm.ControlledStudent(\n\t\t\t\t\t\t\t\tclients[i].getHost(),\n\t\t\t\t\t\t\t\tparsedPacket.u,\n\t\t\t\t\t\t\t\tpm.ControlledStudent.State.Free\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tcurrentFreeStudents.push(freeStudent);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (student.name !== parsedPacket.name)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstudent.name = parsedPacket.u;\n\t\t\t\t\t\t\tifDifferent = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(!team.markDeleted)\n\t\t\t\t\t\t\tthis._handleStudentConnection(student, teamIndex)\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar date = new Date();\n\n\t\tfor(var i = this._server.teams.length - 1; i >= 0 ; --i)\n\t\t{\n\t\t\tif(this._server.teams[i].markDeleted)\n\t\t\t{\n\t\t\t\tvar deleteTeam = (this._server.teams[i].hostStudent.state === pm.ControlledStudent.State.Disconnected ||\n\t\t\t\t\t(date - this._server.teams[i].hostStudent.discoverDate >= pm.STUDENT_LOST_TIMEOUT && this._server.teams[i].hostStudent.state === pm.ControlledStudent.State.Connecting));\n\n\t\t\t\tif(deleteTeam)\n\t\t\t\t{\n\t\t\t\t\tfor(var c = 0; c < this._server.teams[i].students.length; ++c)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!(this._server.teams[i].students[c].state === pm.ControlledStudent.State.Disconnected ||\n\t\t\t\t\t\t\t(date - this._server.teams[i].students[c].discoverDate >= pm.STUDENT_LOST_TIMEOUT && this._server.teams[i].students[c].state === pm.ControlledStudent.State.Connecting)))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdeleteTeam = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(deleteTeam)\n\t\t\t\t{\n\t\t\t\t\tthis._server.teams.splice(i, 1);\n\t\t\t\t\tthis._teamList.removeItem(i);\n\n\t\t\t\t\tif(i < this._server.teams.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var index = i; index < this._server.teams.length; ++index)\n\t\t\t\t\t\t\t--this._server.teams[index].index;\n\t\t\t\t\t}\n\t\t\t\t\tthis._refreshChangeLevelMenu();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar compareTeams = this._compareTeams;\n\t\tcreatedTeams.sort(compareTeams.bind(this));\n\n\t\tfor(var i = 0; i < createdTeams.length; ++i)\n\t\t{\n\t\t\tvar teamGameLayout = new TeamGameLayout(createdTeams[i], this._teamList.getChildrenCount(), this._commonAutoChange);\n\t\t\tteamGameLayout.setIndexCallback(this._teamLayerCallback.bind(this));\n\t\t\tthis._teamList.pushBackCustomItem(teamGameLayout);\n\t\t}\n\n\t\tfor (var i = 0; i < currentFreeStudents.length; ++i)\n\t\t{\n\t\t\tvar found = false;\n\n\t\t\tfor (var j = 0; j < this._freeStudents.length; ++j)\n\t\t\t{\n\t\t\t\tif (this._freeStudents[j].host === currentFreeStudents[i].host)\n\t\t\t\t{\n\t\t\t\t\tthis._freeStudents[j].name = currentFreeStudents[i].name;\n\t\t\t\t\tthis._freeStudents[j].discoverDate = new Date();\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!found)\n\t\t\t{\n\t\t\t\tthis._freeStudents.push(currentFreeStudents[i]);\n\t\t\t\tifDifferent = true;\n\t\t\t}\n\t\t}\n\n\t\tvar removeList = [];\n\t\tvar now = new Date();\n\n\t\tfor (var i = 0; i < this._freeStudents.length; ++i)\n\t\t{\n\t\t\tif (now - this._freeStudents[i].discoverDate >= pm.DISCOVER_EXPIRE_TIMEOUT)\n\t\t\t\tremoveList.push(i);\n\t\t}\n\n\t\tfor (var i = 0; i < removeList.length; ++i)\n\t\t{\n\t\t\tthis._freeStudents.splice(removeList[i]-i, 1);\n\t\t\tifDifferent = true;\n\t\t}\n\n\t\tvar compare = this._compareElement;\n\n\t\tif (ifDifferent)\n\t\t\tthis._freeStudents.sort(compare.bind(this));\n\n\t\tfor (var j = 0; j < this._freeStudents.length; ++j)\n\t\t{\n\t\t\tvar child = new pmui.CheckBox(\n\t\t\t\tthis._freeStudents[j].name,\n\t\t\t\tthis._childSelected,\n\t\t\t\tthis,\n\t\t\t\t18,\n\t\t\t\tthis._freeStudentsSelectedMap[this._freeStudents[j].host]\n\t\t\t);\n\n\t\t\tthis._freeStudentsList.pushBackCustomItem(child);\n\t\t}\n\n\t\tvar oldY = this._freeStudentsList.getInnerContainer().y;\n\n\t\tthis._freeStudentsList.forceDoLayout();\n\n\t\tvar curY = this._freeStudentsList.getInnerContainer().y;\n\n\t\tvar percent = 0;\n\n\t\tif (curY !== 0)\n\t\t{\n\t\t\tpercent = ((curY - oldY) / curY) * 100;\n\t\t\tpercent = Math.min(Math.max(percent, 0), 100);\n\t\t}\n\n\t\tif (oldHeight > this._workHeight)\n\t\t\tthis._freeStudentsList.jumpToPercentVertical(percent);\n\t},\n\n\t_compareElement: function (a, b)\n\t{\n\t\tvar k1 = 0, k2 = 0;\n\n\t\tfor(var i = a.name.length-1; i >= 0; i--)\n\t\t{\n\t\t\tif (a.name[i] >= \"0\" && a.name[i] <= \"9\")\n\t\t\t\t++k1;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfor(var i = b.name.length-1; i >= 0; i--)\n\t\t{\n\t\t\tif (b.name[i] >= \"0\" && b.name[i] <= \"9\")\n\t\t\t\t++k2;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (k1 === 0 || k2 === 0)\n\t\t{\n\t\t\tif (a.name >= b.name)\n\t\t\t\treturn 1;\n\t\t\telse\n\t\t\t\treturn -1;\n\t\t}\n\n\t\tvar number1 = Number(a.name.substring(a.name.length - k1, a.name.length));\n\t\tvar number2 = Number(b.name.substring(b.name.length - k2, b.name.length));\n\n\t\tif (number1 >= number2)\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn -1;\n\t},\n\n\t_compareTeams: function(a, b)\n\t{\n\t\tif (a.index > b.index)\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn -1;\n\t},\n\n\t_handleStudentConnection: function (student, teamIndex)\n\t{\n\t\tif (student.state === pm.ControlledStudent.State.Disconnected)\n\t\t{\n\t\t\tstudent.state = pm.ControlledStudent.State.Connecting;\n\t\t\tthis._refreshTeam(teamIndex);\n\t\t\tthis._sendConnectToTeacherServerPacket(student);\n\t\t}\n\t\telse if (student.state === pm.ControlledStudent.State.Connecting)\n\t\t{\n\t\t\tvar date = new Date();\n\n\t\t\tif (date - student.lastConnectPacketDate >= pm.STUDENT_CONNECT_RETRY_TIMEOUT)\n\t\t\t{\n\t\t\t\tthis._refreshTeam(teamIndex);\n\t\t\t\tthis._sendConnectToTeacherServerPacket(student);\n\t\t\t}\n\t\t}\n\t},\n\n\t_sendConnectToTeacherServerPacket: function (student)\n\t{\n\t\tstudent.lastConnectPacketDate = new Date();\n\n\t\tvar packetData = {t: pm.BROADCAST_DATA_PACKET_TYPE.CONNECT_TO_TEACHER_SERVER};\n\n\t\tpm.networkUtils.log(\"Sending connect to teacher to \" + student.host, pm.NetworkDebugSendTypes.BROADCAST_DATA, packetData, student.host);\n\n\t\tpm.broadcastServer.sendPacket(student.host, JSON.stringify(packetData));\n\t},\n\n\t_refreshTeam: function(teamIndex)\n\t{\n\t\tvar item = this._teamList.getItem(teamIndex);\n\n\t\tif(item)\n\t\t\titem.refresh();\n\t},\n\n\t_childSelected: function (flag)\n\t{\n\t\tthis._freeStudentsSelectedMap = {};\n\n\t\tfor(var i = 0; i < this._freeStudents.length; ++i)\n\t\t{\n\t\t\tif (this._freeStudentsList.getItem(i))\n\t\t\t\tthis._freeStudentsSelectedMap[this._freeStudents[i].host] = this._freeStudentsList.getItem(i).getChecked();\n\t\t}\n\t},\n\n\t_dataCallback: function (host, packet) {},\n\n\t_piktomir: function()\n\t{\n\t\tpm.settings.isEditorMode = false;\n\t\tif(this._server)\n\t\t\tthis._server.stop();\n\n\t\tpm.broadcastServer.stopDiscover();\n\t\tpm.broadcastClient.setPaused(false);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_unionIntoGame: function ()\n\t{\n\t\tthis.chooseGameLevelLayout = new ChooseLevelLayer(this._okLevel, this);\n\t\tcc.director.getRunningScene().addChild(this.chooseGameLevelLayout, 1000);\n\t},\n\n\t_unionIntoGameN: function()\n\t{\n\t\tvar numberInTeam = Number(this._unionInput.getString());\n\n\t\tif (!numberInTeam || numberInTeam < 1)\n\t\t\treturn;\n\n\t\tthis.chooseGameLevelLayout = new ChooseLevelLayer(this._okUnionLevel, this);\n\t\tcc.director.getRunningScene().addChild(this.chooseGameLevelLayout, 1000);\n\t},\n\n\t_okLevel: function ()\n\t{\n\t\tvar sendStudents = [];\n\n\t\tvar removeList = [];\n\n\t\tfor (var i = 0; i < this._freeStudents.length; ++i)\n\t\t{\n\t\t\tif (this._freeStudentsList.getItem(i).getChecked())\n\t\t\t{\n\t\t\t\tsendStudents.push(this._freeStudents[i]);\n\t\t\t\tremoveList.push(i);\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < removeList.length; ++i)\n\t\t{\n\t\t\tthis._freeStudents.splice(removeList[i] - i, 1);\n\t\t\tthis._freeStudentsList.removeChild(this._freeStudentsList.getItem(removeList[i] - i));\n\t\t}\n\n\t\tif (world.games[this.chooseGameLevelLayout.gameIndex].levels[this.chooseGameLevelLayout.levelIndex].robots.length !== sendStudents.length)\n\t\t\treturn;\n\n\t\tvar server = sendStudents[0];\n\n\t\tvar team = new pm.ControlledTeam(server.host, server.name, this.chooseGameLevelLayout.gameIndex, this.chooseGameLevelLayout.levelIndex);\n\n\t\tfor (var i = 1; i < sendStudents.length; ++i)\n\t\t\tteam.students.push(sendStudents[i]);\n\n\t\tthis._server.teams.push(team);\n\t\tthis._refreshChangeLevelMenu();\n\n\t\tvar teamGameLayout = new TeamGameLayout(team, this._teamList.getChildrenCount(), this._commonAutoChange);\n\t\tteamGameLayout.setIndexCallback(this._teamLayerCallback.bind(this));\n\n\t\tthis._teamList.pushBackCustomItem(teamGameLayout);\n\n\t\tthis.chooseGameLevelLayout.chooseLevelLayout.removeFromParent();\n\t\tthis.chooseGameLevelLayout.removeFromParent();\n\t\tthis.chooseGameLevelLayout.chooseLevelLayout = null;\n\t\tthis.chooseGameLevelLayout = null;\n\n\t\tteam.hostStudent.state = pm.ControlledStudent.State.Connecting;\n\n\t\tfor (var i = 0; i < sendStudents.length; ++i)\n\t\t{\n\t\t\tdelete this._freeStudentsSelectedMap[sendStudents[i].host];\n\n\t\t\tsendStudents[i].state = pm.ControlledStudent.State.Connecting;\n\t\t\tthis._sendConnectToTeacherServerPacket(sendStudents[i]);\n\t\t}\n\n\t\tthis._refreshTeam(this._server.teams.length-1);\n\t},\n\n\t_okUnionLevel: function ()\n\t{\n\t\tvar numberInTeam = Number(this._unionInput.getString());\n\n\t\tthis._unionCount = Math.floor(this._freeStudents.length/numberInTeam);\n\n\t\tthis._unionGameIndex = this.chooseGameLevelLayout.gameIndex;\n\t\tthis._unionLevelIndex = this.chooseGameLevelLayout.levelIndex;\n\n\t\tthis.chooseGameLevelLayout.chooseLevelLayout.removeFromParent();\n\t\tthis.chooseGameLevelLayout.removeFromParent();\n\t\tthis.chooseGameLevelLayout.chooseLevelLayout = null;\n\t\tthis.chooseGameLevelLayout = null;\n\n\t\tthis._unionTeam();\n\t},\n\n\t_unionTeam: function()\n\t{\n\t\tif (this._unionCount <= 0)\n\t\t\treturn;\n\n\t\tvar numberInTeam = Number(this._unionInput.getString());\n\n\t\tvar sendStudents = [];\n\n\t\tvar removeList = [];\n\n\t\tfor (var i = 0; i < numberInTeam; ++i)\n\t\t{\n\t\t\tsendStudents.push(this._freeStudents[i]);\n\t\t\tremoveList.push(i);\n\t\t}\n\n\t\tfor (var i = 0; i < removeList.length; ++i)\n\t\t{\n\t\t\tthis._freeStudents.splice(removeList[i] - i, 1);\n\t\t\tthis._freeStudentsList.removeChild(this._freeStudentsList.getItem(removeList[i] - i));\n\t\t}\n\n\t\tvar server = sendStudents[0];\n\n\t\tvar team = new pm.ControlledTeam(server.host, server.name, this._unionGameIndex, this._unionLevelIndex);\n\n\t\tfor (var i = 1; i < sendStudents.length; ++i)\n\t\t\tteam.students.push(sendStudents[i]);\n\n\t\tthis._server.teams.push(team);\n\t\tthis._refreshChangeLevelMenu();\n\n\t\tvar teamGameLayout = new TeamGameLayout(team, this._teamList.getChildrenCount(), this._commonAutoChange);\n\t\tteamGameLayout.setIndexCallback(this._teamLayerCallback.bind(this));\n\n\t\tthis._teamList.pushBackCustomItem(teamGameLayout);\n\n\t\tteam.hostStudent.state = pm.ControlledStudent.State.Connecting;\n\n\t\tfor (var i = 0; i < sendStudents.length; ++i)\n\t\t{\n\t\t\tdelete this._freeStudentsSelectedMap[sendStudents[i].host];\n\n\t\t\tsendStudents[i].state = pm.ControlledStudent.State.Connecting;\n\t\t\tthis._sendConnectToTeacherServerPacket(sendStudents[i]);\n\t\t}\n\n\t\tthis._refreshTeam(this._server.teams.length-1);\n\n\t\t--this._unionCount;\n\n\t\tsetTimeout(this._unionTeam.bind(this), pm.UNION_GAME_TIMEOUT);\n\t},\n\n\t_editLevel: function()\n\t{\n\t\tthis.chooseGameLevelLayout = new ChooseLevelLayer(this._okEditLevel, this);\n\t\tcc.director.getRunningScene().addChild(this.chooseGameLevelLayout, 1000);\n\t},\n\n\t_showTime: function(sender, redraw)\n\t{\n\t\tif (redraw === undefined)\n\t\t\tredraw = false;\n\n\t\tif (!this._server.teams || this._server.teams.length === 0)\n\t\t\treturn;\n\n\t\tvar game = this._server.teams[0].game;\n\t\tvar width = world.getLevelCount(game);\n\t\tvar height = this._server.teams.length;\n\n\t\tvar matrix = [];\n\t\tvar string = [];\n\n\t\tstring.push(\"Ком.\");\n\n\t\tfor (var i = 0; i < world.getLevelCount(game); ++i)\n\t\t{\n\t\t\tstring.push(i+1 + ' ');\n\t\t}\n\n\t\tstring.push(\"Ит.\");\n\t\tstring.push(\"All\");\n\n\t\tmatrix.push(string);\n\n\t\tfor (var i = 0; i < height; ++i)\n\t\t{\n\t\t\tstring = [];\n\n\t\t\tvar team = this._server.teams[i];\n\n\t\t\tvar nameString = \"\";\n\n\t\t\tnameString += team.hostStudent.name.substring(0, 3);\n\n\t\t\tfor (var st = 0; st < this._server.teams[i].students.length; ++st)\n\t\t\t\tnameString += ', ' + this._server.teams[i].students[st].name.substring(0, 3);\n\n\t\t\tstring.push(nameString);\n\n\t\t\tvar totalTime = 0;\n\n\t\t\tfor (var j = 0; j < width; ++j)\n\t\t\t{\n\t\t\t\tif (!team.solvingTimes)\n\t\t\t\t{\n\t\t\t\t\tstring.push(\"0:0:0\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar timeOfSolving = team.solvingTimes[j];\n\n\t\t\t\tif (!timeOfSolving)\n\t\t\t\t\ttimeOfSolving = 0;\n\n\t\t\t\tvar solvingSeconds = timeOfSolving % 60;\n\n\t\t\t\tvar timeOfSolvingMinutes = Math.floor(timeOfSolving / 60);\n\t\t\t\tvar solvingMinutes = timeOfSolvingMinutes % 60;\n\n\t\t\t\tvar timeOfSolvingHours = Math.floor(timeOfSolvingMinutes / 60);\n\t\t\t\tvar solvingHours = timeOfSolvingHours % 60;\n\n\t\t\t\tvar tempStr = solvingHours+\":\"+solvingMinutes+\":\"+solvingSeconds;\n\n\t\t\t\tstring.push(tempStr);\n\t\t\t\ttotalTime += timeOfSolving;\n\t\t\t}\n\n\t\t\tsolvingSeconds = totalTime % 60;\n\n\t\t\ttimeOfSolvingMinutes = Math.floor(totalTime / 60);\n\t\t\tsolvingMinutes = timeOfSolvingMinutes % 60;\n\n\t\t\ttimeOfSolvingHours = Math.floor(timeOfSolvingMinutes / 60);\n\t\t\tsolvingHours = timeOfSolvingHours % 60;\n\n\t\t\tvar tempStr = solvingHours+\":\"+solvingMinutes+\":\"+solvingSeconds;\n\n\t\t\tstring.push(tempStr);\n\t\t\tstring.push(totalTime);\n\n\t\t\tmatrix.push(string);\n\t\t}\n\n\t\tthis._sortMatrix(matrix, matrix.length, matrix[0].length);\n\n\t\tthis._drawTimeLayout(matrix, redraw);\n\t},\n\n\t_drawTimeLayout: function (matrix, redraw)\n\t{\n\t\tif (this._timeLayout)\n\t\t{\n\t\t\tthis._timeLayout.removeFromParent();\n\t\t\tthis._timeLayout = null;\n\n\t\t\tif (redraw)\n\t\t\t\tthis._drawTimeTable(matrix);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!redraw)\n\t\t\t\tthis._drawTimeTable(matrix);\n\t\t}\n\t},\n\n\t_drawTimeTable: function(matrix)\n\t{\n\t\tthis._timeLayout = new pmui.OvalLayout(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tvar timeAlign = new ccui.RelativeLayoutParameter();\n\t\ttimeAlign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\tthis._timeLayout.setLayoutParameter(timeAlign);\n\n\t\tvar maxWidth = 0;\n\t\tvar maxHeight = 0;\n\t\tvar completedLevels = [];\n\n\t\tvar game = this._server.teams[0].game;\n\t\tvar levelCount = world.getLevelCount(game);\n\t\tfor (var i = 0; i < matrix.length; ++i)\n\t\t{\n\t\t\tvar notCompletedLevels = 0;\n\t\t\tfor (var j = 0; j < matrix[i].length; ++j)\n\t\t\t{\n\t\t\t\tvar child = new ccui.Text(matrix[i][j], pm.settings.fontName, 18);\n\t\t\t\tmaxWidth = Math.max(maxWidth, child.width);\n\t\t\t\tmaxHeight = Math.max(maxHeight, child.height);\n\n\t\t\t\tif (matrix[i][j] === '0:0:0' && j !== matrix[i].length - 2)\n\t\t\t\t\t++notCompletedLevels;\n\t\t\t}\n\n\t\t\tcompletedLevels[i] = levelCount - notCompletedLevels;\n\t\t}\n\n\t\tvar cellSize = cc.size(maxWidth, maxHeight);\n\t\tvar separatorSize = cc.size(5, 5);\n\t\tthis.timeTable = new pmui.TableView(cellSize, separatorSize, matrix.length, matrix[0].length + 1, false);\n\n\t\tvar timeTableAlign = new ccui.RelativeLayoutParameter();\n\t\ttimeTableAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\ttimeTableAlign.setMargin(0, pmui.OvalLayout.SLIM_BORDER_RADIUS, 0, 0);\n\t\tthis.timeTable.setLayoutParameter(timeTableAlign);\n\n\t\tfor (var i = 0; i < matrix.length; ++i)\n\t\t{\n\t\t\tvar elem = \"\";\n\t\t\telem += matrix[i][0];\n\n\t\t\tvar child = new ccui.Text(elem, pm.settings.fontName, 18);\n\t\t\tthis.timeTable.setCell(i, 0, child);\n\n\t\t\tif (i === 0)\n\t\t\t\telem = \"№\";\n\t\t\telse\n\t\t\t\telem = i;\n\n\t\t\tchild = new ccui.Text(elem, pm.settings.fontName, 18);\n\t\t\tthis.timeTable.setCell(i, 1, child);\n\n\t\t\tif (i === 0)\n\t\t\t\telem = \"Кол.\";\n\t\t\telse\n\t\t\t\telem = completedLevels[i];\n\n\t\t\tchild = new ccui.Text(elem, pm.settings.fontName, 18);\n\t\t\tthis.timeTable.setCell(i, 2, child);\n\n\t\t\tfor (var j = 1; j < matrix[i].length - 1; ++j)\n\t\t\t{\n\t\t\t\telem = matrix[i][j];\n\n\t\t\t\tchild = new ccui.Text(elem, pm.settings.fontName, 18);\n\t\t\t\tthis.timeTable.setCell(i, j + 2, child);\n\t\t\t}\n\t\t}\n\n\t\tthis.timeTable.setContentSize((cellSize.width + separatorSize.width) * (matrix[0].length + 1) + separatorSize.width,\n\t\t\t(cellSize.height + separatorSize.height) * matrix.length);\n\t\tthis._timeLayout.setContentSizeWithBorder(Math.min(this.timeTable.getContentSize().width, pm.settings.getScreenSize().width), this._workHeight);\n\n\t\tthis._timeLayout.addChild(this.timeTable);\n\t\tthis.addChild(this._timeLayout, 100);\n\t},\n\n\t_compareStrings: function(a, n, m, i1, i2)\n\t{\n\t\tvar notCompletedLevels1 = 0;\n\t\tvar notCompletedLevels2 = 0;\n\n\t\tfor (var j = 0; j < m; ++j)\n\t\t{\n\t\t\tif (a[i1][j] === '0:0:0')\n\t\t\t\t++notCompletedLevels1;\n\t\t\tif (a[i2][j] === '0:0:0')\n\t\t\t\t++notCompletedLevels2;\n\t\t}\n\n\t\tif (notCompletedLevels1 < notCompletedLevels2)\n\t\t\treturn 0;\n\t\telse if (notCompletedLevels1 > notCompletedLevels2)\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn a[i1][m-1] > a[i2][m-1];\n\t},\n\n\t_sortMatrix: function(a, n, m)\n\t{\n\t\tfor (var i = 0; i < n-1; ++i)\n\t\t{\n\t\t\tfor (var j = 1; j < n-1-i; ++j)\n\t\t\t{\n\t\t\t\tif (this._compareStrings(a, n, m, j, j+1))\n\t\t\t\t{\n\t\t\t\t\tfor (var k = 0; k < m; ++k)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar t = a[j][k];\n\t\t\t\t\t\ta[j][k] = a[j+1][k];\n\t\t\t\t\t\ta[j+1][k] = t;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_okEditLevel: function()\n\t{\n\t\tvar game = this.chooseGameLevelLayout.gameIndex;\n\t\tvar level = this.chooseGameLevelLayout.levelIndex;\n\n\t\tthis.chooseGameLevelLayout.removeFromParent();\n\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t{\n\t\t\tvar team = this._server.teams[i];\n\n\t\t\tteam.game = game;\n\t\t\tteam.level = level;\n\n\t\t\tvar item = this._teamList.getItem(i);\n\n\t\t\titem.setGameName(game);\n\t\t\titem.setLevelName(game, level);\n\n\t\t\tteam.state = pm.NetworkGameState.Develop;\n\t\t\tteam.statesMap = {};\n\n\t\t\tthis._teamLayerCallback(TeamGameLayout.EVENT.EDIT_LEVEL, i);\n\t\t}\n\t},\n\n\t_prevLevel: function()\n\t{\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t\tthis._teamLayerCallback(TeamGameLayout.EVENT.PREV_LEVEL, i);\n\t},\n\n\t_nextLevel: function()\n\t{\n\t\tfor (var i = 0; i < this._server.teams.length; ++i)\n\t\t\tthis._teamLayerCallback(TeamGameLayout.EVENT.NEXT_LEVEL, i);\n\t},\n\n\t_teamLayerCallback: function (event, t)\n\t{\n\t\tvar team = this._server.teams[t];\n\n\t\tif(!team)\n\t\t\treturn;\n\n\t\tswitch (event)\n\t\t{\n\t\t\tcase TeamGameLayout.EVENT.DESTROY_TEAM:\n\n\t\t\t\tif (team.hostStudent.client)\n\t\t\t\t\tthis._server.sendStopGame(team.hostStudent.client);\n\n\t\t\t\tfor (var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif (this._server.teams[t].students[c].client)\n\t\t\t\t\t\tthis._server.sendStopGame(this._server.teams[t].students[c].client);\n\t\t\t\t}\n\n\t\t\t\tteam.markDeleted = true;\n\n\t\t\t\tthis._refreshTeam(t);\n\n\t\t\t\tbreak;\n\n\t\t\tcase TeamGameLayout.EVENT.NEXT_LEVEL:\n\t\t\t\tif (team.level === world.getLevelCount(team.game) - 1)\n\t\t\t\t\tbreak;\n\t\t\t\telse\n\t\t\t\t\t++team.level;\n\n\t\t\t\tvar item = this._teamList.getItem(t);\n\n\t\t\t\titem.setGameName(team.game);\n\t\t\t\titem.setLevelName(team.game, team.level);\n\n\t\t\t\tteam.state = pm.NetworkGameState.Develop;\n\t\t\t\tteam.statesMap = {};\n\n\t\t\t\tteam.transitionFinished = false;\n\t\t\t\tthis._changeLevelMenu.setEnabledPrevLevelButton(false);\n\t\t\t\tthis._changeLevelMenu.setEnabledNextLevelButton(false);\n\n\t\t\t\tif (team.hostStudent.client)\n\t\t\t\t\tthis._server.sendChangeLevel(team.hostStudent.client, team.game, team.level);\n\n\t\t\t\tfor (var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif (this._server.teams[t].students[c].client)\n\t\t\t\t\t\tthis._server.sendChangeLevel(this._server.teams[t].students[c].client, team.game, team.level);\n\t\t\t\t}\n\n\t\t\t\tteam.clearPrograms();\n\t\t\t\tthis._refreshTeam(t);\n\n\t\t\t\tbreak;\n\t\t\tcase TeamGameLayout.EVENT.PREV_LEVEL:\n\t\t\t\tif (team.level === 0)\n\t\t\t\t\tbreak;\n\t\t\t\telse\n\t\t\t\t\t--team.level;\n\n\t\t\t\tvar item = this._teamList.getItem(t);\n\n\t\t\t\titem.setGameName(team.game);\n\t\t\t\titem.setLevelName(team.game, team.level);\n\n\t\t\t\tteam.state = pm.NetworkGameState.Develop;\n\t\t\t\tteam.statesMap = {};\n\n\t\t\t\tteam.transitionFinished = false;\n\t\t\t\tthis._changeLevelMenu.setEnabledPrevLevelButton(false);\n\t\t\t\tthis._changeLevelMenu.setEnabledNextLevelButton(false);\n\n\t\t\t\tif (team.hostStudent.client)\n\t\t\t\t\tthis._server.sendChangeLevel(team.hostStudent.client, team.game, team.level);\n\n\t\t\t\tfor (var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif (this._server.teams[t].students[c].client)\n\t\t\t\t\t\tthis._server.sendChangeLevel(this._server.teams[t].students[c].client, team.game, team.level);\n\t\t\t\t}\n\n\t\t\t\tteam.clearPrograms();\n\t\t\t\tthis._refreshTeam(t);\n\n\t\t\t\tbreak;\n\t\t\tcase TeamGameLayout.EVENT.EDIT_LEVEL:\n\t\t\t\tif (team.hostStudent.client)\n\t\t\t\t\tthis._server.sendChangeLevel(team.hostStudent.client, team.game, team.level);\n\n\t\t\t\tfor (var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif (this._server.teams[t].students[c].client)\n\t\t\t\t\t\tthis._server.sendChangeLevel(this._server.teams[t].students[c].client, team.game, team.level);\n\t\t\t\t}\n\n\t\t\t\tteam.clearPrograms();\n\t\t\t\tthis._refreshTeam(t);\n\t\t\t\tthis._refreshChangeLevelMenu();\n\n\t\t\t\tbreak;\n\t\t\tcase TeamGameLayout.EVENT.SEND_TIME_INFO:\n\t\t\t\tif (team.hostStudent.client)\n\t\t\t\t\tthis._server.sendTimeInfo(team.hostStudent.client, team.solvingTimes);\n\n\t\t\t\tfor (var c = 0; c < this._server.teams[t].students.length; ++c)\n\t\t\t\t{\n\t\t\t\t\tif (this._server.teams[t].students[c].client)\n\t\t\t\t\t\tthis._server.sendTimeInfo(this._server.teams[t].students[c].client, team.solvingTimes);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TeamGameLayout.EVENT.TRANSITION_FINISHED:\n\t\t\t\tthis._refreshChangeLevelMenu();\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n});\n\nvar ClassControlScene = cc.Scene.extend({\n\tonEnterTransitionDidFinish: function ()\n\t{\n\t\tthis._super();\n\t\tvar layer = new ClassControlLayer();\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n\npm.DISCOVER_EXPIRE_TIMEOUT = 3000;\npm.UNION_GAME_TIMEOUT = 1000;\npm.STUDENT_CONNECT_RETRY_TIMEOUT = 30000;\npm.STUDENT_LOST_TIMEOUT = 15000;\n\nClassControlLayer.BORDER = 15;\nClassControlLayer.SEPARATOR = 25;\nClassControlLayer.SMALL_SEPARATOR = 3;\nClassControlLayer.MEDIUM_SEPARATOR = 7;\nClassControlLayer.UPPER_MARGIN = 80;\nClassControlLayer.BOTTOM_MARGIN = 68;\nClassControlLayer.SEPARATOR_NUMBER = 3;\nClassControlLayer.CLASS_WIDTH_PERCENT = 0.25;\nClassControlLayer.GAME_WIDTH_PERCENT = 0.75;\nClassControlLayer.BORDER_RADIUS = 14;\nClassControlLayer.CONFIRM_LAYER_TAG = 4766;\n","/** Created by Kirill Mashchenko on 13.03.18. ...*/\n\n/**\n * @class Menu for changing level in Class Control\n * Can change to previous or next level. If new level is in another game, changes game.\n * @extends ChangeLevelMenu\n */\nvar ChangeLevelClassControl = ChangeLevelMenu.extend(/** @lends ChangeLevelClassControl# */{\n\n\t_target: null,\n\n\tbuttonAnimated: false,\n\n\tctor: function (target)\n\t{\n\t\tthis._super();\n\n\t\tthis._target = target;\n\n\t\tthis._nextLevelButton.setEnabled(true);\n\t\tthis._prevLevelButton.setEnabled(true);\n\n\t},\n\n _addLevelCountLabel: function() {},\n\n\t_nextLevel: function(sender)\n\t{\n\t\tthis._target._nextLevel();\n\t},\n\n\t_prevLevel: function(sender)\n\t{\n\t\tthis._target._prevLevel();\n\t},\n\n\t/**\n\t * Sets enabled state of previous level button.\n\t * @param {Boolean} flag\n\t */\n\tsetEnabledPrevLevelButton: function(flag)\n\t{\n\t\tthis._prevLevelButton.setEnabled(flag);\n\t},\n\n\t/**\n\t * Sets enabled state of next level button.\n\t * @param {Boolean} flag\n\t */\n\tsetEnabledNextLevelButton: function(flag)\n\t{\n\t\tthis._nextLevelButton.setEnabled(flag);\n\t}\n});\n","/** Created by Kirill Mashchenko on 09.08.17. ...*/\n\nvar TeamGameLayout = ccui.Layout.extend({\n\n\tteam: null,\n\t_teamList: null,\n\t_callback: null,\n\tstateOfRobot: null,\n\tstateText: null,\n\tchangeLevel: null,\n\tgameLabel: null,\n\tlevelLabel: null,\n\tcontrolLayout: null,\n\t_autoChange: true,\n\t_autoChangeCheckbox: null,\n\tchooseGameLevelLayout: null,\n\tlastDate: null,\n\ttimeList: null,\n\ttimeLayout: null,\n\n\tctor: function (team, index, autoChange)\n\t{\n\t\tthis._super();\n\n\t\tthis.team = team;\n\n\t\tthis.team.index = index;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setBackGroundImageCapInsets(cc.rect(14, 14, 14, 14));\n\t\tthis.setBackGroundImage(\"System/interfaceSmallBG.png\");\n\t\tthis.setBackGroundImageScale9Enabled(true);\n\t\tthis.setCascadeOpacityEnabled(true);\n\n\t\tvar teamLayout = new ccui.Layout();\n\t\tteamLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar teamAlign = new ccui.RelativeLayoutParameter();\n\t\tteamAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tteamAlign.setRelativeName(\"team\");\n\t\tteamAlign.setMargin(pmui.OvalLayout.SLIM_BORDER_RADIUS, pmui.OvalLayout.SLIM_BORDER_RADIUS, 0, 0);\n\t\tteamLayout.setLayoutParameter(teamAlign);\n\n\t\tthis._teamList = new ccui.ListView();\n\t\tthis._teamList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._teamList.setItemsMargin(3);\n\t\tthis._teamList.setGravity(0);\n\t\tthis._teamList.setScrollBarWidth(TeamGameLayout.SCROLL_BAR_WIDTH);\n\t\tthis._teamList.setPropagateTouchEvents(false);\n\n\t\tvar teamListAlign = new ccui.RelativeLayoutParameter();\n\t\tteamListAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tteamListAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, 0, 0);\n\t\tthis._teamList.setLayoutParameter(teamListAlign);\n\n\t\tvar serverChild = new TeamStudentLayout(team.hostStudent.name);\n\t\tthis._teamList.pushBackCustomItem(serverChild);\n\n\t\tvar maxWidth = serverChild.width;\n\n\t\tfor (var i = 0; i < team.students.length; ++i)\n\t\t{\n\t\t\tvar child = new TeamStudentLayout(team.students[i].name);\n\t\t\tthis._teamList.pushBackCustomItem(child);\n\n\t\t\tmaxWidth = Math.max(maxWidth, child.width);\n\t\t}\n\n\t\tthis.controlLayout = new ccui.Layout();\n\t\tthis.controlLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar controlAlign = new ccui.RelativeLayoutParameter();\n\t\tcontrolAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN);\n\t\tcontrolAlign.setRelativeName(\"control\");\n\t\tcontrolAlign.setRelativeToWidgetName(\"team\");\n\t\tcontrolAlign.setMargin(TeamGameLayout.BORDER, 0, 0, 0);\n\t\tthis.controlLayout.setLayoutParameter(controlAlign);\n\n\t\tvar cutNumber = 35;\n\n\t\tif(cc.sys.isMobile)\n\t\t\tcutNumber = 31;\n\n\t\tthis.gameLabel = new ccui.Text(world.getGameName(team.game).substring(0, cutNumber), pm.settings.fontName, 18);\n\t\tvar gameAlign = new ccui.RelativeLayoutParameter();\n\t\tgameAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgameAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, 0, 0);\n\t\tgameAlign.setRelativeName(\"Game\");\n\t\tthis.gameLabel.setLayoutParameter(gameAlign);\n\t\tthis.controlLayout.addChild(this.gameLabel);\n\n\t\tvar controlHeight = TeamGameLayout.SMALL_SEPARATOR + this.gameLabel.height;\n\n\t\tthis.levelLabel = new ccui.Text(world.getLevelName(team.game, team.level).substring(0, cutNumber), pm.settings.fontName, 18);\n\t\tvar levelAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelAlign.setRelativeToWidgetName(\"Game\");\n\t\tlevelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tlevelAlign.setMargin(0, 0, 0, 0);\n\t\tlevelAlign.setRelativeName(\"Level\");\n\t\tthis.levelLabel.setLayoutParameter(levelAlign);\n\t\tthis.controlLayout.addChild(this.levelLabel);\n\n\t\tcontrolHeight += this.levelLabel.height;\n\n\t\tthis.stateText = new ccui.Text(LocalizedString(pm.NetworkGameState.Develop), pm.settings.fontName, 18);\n\t\tvar stateAlign = new ccui.RelativeLayoutParameter();\n\t\tstateAlign.setRelativeToWidgetName(\"Level\");\n\t\tstateAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tstateAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, 0, 0);\n\t\tstateAlign.setRelativeName(\"State\");\n\t\tthis.stateText.setLayoutParameter(stateAlign);\n\t\tthis.controlLayout.addChild(this.stateText);\n\n\t\tcontrolHeight += TeamGameLayout.SMALL_SEPARATOR + this.stateText.height;\n\n\t\tthis._autoChange = autoChange;\n\n\t\tthis._autoChangeCheckbox = new pmui.CheckBox(LocalizedString(\"AutoChange\"), this._autoChangeLevel, this, 18, this._autoChange);\n\n\t\tvar autoChangeAlign = new ccui.RelativeLayoutParameter();\n\t\tautoChangeAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tautoChangeAlign.setRelativeName(\"autoChange\");\n\t\tautoChangeAlign.setRelativeToWidgetName(\"State\");\n\t\tautoChangeAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, 0, 0);\n\t\tthis._autoChangeCheckbox.setLayoutParameter(autoChangeAlign);\n\t\tthis.controlLayout.addChild(this._autoChangeCheckbox);\n\n\t\tcontrolHeight += TeamGameLayout.SMALL_SEPARATOR + this._autoChangeCheckbox.height;\n\n\t\tthis._teamList.setContentSize(maxWidth + TeamGameLayout.BORDER, controlHeight);\n\t\tteamLayout.addChild(this._teamList);\n\t\tteamLayout.setContentSize(maxWidth, controlHeight);\n\t\tthis.addChild(teamLayout);\n\n\t\tthis.controlLayout.setContentSize(this._autoChangeCheckbox.width, controlHeight);\n\t\tthis.addChild(this.controlLayout);\n\n\t\tvar buttonLayout = new ccui.Layout();\n\t\tbuttonLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar buttonAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL);\n\t\tbuttonAlign.setMargin(0, 0, pmui.OvalLayout.SLIM_BORDER_RADIUS, 0);\n\t\tbuttonLayout.setLayoutParameter(buttonAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tthis.changeLevel = new ChangeLevelClassControl(this);\n\n\t\tvar changeLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tchangeLevelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tchangeLevelAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, TeamGameLayout.SMALL_SEPARATOR, 0);\n\t\tchangeLevelAlign.setRelativeName(\"Change\");\n\t\tthis.changeLevel.setLayoutParameter(changeLevelAlign);\n\n\t\tthis.changeLevel.setScale(0.8);\n\t\tthis.changeLevel.setEnabledPrevLevelButton(this.team.level !== 0);\n\t\tthis.changeLevel.setEnabledNextLevelButton(this.team.level !== world.getLevelCount(this.team.game) - 1);\n\n\t\tbuttonLayout.addChild(this.changeLevel);\n\n\t\tthis.lastDate = new Date();\n\t\tthis.timeLayout = null;\n\n\t\tvar showTimeButton = new pmui.Button(pm.spriteUtils.getIconName(\"time\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"time\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"time\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar timeAlign = new ccui.RelativeLayoutParameter();\n\t\ttimeAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\ttimeAlign.setMargin(0, TeamGameLayout.SMALL_SEPARATOR, 0, 0);\n\t\ttimeAlign.setRelativeName(\"Time\");\n\t\ttimeAlign.setRelativeToWidgetName(\"Change\");\n\t\tshowTimeButton.setLayoutParameter(timeAlign);\n\n\t\tshowTimeButton.addClickEventListener(this.drawTimeLayout.bind(this));\n\t\tbuttonLayout.addChild(showTimeButton, 0);\n\n\t\tvar editLevel = new pmui.Button(pm.spriteUtils.getIconName(\"edit\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"edit\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\teditLevel.addClickEventListener(this._editLevel.bind(this));\n\t\teditLevel.setScale(0.8);\n\n\t\tvar editLevelAlign = new ccui.RelativeLayoutParameter();\n\t\teditLevelAlign.setRelativeName(\"Edit\");\n\t\teditLevelAlign.setRelativeToWidgetName(\"Time\");\n\t\teditLevelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\teditLevelAlign.setMargin(0, 0, TeamGameLayout.BUTTON_SEPARATOR, 0);\n\t\teditLevel.setLayoutParameter(editLevelAlign);\n\n\t\tbuttonLayout.addChild(editLevel);\n\n\t\tvar destroyTeam = new pmui.Button(pm.spriteUtils.getIconName(\"deleteTeam\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteTeam\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteTeam\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tdestroyTeam.addClickEventListener(this._destroyTeam.bind(this));\n\n\t\tvar destroyTeamAlign = new ccui.RelativeLayoutParameter();\n\t\tdestroyTeamAlign.setRelativeToWidgetName(\"Edit\");\n\t\tdestroyTeamAlign.setRelativeName(\"Destroy\");\n\t\tdestroyTeamAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\tdestroyTeamAlign.setMargin(0, 0, TeamGameLayout.BUTTON_SEPARATOR, 0);\n\t\tdestroyTeam.setLayoutParameter(destroyTeamAlign);\n\n\t\tbuttonLayout.addChild(destroyTeam);\n\n\t\tbuttonLayout.setContentSize(3*destroyTeam.width + 2 * TeamGameLayout.BUTTON_SEPARATOR,\n\t\t\t\tthis.changeLevel.height + destroyTeam.height + TeamGameLayout.SMALL_SEPARATOR);\n\n\t\tvar workSpaceWidth = pm.settings.getScreenSize().width - ClassControlLayer.SEPARATOR_NUMBER * ClassControlLayer.SEPARATOR;\n\t\tvar teamLayoutWidth = workSpaceWidth * ClassControlLayer.GAME_WIDTH_PERCENT - 2 * ClassControlLayer.BORDER;\n\t\tthis.setContentSize(teamLayoutWidth - 2 * TeamGameLayout.BORDER, controlHeight + TeamGameLayout.MEDIUM_SEPARATOR);\n\t},\n\n\tdrawTimeLayout: function ()\n\t{\n\t\tif (this.timeLayout)\n\t\t{\n\t\t\tthis.timeLayout.removeFromParent();\n\t\t\tthis.timeLayout = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.timeLayout = new pmui.OvalLayout(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\t\tvar timeAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttimeAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\t\ttimeAlign.setMargin(ClassControlLayer.MEDIUM_SEPARATOR, 0, 0, 0);\n\t\t\tthis.timeLayout.setLayoutParameter(timeAlign);\n\n\t\t\tthis.timeList = new ccui.ListView();\n\t\t\tthis.timeList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\t\tthis.timeList.setItemsMargin(TeamGameLayout.ITEM_SEPARATOR);\n\t\t\tthis.timeList.setGravity(0);\n\t\t\tthis.timeList.setScrollBarWidth(TeamGameLayout.SCROLL_BAR_WIDTH);\n\t\t\tthis.timeList.setPropagateTouchEvents(false);\n\n\t\t\tvar timeListAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttimeListAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\t\ttimeListAlign.setMargin(pmui.OvalLayout.SLIM_BORDER_RADIUS, pmui.OvalLayout.SLIM_BORDER_RADIUS, 0, 0);\n\t\t\tthis.timeList.setLayoutParameter(timeListAlign);\n\n\t\t\tvar maxWidth = 0;\n\n\t\t\tif (this.team.solvingTimes)\n\t\t\t{\n\t\t\t\tfor (var o in this.team.solvingTimes)\n\t\t\t\t{\n\t\t\t\t\tvar timeOfSolving = this.team.solvingTimes[o];\n\t\t\t\t\tvar solvingSeconds = timeOfSolving % 60;\n\n\t\t\t\t\tvar timeOfSolvingMinutes = Math.floor(timeOfSolving / 60);\n\t\t\t\t\tvar solvingMinutes = timeOfSolvingMinutes % 60;\n\n\t\t\t\t\tvar timeOfSolvingHours = Math.floor(timeOfSolvingMinutes / 60);\n\t\t\t\t\tvar solvingHours = timeOfSolvingHours % 60;\n\n\t\t\t\t\tvar string = solvingHours+\":\"+solvingMinutes+\":\"+solvingSeconds+\";\";\n\n\t\t\t\t\tvar child = new ccui.Text(LocalizedString(\"Level\")+\": \"+o+\"; \"+string, pm.settings.fontName, 18);\n\t\t\t\t\tthis.timeList.pushBackCustomItem(child);\n\n\t\t\t\t\tmaxWidth = Math.max(maxWidth, child.width);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvar noTimeLabel = new ccui.Text(LocalizedString(\"NoCompleted\"), pm.settings.fontName, 18);\n\t\t\t\tthis.timeList.pushBackCustomItem(noTimeLabel);\n\n\t\t\t\tmaxWidth = Math.max(maxWidth, noTimeLabel.width);\n\t\t\t}\n\n\t\t\tthis.timeList.setContentSize(maxWidth, this.controlLayout.height - TeamGameLayout.MEDIUM_SEPARATOR);\n\t\t\tthis.timeLayout.setContentSizeWithBorder(maxWidth, this.controlLayout.height - TeamGameLayout.MEDIUM_SEPARATOR);\n\n\t\t\tthis.timeLayout.addChild(this.timeList);\n\t\t\tthis.addChild(this.timeLayout, 100);\n\t\t}\n\t},\n\n\t_autoChangeLevel: function(flag)\n\t{\n\t\tthis._autoChange = flag;\n\n\t\tif (this._autoChange && this.team.state === pm.NetworkGameState.ReadyToChangeLevel)\n\t\t\tthis._nextLevel();\n\t},\n\n\tsetAutoConnect: function(flag)\n\t{\n\t\tthis._autoChangeCheckbox.setChecked(flag);\n\t\tthis._autoChangeLevel(flag);\n\t},\n\n\tsetIndexCallback: function (callback)\n\t{\n\t\tthis._callback = callback;\n\t},\n\n\trefresh: function()\n\t{\n\t\tif (!this.team.state)\n\t\t\tthis.team.state = pm.NetworkGameState.Develop;\n\n\t\tvar state = pm.NetworkGameState.Develop;\n\n\t\tvar changeState = true;\n\n\t\tif(this.team.hostStudent.client && this.team.hostStudent.client.getId())\n\t\t\tstate = this.team.statesMap[this.team.hostStudent.client.getId()];\n\n\t\tfor(var s = 0; s < this.team.students.length; ++s)\n\t\t{\n\t\t\tif(this.team.students[s].client && this.team.students[s].client.getId())\n\t\t\t{\n\t\t\t\tif (this.team.statesMap[this.team.students[s].client.getId()] !== state)\n\t\t\t\t\tchangeState = false;\n\t\t\t}\n\t\t}\n\n\t\tif (changeState)\n\t\t{\n\t\t\tif (!state)\n\t\t\t\tstate = pm.NetworkGameState.Develop;\n\n\t\t\tthis.stateText.setString(LocalizedString(this.team.markDeleted ? \"NetTeamDeleted\" : state));\n\t\t\tthis.team.state = state;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.stateText.setString(LocalizedString(this.team.markDeleted ? \"NetTeamDeleted\" : this.team.state));\n\t\t}\n\n\t\tthis.controlLayout.forceDoLayout();\n\n\t\tvar isLastLevel = this.team.level === world.getLevelCount(this.team.game) - 1;\n\t\tthis.changeLevel.setEnabledPrevLevelButton(this.team.transitionFinished && this.team.level !== 0);\n\t\tthis.changeLevel.setEnabledNextLevelButton(this.team.transitionFinished && !isLastLevel);\n\n\t\tif (this.team.transitionFinished && this._callback)\n\t\t\tthis._callback(TeamGameLayout.EVENT.TRANSITION_FINISHED, this.team.index);\n\n\t\tif (this.team.state === pm.NetworkGameState.ReadyToChangeLevel)\n\t\t{\n\t\t\tvar currentDate = new Date();\n\n\t\t\tvar timeOfSolving = Math.floor((currentDate - this.lastDate) / 1000);\n\n\t\t\tif (!this.team.solvingTimes)\n\t\t\t\tthis.team.solvingTimes = {};\n\n\t\t\tthis.team.solvingTimes[this.team.level] = timeOfSolving;\n\n\t\t\tthis.lastDate = new Date();\n\n\t\t\tpm.sendCustomEvent(pm.UPDATE_TIME_TABLE);\n\n\t\t\tif (!isLastLevel)\n\t\t\t{\n\t\t\t\tif (this._autoChange)\n\t\t\t\t\tthis._nextLevel();\n\t\t\t\telse\n\t\t\t\t\tthis.changeLevel.animateNextLevelButton();\n\t\t\t}\n\n\t\t\tif(this._callback)\n\t\t\t\tthis._callback(TeamGameLayout.EVENT.SEND_TIME_INFO, this.team.index);\n\t\t}\n\t\telse if (!isLastLevel)\n\t\t{\n\t\t\tthis.changeLevel.stopAnimateNextLevelButton();\n\t\t}\n\n\t\tvar serverItem = this._teamList.getItem(0);\n\n\t\tif(serverItem)\n\t\t{\n\t\t\tserverItem.label.setString(this.team.hostStudent.name);\n\t\t\tserverItem.status.loadTexture(this._getStudentStateSprite(this.team.hostStudent.state), ccui.Widget.PLIST_TEXTURE);\n\t\t\tserverItem.host.setVisible(true);\n\t\t\tserverItem.refresh();\n\t\t}\n\n\t\tfor(var i = 0; i < this.team.students.length; ++i)\n\t\t{\n\t\t\tvar item = this._teamList.getItem(i + 1);\n\n\t\t\tif(!item)\n\t\t\t{\n\t\t\t\titem = new TeamStudentLayout(this.team.students[i].name);\n\t\t\t\tthis._teamList.pushBackCustomItem(item);\n\t\t\t}\n\n\t\t\titem.label.setString(this.team.students[i].name);\n\t\t\titem.status.loadTexture(this._getStudentStateSprite(this.team.students[i].state), ccui.Widget.PLIST_TEXTURE);\n\t\t\titem.host.setVisible(false);\n\t\t\titem.refresh();\n\t\t}\n\t},\n\n\t_getStudentStateSprite: function(state)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\t\tcase pm.ControlledStudent.State.ConnectedToGame: return pm.spriteUtils.getInterfaceElementName(\"lightGreen\");\n\t\t\tcase pm.ControlledStudent.State.Disconnected: return pm.spriteUtils.getInterfaceElementName(\"lightRed\");\n\t\t\tcase pm.ControlledStudent.State.Connected:\n\t\t\tcase pm.ControlledStudent.State.Connecting:\n\t\t\tcase pm.ControlledStudent.State.PendingReconnect: return pm.spriteUtils.getInterfaceElementName(\"lightBlue\");\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tsetGameName: function(gameIndex)\n\t{\n\t\tvar cutNumber = 40;\n\t\tif(cc.sys.isMobile)\n\t\t\tcutNumber = 31;\n\n\t\tthis.gameLabel.setString(world.getGameName(gameIndex).substring(0, cutNumber));\n\t\tthis.controlLayout.forceDoLayout();\n\t},\n\n\tsetLevelName: function (gameIndex, levelIndex)\n\t{\n\t\tvar cutNumber = 40;\n\t\tif(cc.sys.isMobile)\n\t\t\tcutNumber = 31;\n\n\t\tthis.levelLabel.setString(world.getLevelName(gameIndex, levelIndex).substring(0, cutNumber));\n\t\tthis.controlLayout.forceDoLayout();\n\t},\n\n\t_destroyTeam: function ()\n\t{\n\t\tif(this._callback)\n\t\t\tthis._callback(TeamGameLayout.EVENT.DESTROY_TEAM, this.team.index);\n\t},\n\n\t_nextLevel: function(sender)\n\t{\n\t\tthis.stateText.setString(LocalizedString(pm.NetworkGameState.Develop));\n\t\tthis.changeLevel.stopAnimateNextLevelButton();\n\t\tthis.changeLevel.setEnabledPrevLevelButton(false);\n\t\tthis.changeLevel.setEnabledNextLevelButton(false);\n\n\t\tif(this._callback)\n\t\t\tthis._callback(TeamGameLayout.EVENT.NEXT_LEVEL, this.team.index);\n\t},\n\n\t_prevLevel: function(sender)\n\t{\n\t\tthis.stateText.setString(LocalizedString(pm.NetworkGameState.Develop));\n\t\tthis.changeLevel.stopAnimateNextLevelButton();\n\t\tthis.changeLevel.setEnabledPrevLevelButton(false);\n\t\tthis.changeLevel.setEnabledNextLevelButton(false);\n\n\t\tif(this._callback)\n\t\t\tthis._callback(TeamGameLayout.EVENT.PREV_LEVEL, this.team.index);\n\t},\n\n\t_editLevel: function()\n\t{\n\t\tthis.stateText.setString(LocalizedString(pm.NetworkGameState.Develop));\n\n\t\tthis.chooseGameLevelLayout = new ChooseLevelLayer(this._okEditLevel, this);\n\t\tcc.director.getRunningScene().addChild(this.chooseGameLevelLayout, 1000);\n\t},\n\n\t_okEditLevel: function()\n\t{\n\t\tthis.team.game = this.chooseGameLevelLayout.gameIndex;\n\t\tthis.team.level = this.chooseGameLevelLayout.levelIndex;\n\n\t\tthis.setGameName(this.team.game);\n\t\tthis.setLevelName(this.team.game, this.team.level);\n\n\t\tthis.chooseGameLevelLayout.removeFromParent();\n\n\t\tthis.team.state = pm.NetworkGameState.Develop;\n\t\tthis.team.statesMap = {};\n\n\t\tif(this._callback)\n\t\t\tthis._callback(TeamGameLayout.EVENT.EDIT_LEVEL, this.team.index);\n\t}\n});\n\nTeamGameLayout.EVENT = {\n\tDESTROY_TEAM: 0,\n\tNEXT_LEVEL: 1,\n\tPREV_LEVEL: 2,\n\tEDIT_LEVEL: 3,\n\tSEND_TIME_INFO: 4,\n\tTRANSITION_FINISHED: 5\n};\n\nvar TeamStudentLayout = ccui.Layout.extend({\n\n\tlabel: null,\n\tstatus: null,\n\thost: null,\n\n\tctor: function (studentName)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.host = new ccui.ImageView(pm.spriteUtils.getInterfaceElementName(\"starHost\"), ccui.Widget.PLIST_TEXTURE);\n\t\tthis.host.setVisible(false);\n\n\t\tvar hostAlign = new ccui.RelativeLayoutParameter();\n\t\thostAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\thostAlign.setRelativeName(\"host\");\n\t\thostAlign.setMargin(TeamGameLayout.MEDIUM_SEPARATOR, 0, 0, 0);\n\t\tthis.host.setLayoutParameter(hostAlign);\n\n\t\tthis.addChild(this.host);\n\n\t\tthis.label = new ccui.Text(studentName, pm.settings.fontName, 18);\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabelAlign.setRelativeToWidgetName(\"host\");\n\t\tlabelAlign.setMargin(TeamGameLayout.MEDIUM_SEPARATOR, 0, 0, 0);\n\t\tthis.label.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(this.label);\n\n\t\tthis.status = new ccui.ImageView(pm.spriteUtils.getInterfaceElementName(\"lightRed\"), ccui.Widget.PLIST_TEXTURE);\n\t\tvar statusAlign = new ccui.RelativeLayoutParameter();\n\t\tstatusAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL);\n\t\tstatusAlign.setMargin(0, 0, TeamGameLayout.MEDIUM_SEPARATOR, 0);\n\t\tthis.status.setLayoutParameter(statusAlign);\n\n\t\tthis.setContentSize(this.host.width + TeamGameLayout.NAME_LIMIT + this.status.width + 4 * TeamGameLayout.MEDIUM_SEPARATOR,\n\t\t\tMath.max(this.host.height, this.label.height, this.status.height));\n\n\t\tthis.addChild(this.status);\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis.forceDoLayout();\n\t}\n});\n\nTeamGameLayout.SMALL_SEPARATOR = 5;\nTeamGameLayout.MEDIUM_SEPARATOR = 10;\nTeamGameLayout.BUTTON_SEPARATOR = 8;\nTeamGameLayout.ITEM_SEPARATOR = 1;\nTeamGameLayout.BORDER = 15;\nTeamGameLayout.NAME_LIMIT = 120;\nTeamGameLayout.SCROLL_BAR_WIDTH = 8;\n","/** Created by Kirill Mashchenko on 02.04.18. ...*/\n\n/**\n * @class Layer for choosing level\n * @extends ccui.Layout\n */\n\nvar ChooseLevelLayer = pmui.OvalLayout.extend(/** @lends ChooseGameLevelLayout# */{\n\n\tgameArray: [],\n\tgameIndex: -1,\n\tlevelIndex: -1,\n\t_callback: null,\n\t_target: null,\n\tchooseLevelLayout: null,\n\n\tctor: function (callback, target)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.THIN);\n\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\n\t\tvar screenSize = pm.settings.getScreenSize();\n\n\t\tvar chooseGameLevelWidth = ChooseLevelLayer.WIDTH_PERCENT * screenSize.width;\n\t\tvar chooseGameLevelHeight = ChooseLevelLayer.HEIGHT_PERCENT * screenSize.height;\n\n\t\tthis.setContentSizeWithBorder(chooseGameLevelWidth, chooseGameLevelHeight);\n\t\tthis.setPosition((screenSize.width - this.width) / 2, (screenSize.height - this.height) / 2);\n\n\t\tthis.gameArray = [];\n\n\t\tfor(var i = 0; i < world.getGameCount(); ++i)\n\t\t\tthis.gameArray.push(world.getGameName(i));\n\n\t\tvar chooseGameLayout = new ccui.Layout();\n\t\tchooseGameLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tchooseGameLayout.setContentSize(chooseGameLevelWidth / 2, chooseGameLevelHeight);\n\n\t\tvar chooseGameAlign = new ccui.RelativeLayoutParameter();\n\t\tchooseGameAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tchooseGameAlign.setMargin(ChooseLevelLayer.BORDER_RADIUS, ChooseLevelLayer.BORDER_RADIUS, 0, 0);\n\t\tchooseGameLayout.setLayoutParameter(chooseGameAlign);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\n\t\tvar cancelAlign = new ccui.RelativeLayoutParameter();\n\t\tcancelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tcancelAlign.setMargin(ChooseLevelLayer.BORDER, 0, 0, ChooseLevelLayer.BORDER - ChooseLevelLayer.SMALL_SEPARATOR);\n\t\tcancel.setLayoutParameter(cancelAlign);\n\n\t\tchooseGameLayout.addChild(cancel);\n\n\t\tvar chooseGameList = new pmui.SelectionListView(this.gameArray,\n\t\t\tcc.size(chooseGameLevelWidth * ChooseLevelLayer.WIDTH_GAME_PERCENT - 2 * ChooseLevelLayer.BORDER,\n\t\t\t\tchooseGameLevelHeight - cancel.height - 2 * ChooseLevelLayer.BORDER));\n\t\tchooseGameList.setIndexCallback(this.gameSelected, this);\n\n\t\tvar chooseGameListAlign = new ccui.RelativeLayoutParameter();\n\t\tchooseGameListAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tchooseGameListAlign.setMargin(ChooseLevelLayer.BORDER, ChooseLevelLayer.BORDER, 0, 0);\n\t\tchooseGameList.setLayoutParameter(chooseGameListAlign);\n\n\t\tchooseGameLayout.addChild(chooseGameList);\n\n\t\tthis.addChild(chooseGameLayout);\n\t},\n\n\t_cancel: function ()\n\t{\n\t\tif (this.chooseLevelLayout)\n\t\t{\n\t\t\tthis.chooseLevelLayout.removeFromParent();\n\t\t\tthis.chooseLevelLayout = null;\n\t\t}\n\n\t\tthis.removeFromParent();\n\t},\n\n\tgameSelected: function (index)\n\t{\n\t\tvar game = index;\n\t\tthis.gameIndex = index;\n\t\tthis.levelIndex = 0;\n\t\tthis.levelArray = [];\n\n\t\tfor (var i = 0; i < world.getLevelCount(game); ++i)\n\t\t\tthis.levelArray.push(world.getLevelName(game, i) + \", \" + world.games[game].levels[i].robots.length + \" \" + LocalizedString(\"RobotCount\"));\n\n\t\tif (this.chooseLevelLayout)\n\t\t{\n\t\t\tthis.chooseLevelLayout.removeFromParent();\n\t\t\tthis.chooseLevelLayout = null;\n\t\t}\n\n\t\tvar screenSize = pm.settings.getScreenSize();\n\t\tvar chooseLevelWidth = ChooseLevelLayer.WIDTH_PERCENT * screenSize.width * ChooseLevelLayer.WIDTH_LEVEL_PERCENT;\n\t\tvar chooseLevelHeight = ChooseLevelLayer.HEIGHT_PERCENT * screenSize.height;\n\n\t\tthis.chooseLevelLayout = new ccui.Layout();\n\t\tthis.chooseLevelLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.chooseLevelLayout.setContentSize(chooseLevelWidth, chooseLevelHeight);\n\n\t\tvar chooseLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tchooseLevelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tchooseLevelAlign.setMargin(0, ChooseLevelLayer.BORDER_RADIUS, ChooseLevelLayer.BORDER_RADIUS, 0);\n\t\tthis.chooseLevelLayout.setLayoutParameter(chooseLevelAlign);\n\n\t\tvar okLevel = new pmui.InterfaceButton(this._okLevel, this, LocalizedString(\"OK\"));\n\n\t\tvar okLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tokLevelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tokLevelAlign.setMargin(0, 0, ChooseLevelLayer.BORDER, ChooseLevelLayer.BORDER - ChooseLevelLayer.SMALL_SEPARATOR);\n\t\tokLevel.setLayoutParameter(okLevelAlign);\n\n\t\tthis.chooseLevelLayout.addChild(okLevel);\n\n\t\tvar chooseLevelList = new pmui.SelectionListView(this.levelArray,\n\t\t\tcc.size(chooseLevelWidth - 2 * ChooseLevelLayer.BORDER, chooseLevelHeight - okLevel.height - 2 * ChooseLevelLayer.BORDER));\n\t\tchooseLevelList.setIndexCallback(this.levelSelected, this);\n\n\t\tvar chooseLevelListAlign = new ccui.RelativeLayoutParameter();\n\t\tchooseLevelListAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tchooseLevelListAlign.setMargin(0, ChooseLevelLayer.BORDER, 0, 0);\n\t\tchooseLevelList.setLayoutParameter(chooseLevelListAlign);\n\n\t\tthis.chooseLevelLayout.addChild(chooseLevelList);\n\t\tthis.addChild(this.chooseLevelLayout);\n\t},\n\n\tlevelSelected: function (index)\n\t{\n\t\tthis.levelIndex = index;\n\t},\n\n\t_okLevel: function()\n\t{\n\t\tif(this._callback)\n\t\t\tthis._callback.call(this._target);\n\t}\n\n});\n\nChooseLevelLayer.WIDTH_PERCENT = 0.7;\nChooseLevelLayer.HEIGHT_PERCENT = 0.53;\nChooseLevelLayer.WIDTH_GAME_PERCENT = 0.4;\nChooseLevelLayer.WIDTH_LEVEL_PERCENT = 0.6;\nChooseLevelLayer.BORDER = 10;\nChooseLevelLayer.BORDER_RADIUS = 15;\nChooseLevelLayer.SMALL_SEPARATOR = 5;\n","/**\n * Created by danilaeremin on 10.08.15.\n */\n\n/**\n * @class Layer for map settings.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {Number} level Current level\n */\nvar MapElementsLayer = LevelSettingsLayer.extend(/** @lends MapElementsLayer# */{\n\t_mapElementTypes: [],\n\tmapElementsTable: null,\n\t_extraSettings: null,\n\tlevel: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tthis.level = level;\n\t\tthis._mapElementTypes = [];\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Map\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tvar height = label.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar delta = 0;\n\n\t\tif (level.activeMap instanceof Map2D && level.activeMap.hasWalls())\n\t\t{\n\t\t\tvar editWalls = new pmui.CheckBox(LocalizedString(\"EditWalls\"), function (flag) { for (var i = 0; i < level.maps.length; ++i) level.maps[i].editWalls = flag; }, this, 17, true);\n\t\t\theight += editWalls.height + LevelSettingsLayer.SEPARATOR;\n\n\t\t\tvar wallsAlign = new ccui.RelativeLayoutParameter();\n\t\t\twallsAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\twallsAlign.setRelativeName(\"walls\");\n\t\t\twallsAlign.setRelativeToWidgetName(\"label\");\n\t\t\twallsAlign.setMargin((-LevelSettingsLayer.WIDTH + label.width)/2 + 30, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t\teditWalls.setLayoutParameter(wallsAlign);\n\n\t\t\tthis.addChild(editWalls);\n\n\t\t\tdelta = editWalls.height;\n\t\t}\n\n\t\tvar borderMargin = (-LevelSettingsLayer.WIDTH + label.width) / 2 + 30;\n\n\t\tvar mapElementsType = pm.moduleUtils.getMapElementsType(level.getType());\n\n\t\tif (mapElementsType && Object.keys(mapElementsType).length > 0)\n\t\t{\n\t\t\tvar i = 0;\n\n\t\t\tvar maxElementsCountPerRaw = MapElementsLayer.maxElementsCountPerRaw;\n\n\t\t\tvar separator = cc.size(5, 5);\n\t\t\tvar cellSize = cc.size((LevelSettingsLayer.WIDTH - 2 * 15 - 3 * separator.width - 2 * LevelSettingsLayer.BORDER_RADIUS) / maxElementsCountPerRaw,\n\t\t\t\t(LevelSettingsLayer.WIDTH - 2 * 15 - 3 * separator.width - 2 * LevelSettingsLayer.BORDER_RADIUS) / maxElementsCountPerRaw);\n\n\t\t\tvar rows = Math.floor((Object.keys(mapElementsType).length - 1) / maxElementsCountPerRaw) + (((Object.keys(mapElementsType).length - 1) % maxElementsCountPerRaw === 0) ? 0 : 1);\n\n\t\t\tthis.mapElementsTable = new pmui.SelectTableView(cellSize, separator, rows, maxElementsCountPerRaw);\n\t\t\tthis.mapElementsTable.addSelectEventListener(this._selectMapElementCallback, this);\n\t\t\tthis.mapElementsTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\t\tthis.mapElementsTable.setFitObjectsSizes(true);\n\n\t\t\tthis.mapElementsTable.setContentSize(LevelSettingsLayer.WIDTH - 2 * borderMargin,\n\t\t\t\tcellSize.height * Math.min(rows, 3) + separator.height * Math.min(rows, 3) + LevelSettingsLayer.SEPARATOR);\n\n\t\t\theight += this.mapElementsTable.height + 2 * LevelSettingsLayer.SEPARATOR;\n\n\t\t\tvar scrollAlign = new ccui.RelativeLayoutParameter();\n\t\t\tscrollAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\tscrollAlign.setRelativeName(\"scroll\");\n\t\t\tscrollAlign.setRelativeToWidgetName(\"label\");\n\t\t\tscrollAlign.setMargin(borderMargin - 7, 2 * LevelSettingsLayer.SEPARATOR + delta, 0, 0);\n\t\t\tthis.mapElementsTable.setLayoutParameter(scrollAlign);\n\n\t\t\tthis.addChild(this.mapElementsTable);\n\n\t\t\tfor (var el in mapElementsType)\n\t\t\t{\n\t\t\t\tif (!mapElementsType.hasOwnProperty(el) || mapElementsType[el] === mapElementsType.None) continue;\n\n\t\t\t\tthis._mapElementTypes.push(mapElementsType[el]);\n\n\t\t\t\tvar element = new ccui.ImageView(pm.spriteUtils.getMapGrassTileName(mapElementsType[el]), ccui.Widget.PLIST_TEXTURE);\n\n\t\t\t\tthis.mapElementsTable.setCell(Math.floor(i / maxElementsCountPerRaw), i % maxElementsCountPerRaw, element);\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tdelta += this.mapElementsTable.height + 2 * LevelSettingsLayer.SEPARATOR;\n\t\t}\n\t\tthis._extraSettings = pm.moduleUtils.getExtraMapSettings(level.getType(), this);\n\n\t\tif (this._extraSettings)\n\t\t{\n\t\t\tvar extraAlign = new ccui.RelativeLayoutParameter();\n\t\t\textraAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\t\textraAlign.setRelativeToWidgetName(\"label\");\n\t\t\textraAlign.setMargin(borderMargin, delta + LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\t\tthis._extraSettings.layout.setLayoutParameter(extraAlign);\n\n\t\t\tthis.addChild(this._extraSettings.layout);\n\n\t\t\theight += this._extraSettings.layout.height + 2 * LevelSettingsLayer.SEPARATOR;\n\t\t}\n\n\t\theight += LevelSettingsLayer.SEPARATOR + LevelSettingsLayer.BORDER_RADIUS;\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, height);\n\n\t\tpm.registerCustomEventListener(pme.ADD_ROBOT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tif (this.mapElementsTable)\n\t\t\t\tthis.mapElementsTable.deselectAll();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.ADD_OBJECT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tif (this.mapElementsTable)\n\t\t\t\tthis.mapElementsTable.deselectAll();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, function(event)\n\t\t{\n\t\t\tif (this.mapElementsTable && event.getUserData() !== MapLayersEditActions.DeleteCurrent)\n\t\t\t\tthis.mapElementsTable.deselectAll();\n\t\t}.bind(this), this);\n\t},\n\n\t_selectMapElementCallback: function (selectedMapElement)\n\t{\n\t\tif (this._extraSettings && this._extraSettings.callback)\n\t\t\tthis._extraSettings.callback.call();\n\n\t\tif (selectedMapElement)\n\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, this._mapElementTypes[selectedMapElement.x * MapElementsLayer.maxElementsCountPerRaw + selectedMapElement.y]);\n\t\telse\n\t\t\tpm.sendCustomEvent(pme.MAP_ELEMENT_SELECT_EVENT_STR, undefined);\n\t}\n});\n\nMapElementsLayer.maxElementsCountPerRaw = 4;\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * @class Layer for task settings.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n */\nvar TaskSettingsLayer = LevelSettingsLayer.extend(/** @lends TaskSettingsLayer# */{\n\n\t_taskList: null,\n\t_availableTaskList: null,\n\t_addTaskSelect: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Tasks\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar addLayout = new ccui.HBox();\n\n\t\tvar addLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\taddLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\taddLayoutAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\taddLayoutAlign.setRelativeName(\"select\");\n\t\taddLayoutAlign.setRelativeToWidgetName(\"label\");\n\t\taddLayout.setLayoutParameter(addLayoutAlign);\n\n\t\tthis._addTaskSelect = new pmui.ComboBox([], this, this._selectTaskOnSelect, 20);\n\n\t\tvar addButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t// addButton.setScale(0.7);\n\t\taddButton.addClickEventListener(this._addTask.bind(this));\n\n\t\tvar addButtonAlign = new ccui.LinearLayoutParameter();\n\t\taddButtonAlign.setMargin(5, 5, 0, 0);\n\t\taddButton.setLayoutParameter(addButtonAlign);\n\n\t\taddLayout.addChild(this._addTaskSelect);\n\t\taddLayout.addChild(addButton);\n\t\taddLayout.setContentSize(addButton.width + this._addTaskSelect.width,\n\t\t\tMath.max(addButton.height, this._addTaskSelect.height));\n\n\t\tthis.addChild(addLayout, 1);\n\n\t\tvar height = (TaskSettingsLayer.HEIGHT - label.height - addLayout.height) - 10;\n\n\t\tthis._taskList = new ccui.ListView();\n\t\tthis._taskList.setContentSize(LevelSettingsLayer.WIDTH, height);\n\t\tthis._taskList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._taskList.setScrollBarOpacity(255 * 0.9);\n\t\tthis._taskList.setScrollBarWidth(5);\n\t\tthis._taskList.setItemsMargin(5);\n\n\t\tvar listAlign = new ccui.RelativeLayoutParameter();\n\t\tlistAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tlistAlign.setRelativeToWidgetName(\"select\");\n\t\tthis._taskList.setLayoutParameter(listAlign);\n\n\t\tthis.addChild(this._taskList);\n\n\t\tthis._fillTaskList();\n\t\tthis._generateAvailableTaskList();\n\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, TaskSettingsLayer.HEIGHT);\n\n\t\tpm.registerCustomEventListener(pme.ADD_GLOBAL_ROBOT, this._onAddGlobalRobot.bind(this), this);\n\t\tpm.registerCustomEventListener(pme.REMOVE_GLOBAL_ROBOT, this._onRemoveGlobalRobot.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.MAP_DRAGGED_EVENT_STR, function (event) {\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data)\n\t\t\t\tthis._refreshTasks(data.index);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.MAP_CHANGED_EVENT_STR,function (event) {\n\t\t\tvar data = event.getUserData();\n\t\t\tif(data)\n\t\t\t\tthis._refreshTasks(data.index);\n\t\t}.bind(this), this);\n\t},\n\n\t_fillTaskList: function()\n\t{\n\t\tfor(var taskType in this._level.taskList.tasks)\n\t\t{\n\t\t\tvar task = this._level.taskList.tasks[taskType];\n\n\t\t\tif(!(task instanceof pm.Task))\n\t\t\t\tcontinue;\n\n\t\t\tvar layer = this._generateLayerForTask(taskType, task);\n\n\t\t\tif(layer)\n\t\t\t{\n\t\t\t\tthis._taskList.pushBackCustomItem(layer);\n\t\t\t\tlayer.addDeleteCallback(this._removeTask, this);\n\t\t\t}\n\t\t}\n\t},\n\n\t_generateLayerForTask: function(taskType, task)\n\t{\n\t\tswitch (taskType)\n\t\t{\n\t\t\tcase pm.GlobalTaskType.Position4: return new PositionTask4Layer(this._level, task);\n\t\t\tcase pm.GlobalTaskType.ExCounterMemory: return new ExCounterMemoryTaskLayer(this._level, task);\n\t\t\tcase pm.GlobalTaskType.OutputValue: return new OutputTaskLayer(this._level, task);\n\t\t\tdefault:\n\t\t\t\treturn pm.moduleUtils.generateTaskLayer(taskType, this._level, task);\n\t\t}\n\t},\n\n\t_generateAvailableTaskList: function()\n\t{\n\t\tvar labels = [];\n\t\tthis._availableTaskList = [];\n\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tif (this._level.maps[i] instanceof SquarableMap)\n\t\t\t{\n\t\t\t\tthis._availableTaskList.push(pm.GlobalTaskType.Position4);\n\t\t\t\tlabels.push(LocalizedString(\"EndPoint\"));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tvar type = pm.moduleUtils.getModuleType(this._level.getType());\n\t\tthis._availableTaskList.push(type);\n\n\t\tvar label = pm.moduleUtils.getTaskLabel(this._level.getType());\n\t\tlabels.push(LocalizedString(label));\n\n\t\tvar extendedCounter = this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter];\n\n\t\tif(extendedCounter)\n\t\t{\n\t\t\tthis._availableTaskList.push(pm.GlobalTaskType.ExCounterMemory);\n\t\t\tlabels.push(LocalizedString(\"ExCounterMemoryTask\"));\n\t\t}\n\t\tvar outputRobot = this._level.globalRobotConfig[pm.GlobalRobotType.Output];\n\n\t\tif(outputRobot)\n\t\t{\n\t\t\tthis._availableTaskList.push(pm.GlobalTaskType.OutputValue);\n\t\t\tlabels.push(LocalizedString(\"OutputTask\"));\n\t\t}\n\n\t\tvar parent = this._addTaskSelect.getParent();\n\t\tvar parentWidth = this._addTaskSelect.getParent().width;\n\t\tparentWidth -= this._addTaskSelect.width;\n\n\t\tthis._addTaskSelect.setValueList(labels);\n\t\tparentWidth += this._addTaskSelect.width;\n\n\t\tthis._addTaskSelect.getParent().setContentSize(parentWidth, parent.height);\n\n\t\tif(parent.getParent())\n\t\t\tparent.getParent().requestDoLayout();\n\t},\n\n\t_addTask: function()\n\t{\n\t\tvar taskType = this._availableTaskList[this._addTaskSelect.getSelectedIndex()];\n\n\t\tvar items = this._taskList.getItems();\n\t\tvar found = false;\n\n\t\tfor(var i = 0 ; i < items.length; ++i)\n\t\t{\n\t\t\tif(items[i].getTaskType() === taskType)\n\t\t\t{\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(!found)\n\t\t{\n\t\t\tvar task = null;\n\n\t\t\tswitch (taskType)\n\t\t\t{\n\t\t\t\tcase pm.GlobalTaskType.Position4:\n\t\t\t\t\ttask = new pm.data.PositionTask4(this._level);\n\n\t\t\t\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar mapWidth = this._level.maps[i].width;\n\t\t\t\t\t\tvar mapHeight = this._level.maps[i].height;\n\n\t\t\t\t\t\ttask.fillWithInitialData(i, cc.p(mapWidth-1, mapHeight-1));\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._level.taskList.addTask(taskType, task);\n\n\t\t\t\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t\t\tthis._level.maps[i].mapLayer.checkPositionTasks();\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.GlobalTaskType.ExCounterMemory:\n\t\t\t\t\ttask = new pm.data.ExCounterMemoryTask(this._level);\n\n\t\t\t\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t\t\ttask.fillWithInitialData(i, 0);\n\n\t\t\t\t\tthis._level.taskList.addTask(taskType, task);\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.GlobalTaskType.OutputValue:\n\t\t\t\t\ttask = new pm.data.OutputTask(this._level);\n\n\t\t\t\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\t\t\t\ttask.fillWithInitialData(i, 0);\n\n\t\t\t\t\tthis._level.taskList.addTask(taskType, task);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ttask = pm.moduleUtils.addLevelTask(taskType, this._level);\n\n\t\t\t}\n\n\t\t\tvar layer = this._generateLayerForTask(taskType, task);\n\n\t\t\tif(layer)\n\t\t\t{\n\t\t\t\tthis._taskList.pushBackCustomItem(layer);\n\t\t\t\tlayer.addDeleteCallback(this._removeTask, this);\n\t\t\t}\n\t\t}\n\t},\n\n\t_onAddGlobalRobot: function(robot)\n\t{\n\t\tif(robot.getUserData().getType() === pm.GlobalRobotType.ExtendedCounter || robot.getUserData().getType() === pm.GlobalRobotType.Output)\n\t\t\tthis._generateAvailableTaskList();\n\t},\n\n\t_onRemoveGlobalRobot: function(robot)\n\t{\n\t\tif(robot.getUserData().getType() === pm.GlobalRobotType.ExtendedCounter)\n\t\t{\n\t\t\tthis._generateAvailableTaskList();\n\n\t\t\tif(this._level.taskList[pm.GlobalTaskType.ExCounterMemory])\n\t\t\t\tdelete this._level.taskList[pm.GlobalTaskType.ExCounterMemory];\n\n\t\t\tvar items = this._taskList.getItems();\n\n\t\t\tfor(var i = 0 ; i < items.length; ++i)\n\t\t\t{\n\t\t\t\tif(items[i].getTaskType() === pm.GlobalTaskType.ExCounterMemory)\n\t\t\t\t{\n\t\t\t\t\tthis._taskList.removeItem(i);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_refreshTasks: function(mapIndex)\n\t{\n\t\tvar items = this._taskList.getItems();\n\n\t\tfor(var i = 0 ; i < items.length; ++i)\n\t\t\titems[i].refresh(mapIndex);\n\t},\n\n\t_removeTask: function(sender)\n\t{\n\t\tthis._level.taskList.deleteTask(sender.getTaskType());\n\t\tthis._taskList.removeChild(sender);\n\t},\n\n\t_selectTaskOnSelect: function(index) {}\n});\n\nTaskSettingsLayer.HEIGHT = 260;\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for new objects.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {pm.AbstractLevel} level Level which settings shows\n */\nvar ObjectsSettingsLayer = LevelSettingsLayer.extend(/** @lends ObjectsSettingsLayer# */{\n\t_robotsTable: null,\n\t_objectsTable: null,\n\t_robots: [],\n\t_objects: [],\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tvar levelType = level.getType();\n\n\t\tthis._robots = [];\n\t\tthis._objects = [];\n\n\t\tvar label = new ccui.Text(LocalizedString(\"Objects\"), pm.settings.fontName, pm.settings.fontSize);\n\t\tvar height = label.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar objects = pm.moduleUtils.getObjectsInfo(levelType);\n\t\tvar robots = pm.moduleUtils.getRobotsInfo(levelType);\n\n\t\tvar maxElementsCountPerRaw = 3;\n\n\t\tvar separator = cc.size(5, 5);\n\t\tvar cellSize = cc.size( ( LevelSettingsLayer.WIDTH - 2*20 - 2*separator.width - 2*LevelSettingsLayer.BORDER_RADIUS ) / maxElementsCountPerRaw,\n\t\t\t( LevelSettingsLayer.WIDTH - 2*20 - 2*separator.width - 2*LevelSettingsLayer.BORDER_RADIUS ) / maxElementsCountPerRaw);\n\n\t\tvar robotRows = Math.floor((Object.keys(robots).length + 1) / maxElementsCountPerRaw) + (((Object.keys(robots).length + 1) % maxElementsCountPerRaw === 0) ? 0 : 1 );\n\t\tvar objectRows = Math.floor(Object.keys(objects).length / maxElementsCountPerRaw) + ((Object.keys(objects).length % maxElementsCountPerRaw === 0) ? 0 : 1 );\n\n\t\tthis._robotsTable = new pmui.SelectTableView(cellSize, separator, robotRows, maxElementsCountPerRaw);\n\t\tthis._robotsTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tthis._robotsTable.setFitObjectsSizes(true);\n\t\tthis._robotsTable.addSelectEventListener(this._selectRobot, this);\n\n\t\tthis._robotsTable.setContentSize(LevelSettingsLayer.WIDTH - 4*LevelSettingsLayer.BORDER_RADIUS,\n\t\t\tcellSize.height * Math.min(robotRows, 1) + separator.height * Math.min(robotRows, 1) + LevelSettingsLayer.SEPARATOR);\n\t\theight += this._robotsTable.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar robotScrollAlign = new ccui.RelativeLayoutParameter();\n\t\trobotScrollAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\trobotScrollAlign.setRelativeName(\"robotScroll\");\n\t\trobotScrollAlign.setRelativeToWidgetName(\"label\");\n\t\trobotScrollAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._robotsTable.setLayoutParameter(robotScrollAlign);\n\n\t\tthis.addChild(this._robotsTable);\n\n\t\tthis._objectsTable = new pmui.SelectTableView(cellSize, separator, objectRows, maxElementsCountPerRaw);\n\t\tthis._objectsTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tthis._objectsTable.setFitObjectsSizes(true);\n\t\tthis._objectsTable.addSelectEventListener(this._selectObject, this);\n\n\t\tthis._objectsTable.setContentSize(LevelSettingsLayer.WIDTH - 4*LevelSettingsLayer.BORDER_RADIUS,\n\t\t\tcellSize.height * Math.min(objectRows, 1) + separator.height * Math.min(objectRows, 1) + LevelSettingsLayer.SEPARATOR);\n\t\theight += this._objectsTable.height + LevelSettingsLayer.SEPARATOR;\n\n\t\tvar objectScrollAlign = new ccui.RelativeLayoutParameter();\n\t\tobjectScrollAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tobjectScrollAlign.setRelativeToWidgetName(\"robotScroll\");\n\t\tobjectScrollAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tthis._objectsTable.setLayoutParameter(objectScrollAlign);\n\n\t\tthis.addChild( this._objectsTable);\n\n\t\tfor (var robot in robots)\n\t\t\tpm.spriteUtils.addTempSpriteFrames(pm.moduleUtils.getRobotSpriteSheet(levelType, robot));\n\n\t\tvar i = 0;\n\n\t\tfor (var robot in robots)\n\t\t{\n\t\t\tthis._robots.push(robot);\n\t\t\tvar robotSprite = new ccui.ImageView(robots[robot], ccui.Widget.PLIST_TEXTURE);\n\t\t\tthis._robotsTable.setCell( Math.floor(i / maxElementsCountPerRaw), i % maxElementsCountPerRaw, robotSprite);\n\t\t\t++i;\n\t\t}\n\n\t\tthis._robots.push(\"clone\");\n\t\tthis._updateCloneSprite(robots[level.getCurrentRobot().getType()]);\n\n\t\ti = 0;\n\n\t\tfor (var object in objects)\n\t\t{\n\t\t\tthis._objects.push(object);\n\t\t\tvar objectSprite = new ccui.ImageView(objects[object], ccui.Widget.LOCAL_TEXTURE);\n\t\t\tthis._objectsTable.setCell( Math.floor(i / maxElementsCountPerRaw), i % maxElementsCountPerRaw, objectSprite);\n\t\t\t++i;\n\t\t}\n\n\t\theight += LevelSettingsLayer.SEPARATOR + LevelSettingsLayer.BORDER_RADIUS;\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, height);\n\n\t\tpm.registerCustomEventListener(pme.MAP_ELEMENT_SELECT_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis._objectsTable.deselectAll();\n\t\t\tthis._robotsTable.deselectAll();\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.ROBOT_TOUCH_EVENT_STR, function(event)\n\t\t{\n\t\t\tvar robot = event.getUserData();\n\t\t\tvar robotSprite = robots[robot.getType()];\n\n\t\t\tthis._updateCloneSprite(robotSprite);\n\t\t}.bind(this), this);\n\t},\n\n\t_selectRobot: function (selectedRobot)\n\t{\n\t\tthis._objectsTable.deselectAll();\n\n\t\tif (selectedRobot)\n\t\t{\n\t\t\tif (selectedRobot.x + selectedRobot.y !== this._robots.length - 1)\n\t\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT_SELECT_EVENT_STR, this._robots[selectedRobot.x * 3 + selectedRobot.y]);\n\t\t\telse\n\t\t\t\tpm.sendCustomEvent(pme.ADD_CLONE);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.sendCustomEvent(pme.ADD_ROBOT_SELECT_EVENT_STR, undefined);\n\t\t}\n\t},\n\n\t_selectObject: function (selectedObject)\n\t{\n\t\tthis._robotsTable.deselectAll();\n\n\t\tif (selectedObject)\n\t\t\tpm.sendCustomEvent(pme.ADD_OBJECT_SELECT_EVENT_STR, this._objects[selectedObject.x * 3 + selectedObject.y]);\n\t\telse\n\t\t\tpm.sendCustomEvent(pme.ADD_OBJECT_SELECT_EVENT_STR, undefined);\n\t},\n\n\t_updateCloneSprite: function(robotImage)\n\t{\n\t\tvar robotSprite = new ccui.ImageView(robotImage, ccui.Widget.PLIST_TEXTURE);\n\t\tvar clone = new ccui.ImageView(pm.spriteUtils.getInterfaceElementName(\"clone\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tclone.setAnchorPoint(cc.p(1, 0));\n\t\tclone.setPosition(robotSprite.width, 0);\n\t\trobotSprite.addChild(clone);\n\n\t\tvar index = this._robots.length - 1;\n\t\tvar maxElementsCountPerRaw = 3;\n\t\tthis._robotsTable.setCell(Math.floor(index / maxElementsCountPerRaw), index % maxElementsCountPerRaw, robotSprite);\n\t}\n});\n","/**\n * Created by danilaeremin on 11.08.15.\n */\n\n/**\n * @class Layer for robot settings.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {pm.AbstractLevel} level Level which settings shows\n */\nvar ActiveObjectSettingsLayer = LevelSettingsLayer.extend(/** @lends LoginLayer# */{\n\t_object: null,\n\t_settings: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tvar object = level.robots[level.startRobotIndex];\n\n\t\tthis.setObject(object);\n\n\t\tpm.registerCustomEventListener(pm.ROBOT_TOUCH_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis.setObject(event.getUserData());\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.MAP_DRAGGED_EVENT_STR, function(event)\n\t\t{\n\t\t\tthis.setObject(this._object);\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pm.PATTERN_CHANGED, function(event)\n\t\t{\n\t\t\tthis.setObject(event.getUserData());\n\t\t}.bind(this), this);\n\t},\n\n\t/**\n * Show settings of object\n * @param object Robot which settings needs to show\n */\n\tsetObject: function(object)\n\t{\n\t\tthis._object = object;\n\n\t\tthis._drawSettings(object);\n\t},\n\n\t_drawSettings: function (object)\n\t{\n\t\tif (this._settings !== null)\n\t\t\tthis.removeChild(this._settings);\n\n\t\tthis._settings = pm.moduleUtils.getSettings(this._object.parentLevel.getType(), this._object.getType(), object);\n\n\t\tvar settingsAlign = new ccui.LinearLayoutParameter();\n\t\tsettingsAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tsettingsAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, LevelSettingsLayer.BORDER_RADIUS);\n\t\tthis._settings.setLayoutParameter(settingsAlign);\n\n\t\tthis.addChild(this._settings);\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, this._settings.height);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 23.09.2017.\n */\n\n/**\n * @class Layer for global robots settings.\n * @extends LevelSettingsLayer\n * @constructor\n * @param {pm.AbstractLevel} level Level settings need to display.\n */\nvar GlobalRobotsSettingsLayer = LevelSettingsLayer.extend(/** @lends GlobalRobotsSettingsLayer# */{\n\n\t_robotList: null,\n\t_availableRobotList: null,\n\t_addRobotSelect: null,\n\t_robot: null,\n\n\tctor: function(level)\n\t{\n\t\tthis._super(level);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"GlobalRobots\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar addLayout = new ccui.HBox();\n\n\t\tvar addLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\taddLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\taddLayoutAlign.setMargin(0, LevelSettingsLayer.SEPARATOR, 0, 0);\n\t\taddLayoutAlign.setRelativeName(\"select\");\n\t\taddLayoutAlign.setRelativeToWidgetName(\"label\");\n\t\taddLayout.setLayoutParameter(addLayoutAlign);\n\n\t\tthis._addRobotSelect = new pmui.ComboBox([], this, this._selectRobotOnSelect, 20);\n\n\t\tvar addButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t// addButton.setScale(0.7);\n\t\taddButton.addClickEventListener(this._addRobot.bind(this));\n\n\t\tvar addButtonAlign = new ccui.LinearLayoutParameter();\n\t\taddButtonAlign.setMargin(5, 5, 0, 0);\n\t\taddButton.setLayoutParameter(addButtonAlign);\n\n\t\taddLayout.addChild(this._addRobotSelect);\n\t\taddLayout.addChild(addButton);\n\t\taddLayout.setContentSize(addButton.width + this._addRobotSelect.width,\n\t\t\tMath.max(addButton.height, this._addRobotSelect.height));\n\n\t\tthis.addChild(addLayout, 1);\n\n\t\tvar height = (GlobalRobotsSettingsLayer.HEIGHT - label.height - addLayout.height) - 10;\n\n\t\tthis._robotList = new ccui.ListView();\n\t\tthis._robotList.setContentSize(LevelSettingsLayer.WIDTH, height);\n\t\tthis._robotList.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._robotList.setScrollBarOpacity(255 * 0.9);\n\t\tthis._robotList.setScrollBarWidth(5);\n\t\tthis._robotList.setItemsMargin(5);\n\n\t\tvar listAlign = new ccui.RelativeLayoutParameter();\n\t\tlistAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tlistAlign.setRelativeToWidgetName(\"select\");\n\t\tthis._robotList.setLayoutParameter(listAlign);\n\n\t\tthis.addChild(this._robotList);\n\n\t\tthis._fillRobotList();\n\t\tthis._generateAvailableRobotList();\n\n\t\tthis.updateSize(LevelSettingsLayer.WIDTH, GlobalRobotsSettingsLayer.HEIGHT);\n\t},\n\n\t_fillRobotList: function()\n\t{\n\t\tvar existingRobotsTypes = [];\n\n\t\tfor (var i = 0; i < this._level.globalRobots.length; ++i)\n\t\t{\n\t\t\tvar robot = this._level.globalRobots[i];\n\t\t\tvar robotType = robot.getType();\n\n\t\t\tvar robotExist = false;\n\n\t\t\tfor (var j = 0; j < existingRobotsTypes.length; ++j)\n\t\t\t{\n\t\t\t\tif (robotType === existingRobotsTypes[j])\n\t\t\t\t{\n\t\t\t\t\trobotExist = true;\n\t\t\t\t\tthis._level.globalRobots.splice(i, 1);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (robotExist)\n\t\t\t\tcontinue;\n\n\t\t\texistingRobotsTypes.push(robotType);\n\n\t\t\tvar layer = this._generateLayerForRobot(robot);\n\n\t\t\tif(layer)\n\t\t\t\tthis._robotList.pushBackCustomItem(layer);\n\t\t}\n\t},\n\n\t_generateLayerForRobot: function(robot)\n\t{\n\t\tvar robotType = robot.getType();\n\t\tthis._robot = robot;\n\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.GlobalRobotType.Counter:\n\t\t\t\treturn new CounterLayer(this._level, robot, robotType);\n\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\t\t\t\treturn new ExtendedCounterLayer(this._level, robot, robotType);\n\t\t\tcase pm.GlobalRobotType.Output:\n\t\t\t\treturn new OutputLayer(this._level, robot, robotType);\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\treturn new FlagLayer(this._level, robot, robotType);\n\t\t}\n\t},\n\n\t_generateAvailableRobotList: function()\n\t{\n\t\tthis._availableRobotList = [];\n\n\t\tvar availableRobotsInformation = pm.appUtils.getAvailableGlobalRobots();\n\n\t\tvar labels = availableRobotsInformation.labels;\n\n\t\tfor (var i = 0; i < availableRobotsInformation.globalRobots.length; ++i)\n\t\t{\n\t\t\tthis._availableRobotList.push(availableRobotsInformation.globalRobots[i]);\n\t\t}\n\n\t\tvar parent = this._addRobotSelect.getParent();\n\t\tvar parentWidth = this._addRobotSelect.getParent().width;\n\t\tparentWidth -= this._addRobotSelect.width;\n\n\t\tthis._addRobotSelect.setValueList(labels);\n\t\tparentWidth += this._addRobotSelect.width;\n\n\t\tthis._addRobotSelect.getParent().setContentSize(parentWidth, parent.height);\n\n\t\tif(parent.getParent())\n\t\t\tparent.getParent().requestDoLayout();\n\t},\n\n\t_addRobot: function()\n\t{\n\t\tvar robotType = this._availableRobotList[this._addRobotSelect.getSelectedIndex()];\n\n\t\tvar items = this._robotList.getItems();\n\t\tvar found = false;\n\n\t\tfor(var i = 0 ; i < items.length; ++i)\n\t\t{\n\t\t\tif(items[i].getGlobalRobotType() === robotType)\n\t\t\t{\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(!found)\n\t\t{\n\t\t\tswitch (robotType)\n\t\t\t{\n\t\t\t\tcase pm.GlobalRobotType.Counter:\n\n\t\t\t\t\tif (this._level.globalRobotConfig[pm.GlobalRobotType.Counter] ||\n this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter])\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tpm.spriteUtils.initRobotTextures(null, pm.GlobalRobotType.Counter);\n\n\t\t\t\t\tvar counter = new pm.Counter();\n\t\t\t\t\tcounter.parentLevel = this._level;\n\n\t\t\t\t\tthis._level.globalRobots.push(counter);\n\t\t\t\t\tcounter.id = this._level.globalRobots.indexOf(counter);\n\n\t\t\t\t\tthis._level.globalRobotConfig[pm.GlobalRobotType.Counter] = {};\n\n\t\t\t\t\tpm.sendCustomEvent(pme.ADD_GLOBAL_ROBOT, counter);\n\n\t\t\t\t\tvar layer = this._generateLayerForRobot(counter);\n\t\t\t\t\tthis._robot = counter;\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.GlobalRobotType.Output:\n\n\t\t\t\t\tif (this._level.globalRobotConfig[pm.GlobalRobotType.Output])\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tpm.spriteUtils.initRobotTextures(null, pm.GlobalRobotType.Counter);\n\n\t\t\t\t\tvar counter = new pm.Output();\n\t\t\t\t\tcounter.parentLevel = this._level;\n\n\t\t\t\t\tthis._level.globalRobots.push(counter);\n\t\t\t\t\tcounter.id = this._level.globalRobots.indexOf(counter);\n\n\t\t\t\t\tthis._level.globalRobotConfig[pm.GlobalRobotType.Output] = {};\n\n\t\t\t\t\tpm.sendCustomEvent(pme.ADD_GLOBAL_ROBOT, counter);\n\n\t\t\t\t\tvar layer = this._generateLayerForRobot(counter);\n\t\t\t\t\tthis._robot = counter;\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.GlobalRobotType.ExtendedCounter:\n\n\t\t\t\t\tif (this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter] ||\n this._level.globalRobotConfig[pm.GlobalRobotType.Counter])\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tpm.spriteUtils.initRobotTextures(null, pm.GlobalRobotType.ExtendedCounter);\n\t\t\t\t\tvar counter = new pm.ExtendedCounter();\n\t\t\t\t\tcounter.parentLevel = this._level;\n\n\t\t\t\t\tthis._level.globalRobots.push(counter);\n\t\t\t\t\tcounter.id = this._level.globalRobots.indexOf(counter);\n\n\t\t\t\t\tthis._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter] = {useCompareConditions: true};\n\n\t\t\t\t\tcounter.configure(this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter]);\n\n\t\t\t\t\tpm.sendCustomEvent(pme.ADD_GLOBAL_ROBOT, counter);\n\n\t\t\t\t\tvar layer = this._generateLayerForRobot(counter);\n\t\t\t\t\tthis._robot = counter;\n\t\t\t\t\tbreak;\n\t\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\t\tpm.spriteUtils.initRobotTextures(null, robotType);\n\t\t\t\t\tvar robot = null;\n\t\t\t\t\tif (robotType === pm.GlobalRobotType.GreenFlag)\n\t\t\t\t\t\trobot = new pm.GreenFlagRobot();\n\t\t\t\t\telse\n\t\t\t\t\t\trobot = new pm.OrangeFlagRobot();\n\n\t\t\t\t\trobot.parentLevel = this._level;\n\n\t\t\t\t\tthis._level.globalRobots.push(robot);\n\t\t\t\t\trobot.id = this._level.globalRobots.indexOf(robot);\n\n\t\t\t\t\tthis._level.globalRobotConfig[robotType] = {};\n\n\t\t\t\t\tpm.sendCustomEvent(pme.ADD_GLOBAL_ROBOT, robot);\n\n\t\t\t\t\tvar layer = this._generateLayerForRobot(robot);\n\t\t\t\t\tthis._robot = robot;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(layer)\n\t\t\t\tthis._robotList.pushBackCustomItem(layer);\n\t\t}\n\t},\n\n\t_selectRobotOnSelect: function(index) {}\n\n});\n\nGlobalRobotsSettingsLayer.HEIGHT = 250;\n","/**\n * Created by Kirill Mashchenko on 23.09.2017.\n */\n\n/**\n * @class Common layer for global robot settings.\n * @extends ccui.Layout\n */\nvar GlobalRobotLayer = ccui.Layout.extend(/** @lends GlobalRobotLayer# */{\n\n\t_robotType: null,\n\n\t_robot: null,\n\n\tctor: function(header, robot, robotType)\n\t{\n\t\tthis._super();\n\n\t\tthis._robotType = robotType;\n\n\t\tthis._robot = robot;\n\n\t\tthis.setLayoutType(ccui.Layout.LINEAR_VERTICAL);\n\n\t\tvar headerLayout = new ccui.HBox();\n\t\tvar headerAlign = new ccui.LinearLayoutParameter();\n\t\theaderAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\theaderLayout.setLayoutParameter(headerAlign);\n\n\t\tvar label = new ccui.Text(header, pm.settings.fontName, pm.settings.fontSize);\n\t\tvar labelAlign = new ccui.LinearLayoutParameter();\n\t\tlabelAlign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tvar deleteButton = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tdeleteButton.setScale(0.7);\n\t\tdeleteButton.addClickEventListener(this._delete.bind(this));\n\n\t\theaderLayout.addChild(label);\n\t\theaderLayout.addChild(deleteButton);\n\t\tthis.addChild(headerLayout);\n\n\t\theaderLayout.setContentSize(deleteButton.width + label.width, Math.max(deleteButton.height, label.height));\n\t\tthis.setContentSize(LevelSettingsLayer.WIDTH, headerLayout.height);\n\t},\n\n\tgetGlobalRobotType: function()\n\t{\n\t\treturn this._robotType;\n\t},\n\n\t_delete: function()\n\t{\n\t\tthis._onRobotRemoved();\n\t\tthis._removeRobot();\n\t},\n\n\t_removeRobot: function()\n\t{\n\t\tvar level = this._robot.parentLevel;\n\t\tdelete level.globalRobotConfig[this._robot.getType()];\n\n\t\tfor (var i = 0; i < level.globalRobots.length; ++i)\n\t\t{\n\t\t\tif (this._robot.id === level.globalRobots[i].id)\n\t\t\t\tlevel.globalRobots.splice(i, 1);\n\t\t}\n\n\t\tpm.sendCustomEvent(pme.REMOVE_GLOBAL_ROBOT, this._robot);\n\n\t\tthis.getParent().getParent().removeChild(this);\n\t},\n\n\t_onRobotRemoved: function(){},\n\n\trefresh: function() {}\n\n});\n","/**\n * Created by Kirill Mashchenko on 23.09.2017.\n */\n\nvar CounterLayer = GlobalRobotLayer.extend(/** @lends CounterLayer# */{\n\n\tctor: function (level, robot, robotType)\n\t{\n\t\tthis._super(LocalizedString(\"SimpleCounter\"), robot, robotType);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 23.09.2017.\n */\n\nvar OutputLayer = GlobalRobotLayer.extend(/** @lends CounterLayer# */{\n\n\tctor: function (level, robot, robotType)\n\t{\n\t\tthis._super(LocalizedString(\"OutputLayer\"), robot, robotType);\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 23.09.2017.\n */\n\nvar ExtendedCounterLayer = GlobalRobotLayer.extend(/** @lends ExtendedCounterLayer# */{\n\n\t_level: null,\n\t_robot: null,\n\n\tctor: function (level, robot, robotType)\n\t{\n\t\tthis._super(LocalizedString(\"DoubleCounter\"), robot, robotType);\n\t\tthis._level = level;\n\t\tthis._robot = robot;\n\n\t\tvar check = new pmui.CheckBox(LocalizedString(\"UseCompare\"), this._useCompare, this, 15, this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter].useCompareConditions);\n\n\t\tvar checkAlign = new ccui.LinearLayoutParameter();\n\t\tcheckAlign.setGravity(ccui.LinearLayoutParameter.TOP);\n\t\tcheckAlign.setMargin(30, 10, 0, 0);\n\t\tcheck.setLayoutParameter(checkAlign);\n\t\tthis.addChild(check);\n\n\t\tthis.setContentSize(this.width, this.height + check.height + 10);\n\t},\n\n\t_useCompare: function (flag)\n\t{\n\t\tthis._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter].useCompareConditions = flag;\n\t\tthis._robot.reconfigure(this._level.globalRobotConfig[pm.GlobalRobotType.ExtendedCounter]);\n\n\t\tpm.sendCustomEvent(pme.REDRAW_GLOBAL_ROBOT, this._robot);\n\n\t}\n});\n","/**\n * Created by Kirill Mashchenko on 25.01.18.\n */\n\nvar FlagLayer = GlobalRobotLayer.extend(/** @lends GreenFlagLayer# */{\n\n\tctor: function (level, robot, robotType)\n\t{\n\t\tswitch (robotType)\n\t\t{\n\t\t\tcase pm.GlobalRobotType.OrangeFlag:\n\t\t\t\tthis._super(LocalizedString(\"OrangeFlag\"), robot, robotType);\n\t\t\t\tbreak;\n\t\t\tcase pm.GlobalRobotType.GreenFlag:\n\t\t\t\tthis._super(LocalizedString(\"GreenFlag\"), robot, robotType);\n\t\t\t\tbreak;\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * @class Layer for position4 task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PositionTask4} task\n */\n\nvar PositionTask4Layer = TaskLayer.extend(/** @lends PositionTask4Layer# */{\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"EndPoint\"), level, task, pm.GlobalTaskType.Position4);\n\n\t\tpm.registerCustomEventListener(pme.ADD_ROBOT, this._robotAdded.bind(this), this);\n\t\tpm.registerCustomEventListener(pme.REMOVE_ROBOT, this._robotRemoved.bind(this), this);\n\t},\n\n\t_onTaskRemoved: function()\n\t{\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\tthis._level.maps[i].mapLayer.removePositionMarks();\n\t},\n\n\t_robotRemoved: function(event)\n\t{\n\t\tvar robot = event.getUserData();\n\n\t\tfor(var i = 0 ; i < this._level.maps.length; ++i)\n\t\t\tdelete this._task.data[i][robot.id];\n\t},\n\n\t_robotAdded: function(event)\n\t{\n\t\tvar robot = event.getUserData();\n\n\t\tfor(var i = 0 ; i < this._level.maps.length; ++i)\n\t\t{\n\t\t\tvar mapWidth = this._level.maps[i].width;\n\t\t\tvar mapHeight = this._level.maps[i].height;\n\n\t\t\tthis._task.data[i][robot.id] = cc.p(mapWidth-1, mapHeight-1);\n\t\t\tthis._level.maps[i].mapLayer.checkPositionTasks();\n\t\t}\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 29.03.16.\n */\n\n/**\n * @class Layer for extended counter memory task.\n * @extends TaskLayer\n * @constructor\n * @param {pm.AbstractLevel} level\n * @param {pm.data.PushTask} task\n */\n\nvar ExCounterMemoryTaskLayer = TaskLayer.extend(/** @lends ExCounterMemoryTaskLayer# */{\n\n\t_memoryValue: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"ExCounterMemoryTask\"), level, task, pm.GlobalTaskType.ExCounterMemory);\n\n\t\tvar layout = new ccui.HBox();\n\t\tvar layoutAlign = new ccui.LinearLayoutParameter();\n\t\tlayoutAlign.setMargin(5, 5, 0, 0);\n\t\tlayout.setLayoutParameter(layoutAlign);\n\n\t\tvar valueLabel = new pmui.Text(LocalizedString(\"MemoryValue\"), pm.settings.fontSize);\n\t\tlayout.addChild(valueLabel);\n\n\t\t//TODO Support robot groups\n\t\tvar value = this._task.data[this._level.getActiveMapIndex()][0];\n\n\t\tthis._memoryValue = new pmui.TextInput(String(value), \"0\", 15, 40);\n\n\t\tvar memoryValueAlign = new ccui.LinearLayoutParameter();\n\t\tmemoryValueAlign.setMargin(5, 0, 0, 0);\n\t\tthis._memoryValue.setLayoutParameter(memoryValueAlign);\n\t\tlayout.addChild(this._memoryValue);\n\n\t\tthis._memoryValue.setInsertTextCallback(this, this._memoryValueChanged);\n\n\t\tlayout.setContentSize(this.width, Math.max(valueLabel.height, this._memoryValue.height));\n\t\tthis.addChild(layout);\n\n\t\tvar height = this.height + layout.height + 10;\n\n\t\tthis.setContentSize(this.width, height);\n\t},\n\n\t_memoryValueChanged: function()\n\t{\n\t\tthis._task.data[this._level.getActiveMapIndex()][0] = Number(this._memoryValue.getString());\n\t},\n\n\trefresh: function()\n\t{\n\t\tvar value = this._task.data[this._level.getActiveMapIndex()][0];\n\n\t\tthis._memoryValue.setString(String(value));\n\t}\n});\n","\nvar OutputTaskLayer = TaskLayer.extend(/** @lends ExCounterMemoryTaskLayer# */{\n\n\t_memoryValue: null,\n\n\tctor: function(level, task)\n\t{\n\t\tthis._super(LocalizedString(\"OutputTask\"), level, task, pm.GlobalTaskType.OutputValue);\n\n\t\tvar layout = new ccui.HBox();\n\t\tvar layoutAlign = new ccui.LinearLayoutParameter();\n\t\tlayoutAlign.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);\n\t\tlayoutAlign.setMargin(15, 5, 0, 0);\n\t\tlayoutAlign.setMargin(LevelSettingsLayer.BORDER_RADIUS + 15, LevelSettingsLayer.SEPARATOR, 0, 0);\n\n\t\tlayout.setLayoutParameter(layoutAlign);\n\n\t\tvar valueLabel = new pmui.Text(LocalizedString(\"Output\"), pm.settings.fontSize);\n\t\tlayout.addChild(valueLabel);\n\n\t\t//TODO Support robot groups\n\t\tvar value = this._task.data[this._level.getActiveMapIndex()];\n\n\t\tthis._memoryValue = new pmui.TextInput(String(value), \"0\", 15, 40);\n\n\t\tvar memoryValueAlign = new ccui.LinearLayoutParameter();\n\t\tmemoryValueAlign.setMargin(5, 0, 0, 0);\n\t\tthis._memoryValue.setLayoutParameter(memoryValueAlign);\n\t\tlayout.addChild(this._memoryValue);\n\n\t\tthis._memoryValue.setInsertTextCallback(this, this._memoryValueChanged);\n\n\t\tlayout.setContentSize(this.width, Math.max(valueLabel.height, this._memoryValue.height));\n\t\tthis.addChild(layout);\n\n\t\tvar height = this.height + layout.height + LevelSettingsLayer.BORDER_RADIUS;\n\n\t\tthis.setContentSize(this.width, height);\n\t},\n\n\t_memoryValueChanged: function()\n\t{\n\t\tthis._task.data[this._level.getActiveMapIndex()] = Number(this._memoryValue.getString());\n\t},\n\n\trefresh: function(mapIndex)\n\t{\n\t\tvar value = this._task.data[mapIndex];\n\n\t\tthis._memoryValue.setString(String(value));\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 20.11.14.\n */\n\n/**\n * This callback is used when item is selected.\n * @callback SelectWorldLayer~selectCallback\n */\n\n/**\n * @class Two comboboxes for selecting user and world.\n * @extends ccui.Layout\n * @constructor\n * @param {cc.Node} target Target for callback.\n * @param {SelectWorldLayer~selectCallback} [callback] Update callback on layer size changed.\n */\nvar SelectWorldEditorLayer = ccui.Layout.extend(/** @lends SelectWorldEditorLayer# */{\n\t_groupSelect: null,\n\t_worldSelect: null,\n\n\t_selectedGroupID: \"\",\n\t_selectedWorldID: \"\",\n\n\t_worldList: null,\n\n\t_target: null,\n\t_selectCallback: null,\n\n\t_loadingLayer: null,\n\t_gravity: 0,\n\n\tctor: function(target, callback, loadLocalWorlds, gravity)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tif (loadLocalWorlds === undefined)\n\t\t\tloadLocalWorlds = false;\n\n\t\tif (gravity === undefined)\n\t\t\tgravity = SelectWorldEditorLayer.Gravity.HORIZONTAL;\n\n\t\tthis._worldList = new WorldList(this._onLoadWorldList, this, loadLocalWorlds);\n\n\t\tthis._target = target;\n\t\tthis._selectCallback = callback;\n\t\tthis._gravity = gravity;\n\n\t\tthis._groupSelect = new pmui.ComboBox([], this, this._selectGroupOnSelect, 15, 0, this._selectGroupOnShow, this._selectGroupOnClose);\n\t\tthis._worldSelect = new pmui.ComboBox([], this, this._selectWorldOnSelect, 15, 0, this._selectWorldOnShow, this._selectWorldOnClose);\n\n\t\tvar groupAlign = new ccui.RelativeLayoutParameter();\n\t\tvar worldAlign = new ccui.RelativeLayoutParameter();\n\n\t\tif (gravity === SelectWorldEditorLayer.Gravity.HORIZONTAL)\n\t\t{\n\t\t\tgroupAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL);\n\n\t\t\tworldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER);\n\t\t\tworldAlign.setMargin(0, 0, SelectWorldEditorLayer.SEPARATOR, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tgroupAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\n\t\t\tworldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\t\tworldAlign.setMargin(0, SelectWorldEditorLayer.SEPARATOR, 0, 0);\n\t\t}\n\n\t\tgroupAlign.setRelativeName(\"group\");\n\t\tgroupAlign.setMargin(0, 0, 0, 0);\n\t\tthis._groupSelect.setLayoutParameter(groupAlign);\n\n\t\tworldAlign.setRelativeName(\"world\");\n\t\tworldAlign.setRelativeToWidgetName(\"group\");\n\t\tthis._worldSelect.setLayoutParameter(worldAlign);\n\n\t\tthis.addChild(this._worldSelect, 1);\n\t\tthis.addChild(this._groupSelect, 1);\n\n\t\tthis._groupSelect.enabled = false;\n\t\tthis._worldSelect.enabled = false;\n\n\t\tthis._updateSize(false);\n\n\t\tthis.refresh();\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._selectedGroupID = pm.settings.getSelectedUserGroupID();\n\t\tthis._selectedWorldID = pm.settings.getSelectedWorldID();\n\n\t\tthis._worldList.loadList();\n\t},\n\n\tgetWorldIDInSelectedGroup: function(exceptWorldID)\n\t{\n\t\tvar selectGraph = this._getSelectGraph();\n\t\tvar group = selectGraph[this._selectedGroupID];\n\n\t\tfor(var i = 0; i < group.worlds.length; ++i)\n\t\t{\n\t\t\tif(group.worlds[i].id !== exceptWorldID)\n\t\t\t\treturn group.worlds[i].id;\n\t\t}\n\t},\n\n\t_updateSize: function(updateParent)\n\t{\n\t\tif (this._gravity === SelectWorldEditorLayer.Gravity.HORIZONTAL)\n\t\t{\n\t\t\tvar width = this._groupSelect.getContentSize().width + this._worldSelect.getContentSize().width + SelectWorldEditorLayer.SEPARATOR;\n\t\t\tvar height = Math.max(this._worldSelect.getContentSize().height, this._groupSelect.getContentSize().height);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar width = Math.max(this._groupSelect.getContentSize().width, this._worldSelect.getContentSize().width);\n\t\t\tvar height = this._worldSelect.getContentSize().height + this._groupSelect.getContentSize().height + SelectWorldEditorLayer.SEPARATOR;\n\t\t}\n\n\t\tthis.setContentSize(width, height);\n\n\t\tif(updateParent === undefined || updateParent)\n\t\t\tthis.getParent().requestDoLayout();\n\t},\n\n\t_onLoadWorldList: function()\n\t{\n\t\tthis._fillComboboxes(true);\n\t},\n\n\t_getSelectGraph: function()\n\t{\n\t\treturn this._worldList.getSelectGraph();\n\t},\n\n\t_fillGroupsCombobox: function()\n\t{\n\t\tvar selectedGroupID = this._setComboboxValues(this._groupSelect, this._getSelectGraph(), this._selectedGroupID);\n\n\t\tif(this._selectedGroupID !== selectedGroupID)\n\t\t\tthis._selectedGroupID = selectedGroupID;\n\t},\n\n\t_fillWorldsCombobox: function()\n\t{\n\t\tvar selectedGroup = this._getSelectGraph()[this._selectedGroupID];\n\t\tvar worldList = selectedGroup.worlds;\n\n\t\tvar selectedWorldID = this._setComboboxValues(this._worldSelect, worldList, this._selectedWorldID);\n\n\t\tif(this._selectedWorldID !== selectedWorldID)\n\t\t{\n\t\t\tthis._selectedWorldID = selectedWorldID;\n\t\t\tthis._downloadWorld();\n\t\t}\n\t},\n\n\t_fillComboboxes: function(updateParent)\n\t{\n\t\tthis._fillGroupsCombobox();\n\t\tthis._fillWorldsCombobox();\n\n\t\tthis._groupSelect.enabled = true;\n\t\tthis._worldSelect.enabled = true;\n\n\t\tif(updateParent === undefined)\n\t\t\tupdateParent = false;\n\n\t\tthis._updateSize(updateParent);\n\t},\n\n\t_setComboboxValues: function(combobox, valueList, selectValueID)\n\t{\n\t\tvar comboboxValues = [];\n\t\tvar selectedIndex = 0;\n\n\t\tvar returnValue = \"\";\n\n\t\tif(cc.isArray(valueList))\n\t\t{\n\t\t\tfor (var i = 0; i < valueList.length; ++i)\n\t\t\t{\n\t\t\t\tcomboboxValues.push(cc.isObject(valueList[i]) ? valueList[i].name : valueList[i]);\n\n\t\t\t\tif (valueList[i].id === selectValueID)\n\t\t\t\t\tselectedIndex = i;\n\t\t\t}\n\n\t\t\treturnValue = valueList[selectedIndex].id;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar i = 0;\n\n\t\t\tfor (var id in valueList)\n\t\t\t{\n\t\t\t\tcomboboxValues.push(cc.isObject(valueList[id]) ? valueList[id].name : valueList[id]);\n\n\t\t\t\tif (id === selectValueID)\n\t\t\t\t\tselectedIndex = i;\n\n\t\t\t\t++i;\n\t\t\t}\n\n\t\t\treturnValue = Object.keys(valueList)[selectedIndex];\n\t\t}\n\n\t\tcombobox.setValueList(comboboxValues);\n\n\t\tcombobox.selectObject(selectedIndex);\n\n\t\treturn returnValue;\n\t},\n\n\t_selectGroupOnShow: function()\n\t{\n\t\tthis._worldSelect.enabled = false;\n\t},\n\n\t_selectGroupOnSelect: function(index)\n\t{\n\n\t\tvar id = Object.keys(this._getSelectGraph())[index];\n\n\t\tif (this._selectedGroupID !== id)\n\t\t{\n\t\t\tthis._selectedGroupID = id;\n\n\t\t\tthis._fillWorldsCombobox();\n\t\t\tthis._updateSize(true);\n\t\t}\n\n\t\tthis._worldSelect.enabled = true;\n\t},\n\n\t_selectGroupOnClose: function()\n\t{\n\t\tthis._worldSelect.enabled = true;\n\t},\n\n\t_selectWorldOnShow: function()\n\t{\n\t\tthis._groupSelect.enabled = false;\n\t},\n\n\t_selectWorldOnSelect: function(index)\n\t{\n\t\tvar selectedGroup = this._getSelectGraph()[this._selectedGroupID];\n\t\tvar worldList = selectedGroup.worlds;\n\t\tvar id = worldList[index].id;\n\n\t\tif(this._selectedWorldID !== id)\n\t\t{\n\t\t\tthis._selectedWorldID = id;\n\n\t\t\tthis._downloadWorld();\n\t\t}\n\n\t\tthis._groupSelect.enabled = true;\n\t},\n\n\t_selectWorldOnClose: function()\n\t{\n\t\tthis._groupSelect.enabled = true;\n\t},\n\n\t_downloadWorld: function()\n\t{\n\t\tthis._loadingLayer = new LoadingLayer();\n\t\tthis._loadingLayer.show();\n\n\t\tpm.worldUtils.loadWorld({\n\t\t\tworldID: this._selectedWorldID,\n\t\t\tcallback: this._endDownLoadWorld,\n\t\t\tcallbackTarget: this,\n\t\t\treloadBuiltinOnError: true\n\t\t});\n\t},\n\n\t_endDownLoadWorld: function(error, loadedWorldID)\n\t{\n\t\tif(!error && loadedWorldID.length > 0 && loadedWorldID[0])\n\t\t{\n\t\t\tpm.settings.setSelectedWorldID(loadedWorldID[0]);\n\t\t\tpm.settings.setSelectedUserGroupID(this._selectedGroupID);\n\n\t\t\tvar selectedGroup = this._getSelectGraph()[this._selectedGroupID];\n\t\t\tvar worldList = selectedGroup.worlds;\n\n\t\t\t// Loaded built-in, so load public group\n\t\t\tif(loadedWorldID[0] !== this._selectedWorldID)\n\t\t\t{\n\t\t\t\tthis._selectedWorldID = loadedWorldID[0];\n\n\t\t\t\tif(!pm.settings.isEditorMode)\n\t\t\t\t{\n\t\t\t\t\tthis._selectedGroupID = SelectWorldLayer.PUBLIC_GROUP.id;\n\t\t\t\t\tpm.settings.setSelectedUserGroupID(this._selectedGroupID);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._selectedGroupID = SelectWorldLayer.OWN_GROUP.id;\n\t\t\t\t}\n\n\t\t\t\tvar worldIndex = this._setComboboxValues(this._worldSelect, worldList, this._selectedWorldID);\n\t\t\t\tthis._setComboboxValues(this._groupSelect, this._getSelectGraph(), this._selectedGroupID);\n\n\t\t\t\tpm.settings.setWorldMetaData(this._selectedWorldID, worldList[worldIndex]);\n\n\t\t\t\tthis._updateSize(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = 0; i < worldList.length; ++i) //TODO refactor\n\t\t\t\t{\n\t\t\t\t\tif (worldList[i].id === this._selectedWorldID)\n\t\t\t\t\t\tpm.settings.setWorldMetaData(this._selectedWorldID, worldList[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._selectCallback)\n\t\t\t\tthis._selectCallback.call(this._target);\n\t\t}\n\n\t\tthis._loadingLayer.remove();\n\t}\n});\n\nSelectWorldEditorLayer.SEPARATOR = 8;\nSelectWorldEditorLayer.Gravity = {\n\tHORIZONTAL: 0,\n\tVERTICAL: 1\n};\n","/**\n * Created by Nikita Besshaposhnikov on 28.11.14.\n */\n\n/**\n * This callback is used on pressing buttons in MenuEditorElement.\n * @callback MenuEditorElement~actionCallback\n */\n\n/**\n * @class Element for select table view on editor with delete, copy buttons.\n * @extends cc.Layer\n * @constructor\n * @param {Number} [index] Index of element in sliding menu.\n * @param {cc.Node} [node] Node to show in element.\n * @param {Number} [cellWidth] Width of cell.\n * @param {String} [name] Name of element.\n * @param {Number} [maps] Number of maps of level.\n * @param {MenuEditorElement~actionCallback} [callback] Event callback for buttons.\n * @param {Object} [target] Target to call callbacks.\n */\nvar MenuEditorElement = ccui.Layout.extend(/** @lends MenuEditorElement# */{\n\n\t_callback: null,\n\t_target: null,\n\t_index: 0,\n\n\t_shiftRightButton: null,\n\t_shiftLeftButton: null,\n\n\t_pasteRightButton: null,\n\t_pasteLeftButton: null,\n\n\tctor: function(index, maxIndex, node, cellWidth, name, maps, callback, showShiftButtons, showPasteButtons, target)\n\t{\n\t\tthis._super();\n\n\t\tthis._index = index;\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\n\t\tvar scale = cellWidth / node.width;\n\t\tnode.setScale(scale);\n\t\tnode.setAnchorPoint(cc.p(0.5, 1));\n\n\t\tvar text = new ccui.Text(name, pm.settings.fontName, pm.settings.fontSize);\n\t\ttext.setTextAreaSize(cc.size(node.width*scale, 0));\n\t\ttext.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);\n\t\ttext.setAnchorPoint(cc.p(0.5, 0));\n\n\t\tvar remove = new pmui.Button(pm.spriteUtils.getIconName(\"deleteGame\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteGame\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteGame\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tremove.setAnchorPoint(1, 1);\n\t\tremove.addClickEventListener(this._remove.bind(this));\n\n\t\tvar copy = new pmui.Button(pm.spriteUtils.getIconName(\"save\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"save\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"save\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tcopy.setAnchorPoint(1, 1);\n\t\tcopy.addClickEventListener(this._copy.bind(this));\n\n\t\tthis.setContentSize(node.width*scale, remove.height + text.height + node.height*scale);\n\n\t\tif (maps !== null && maps > 1)\n\t\t{\n\t\t\tvar mapsCounter = new cc.Sprite(pm.spriteUtils.getIconSpriteFrame(\"maps\", pm.NORMAL_STATE));\n\n\t\t\tmapsCounter.setAnchorPoint(0, 1);\n\t\t\tmapsCounter.setPosition(0, this.height);\n\n\t\t\tvar counterLabel = new ccui.Text(maps, pm.settings.fontName, pm.settings.fontSize);\n\n\t\t\tcounterLabel.setAnchorPoint(cc.p(0, 0.5));\n\t\t\tcounterLabel.setPosition(mapsCounter.width + 3, this.height - mapsCounter.height/2);\n\n\t\t\tthis.addChild(mapsCounter);\n\t\t\tthis.addChild(counterLabel);\n\t\t}\n\n\t\tnode.setPosition(this.width/2, this.height - remove.height);\n\t\tremove.setPosition(this.width, this.height);\n\t\tcopy.setPosition(this.width - remove.width - MenuEditorElement.SEPARATOR, this.height);\n\t\ttext.setPosition(node.width*scale/2, 0);\n\n\t\tif(index > 0)\n\t\t{\n\t\t\tthis._shiftLeftButton = new pmui.Button(pm.spriteUtils.getIconName(\"prevEditor\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"prevEditor\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"prevEditor\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tthis._shiftLeftButton.addClickEventListener(this._shiftLeft.bind(this));\n\n\t\t\tthis._shiftLeftButton.setAnchorPoint(0, 0.5);\n\t\t\tthis._shiftLeftButton.setPosition(20, node.getPosition().y - node.height * scale * 4/5);\n\n\t\t\tif (!showShiftButtons)\n\t\t\t\tthis._shiftLeftButton.setVisible(false);\n\t\t\telse\n\t\t\t\tthis._shiftLeftButton.setVisible(true);\n\n\t\t\tthis.addChild(this._shiftLeftButton, 2);\n\t\t}\n\n\t\tif(index < maxIndex - 1)\n\t\t{\n\t\t\tthis._shiftRightButton = new pmui.Button(pm.spriteUtils.getIconName(\"nextEditor\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"nextEditor\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"nextEditor\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\t\tthis._shiftRightButton.addClickEventListener(this._shiftRight.bind(this));\n\n\t\t\tthis._shiftRightButton.setAnchorPoint(1, 0.5);\n\t\t\tthis._shiftRightButton.setPosition(this.width - 20, node.getPosition().y - node.height * scale * 4/5);\n\n\t\t\tif (!showShiftButtons)\n\t\t\t\tthis._shiftRightButton.setVisible(false);\n\t\t\telse\n\t\t\t\tthis._shiftRightButton.setVisible(true);\n\n\t\t\tthis.addChild(this._shiftRightButton, 2);\n\t\t}\n\n\t\tthis._pasteLeftButton = new pmui.Button(pm.spriteUtils.getIconName(\"prevEditor\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevEditor\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"prevEditor\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._pasteLeftButton.addClickEventListener(this._pasteLeft.bind(this));\n\n\t\tthis._pasteLeftButton.setAnchorPoint(0, 0.5);\n\t\tthis._pasteLeftButton.setPosition(20, node.getPosition().y - node.height * scale * 4/5);\n\n\t\tif (!showPasteButtons)\n\t\t\tthis._pasteLeftButton.setVisible(false);\n\t\telse\n\t\t\tthis._pasteLeftButton.setVisible(true);\n\n\t\tthis.addChild(this._pasteLeftButton, 2);\n\n\n\t\tthis._pasteRightButton = new pmui.Button(pm.spriteUtils.getIconName(\"nextEditor\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextEditor\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"nextEditor\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._pasteRightButton.addClickEventListener(this._pasteRight.bind(this));\n\n\t\tthis._pasteRightButton.setAnchorPoint(1, 0.5);\n\t\tthis._pasteRightButton.setPosition(this.width - 20, node.getPosition().y - node.height * scale * 4/5);\n\n\t\tif (!showPasteButtons)\n\t\t\tthis._pasteRightButton.setVisible(false);\n\t\telse\n\t\t\tthis._pasteRightButton.setVisible(true);\n\n\t\tthis.addChild(this._pasteRightButton, 2);\n\n\t\tthis.addChild(node, 0);\n\t\tthis.addChild(remove, 1);\n\t\tthis.addChild(copy, 1);\n\t\tthis.addChild(text, 1);\n\t},\n\n\t_shiftRight: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.ShiftRight, this._index);\n\t},\n\n\t_shiftLeft: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.ShiftLeft, this._index);\n\t},\n\n\t_pasteRight: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.PasteRight, this._index);\n\t},\n\n\t_pasteLeft: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.PasteLeft, this._index);\n\t},\n\n\t_remove: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.Remove, this._index);\n\t},\n\n\t_copy: function()\n\t{\n\t\tthis._callback.call(this._target, MenuEditorLayer.EventType.Copy, this._index);\n\t}\n});\n\nMenuEditorElement.SEPARATOR = 3;\n","/**\n * Created by Antony Orlovsky on 08.08.18.\n */\n\n/**\n * @class Main editor layer.\n * @extends ccui.Layout\n * @param {Number} game Index of current game.\n */\n\nvar MenuEditorLayer = ccui.Layout.extend(/** @lends MenuEditorLayer# */{\n\n\t_selectWorldLayer: null,\n\t_gameTable: null,\n\t_levelTable: null,\n\n\t_selectedGameIndex: -1,\n\t_selectedLevelIndex: -1,\n\n\t_selectLevelTypeLayer: null,\n\n\t_pastingAvailable: false,\n\n\t_changingAvailable: false,\n\t_changePublicityWorldButton: null,\n\n\tctor: function (game)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._loadInterface();\n\n\t\tthis._redrawWorld(false, game);\n\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new MenuEditorScene());\n\t\t}, this);\n\t},\n\n\t_loadInterface: function()\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar goToStartScreen = new pmui.Button(pm.spriteUtils.getIconName(\"backLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"backLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tgoToStartScreen.addClickEventListener(this._startScreen.bind(this));\n\n\t\tvar goToStartScreenAlign = new ccui.RelativeLayoutParameter();\n\t\tgoToStartScreenAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tgoToStartScreenAlign.setRelativeName(\"back\");\n\t\tgoToStartScreenAlign.setMargin(screenBounds.left, screenBounds.top, 0, 0);\n\t\tgoToStartScreen.setLayoutParameter(goToStartScreenAlign);\n\n\t\tthis.addChild(goToStartScreen);\n\n\t\tvar menuButton = new pmui.Button(pm.spriteUtils.getIconName(\"menuEditor\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menuEditor\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"menuEditor\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tmenuButton.addClickEventListener(this._showMenu.bind(this));\n\n\t\tvar menuButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tmenuButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tmenuButtonAlign.setRelativeName(\"menu\");\n\t\tmenuButtonAlign.setMargin(0, screenBounds.top, screenBounds.right, 0);\n\t\tmenuButton.setLayoutParameter(menuButtonAlign);\n\n\t\tthis.addChild(menuButton);\n\n\t\tvar addGame = new pmui.Button(pm.spriteUtils.getIconName(\"addGame\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addGame\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addGame\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\taddGame.addClickEventListener(this._addGame.bind(this));\n\n\t\tvar addGameAlign = new ccui.RelativeLayoutParameter();\n\t\taddGameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\taddGameAlign.setRelativeName(\"addGame\");\n\t\taddGameAlign.setRelativeToWidgetName(\"addWorld\");\n\t\taddGameAlign.setMargin(0, MenuEditorLayer.SEPARATOR, 0, 0);\n\t\taddGame.setLayoutParameter(addGameAlign);\n\n\t\tthis.addChild(addGame);\n\n\t\tvar renameGame = new pmui.Button(pm.spriteUtils.getIconName(\"renameGame\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"renameGame\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"renameGame\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\trenameGame.addClickEventListener(this._renameGame.bind(this));\n\n\t\tvar renameGameAlign = new ccui.RelativeLayoutParameter();\n\t\trenameGameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\trenameGameAlign.setRelativeName(\"renameGame\");\n\t\trenameGameAlign.setRelativeToWidgetName(\"addGame\");\n\t\trenameGameAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\trenameGame.setLayoutParameter(renameGameAlign);\n\n\t\tthis.addChild(renameGame);\n\n\t\tvar addLevel = new pmui.Button(pm.spriteUtils.getIconName(\"addLevel\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addLevel\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addLevel\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\taddLevel.addClickEventListener(this._addLevel.bind(this));\n\n\t\tvar addLevelAlign = new ccui.RelativeLayoutParameter();\n\t\taddLevelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\taddLevelAlign.setRelativeName(\"addLevel\");\n\t\taddLevelAlign.setRelativeToWidgetName(\"renameGame\");\n\t\taddLevelAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\taddLevel.setLayoutParameter(addLevelAlign);\n\n\t\tthis.addChild(addLevel);\n\n\t\tvar paste = new pmui.Button(pm.spriteUtils.getIconName(\"paste\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"paste\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"paste\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tpaste.addClickEventListener(this._paste.bind(this));\n\n\t\tvar pasteAlign = new ccui.RelativeLayoutParameter();\n\t\tpasteAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tpasteAlign.setRelativeToWidgetName(\"addLevel\");\n\t\tpasteAlign.setRelativeName(\"paste\");\n\t\tpasteAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tpaste.setLayoutParameter(pasteAlign);\n\n\t\tthis.addChild(paste);\n\n\t\tvar changing = new pmui.SelectionButton(pm.spriteUtils.getIconName(\"changing\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"changing\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"changing\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tchanging.addClickEventListener(this._changing.bind(this));\n\n\t\tvar changingAlign = new ccui.RelativeLayoutParameter();\n\t\tchangingAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tchangingAlign.setRelativeToWidgetName(\"paste\");\n\t\tchangingAlign.setRelativeName(\"changing\");\n\t\tchangingAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tchanging.setLayoutParameter(changingAlign);\n\n\t\tthis.addChild(changing);\n\t\tif(!cc.sys.isNative) {\n\t\t\tvar downloadWorld = new pmui.SelectionButton(pm.spriteUtils.getIconName(\"toIso\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toIso\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toIso\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t\t);\n\n\t\t\tdownloadWorld.addClickEventListener(this._downloadWorld.bind(this));\n\n\t\t\tvar downloadALign = new ccui.RelativeLayoutParameter();\n\t\t\tdownloadALign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tdownloadALign.setRelativeToWidgetName(\"changing\");\n\t\t\tdownloadALign.setRelativeName(\"download\");\n\t\t\tdownloadALign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\t\tdownloadWorld.setLayoutParameter(downloadALign);\n\n\t\t\tthis.addChild(downloadWorld);\n\n\t\t\tvar uploadWorld = new pmui.SelectionButton(pm.spriteUtils.getIconName(\"toOrtho\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toOrtho\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toOrtho\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t\t);\n\n\t\t\tuploadWorld.addClickEventListener(this._uploadWorld.bind(this));\n\n\t\t\tvar uploadWorldAlign = new ccui.RelativeLayoutParameter();\n\t\t\tuploadWorldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t\tuploadWorldAlign.setRelativeToWidgetName(\"download\");\n\t\t\tuploadWorldAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\t\tuploadWorld.setLayoutParameter(uploadWorldAlign);\n\n\t\t\tthis.addChild(uploadWorld);\n\t\t}\n\t\tvar addWorld = new pmui.Button(pm.spriteUtils.getIconName(\"addWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"addWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\taddWorld.addClickEventListener(this._addWorld.bind(this));\n\n\t\tvar addWorldAlign = new ccui.RelativeLayoutParameter();\n\t\taddWorldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\taddWorldAlign.setRelativeName(\"addWorld\");\n\t\taddWorldAlign.setRelativeToWidgetName(\"back\");\n\t\taddWorldAlign.setMargin(1.5*MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\taddWorld.setLayoutParameter(addWorldAlign);\n\n\t\tthis.addChild(addWorld);\n\n\t\tvar sync = new pmui.Button(pm.spriteUtils.getIconName(\"sync\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"sync\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"sync\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tsync.addClickEventListener(this._confirmSyncWorld.bind(this));\n\n\t\tvar syncAlign = new ccui.RelativeLayoutParameter();\n\t\tsyncAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tsyncAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tsyncAlign.setRelativeName(\"sync\");\n\t\tsyncAlign.setRelativeToWidgetName(\"addWorld\");\n\t\tsync.setLayoutParameter(syncAlign);\n\n\t\tthis.addChild(sync);\n\n\t\tvar mirera = new pmui.Button(pm.spriteUtils.getIconName(\"mirera\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"mirera\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"mirera\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tmirera.addClickEventListener(this._confirmLinkWorldWithMirera.bind(this));\n\n\t\tvar mireraAlign = new ccui.RelativeLayoutParameter();\n\t\tmireraAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tmireraAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tmireraAlign.setRelativeName(\"mirera\");\n\t\tmireraAlign.setRelativeToWidgetName(\"sync\");\n\t\tmirera.setLayoutParameter(mireraAlign);\n\n\t\tthis.addChild(mirera);\n\n\t\tvar renameWorld = new pmui.Button(pm.spriteUtils.getIconName(\"renameWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"renameWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"renameWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t\trenameWorld.addClickEventListener(this._renameWorld.bind(this));\n\n\t\tvar renameWorldAlign = new ccui.RelativeLayoutParameter();\n\t\trenameWorldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\trenameWorldAlign.setRelativeName(\"rename\");\n\t\trenameWorldAlign.setRelativeToWidgetName(\"mirera\");\n\t\trenameWorldAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\trenameWorld.setLayoutParameter(renameWorldAlign);\n\n\t\tthis.addChild(renameWorld);\n\n\t\tvar deleteWorld = new pmui.Button(pm.spriteUtils.getIconName(\"deleteWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"deleteWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t\tdeleteWorld.addClickEventListener(this._confirmDeletingWorld.bind(this));\n\n\t\tvar deleteWorldAlign = new ccui.RelativeLayoutParameter();\n\t\tdeleteWorldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tdeleteWorldAlign.setRelativeName(\"deleteWorld\");\n\t\tdeleteWorldAlign.setRelativeToWidgetName(\"rename\");\n\t\tdeleteWorldAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tdeleteWorld.setLayoutParameter(deleteWorldAlign);\n\n\t\tthis.addChild(deleteWorld);\n\n\t\tvar normal, selected, disabled;\n\n\t\tif (world.public)\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"public\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"public\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"public\", pm.DISABLED_STATE);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"notPublic\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"notPublic\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"notPublic\", pm.DISABLED_STATE);\n\t\t}\n\n\t\tthis._changePublicityWorldButton = new pmui.Button(normal, selected, disabled, ccui.Widget.PLIST_TEXTURE);\n\n\t\tthis._changePublicityWorldButton.addClickEventListener(this._changePublicityWorld.bind(this));\n\n\t\tvar isPublicWorldAlign = new ccui.RelativeLayoutParameter();\n\t\tisPublicWorldAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tisPublicWorldAlign.setRelativeToWidgetName(\"deleteWorld\");\n\t\tisPublicWorldAlign.setMargin(MenuEditorLayer.SEPARATOR, 0, 0, 0);\n\t\tthis._changePublicityWorldButton.setLayoutParameter(isPublicWorldAlign);\n\n\t\tthis.addChild(this._changePublicityWorldButton);\n\n\t\tvar updateWorldList = new pmui.Button(pm.spriteUtils.getIconName(\"updateWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"updateWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\t\tupdateWorldList.addClickEventListener(this._updateWorldList.bind(this));\n\n\t\tvar updateWorldListAlign = new ccui.RelativeLayoutParameter();\n\t\tupdateWorldListAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_BOTTOMALIGN);\n\t\tupdateWorldListAlign.setRelativeToWidgetName(\"worldSelect\");\n\t\tupdateWorldListAlign.setMargin(0, 0, MenuEditorLayer.SEPARATOR, 0);\n\t\tupdateWorldList.setLayoutParameter(updateWorldListAlign);\n\n\t\tthis.addChild(updateWorldList);\n\n\t\tthis._selectWorldLayer = new SelectWorldEditorLayer(this, this._redrawWorld, false, SelectWorldEditorLayer.Gravity.VERTICAL);\n\n\t\tvar worldLayerAlign = new ccui.RelativeLayoutParameter();\n\t\tworldLayerAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_TOPALIGN);\n\t\tworldLayerAlign.setRelativeName(\"worldSelect\");\n\t\tworldLayerAlign.setRelativeToWidgetName(\"menu\");\n\t\tworldLayerAlign.setMargin(0, 0, 1.5*MenuEditorLayer.SEPARATOR, 0);\n\t\tthis._selectWorldLayer.setLayoutParameter(worldLayerAlign);\n\n\t\tthis.addChild(this._selectWorldLayer, 1);\n\n\t\tvar showInfoButton = new pmui.Button(pm.spriteUtils.getIconName(\"infoWorld\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"infoWorld\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"infoWorld\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tvar infoAlign = new ccui.RelativeLayoutParameter();\n\t\tinfoAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tinfoAlign.setMargin(0, 1.5*MenuEditorLayer.SEPARATOR, 0, 0);\n\t\tinfoAlign.setRelativeName(\"info\");\n\t\tinfoAlign.setRelativeToWidgetName(\"menu\");\n\t\tshowInfoButton.setLayoutParameter(infoAlign);\n\n\t\tshowInfoButton.addClickEventListener(this._showInfo.bind(this));\n\t\tthis.addChild(showInfoButton, 1);\n\n\t\tvar separator = cc.size(20, 20);\n\n\t\tthis._gameTable = new pmui.SelectTableView(cc.size(1, 1), separator, 0, MenuEditorLayer.MAX_ELEMENTS_IN_ROW);\n\t\tthis._gameTable.addSelectEventListener(this._selectGameElementCallback, this);\n\t\tthis._gameTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tthis._gameTable.setFitObjectsSizes(true);\n\n\t\tthis._gameTable.setContentSize(pm.settings.getScreenSize().width/2,\n\t\t\tpm.settings.getScreenSize().height - goToStartScreen.height - 3*MenuEditorLayer.SEPARATOR - addGame.height\n - screenBounds.top);\n\n\t\tvar scrollGameAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollGameAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tthis._gameTable.setLayoutParameter(scrollGameAlign);\n\n\t\tthis.addChild(this._gameTable);\n\n\t\tthis._levelTable = new pmui.SelectTableView(cc.size(1, 1), separator, 0, MenuEditorLayer.MAX_ELEMENTS_IN_ROW);\n\t\tthis._levelTable.addSelectEventListener(this._selectLevelElementCallback, this);\n\t\tthis._levelTable.setSelectFrame(pm.spriteUtils.getInterfaceElementFrame(\"functionBG\"), true);\n\t\tthis._levelTable.setFitObjectsSizes(true);\n\n\t\tthis._levelTable.setContentSize(pm.settings.getScreenSize().width/2,\n\t\t\tthis._gameTable.getContentSize().height);\n\n\t\tvar scrollLevelAlign = new ccui.RelativeLayoutParameter();\n\t\tscrollLevelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tthis._levelTable.setLayoutParameter(scrollLevelAlign);\n\n\t\tthis.addChild(this._levelTable);\n\n\t\tvar boundsY = screenBounds.top + screenBounds.bottom;\n\n\t\tvar margin = (pm.settings.getScreenSize().height - this._selectWorldLayer.getContentSize().height - boundsY)/MenuEditorLayer.DOTS_INTENSITY;\n\n\t\tfor (var i = 0; i < MenuEditorLayer.DOTS_INTENSITY; ++i)\n\t\t{\n\t\t\tvar dot = new cc.Sprite(\"WorldPics/dot.png\");\n\n\t\t\tdot.setAnchorPoint(cc.p(0, 0.5));\n\n\t\t\tvar scale = cc.random0To1()*0.4+0.6;\n\t\t\tdot.setScale(scale);\n\n\t\t\tdot.setPosition(pm.settings.getScreenSize().width/2 - 20, margin*i);\n\n\t\t\tthis.addChild(dot);\n\t\t}\n\t},\n\n\t_drawGameTable: function(needToJump)\n\t{\n\t\tif (needToJump === undefined)\n\t\t\tneedToJump = false;\n\n\t\tvar oldY = this._gameTable._scroll.getInnerContainer().y;\n\n\t\tthis._gameTable.deselectAll();\n\n\t\tvar rowCount = this._gameTable.getRowCount();\n\n\t\tfor (var i = rowCount - 1; i >= 0; --i)\n\t\t\tthis._gameTable.deleteRow(i);\n\n\t\tvar rows = Math.floor(world.getGameCount() / MenuEditorLayer.MAX_ELEMENTS_IN_ROW) +\n ((world.getGameCount() % MenuEditorLayer.MAX_ELEMENTS_IN_ROW === 0) ? 0 : 1);\n\n\t\tthis._gameTable.setRowCount(rows);\n\n\t\tvar cellHeight = 0;\n\n\t\tfor(var i = 0; i < world.getGameCount(); ++i)\n\t\t{\n\t\t\tvar spr = new ccui.ImageView(\"WorldPics/game{0}.png\".format(i % 4));\n\t\t\tvar element = new MenuEditorElement(i, world.getGameCount(), spr,\n\t\t\t\t(pm.settings.getScreenSize().width/2 - 120) / MenuEditorLayer.MAX_ELEMENTS_IN_ROW,\n\t\t\t\tworld.getGameName(i), null,\n\t\t\t\tthis._gameEventCallback, this._changingAvailable, this._pastingAvailable, this);\n\n\t\t\tthis._gameTable.setCell(Math.floor(i / MenuEditorLayer.MAX_ELEMENTS_IN_ROW),\n\t\t\t\ti % MenuEditorLayer.MAX_ELEMENTS_IN_ROW, element);\n\n\t\t\tcellHeight = Math.max(cellHeight, element.height);\n\t\t}\n\n\t\tvar cellSize = cc.size((pm.settings.getScreenSize().width/2 - 120) / MenuEditorLayer.MAX_ELEMENTS_IN_ROW,\n\t\t\tcellHeight);\n\t\tthis._gameTable.setCellSize(cellSize);\n\n\t\tvar curY = this._gameTable._scroll.getInnerContainer().y;\n\n\t\tvar percent = 0;\n\n\t\tif (curY !== 0 && needToJump)\n\t\t\tpercent = ((curY - oldY) / curY) * 100;\n\n\t\tthis._gameTable._scroll.jumpToPercentVertical(percent);\n\t},\n\n\t_drawLevelTable: function(needToJump)\n\t{\n\t\tif (needToJump === undefined)\n\t\t\tneedToJump = false;\n\n\t\tvar oldY = this._levelTable._scroll.getInnerContainer().y;\n\n\t\tthis._levelTable.deselectAll();\n\n\t\tvar rowCount = this._levelTable.getRowCount();\n\n\t\tfor (var i = rowCount - 1; i >= 0; --i)\n\t\t\tthis._levelTable.deleteRow(i);\n\n\t\tif (this._selectedGameIndex === -1)\n\t\t\treturn;\n\n\t\tvar rows = Math.floor(world.getLevelCount(this._selectedGameIndex) / MenuEditorLayer.MAX_ELEMENTS_IN_ROW) +\n ((world.getLevelCount(this._selectedGameIndex) % MenuEditorLayer.MAX_ELEMENTS_IN_ROW === 0) ? 0 : 1);\n\n\t\tthis._levelTable.setRowCount(rows);\n\n\t\tvar cellHeight = 0;\n\n\t\tvar cellWidth = (pm.settings.getScreenSize().width/2 - 120) / MenuEditorLayer.MAX_ELEMENTS_IN_ROW;\n\n\t\tfor(var i = 0; i < world.getLevelCount(this._selectedGameIndex); ++i)\n\t\t{\n\t\t\tvar spr = new LevelPreview(this._selectedGameIndex, i, cellWidth, cellWidth);\n\t\t\tvar element = new MenuEditorElement(i, world.getLevelCount(this._selectedGameIndex), spr,\n\t\t\t\tcellWidth,\n\t\t\t\t(i+1) + \". \" + world.getLevelName(this._selectedGameIndex, i),\n\t\t\t\tworld.games[this._selectedGameIndex].levels[i].maps.length,\n\t\t\t\tthis._levelEventCallback, this._changingAvailable, this._pastingAvailable, this);\n\n\t\t\tthis._levelTable.setCell(Math.floor(i / MenuEditorLayer.MAX_ELEMENTS_IN_ROW),\n\t\t\t\ti % MenuEditorLayer.MAX_ELEMENTS_IN_ROW, element);\n\n\t\t\tcellHeight = Math.max(cellHeight, element.height);\n\t\t}\n\n\t\tvar cellSize = cc.size((pm.settings.getScreenSize().width/2 - 120) / MenuEditorLayer.MAX_ELEMENTS_IN_ROW,\n\t\t\tcellHeight);\n\t\tthis._levelTable.setCellSize(cellSize);\n\n\t\tvar curY = this._levelTable._scroll.getInnerContainer().y;\n\n\t\tvar percent = 0;\n\n\t\tif (curY !== 0 && needToJump)\n\t\t\tpercent = ((curY - oldY) / curY) * 100;\n\n\t\tthis._levelTable._scroll.jumpToPercentVertical(percent);\n\t},\n\n\t_gameEventCallback: function(eventType, index)\n\t{\n\t\tswitch (eventType)\n\t\t{\n\t\t\tcase MenuEditorLayer.EventType.Remove:\n\t\t\t\tthis._removeGame(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.Copy:\n\t\t\t\tthis._copyGame(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.ShiftLeft:\n\t\t\t\tthis._shiftLeftGame(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.ShiftRight:\n\t\t\t\tthis._shiftRightGame(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.PasteLeft:\n\t\t\t\tthis._pasteLeftGame(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.PasteRight:\n\t\t\t\tthis._pasteRightGame(index);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_levelEventCallback: function(eventType, index)\n\t{\n\t\tswitch (eventType)\n\t\t{\n\t\t\tcase MenuEditorLayer.EventType.Remove:\n\t\t\t\tthis._removeLevel(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.Copy:\n\t\t\t\tthis._copyLevel(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.ShiftLeft:\n\t\t\t\tthis._shiftLeftLevel(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.ShiftRight:\n\t\t\t\tthis._shiftRightLevel(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.PasteLeft:\n\t\t\t\tthis._pasteLeftLevel(index);\n\t\t\t\tbreak;\n\t\t\tcase MenuEditorLayer.EventType.PasteRight:\n\t\t\t\tthis._pasteRightLevel(index);\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_selectGameElementCallback: function(selectedGameElement)\n\t{\n\t\tif (selectedGameElement &&\n selectedGameElement.x * MenuEditorLayer.MAX_ELEMENTS_IN_ROW + selectedGameElement.y < world.getGameCount())\n\t\t{\n\t\t\tthis._selectedGameIndex = selectedGameElement.x * MenuEditorLayer.MAX_ELEMENTS_IN_ROW + selectedGameElement.y;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._selectedGameIndex = -1;\n\t\t\tthis._selectedLevelIndex = -1;\n\t\t}\n\n\t\tthis._drawLevelTable();\n\t},\n\n\t_selectLevelElementCallback: function(selectedLevelElement)\n\t{\n\t\tif (selectedLevelElement &&\n selectedLevelElement.x * MenuEditorLayer.MAX_ELEMENTS_IN_ROW + selectedLevelElement.y < world.getLevelCount(this._selectedGameIndex))\n\t\t{\n\t\t\tthis._selectedLevelIndex = selectedLevelElement.x * MenuEditorLayer.MAX_ELEMENTS_IN_ROW + selectedLevelElement.y;\n\n\t\t\tpm.settings.setGame(this._selectedGameIndex);\n\t\t\tpm.settings.setLevel(this._selectedLevelIndex);\n\t\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\t\tnew LevelEditorScene(this._selectedGameIndex, this._selectedLevelIndex));\n\t\t\tcc.director.runScene(trans);\n\t\t}\n\t\telse\n\t\t{ this._selectedLevelIndex = -1; }\n\t},\n\n\t_redrawWorld: function(needToJump, game)\n\t{\n\t\tif (needToJump === undefined)\n\t\t\tneedToJump = false;\n\n\t\tif (game === undefined)\n\t\t\tgame = -1;\n\n\t\tthis._selectedGameIndex = game;\n\t\tthis._selectedLevelIndex = -1;\n\n\t\tthis._drawGameTable(needToJump);\n\n\t\tif (this._selectedGameIndex !== -1)\n\t\t{\n\t\t\tthis._gameTable.selectCell(Math.floor(this._selectedGameIndex / MenuEditorLayer.MAX_ELEMENTS_IN_ROW),\n\t\t\t\tthis._selectedGameIndex % MenuEditorLayer.MAX_ELEMENTS_IN_ROW);\n\t\t}\n\n\t\tthis._drawLevelTable();\n\t\tthis._loadChangePublicityWorldTexture();\n\t},\n\n\t_startScreen: function()\n\t{\n\t\tpm.settings.isEditorMode = false;\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new StartMenuScene());\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_showMenu: function()\n\t{\n\t\tif(cc.director.getRunningScene().getChildByTag(SettingsLayer.TAG))\n\t\t\treturn;\n\n\t\tvar settingsLayer = new SettingsLayer(this, this._closeMenu);\n\n\t\tcc.director.getRunningScene().addChild(settingsLayer, 100, SettingsLayer.TAG);\n\t},\n\n\t_closeMenu: function()\n\t{\n\t\tcc.director.getRunningScene().removeChildByTag(SettingsLayer.TAG);\n\t},\n\n\t_addWorld: function()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.POPUP_LAYER_TAG))\n\t\t{\n\t\t\tvar newWorldLayer = new NewWorldLayer(this, this._onWorldAdded);\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tnewWorldLayer.setLayoutParameter(align);\n\n\t\t\tthis.addChild(newWorldLayer, 100, MenuEditorLayer.POPUP_LAYER_TAG);\n\t\t}\n\t},\n\n\t_uploadWorld: function () {\n\t\tif (!this.getChildByTag(MenuEditorLayer.POPUP_LAYER_TAG)) {\n\n\t\t\tvar newWorldLayer = new UploadWorldLayer(this, this._onWorldAdded);\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tnewWorldLayer.setLayoutParameter(align);\n\n\t\t\tthis.addChild(newWorldLayer, 100, MenuEditorLayer.POPUP_LAYER_TAG);\n\t\t}\n\t},\n\n\t_onWorldAdded: function (error, worldId) {\n\t\tvar self = this;\n\n\t\tvar loadingLayer = new LoadingLayer();\n\t\tloadingLayer.show();\n\n\t\tif(!error)\n\t\t{\n\t\t\tpm.worldUtils.loadWorld({\n\t\t\t\tworldID: worldId,\n\t\t\t\tcallback: function (error, result)\n\t\t\t\t{\n\t\t\t\t\tif(!error)\n\t\t\t\t\t{\n\t\t\t\t\t\tpm.settings.setSelectedWorldID(result[0]);\n\t\t\t\t\t\tself._redrawWorld();\n\t\t\t\t\t\tthis._selectWorldLayer.refresh();\n\t\t\t\t\t\tloadingLayer.remove();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tcc.log(error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcallbackTarget: this,\n\t\t\t\treloadBuiltinOnError: true\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar messageBox = new pmui.MessageBox(self, LocalizedString(\"ErrorWhileAddingWorld\"), this._uploadError);\n\n\t\t\tcc.log(JSON.stringify(error));\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tmessageBox.setLayoutParameter(align);\n\n\t\t\tself.addChild(messageBox, 100);\n\n\t\t\tloadingLayer.remove();\n\t\t}\n\t},\n\n\t_uploadError: function(object) {},\n\n\t_confirmSyncWorld: function()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar input = new pmui.ConfirmWindow(LocalizedString(\"SyncWorld\"));\n\n\t\t\tinput.setCallback(this, this._syncWorld, function () {});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, MenuEditorLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_syncWorld: function()\n\t{\n\t\tvar loadingLayer = new LoadingLayer();\n\t\tloadingLayer.show();\n\n\t\tvar self = this;\n\n\t\tpm.worldUtils.syncWorld({\n\t\t\tworldID: pm.settings.getSelectedWorldID(),\n\t\t\tloadLocalOnError: false,\n\t\t\tcallback: function (error, result)\n\t\t\t{\n\n\t\t\t\tloadingLayer.remove();\n\n\t\t\t\tif(!error)\n\t\t\t\t{\n\t\t\t\t\tworld.getEditLog().clear();\n\n\t\t\t\t\tthis._redrawWorld();\n\t\t\t\t\tthis._updateWorldList();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar messageBox = new pmui.MessageBox(self, LocalizedString(\"ErrorWhileSync\").format(error[0].text), self._syncError);\n\n\t\t\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\t\t\tmessageBox.setLayoutParameter(align);\n\n\t\t\t\t\tself.addChild(messageBox, 100);\n\t\t\t\t}\n\t\t\t},\n\t\t\tcallbackTarget: this\n\t\t});\n\t},\n\n\t_confirmLinkWorldWithMirera: function()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar linkedWithMirera = pm.settings.getWorldRecord().linkedWithMirera;\n\n\t\t\tif(linkedWithMirera === undefined)\n\t\t\t\tlinkedWithMirera = false;\n\n\t\t\tvar string = linkedWithMirera ? LocalizedString(\"UnlinkWorldWithMirera\") : LocalizedString(\"LinkWorldWithMirera\")\n\n\t\t\tvar input = new pmui.ConfirmWindow(string);\n\n\t\t\tinput.setCallback(this, this._linkWorldWithMirera, function () {});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, MenuEditorLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_linkWorldWithMirera: function()\n\t{\n\t\tvar loadingLayer = new LoadingLayer();\n\t\tloadingLayer.show();\n\n\t\tvar self = this;\n\n\t\tvar callback = function (error, result)\n\t\t{\n\t\t\tloadingLayer.remove();\n\n\t\t\tif(error)\n\t\t\t{\n\t\t\t\tvar messageBox = new pmui.MessageBox(self, LocalizedString(\"ErrorWhileSync\").format(error.text), self._syncError);\n\n\t\t\t\tcc.log(error);\n\n\t\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\t\tmessageBox.setLayoutParameter(align);\n\n\t\t\t\tself.addChild(messageBox, 100);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar linkedWithMirera = pm.settings.getWorldRecord().linkedWithMirera;\n\n\t\t\t\tlinkedWithMirera = !linkedWithMirera;\n\n\t\t\t\tworld.linkedWithMirera = linkedWithMirera;\n\t\t\t\tworld.save();\n\n\t\t\t\tpm.settings.setWorldLinkedWithMirera(world.id, linkedWithMirera);\n\t\t\t}\n\t\t};\n\n\t\tvar linkedWithMirera = pm.settings.getWorldRecord().linkedWithMirera;\n\n\t\tif(linkedWithMirera === undefined)\n\t\t\tlinkedWithMirera = false;\n\n\t\tif(!linkedWithMirera)\n\t\t{\n\t\t\tpm.apiServerUtils.getMireraCourses(function(error, result) {\n\t\t\t\tloadingLayer.remove();\n\n\t\t\t\tif(error)\n\t\t\t\t{\n\t\t\t\t\tvar messageBox = new pmui.MessageBox(self, LocalizedString(\"ErrorWhileSync\").format(error.text), self._syncError);\n\n\t\t\t\t\tcc.log(error);\n\n\t\t\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\t\t\tmessageBox.setLayoutParameter(align);\n\n\t\t\t\t\tself.addChild(messageBox, 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar selectLayer = new SelectMireraCourseLayer(function(course)\n\t\t\t\t\t{\n\t\t\t\t\t\tloadingLayer = new LoadingLayer();\n\t\t\t\t\t\tloadingLayer.show();\n\n\t\t\t\t\t\tpm.apiServerUtils.linkWorldWithMirera(callback, pm.settings.getSelectedWorldID(), course._id);\n\t\t\t\t\t}, this, result.courses);\n\n\t\t\t\t\tcc.director.getRunningScene().addChild(selectLayer, 100);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.apiServerUtils.unlinkWorldWithMirera(callback, pm.settings.getSelectedWorldID());\n\t\t}\n\t},\n\n\t_syncError: function(object) {},\n\n\t_renameWorld: function ()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.POPUP_LAYER_TAG))\n\t\t{\n\t\t\tvar input = new pmui.ChangeWorldNameDialog();\n\n\t\t\tinput.setCallback(this, this._setWorldName, function ()\n\t\t\t{\n\t\t\t});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, MenuEditorLayer.POPUP_LAYER_TAG);\n\t\t}\n\t},\n\n\t_setWorldName: function (newName, newDescription)\n\t{\n\t\tif (world.name === newName && world.description === newDescription)\n\t\t\treturn;\n\n\t\tvar self = this;\n\n\t\tif(world.name !== newName)\n\t\t{\n\t\t\tworld.rename(newName);\n\t\t\tpm.settings.renameWorld(world.id, newName);\n\t\t}\n\n\t\tif(world.description !== newDescription)\n\t\t{\n\t\t\tworld.changeDescription(newDescription);\n\t\t\tpm.settings.changeWorldDescription(world.id, newDescription);\n\t\t}\n\t},\n\n\t_confirmDeletingWorld: function()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.CONFIRM_LAYER_TAG))\n\t\t{\n\t\t\tvar input = new pmui.ConfirmWindow(LocalizedString(\"DeleteWorld\"));\n\n\t\t\tinput.setCallback(this, this._deleteWorld, function () {});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, MenuEditorLayer.CONFIRM_LAYER_TAG);\n\t\t}\n\t},\n\n\t_deleteWorld: function()\n\t{\n\t\tvar self = this;\n\t\tvar deleteWorldID = pm.settings.getSelectedWorldID();\n\n\t\tvar availableWorlds = pm.settings.getAvailableWorlds();\n\t\tvar user = pm.settings.getUserData();\n\n\t\tvar userWorldCount = 0;\n\n\t\tfor(var worldID in availableWorlds)\n\t\t{\n\t\t\tif(availableWorlds[worldID].owner && availableWorlds[worldID].owner.id === user.id)\n\t\t\t\t++userWorldCount;\n\t\t}\n\n\t\tif(userWorldCount > 1)\n\t\t{\n\t\t\tvar loadingLayer = new LoadingLayer();\n\t\t\tloadingLayer.show();\n\n\t\t\tpm.apiServerUtils.deleteWorld(function(error)\n\t\t\t{\n\t\t\t\tif (error)\n\t\t\t\t{\n\t\t\t\t\tvar messageBox = new pmui.MessageBox(self, LocalizedString(\"ErrorWhileDeletingWorld\"), self._syncError);\n\n\t\t\t\t\tcc.log(JSON.stringify(error));\n\n\t\t\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\t\t\tmessageBox.setLayoutParameter(align);\n\n\t\t\t\t\tself.addChild(messageBox, 100);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpm.userCache.remove();\n\t\t\t\t\tpm.fileUtils.removeFile(pm.settings.getWorldPath());\n\t\t\t\t\tpm.fileUtils.removeFile(pm.settings.getWorldEditLogPath());\n\t\t\t\t\tpm.settings.deleteWorld(pm.settings.getSelectedWorldID());\n\n\t\t\t\t\tpm.worldUtils.loadWorld({\n\t\t\t\t\t\tworldID: self._selectWorldLayer.getWorldIDInSelectedGroup(deleteWorldID),\n\t\t\t\t\t\tcallback: function (error, result)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(!error)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpm.settings.setSelectedWorldID(result[0]);\n\t\t\t\t\t\t\t\tself._redrawWorld();\n\t\t\t\t\t\t\t\tloadingLayer.remove();\n\t\t\t\t\t\t\t\tself._updateWorldList();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcc.log(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbackTarget: this,\n\t\t\t\t\t\treloadBuiltinOnError: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, deleteWorldID);\n\t\t}\n\t},\n\n\t_updateWorldList: function()\n\t{\n\t\tthis._selectWorldLayer.refresh();\n\t},\n\n\t_changePublicityWorld: function()\n\t{\n\t\tif (world.public)\n\t\t\tworld.changePublicity(false);\n\t\telse\n\t\t\tworld.changePublicity(true);\n\n\t\tthis._loadChangePublicityWorldTexture();\n\t},\n\n\t_loadChangePublicityWorldTexture: function()\n\t{\n\t\tvar normal, selected, disabled;\n\n\t\tif (world.public)\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"public\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"public\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"public\", pm.DISABLED_STATE);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnormal = pm.spriteUtils.getIconName(\"notPublic\", pm.NORMAL_STATE);\n\t\t\tselected = pm.spriteUtils.getIconName(\"notPublic\", pm.SELECTED_STATE);\n\t\t\tdisabled = pm.spriteUtils.getIconName(\"notPublic\", pm.DISABLED_STATE);\n\t\t}\n\n\t\tthis._changePublicityWorldButton.loadTextureNormal(normal, ccui.Widget.PLIST_TEXTURE);\n\t\tthis._changePublicityWorldButton.loadTexturePressed(selected, ccui.Widget.PLIST_TEXTURE);\n\t\tthis._changePublicityWorldButton.loadTextureDisabled(disabled, ccui.Widget.PLIST_TEXTURE);\n\t},\n\n\t_addGame: function ()\n\t{\n\t\tworld.addGame();\n\t\tpm.settings.setGame(world.getGameCount() - 1);\n\t\tthis._redrawWorld();\n\t},\n\n\t_renameGame: function()\n\t{\n\t\tif (!this.getChildByTag(MenuEditorLayer.POPUP_LAYER_TAG) && this._selectedGameIndex !== -1)\n\t\t{\n\t\t\tvar input = new pmui.TextInputDialog(LocalizedString(\"EnterNewGameName\"), world.getGameName(this._selectedGameIndex),\n\t\t\t\tLocalizedString(\"NewName\"));\n\n\t\t\tinput.setCallback(this, this._setGameName, function ()\n\t\t\t{\n\t\t\t});\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tinput.setLayoutParameter(align);\n\n\t\t\tthis.addChild(input, 100, MenuEditorLayer.POPUP_LAYER_TAG);\n\t\t}\n\t},\n\n\t_setGameName: function (newName)\n\t{\n\t\tif (world.getGameName(this._selectedGameIndex) === newName)\n\t\t\treturn;\n\n\t\tworld.renameGame(this._selectedGameIndex, newName);\n\t\tthis._redrawWorld();\n\t},\n\n\t_removeGame: function(index)\n\t{\n\t\tworld.removeGame(index);\n\n\t\tvar game = world.getGameCount() - 1;\n\n\t\tif (pm.settings.getGame() > game)\n\t\t\tpm.settings.setGame(game);\n\n\t\tthis._redrawWorld(true);\n\t},\n\n\t_copyGame: function(index)\n\t{\n\t\tworld.copy(index);\n\t},\n\n\t_addLevel: function ()\n\t{\n\t\tif (this._selectLevelTypeLayer === null && this._selectedGameIndex !== -1)\n\t\t{\n\t\t\tthis._selectLevelTypeLayer = new SelectLevelTypeLayer(this);\n\n\t\t\tvar align = new ccui.RelativeLayoutParameter();\n\t\t\talign.setAlign(ccui.RelativeLayoutParameter.CENTER_IN_PARENT);\n\t\t\tthis._selectLevelTypeLayer.setLayoutParameter(align);\n\n\t\t\tthis.addChild(this._selectLevelTypeLayer, 100);\n\t\t}\n\t},\n\n\t_addLevelWithType: function (levelType)\n\t{\n\t\tthis.removeChild(this._selectLevelTypeLayer);\n\t\tthis._selectLevelTypeLayer = null;\n\t\tworld.addLevel(this._selectedGameIndex, levelType);\n\n\t\tpm.settings.setLevel(world.getLevelCount(this._selectedGameIndex) - 1);\n\n\t\tthis._drawLevelTable();\n\t},\n\n\t_cancelAddLevelWithType: function ()\n\t{\n\t\tthis.removeChild(this._selectLevelTypeLayer);\n\t\tthis._selectLevelTypeLayer = null;\n\t},\n\n\t_removeLevel: function(index)\n\t{\n\t\tworld.removeLevel(this._selectedGameIndex, index);\n\n\t\tvar level = world.getLevelCount(this._selectedGameIndex) - 1;\n\n\t\tif(level < 0)\n\t\t\tlevel = 0;\n\n\t\tif (pm.settings.getLevel() > level)\n\t\t\tpm.settings.setLevel(level);\n\n\t\tthis._drawLevelTable(true);\n\t},\n\n\t_copyLevel: function(index)\n\t{\n\t\tworld.copy(this._selectedGameIndex, index);\n\t},\n\n\t_paste: function(sender)\n\t{\n\t\tif (world._clipboard instanceof pm.data.Game)\n\t\t{\n\t\t\tthis._pastingAvailable = !this._pastingAvailable;\n\t\t\tthis._setVisiblePasting(this._gameTable, this._pastingAvailable);\n\t\t\tthis._setVisiblePasting(this._levelTable, false);\n\t\t}\n\t\telse if (world._clipboard instanceof pm.AbstractLevel && this._selectedGameIndex !== -1)\n\t\t{\n\t\t\tthis._pastingAvailable = !this._pastingAvailable;\n\t\t\tthis._setVisiblePasting(this._gameTable, false);\n\t\t\tthis._setVisiblePasting(this._levelTable, this._pastingAvailable);\n\t\t}\n\t},\n\n\t_setVisiblePasting: function(table, flag)\n\t{\n\t\tfor (var x = 0; x < table.getRowCount(); ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < table.getColumnCount(); ++y)\n\t\t\t{\n\t\t\t\tvar cell = table.getCell(x, y);\n\n\t\t\t\tif (!cell)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif (cell._pasteLeftButton)\n\t\t\t\t\tcell._pasteLeftButton.setVisible(flag);\n\n\t\t\t\tif (cell._pasteRightButton)\n\t\t\t\t\tcell._pasteRightButton.setVisible(flag);\n\t\t\t}\n\t\t}\n\t},\n\n\t_changing: function(sender)\n\t{\n\t\tif (this._changingAvailable)\n\t\t{\n\t\t\tsender.setNormalTexture();\n\t\t\tthis._changingAvailable = false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsender.setSelectedTexture();\n\t\t\tthis._changingAvailable = true;\n\t\t}\n\n\t\tthis._setVisibleChanging(this._gameTable, this._changingAvailable);\n\t\tthis._setVisibleChanging(this._levelTable, this._changingAvailable);\n\t},\n\n\t_downloadWorld: function () {\n\t\tvar world = pm.worldUtils.downloadWorld({\n\t\t\tworldID: pm.settings.getSelectedWorldID()\n\t\t});\n\t\tvar blob = new Blob([JSON.stringify(world)], {type: \"application/json\"});\n\t\tFileSaver.saveAs(blob, \"{0}.json\".format(world.name));\n\t},\n\n\t_setVisibleChanging: function(table, flag)\n\t{\n\t\tfor (var x = 0; x < table.getRowCount(); ++x)\n\t\t{\n\t\t\tfor (var y = 0; y < table.getColumnCount(); ++y)\n\t\t\t{\n\t\t\t\tvar cell = table.getCell(x, y);\n\n\t\t\t\tif (!cell)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tif (cell._shiftLeftButton)\n\t\t\t\t\tcell._shiftLeftButton.setVisible(flag);\n\n\t\t\t\tif (cell._shiftRightButton)\n\t\t\t\t\tcell._shiftRightButton.setVisible(flag);\n\t\t\t}\n\t\t}\n\t},\n\n\t_shiftRightLevel: function(index)\n\t{\n\t\tworld.swapLevels(this._selectedGameIndex, index, index+1);\n\n\t\tthis._drawLevelTable(true);\n\t},\n\n\t_shiftLeftLevel: function(index)\n\t{\n\t\tworld.swapLevels(this._selectedGameIndex, index, index-1);\n\n\t\tthis._drawLevelTable(true);\n\t},\n\n\t_shiftRightGame: function(index)\n\t{\n\t\tworld.swapGames(index, index+1);\n\t\tthis._redrawWorld(true);\n\t},\n\n\t_shiftLeftGame: function(index)\n\t{\n\t\tworld.swapGames(index, index-1);\n\t\tthis._redrawWorld(true);\n\t},\n\n\t_pasteRightLevel: function(index)\n\t{\n\t\tworld.paste(this._selectedGameIndex, index+1);\n\n\t\tthis._drawLevelTable(true);\n\n\t\tthis._setVisiblePasting(this._levelTable, false);\n\t\tthis._pastingAvailable = false;\n\t},\n\n\t_pasteLeftLevel: function(index)\n\t{\n\t\tworld.paste(this._selectedGameIndex, index);\n\n\t\tthis._drawLevelTable(true);\n\n\t\tthis._setVisiblePasting(this._levelTable, false);\n\t\tthis._pastingAvailable = false;\n\t},\n\n\t_pasteRightGame: function(index)\n\t{\n\t\tworld.paste(this._selectedGameIndex, index+1);\n\n\t\tthis._redrawWorld(true);\n\n\t\tthis._setVisiblePasting(this._gameTable, false);\n\t\tthis._pastingAvailable = false;\n\t},\n\n\t_pasteLeftGame: function(index)\n\t{\n\t\tworld.paste(this._selectedGameIndex, index);\n\n\t\tthis._redrawWorld(true);\n\n\t\tthis._setVisiblePasting(this._gameTable, false);\n\t\tthis._pastingAvailable = false;\n\t},\n\n\t_showInfo: function(sender)\n\t{\n\t\tvar INFO_LAYER_TAG = 1;\n\n\t\tif(!this.getChildByTag(INFO_LAYER_TAG))\n\t\t{\n\t\t\tvar layer = new WorldInfoLayer();\n\n\t\t\tvar infoAlign = new ccui.RelativeLayoutParameter();\n\t\t\tinfoAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN);\n\t\t\tinfoAlign.setMargin(0, 2*MenuEditorLayer.SEPARATOR, 0, 0);\n\t\t\tinfoAlign.setRelativeToWidgetName(\"info\");\n\t\t\tlayer.setLayoutParameter(infoAlign);\n\n\t\t\tthis.addChild(layer, 0, INFO_LAYER_TAG);\n\t\t\tthis.requestDoLayout();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.removeChildByTag(INFO_LAYER_TAG);\n\t\t}\n\t}\n});\n\nMenuEditorLayer.SEPARATOR = 8;\nMenuEditorLayer.MAX_ELEMENTS_IN_ROW = 3;\nMenuEditorLayer.POPUP_LAYER_TAG = 100;\nMenuEditorLayer.CONFIRM_LAYER_TAG = 1523;\n\nMenuEditorLayer.EventType = {\n\tRemove: 0,\n\tCopy: 1,\n\tShiftLeft: 2,\n\tShiftRight: 3,\n\tPasteLeft: 4,\n\tPasteRight: 5\n};\n\nMenuEditorLayer.DOTS_INTENSITY = 50;\n\n/**\n * @class Scene for {@link MenuEditorLayer}\n * @extends cc.Scene\n * @constructor\n * @param {Number} game Index of current game.\n */\nvar MenuEditorScene = cc.Scene.extend(/** @lends MenuEditorScene# */{\n\tctor: function(game)\n\t{\n\t\tthis._super();\n\n\t\tif (game === undefined)\n\t\t\tgame = -1;\n\n\t\tvar layer = new MenuEditorLayer(game);\n\t\tthis.addChild(layer);\n\n\t\tvar backLayer = pm.backgroundUtils.generateBackground();\n\t\tthis.addChild(backLayer, -1);\n\t}\n});\n","\n/**\n * @class Layer for choosing Mirera course for creating of theme\n * @extends ccui.Layout\n */\n\nvar SelectMireraCourseLayer = pmui.OvalLayout.extend(/** @lends SelectMireraCourseLayer# */{\n\n\t_courses: [],\n\t_index: -1,\n\t_callback: null,\n\t_target: null,\n\tchooseLevelLayout: null,\n\n\tctor: function (callback, target, courses)\n\t{\n\t\tvar screenSize = pm.settings.getScreenSize();\n\n\t\tvar chooseGameLevelWidth = SelectMireraCourseLayer.WIDTH_PERCENT * screenSize.width;\n\t\tvar chooseGameLevelHeight = SelectMireraCourseLayer.HEIGHT_PERCENT * screenSize.height;\n\n\t\tthis._super(cc.size(chooseGameLevelWidth, chooseGameLevelHeight), null, pmui.OvalLayout.Type.THIN);\n\n\t\tthis._callback = callback;\n\t\tthis._target = target;\n\t\tthis._courses = courses;\n\n\t\tthis.setPosition((screenSize.width - this.width) / 2, (screenSize.height - this.height) / 2);\n\n\t\tvar label = new pmui.Text(LocalizedString(\"CourseList\"), 30);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, SelectMireraCourseLayer.BORDER, 0, 0);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\n\t\tvar cancelAlign = new ccui.RelativeLayoutParameter();\n\t\tcancelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\tcancelAlign.setMargin(0, 0, SelectMireraCourseLayer.BORDER, SelectMireraCourseLayer.BORDER);\n\t\tcancel.setLayoutParameter(cancelAlign);\n\n\t\tthis.addChild(cancel);\n\n\t\tvar ok = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OK\"));\n\n\t\tvar okAlign = new ccui.RelativeLayoutParameter();\n\t\tokAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\tokAlign.setMargin(SelectMireraCourseLayer.BORDER, 0, 0, SelectMireraCourseLayer.BORDER);\n\t\tok.setLayoutParameter(okAlign);\n\n\t\tthis.addChild(ok);\n\n\t\tvar courseNameArray = [];\n\n\t\tfor(var i = 0 ; i < this._courses.length; ++i)\n\t\t\tcourseNameArray.push(this._courses[i].name);\n\n\t\tvar chooseCourseList = new pmui.SelectionListView(courseNameArray,\n\t\t\tcc.size(this.width - 2 * SelectMireraCourseLayer.BORDER,\n\t\t\t\tthis.height - cancel.height - label.height - 2 * SelectMireraCourseLayer.BORDER - 2 * SelectMireraCourseLayer.SEPARATOR));\n\n\t\tchooseCourseList.setIndexCallback(this.courseSelected, this);\n\n\t\tvar chooseCourseListAlign = new ccui.RelativeLayoutParameter();\n\t\tchooseCourseListAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tchooseCourseListAlign.setRelativeToWidgetName(\"label\");\n\t\tchooseCourseListAlign.setMargin(SelectMireraCourseLayer.BORDER, SelectMireraCourseLayer.SEPARATOR, 0, 0);\n\t\tchooseCourseList.setLayoutParameter(chooseCourseListAlign);\n\n\t\tthis.addChild(chooseCourseList);\n\t},\n\n\t_cancel: function ()\n\t{\n\t\tthis.removeFromParent();\n\t},\n\n\tcourseSelected: function (index)\n\t{\n\t\tthis._index = index;\n\t},\n\n\t_ok: function()\n\t{\n\t\tif(this._index < 0)\n\t\t\treturn;\n\n\t\tif(this._callback)\n\t\t\tthis._callback.call(this._target, this._courses[this._index]);\n\n\t\tthis.removeFromParent();\n\t}\n\n});\n\nSelectMireraCourseLayer.WIDTH_PERCENT = 0.7;\nSelectMireraCourseLayer.HEIGHT_PERCENT = 0.53;\nSelectMireraCourseLayer.BORDER = 20;\nSelectMireraCourseLayer.BORDER_RADIUS = 15;\nSelectMireraCourseLayer.SEPARATOR = 10;\n","/**\n * Created by Nikita Besshaposhnikov on 05.12.14.\n */\n\n/**\n * @class This layer contains view of whole level in editor.\n * @extends LevelLayer\n * @constructor\n * @param {Number} game Index of game for level.\n * @param {Number} level Index of level to load.\n * @param {GameType} gameType\n */\nvar LevelEditorLayer = LevelLayer.extend(/** @lends LevelEditorLayer# */{\n\n\tctor: function(game, level)\n\t{\n\t\tthis._super(GameType.Local, null, game, level);\n\n\t\tpm.registerCustomEventListener(pme.ADD_GLOBAL_ROBOT, function (event)\n\t\t{\n\t\t\tthis._globalRobotsLayer.addRobot(event.getUserData());\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.REMOVE_GLOBAL_ROBOT, function (event)\n\t\t{\n\t\t\tthis._globalRobotsLayer.removeRobot(event.getUserData());\n\t\t}.bind(this), this);\n\n\t\tpm.registerCustomEventListener(pme.REDRAW_GLOBAL_ROBOT, function (event)\n\t\t{\n\t\t\tthis._globalRobotsLayer.redrawRobot(event.getUserData());\n\t\t}.bind(this), this);\n\t},\n\n\t_registerUpdateSceneEvent: function()\n\t{\n\t\tpm.registerCustomEventListener(pm.UPDATE_SCENE, function()\n\t\t{\n\t\t\tcc.director.runScene(new LevelEditorScene(pm.settings.getGame(), pm.settings.getLevel()));\n\t\t}.bind(this), this);\n\t},\n\n\t_loadLevel: function(robotIndex)\n\t{\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\n\t\tthis._level = world.loadLevel(false, this._gameIndex, this._levelIndex, robotIndex);\n\n\t\tif(this._level !== null)\n\t\t{\n\t\t\tthis._levelMenuLayer = new LevelMenuEditorLayer(this._level, this.isNetGame());\n\n\t\t\tvar levelMenuAlign = new ccui.RelativeLayoutParameter();\n\t\t\tlevelMenuAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tthis._levelMenuLayer.setLayoutParameter(levelMenuAlign);\n\n\t\t\tthis.addChild(this._levelMenuLayer, 2);\n\n\t\t\tvar baseRobot = this._level.getCurrentRobot();\n\n\t\t\tvar useMethodStack = pm.moduleUtils.canUseMethodStack(this._level.getType()) && this._level.useMethodStack;\n\n\t\t\tthis._programLayer = pm.appUtils.generateProgramEditorLayer(this._gameType, useMethodStack, baseRobot, this._level);\n\n\t\t\tvar programLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tprogramLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM);\n\t\t\tprogramLayerAlign.setRelativeName(\"programLayer\");\n\t\t\tthis._programLayer.setLayoutParameter(programLayerAlign);\n\n\t\t\tthis.addChild(this._programLayer, 2);\n\n\t\t\tthis._mapsContainerLayer = new MapsContainerEditorLayer(this._level);\n\n\t\t\tvar mapsContainerLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tmapsContainerLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tthis._mapsContainerLayer.setLayoutParameter(mapsContainerLayerAlign);\n\n\t\t\tthis.addChild(this._mapsContainerLayer);\n\n\t\t\tif (this._level.activeMap.mapLayer instanceof pm.MapLayer2D && this._level.activeMap.mapLayer.hasChangeOrientationOption())\n\t\t\t\tthis._levelMenuLayer.drawChangeOrientationButton();\n\n\t\t\tthis._globalRobotsLayer = new GlobalRobotsLayer(this._level);\n\n\t\t\tvar rightMargin = screenBounds.safeAreas.right ? screenBounds.right / 2 : 0;\n\n\t\t\tvar globalRobotsLayerAlign = new ccui.RelativeLayoutParameter();\n\t\t\tglobalRobotsLayerAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\tglobalRobotsLayerAlign.setMargin(-rightMargin, 0, 0, 0);\n\t\t\tthis._globalRobotsLayer.setLayoutParameter(globalRobotsLayerAlign);\n\n\t\t\tthis.addChild(this._globalRobotsLayer, 1);\n\t\t}\n\t},\n\n\tonEnterTransitionDidFinish: function()\n\t{\n\t\tccui.Layout.prototype.onEnterTransitionDidFinish.call(this);\n\t}\n});\n\n/**\n * @class This class contains whole level layer in editor.\n * @extends cc.Scene\n * @constructor\n * @param {Number} game Index of game for level.\n * @param {Number} level Index of level to load.\n * @param {GameType} gameType\n */\nvar LevelEditorScene = cc.Scene.extend({\n\tctor: function(game, level)\n\t{\n\t\tthis._super();\n\t\tvar layer = new LevelEditorLayer(game, level);\n\t\tthis.addChild(layer);\n\t}\n});\n","/**\n * Created by Nikita Besshaposhnikov on 05.12.14.\n */\n\n/**\n * @class Layer which contains all needed for level menus in editor.\n * @extends LevelMenuLayer\n * @constructor\n * @param {pm.AbstractLevel} level For what level construct.\n * @param {Boolean} isNetGame Is game by network.\n */\nvar LevelMenuEditorLayer = LevelMenuLayer.extend(/** @lends LevelMenuEditorLayer# */{\n\t_level: null,\n\t_layersListener: null,\n\thidden: true,\n\t_currentPageName: \"\",\n\t_currentButton: null,\n\n\t_levelSettings: null,\n\t_mapElements: null,\n\t_taskSettings: null,\n\t_objectsSettings: null,\n\t_activeObjectSettings: null,\n\t_globalRobotsSettings: null,\n\n\tctor: function(level, isNetGame)\n\t{\n\t\tthis._super(level, isNetGame);\n\n\t\tthis._level = level;\n\n\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\tvar levelSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"levelSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"levelSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"levelSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tlevelSettingsButton.setName(LevelMenuEditorLayer.PageName.Level);\n\t\tlevelSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar levelSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tlevelSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tlevelSettingsButtonAlign.setRelativeName(\"levelSettings\");\n\t\tlevelSettingsButtonAlign.setRelativeToWidgetName(\"back\");\n\t\tlevelSettingsButtonAlign.setMargin(0, 2 * LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\tlevelSettingsButton.setLayoutParameter(levelSettingsButtonAlign);\n\n\t\tthis.addChild(levelSettingsButton);\n\n\t\tvar mapSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"mapSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"mapSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"mapSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tmapSettingsButton.setName(LevelMenuEditorLayer.PageName.Map);\n\t\tmapSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar mapSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tmapSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tmapSettingsButtonAlign.setRelativeName(\"mapSettings\");\n\t\tmapSettingsButtonAlign.setRelativeToWidgetName(\"levelSettings\");\n\t\tmapSettingsButtonAlign.setMargin(0, LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\tmapSettingsButton.setLayoutParameter(mapSettingsButtonAlign);\n\n\t\tthis.addChild(mapSettingsButton);\n\n\t\tvar taskSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"taskSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"taskSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"taskSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\ttaskSettingsButton.setName(LevelMenuEditorLayer.PageName.Task);\n\t\ttaskSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar taskSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\ttaskSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\ttaskSettingsButtonAlign.setRelativeName(\"taskSettings\");\n\t\ttaskSettingsButtonAlign.setRelativeToWidgetName(\"mapSettings\");\n\t\ttaskSettingsButtonAlign.setMargin(0, LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\ttaskSettingsButton.setLayoutParameter(taskSettingsButtonAlign);\n\n\t\tthis.addChild(taskSettingsButton);\n\n\t\tvar objectSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"objectSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"objectSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"objectSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tobjectSettingsButton.setName(LevelMenuEditorLayer.PageName.Objects);\n\t\tobjectSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar objectSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tobjectSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tobjectSettingsButtonAlign.setRelativeName(\"objectSettings\");\n\t\tobjectSettingsButtonAlign.setRelativeToWidgetName(\"taskSettings\");\n\t\tobjectSettingsButtonAlign.setMargin(0, LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\tobjectSettingsButton.setLayoutParameter(objectSettingsButtonAlign);\n\n\t\tthis.addChild(objectSettingsButton);\n\n\t\tvar robotSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"robotSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"robotSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"robotSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\trobotSettingsButton.setName(LevelMenuEditorLayer.PageName.Robot);\n\t\trobotSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar robotSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\trobotSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\trobotSettingsButtonAlign.setRelativeName(\"robotSettings\");\n\t\trobotSettingsButtonAlign.setRelativeToWidgetName(\"objectSettings\");\n\t\trobotSettingsButtonAlign.setMargin(0, LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\trobotSettingsButton.setLayoutParameter(robotSettingsButtonAlign);\n\n\t\tthis.addChild(robotSettingsButton);\n\n\t\tvar globalSettingsButton = new pmui.SelectionButton( pm.spriteUtils.getIconName(\"globalSettings\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"globalSettings\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"globalSettings\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tglobalSettingsButton.setName(LevelMenuEditorLayer.PageName.Global);\n\t\tglobalSettingsButton.addClickEventListener(this._showSettings.bind(this));\n\n\t\tvar globalSettingsButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tglobalSettingsButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tglobalSettingsButtonAlign.setRelativeName(\"globalSettings\");\n\t\tglobalSettingsButtonAlign.setRelativeToWidgetName(\"robotSettings\");\n\t\tglobalSettingsButtonAlign.setMargin(0, LevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR, 0, 0);\n\n\t\tglobalSettingsButton.setLayoutParameter(globalSettingsButtonAlign);\n\n\t\tthis.addChild(globalSettingsButton);\n\n\t\tthis._levelSettings = new LevelSettings(level);\n\t\tthis._mapElements = new MapElementsLayer(level);\n\t\tthis._taskSettings = new TaskSettingsLayer(level);\n\t\tthis._objectsSettings = new ObjectsSettingsLayer(level);\n\t\tthis._activeObjectSettings = new ActiveObjectSettingsLayer(level);\n\t\tthis._globalRobotsSettings = new GlobalRobotsSettingsLayer(level);\n\n\t\tthis.addChild(this._levelSettings);\n\t\tthis.addChild(this._mapElements);\n\t\tthis.addChild(this._taskSettings);\n\t\tthis.addChild(this._objectsSettings);\n\t\tthis.addChild(this._activeObjectSettings);\n\t\tthis.addChild(this._globalRobotsSettings);\n\n\t\tHintEditorLayer._lastY = 0;\n\t\tHintEditorLayer._hints = [];\n\n\t\tthis._layersListener = pm.registerCustomEventListener(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, function()\n\t\t{\n\t\t\tthis._selectMapMenu.updateMaps();\n\t\t}.bind(this), 2);\n\t},\n\n\t_registerInfoEventListener: function(isNetGame)\n\t{\n\t\tpm.registerCustomEventListener(pm.SHOW_INFO, function()\n\t\t{\n\t\t\tif (this._hintLayer && this._hintLayer.isVisible())\n\t\t\t{\n\t\t\t\tthis._hintLayer.removeLayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._hintLayer = new HintEditorLayer(this._level.hint);\n\t\t\tthis._hintLayer.show();\n\t\t}.bind(this), this);\n\t},\n\n\t_showSettings: function(sender)\n\t{\n\t\tvar name = sender.getName();\n\t\tvar page = this._getPageByName(name);\n\n\t\tif (!this.hidden && this._currentPageName === name)\n\t\t{\n\t\t\tthis.hidden = true;\n\n\t\t\tpage.hide();\n\t\t\tthis._currentPageName = \"\";\n\n\t\t\tsender.setNormalTexture();\n\t\t\tthis._currentButton = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!this.hidden)\n\t\t\t{\n\t\t\t\tvar curPage = this._getPageByName(this._currentPageName);\n\t\t\t\tcurPage.hide();\n\n\t\t\t\tthis._currentButton.loadTextureNormal(pm.spriteUtils.getIconName(this._currentPageName, pm.NORMAL_STATE),\n\t\t\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\t\t}\n\n\t\t\tthis.hidden = false;\n\n\t\t\tpage.show();\n\t\t\tthis._currentPageName = name;\n\n\t\t\tsender.setSelectedTexture();\n\t\t\tthis._currentButton = sender;\n\t\t}\n\t},\n\n\t_getPageByName: function(name)\n\t{\n\t\tswitch (name)\n\t\t{\n\t\t\tcase LevelMenuEditorLayer.PageName.Level:\n\t\t\t\treturn this._levelSettings;\n\t\t\tcase LevelMenuEditorLayer.PageName.Map:\n\t\t\t\treturn this._mapElements;\n\t\t\tcase LevelMenuEditorLayer.PageName.Task:\n\t\t\t\treturn this._taskSettings;\n\t\t\tcase LevelMenuEditorLayer.PageName.Objects:\n\t\t\t\treturn this._objectsSettings;\n\t\t\tcase LevelMenuEditorLayer.PageName.Robot:\n\t\t\t\treturn this._activeObjectSettings;\n\t\t\tcase LevelMenuEditorLayer.PageName.Global:\n\t\t\t\treturn this._globalRobotsSettings;\n\t\t}\n\t},\n\n\t_drawTransButton: function ()\n\t{\n\t\tif(pm.settings.getUserData().accountType === pm.USER_TYPE.TEACHER)\n\t\t{\n\t\t\tvar screenBounds = pm.settings.getScreenBounds();\n\n\t\t\tvar toPiktomirButton = new pmui.Button( pm.spriteUtils.getIconName(\"toPiktomir\", pm.NORMAL_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toPiktomir\", pm.SELECTED_STATE),\n\t\t\t\tpm.spriteUtils.getIconName(\"toPiktomir\", pm.DISABLED_STATE),\n\t\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t\t);\n\n\t\t\ttoPiktomirButton.addClickEventListener(this._piktomir.bind(this));\n\n\t\t\tvar toPiktomirAlign = new ccui.RelativeLayoutParameter();\n\t\t\ttoPiktomirAlign.setRelativeName(\"trans\");\n\n\t\t\tif(!this._isNetGame)\n\t\t\t{\n\t\t\t\ttoPiktomirAlign.setMargin(0, 0, 0, LevelMenuLayer.SEPARATOR );\n\t\t\t\ttoPiktomirAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN);\n\t\t\t\ttoPiktomirAlign.setRelativeToWidgetName(\"changeLevel\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttoPiktomirAlign.setMargin(0, screenBounds.top, 0, LevelMenuLayer.SEPARATOR);\n\t\t\t\ttoPiktomirAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM);\n\t\t\t}\n\n\t\t\ttoPiktomirButton.setLayoutParameter(toPiktomirAlign);\n\n\t\t\tthis.addChild(toPiktomirButton);\n\t\t}\n\t},\n\n\t_piktomir: function()\n\t{\n\t\tpm.settings.isEditorMode = false;\n\n\t\tthis._level.clearCache();\n\n\t\tworld.setLevelUpdated(pm.settings.getGame(), pm.settings.getLevel());\n\t\tworld.save();\n\t\tpm.userCache.clearLevelData(this._level.id);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelScene(GameType.Local, null, pm.settings.getGame(), pm.settings.getLevel()));\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_drawExtraInfo: function() {},\n\n\tdrawScaleButtons: function () {},\n\n\tonExit: function ()\n\t{\n\t\tthis._super();\n\n\t\tcc.eventManager.removeListener(this._layersListener);\n\t},\n\n\t_drawHint: function()\n\t{\n\t\t// var showHintButton = new pmui.Button(pm.spriteUtils.getIconName(\"hint\", pm.NORMAL_STATE),\n\t\t// pm.spriteUtils.getIconName(\"hint\", pm.SELECTED_STATE),\n\t\t// pm.spriteUtils.getIconName(\"hint\", pm.DISABLED_STATE),\n\t\t// ccui.Widget.PLIST_TEXTURE);\n\t\t//\n\t\t// var align = new ccui.RelativeLayoutParameter();\n\t\t// align.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\t// align.setMargin(10, 0, 0, 0);\n\t\t// align.setRelativeToWidgetName(SoundButton.WIDGET_NAME);\n\t\t// showHintButton.setLayoutParameter(align);\n\t\t//\n\t\t// showHintButton.addClickEventListener(this._showHint.bind(this));\n\t\t//\n\t\t// this.addChild(showHintButton, 0);\n\t},\n\n\t_enableMenus: function(flag)\n\t{\n\t\tLevelMenuLayer.prototype._enableMenus.call(this, flag);\n\t},\n\n\t_backToMenu: function(object)\n\t{\n\t\tif (pm.tutorialUtils.isProcessingTutorial())\n\t\t\tpm.tutorialUtils.stop();\n\n\t\tthis._level.clearCache();\n\n\t\tworld.setLevelUpdated(pm.settings.getGame(), pm.settings.getLevel());\n\t\tworld.save();\n\t\tpm.userCache.clearLevelData(this._level.id);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY, new MenuEditorScene(pm.settings.getGame()));\n\t\tcc.director.runScene(trans);\n\t},\n\n\t_showHint: function(sender)\n\t{\n\t\tvar hintLayer = new HintEditorLayer(this._level.hint);\n\t\thintLayer.show();\n\t}\n});\n\nLevelMenuEditorLayer.PageName = {\n\tLevel: \"levelSettings\",\n\tMap: \"mapSettings\",\n\tTask: \"taskSettings\",\n\tObjects: \"objectSettings\",\n\tRobot: \"robotSettings\",\n\tGlobal: \"globalSettings\"\n};\n\nLevelMenuEditorLayer.EDITOR_BUTTONS_SEPARATOR = 15;\n","/**\n * Created by Nikita Besshaposhnikov on 05.12.14.\n */\n\n/**\n * @class Layer for displaying program of robot in editor.\n * @extends ProgramLayer\n * @constructor\n * @param {GameType} gameType\n * @param {pm.AbstractRobot} [robot] For which robot construct layer.\n */\nvar ProgramEditorLayerP = ProgramLayerP.extend(/** @lends ProgramEditorLayer# */{\n\n\tctor: function(gameType, useMethodStack, robot, level)\n\t{\n\t\tthis._super(gameType, useMethodStack, robot, level);\n\t},\n\n\t_drawClearProgramButton: function() {},\n\tisMethodCountLimited: function() { return false; },\n\t_canAddFunctions: function() { return true; },\n\tisProgramPatternEditable: function() { return true; }\n});\n","/**\n * Created by Nikita Besshaposhnikov on 05.12.14.\n */\n\n/**\n * @class Layer for displaying program of robot in editor.\n * @extends ProgramLayer\n * @constructor\n * @param {GameType} gameType\n * @param {pm.AbstractRobot} [robot] For which robot construct layer.\n */\nvar ProgramEditorLayerK = ProgramLayerK.extend(/** @lends ProgramEditorLayer# */{\n\n\tctor: function(gameType, useMethodStack, robot, level)\n\t{\n\t\tthis._super(gameType, useMethodStack, robot, level);\n\t},\n\n\t_drawClearProgramButton: function() {},\n\tisMethodCountLimited: function() { return false; },\n\t_canAddFunctions: function() { return true; },\n\tisProgramPatternEditable: function() { return true; }\n});\n","/**\n * Created by danilaeremin on 14.08.15.\n */\n\nvar MapLayersEditActions = {\n\tNone: 0,\n\tAddUp: 1,\n\tAddDown: 2,\n\tDeleteCurrent: 3\n};\n\n/**\n * @class This class provides a container for map layers in editor.
\n * @extends pm.MapsContainerLayer\n * @constructor\n * @param {pm.AbstractLevel} level Level which maps will be represented.\n * @param {Boolean} previewDraw Preview draw of maps.\n */\nvar MapsContainerEditorLayer = pm.MapsContainerLayer.extend(/** @lends MapsContainerEditorLayer# */{\n\t_layersListener: null,\n\n\tctor: function(level, previewDraw)\n\t{\n\t\tthis._super(level, previewDraw);\n\t\tthis._enableScroll = true;\n\n\t\tthis._layersListener = pm.registerCustomEventListener(pme.MAP_LAYERS_COUNT_CHANGED_EVENT_STR, function(event)\n\t\t{\n\t\t\tswitch (event.getUserData())\n\t\t\t{\n\t\t\t\tcase MapLayersEditActions.AddUp:\n\t\t\t\t\tthis._addUpLayer();\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapLayersEditActions.AddDown:\n\t\t\t\t\tthis._addDownLayer();\n\t\t\t\t\tbreak;\n\t\t\t\tcase MapLayersEditActions.DeleteCurrent:\n\t\t\t\t\tthis._deleteLayer();\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}.bind(this), 1);\n\t},\n\n\t_mapChangedEventCallback: function(event)\n\t{\n\t\tthis.changeActiveMap(event.getUserData().index, event.getUserData().sendEvent, event.getUserData().rebaseRobots);\n\t\tthis._level.startMapIndex = event.getUserData().index;\n\t},\n\n\tonExit: function ()\n\t{\n\t\tthis._super();\n\n\t\tcc.eventManager.removeListener(this._layersListener);\n\t},\n\n\t_addUpLayer: function ()\n\t{\n\t\tvar maps = this._level.maps;\n\n\t\tvar addMap = this._createNewLayer();\n\n\t\tmaps.splice(this.activeMapIndex + 1, 0, addMap);\n\n\t\tthis._parallax.addChild(addMap.mapLayer, this.activeMapIndex + 1);\n\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\tthis._level.maps[i].mapLayer.checkPositionTasks();\n\n\t\tthis._updateLayers();\n\n\t\tthis._level.startMapIndex = this.activeMapIndex + 1;\n\t\tthis.changeActiveMap(this.activeMapIndex + 1, false, true);\n\t},\n\n\t_addDownLayer: function ()\n\t{\n\t\tvar maps = this._level.maps;\n\n\t\tvar addMap = this._createNewLayer();\n\n\t\tmaps.splice(this.activeMapIndex, 0, addMap);\n\n\t\tthis._parallax.addChild(addMap.mapLayer, this.activeMapIndex);\n\n\t\tfor(var i = 0; i < this._level.maps.length; ++i)\n\t\t\tthis._level.maps[i].mapLayer.checkPositionTasks();\n\n\t\tthis._updateLayers();\n\n\t\tthis.activeMapIndex++;\n\n\t\tthis._level.startMapIndex = this.activeMapIndex - 1;\n\t\tthis.changeActiveMap(this.activeMapIndex - 1, false, true);\n\t},\n\n\t_deleteLayer: function ()\n\t{\n\t\tif (this._level.maps.length === 1)\n\t\t\treturn;\n\n\t\tvar index = this.activeMapIndex;\n\t\tvar maps = this._level.maps;\n\n\t\tvar to = this.activeMapIndex - 1;\n\n\t\tif (to === -1)\n\t\t{\n\t\t\tto = 1;\n\t\t\tthis._level.startMapIndex = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._level.startMapIndex = to;\n\t\t}\n\n\t\tthis._rebaseRobots(this.activeMapIndex, to);\n\n\t\tthis._parallax.removeChild(maps[index].mapLayer, true);\n\n\t\tmaps.splice(index, 1);\n\n\t\tthis.activeMapIndex--;\n\n\t\tif (this.activeMapIndex === -1)\n\t\t\tthis.activeMapIndex++;\n\n\t\tif (this._level.startMapIndex >= this._level.maps.length)\n\t\t\tthis._level.startMapIndex = this._level.maps.length - 1;\n\n\t\tthis._updateLayers();\n\n\t\tpm.sendCustomEvent(pm.MAP_DRAGGED_EVENT_STR, {index: this.activeMapIndex} );\n\t},\n\n\t_createNewLayer: function ()\n\t{\n\t\tvar map = pm.moduleUtils.generateEmptyMap(\n\t\t\tthis._level.getType(),\n\t\t\tthis._level\n\t\t);\n\n\t\tif (map)\n\t\t{\n\t\t\tmap.load();\n\t\t\tmap.generateMapLayer(false);\n\t\t}\n\n\t\treturn map;\n\t}\n});\n","/**\n * Created by danilaeremin on 14.08.15.\n */\n\n/**\n * Created by Nikita Besshaposhnikov on 31.07.15.\n */\n\n/**\n * @class Layer for display hints in editor. Hints are stacked.\n * @example\n * var hint = new HintEditorLayer(\"I'm hint!\");\n * hint.show();\n * @extends pmui.PopupLayer\n * @constructor\n * @param {String} text Text of hint.\n */\nvar HintEditorLayer = pmui.PopupLayer.extend(/** @lends HintEditorLayer# */{\n\t_hint: null,\n\t_hintInput: null,\n\n\t_visible: true,\n\n\tctor: function(hint)\n\t{\n\t\tthis._super(pmui.PopupLayer.HIDE_DURATION_NEVER);\n\n\t\tthis._hint = hint;\n\n\t\tvar hintLayout = new ccui.Layout();\n\t\tvar buttonsLayout = new ccui.Layout();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\thintLayout.setLayoutType(ccui.Layout.RELATIVE);\n\t\tbuttonsLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar info = new ccui.ImageView(pm.spriteUtils.getIconName(\"info\"), ccui.Widget.PLIST_TEXTURE);\n\n\t\tvar infoMargin = new ccui.RelativeLayoutParameter();\n\t\tinfoMargin.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tinfoMargin.setRelativeName(\"info\");\n\t\tinfoMargin.setMargin(HintEditorLayer.HINT_SEPARATOR, HintEditorLayer.HINT_SEPARATOR, 0, 0);\n\t\tinfo.setLayoutParameter(infoMargin);\n\n\t\tthis.addChild(info);\n\n\t\tvar enter = new pmui.InterfaceButton(this._saveHint, this, LocalizedString(\"Save\"));\n\n\t\tvar enterMargin = new ccui.RelativeLayoutParameter();\n\t\tenterMargin.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tenterMargin.setRelativeName(\"enter\");\n\t\tenter.setLayoutParameter(enterMargin);\n\n\t\tbuttonsLayout.addChild(enter);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._closeHint, this, LocalizedString(\"CancelButton\"));\n\n\t\tvar cancelMargin = new ccui.RelativeLayoutParameter();\n\t\tcancelMargin.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tcancelMargin.setRelativeToWidgetName(\"enter\");\n\t\tcancelMargin.setMargin(HintEditorLayer.HINT_SEPARATOR, 0, 0, 0);\n\t\tcancel.setLayoutParameter(cancelMargin);\n\n\t\tbuttonsLayout.addChild(cancel);\n\n\t\tthis._hintInput = new pmui.TextInput(\n\t\t\thint.text,\n\t\t\tLocalizedString(\"Hint\"),\n\t\t\tpm.settings.fontSize,\n\t\t\tHintEditorLayer.WIDTH,\n\t\t\tHintEditorLayer.HEIGHT\n\t\t);\n\n\t\tvar labelMargin = new ccui.RelativeLayoutParameter();\n\t\tlabelMargin.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tthis._hintInput.setLayoutParameter(labelMargin);\n\n\t\thintLayout.addChild(this._hintInput);\n\n\t\tvar buttonsLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonsLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tbuttonsLayoutAlign.setRelativeName(\"hint\");\n\t\tbuttonsLayoutAlign.setMargin(0, HintEditorLayer.HINT_SEPARATOR, HintEditorLayer.HINT_SEPARATOR, 0);\n\t\tbuttonsLayout.setLayoutParameter(buttonsLayoutAlign);\n\n\t\tvar hintLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\thintLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\thintLayoutAlign.setRelativeToWidgetName(\"info\");\n\t\thintLayoutAlign.setMargin(0, HintEditorLayer.HINT_SEPARATOR, 0, 0);\n\t\thintLayout.setLayoutParameter(hintLayoutAlign);\n\n\t\thintLayout.setContentSize(this._hintInput.getContentSize().width, this._hintInput.getContentSize().height);\n\n\t\tbuttonsLayout.setContentSize(cancel.getContentSize().width + enter.getContentSize().width +\n\t\t\tinfo.getContentSize().width + HintEditorLayer.HINT_SEPARATOR, cancel.getContentSize().height);\n\n\t\tthis.addChild(hintLayout);\n\t\tthis.addChild(buttonsLayout);\n\n\t\tthis.setHideCallback(this._onHide, this);\n\n\t\tthis.setContentSizeWithBorder(Math.max(hintLayout.width, buttonsLayout.width + info.getContentSize().width) + 3/2 * HintEditorLayer.HINT_SEPARATOR,\n\t\t\tbuttonsLayout.height + hintLayout.height + 3 * HintEditorLayer.HINT_SEPARATOR);\n\n\t\tHintEditorLayer._hints.push(this);\n\t},\n\n\t_onHide: function()\n\t{\n\t\tthis._visible = false;\n\n\t\tvar index = HintEditorLayer._hints.indexOf(this);\n\t\tHintEditorLayer._hints.splice(index, 1);\n\n\t\tif(index === HintEditorLayer._hints.length)\n\t\t\treturn;\n\n\t\tfor(var i = index; i < HintEditorLayer._hints.length; ++i)\n\t\t{\n\t\t\tvar x = HintEditorLayer._hints[i].getPositionX();\n\t\t\tvar y = HintEditorLayer._hints[i].getPositionY() - this.getContentSize().height - HintEditorLayer.HINT_SEPARATOR;\n\t\t\tvar move = cc.moveTo(pm.SYSTEM_ANIMATION_DELAY, x, y);\n\n\t\t\tHintEditorLayer._hints[i].runAction(move);\n\t\t}\n\t},\n\n\t/**\n * Shows hint on screen.\n */\n\tshow: function()\n\t{\n\t\tif(HintEditorLayer._hints.length === 1)\n\t\t\tHintEditorLayer._lastY = 3 * pm.settings.getMapSize().height / 5;\n\n\t\tvar positionX = pm.settings.getMapSize().width / 2 - this.getContentSize().width / 2;\n\n\t\tthis.setPosition(positionX, HintEditorLayer._lastY);\n\n\t\tcc.director.getRunningScene().addChild(this, 10);\n\t\tthis._visible = true;\n\n\t\tHintEditorLayer._lastY += this.getContentSize().height + HintEditorLayer.HINT_SEPARATOR;\n\t},\n\n\t_saveHint: function ()\n\t{\n\t\tthis._hint.text = this._hintInput.getString();\n\t\tthis._closeHint();\n\t},\n\n\t_closeHint: function ()\n\t{\n\t\tthis._selfRemove();\n\t},\n\n\t/**\n\t * Determines if the hint is visible.\n\t * @returns {boolean} true if the hint is visible, false if the hint is hidden.\n\t */\n\tisVisible: function()\n\t{\n\t\treturn this._visible;\n\t}\n});\n\nHintEditorLayer._lastY = 0;\nHintEditorLayer._hints = [];\n\n/**\n * Separator between hints.\n * @const\n * @default\n * @type {Number}\n */\nHintEditorLayer.HINT_SEPARATOR = 5;\n\n/**\n * Width of hint.\n * @const\n * @default\n * @type {Number}\n */\nHintEditorLayer.WIDTH = 300;\nHintEditorLayer.HEIGHT = 200;\n","/**\n * Created by danilaeremin on 27.10.15.\n */\n\n/**\n * @class Dialog for edit function settings.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {pm.data.FunctionData} functionData\n */\npme.FunctionSettingsLayer = pmui.OvalLayout.extend(/** @lends pme.FunctionSettingsLayer#*/{\n\t_maxBlocksInput: null,\n\n\t_startDataInput: null,\n\t_endDataInput: null,\n\n\tfunctionData: null,\n\n\tctor: function(functionData)\n\t{\n\t\tthis._super();\n\n\t\tthis.functionData = functionData;\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.setContentSizeWithBorder(pme.FunctionSettingsLayer.WIDTH, pme.FunctionSettingsLayer.HEIGHT);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonLayoutAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS);\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar okButton = new pmui.InterfaceButton(this._ok, this, LocalizedString(\"OkButton\"));\n\t\tbuttonLayout.addChild(okButton);\n\n\t\tvar cancelButton = new pmui.InterfaceButton(this._cancel, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(LoginLayer.SEPARATOR, 0, 0, 0);\n\t\tcancelButton.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancelButton);\n\n\t\tbuttonLayout.setContentSize(okButton.getContentSize().width + cancelButton.getContentSize().width + pmui.MessageBox.SEPARATOR,\n\t\t\tokButton.getContentSize().height);\n\n\t\tvar startDataLabel = new pmui.Text(LocalizedString(\"GivenText\"));\n\t\tvar endDataLabel = new pmui.Text(LocalizedString(\"DoText\"));\n\n\t\tvar startDataLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tstartDataLabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tstartDataLabelAlign.setMargin(pmui.OvalLayout.STANDARD_BORDER_RADIUS, pmui.OvalLayout.STANDARD_BORDER_RADIUS + 10, 0, 0);\n\t\tstartDataLabelAlign.setRelativeName(\"startDataLabel\");\n\t\tstartDataLabel.setLayoutParameter(startDataLabelAlign);\n\t\tthis.addChild(startDataLabel);\n\n\t\tvar endDataLabelAlign = new ccui.RelativeLayoutParameter();\n\t\tendDataLabelAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tendDataLabelAlign.setMargin(0, 15, 0, 0);\n\t\tendDataLabelAlign.setRelativeName(\"endDataLabel\");\n\t\tendDataLabelAlign.setRelativeToWidgetName(\"startDataLabel\");\n\t\tendDataLabel.setLayoutParameter(endDataLabelAlign);\n\t\tthis.addChild(endDataLabel);\n\n\t\tthis._startDataInput = new pmui.TextInput(String(this.functionData.givenText), LocalizedString(\"GivenTextDoText\"), 20, 250);\n\t\tthis._endDataInput = new pmui.TextInput(String(this.functionData.doText), LocalizedString(\"DoText\"), 20, 250);\n\n\t\tvar startDataInputAlign = new ccui.RelativeLayoutParameter();\n\t\tstartDataInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tstartDataInputAlign.setMargin(10, 0, 0, 0);\n\t\tstartDataInputAlign.setRelativeName(\"startDataInput\");\n\t\tstartDataInputAlign.setRelativeToWidgetName(\"startDataLabel\");\n\t\tthis._startDataInput.setLayoutParameter(startDataInputAlign);\n\t\tthis.addChild(this._startDataInput);\n\n\t\tvar endDataInputAlign = new ccui.RelativeLayoutParameter();\n\t\tendDataInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tendDataInputAlign.setMargin(10, 0, 0, 0);\n\t\tendDataInputAlign.setRelativeName(\"endDataInput\");\n\t\tendDataInputAlign.setRelativeToWidgetName(\"endDataLabel\");\n\t\tthis._endDataInput.setLayoutParameter(endDataInputAlign);\n\t\tthis.addChild(this._endDataInput);\n\n\t\tvar listener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: function()\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tonTouchMoved: function() {},\n\t\t\tonTouchEnded: function() {}\n\t\t});\n\n\t\tcc.eventManager.addListener(listener, this);\n\t},\n\n\t_ok: function()\n\t{\n\t\tif (this._startDataInput.getString() !== \"\" &&\n this._endDataInput.getString() !== \"\")\n\t\t{\n\n\t\t\tthis.functionData.givenText = this._startDataInput.getString();\n\t\t\tthis.functionData.doText = this._endDataInput.getString();\n\n\t\t\tthis.functionData.hidden = (this.functionData.doText !== \"\" || this.functionData.givenText !== \"\");\n\t\t}\n\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancel: function()\n\t{\n\t\tthis.removeFromParent();\n\t}\n});\n\npme.FunctionSettingsLayer.WIDTH = 430.0;\npme.FunctionSettingsLayer.HEIGHT = 150.0;\npme.FunctionSettingsLayer.BOUND = 10.0;\npme.FunctionSettingsLayer.SEPARATOR = 5.0;\n","/**\n * Created by Antony Orlovsky on 21.02.18.\n */\n\n/**\n * @class Menu for changing level in editor.
\n * Can change to previous or next level. If new level is in another game, changes game.\n * @extends ChangeLevelMenu\n */\nvar ChangeLevelMenuEditor = ChangeLevelMenu.extend(/** @lends ChangeLevelMenu# */{\n\n\tctor: function ()\n\t{\n\t\tthis._super();\n\t},\n\n\t_transLevel: function ()\n\t{\n\t\tthis.getParent()._level.clearCache();\n\n\t\tworld.setLevelUpdated(pm.settings.getGame(), pm.settings.getLevel());\n\t\tworld.save();\n\t\tpm.userCache.clearLevelData(this.getParent()._level.id);\n\n\t\tvar trans = new cc.TransitionFade(1.5 * pm.SYSTEM_ANIMATION_DELAY,\n\t\t\tnew LevelEditorScene(pm.settings.getGame(), pm.settings.getLevel()));\n\t\tcc.director.runScene(trans);\n\t}\n});\n","/**\n * Created by danilaeremin on 14.02.15.\n */\n\n/**\n * This callback is used when new world added.\n * @callback NewWorldLayer~addCallback\n * @param {String} newWorldName\n */\n\n/**\n * @class Layout for new world dialog.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {Object} target Target for callback.\n * @param {NewWorldLayer~addCallback} callback Called on successful login.\n */\nvar NewWorldLayer = pmui.OvalLayout.extend(/** @lends NewWorldLayer# */{\n\t_worldNameInput: null,\n\t_target: null,\n\t_callback: null,\n\n\t_worldData: null,\n\n\tctor: function(target, callback)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._target = target;\n\t\tthis._callback = callback;\n\n\t\tthis.setContentSizeWithBorder(NewWorldLayer.WIDTH, NewWorldLayer.HEIGHT);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"EnterNewWorldName\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS + NewWorldLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tthis._worldNameInput = new pmui.TextInput(LocalizedString(\"NewWorldName\"), LocalizedString(\"NewWorldName\"), 20, 200);\n\n\t\tvar worldNameAlign = new ccui.RelativeLayoutParameter();\n\t\tworldNameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tworldNameAlign.setRelativeName(\"worldNameInput\");\n\t\tworldNameAlign.setRelativeToWidgetName(\"label\");\n\t\tworldNameAlign.setMargin(0, 5, 0, 0);\n\t\tthis._worldNameInput.setLayoutParameter(worldNameAlign);\n\n\t\tthis.addChild(this._worldNameInput);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonLayoutAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS + NewWorldLayer.SEPARATOR);\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar enter = new pmui.InterfaceButton(this._addWorld, this, LocalizedString(\"CreateButton\"));\n\t\tbuttonLayout.addChild(enter);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._cancelCreate, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(NewWorldLayer.SEPARATOR, 0, 0, 0);\n\t\tcancel.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancel);\n\n\t\tbuttonLayout.setContentSize(enter.getContentSize().width + cancel.getContentSize().width + LoginLayer.SEPARATOR,\n\t\t\tenter.getContentSize().height);\n\t},\n\n\t_addWorld: function(sender)\n\t{\n\t\tthis._worldData = new pm.data.World();\n\t\tthis._worldData.name = this._worldNameInput.getString();\n\n\t\tpm.apiServerUtils.uploadWorld(this._onWorldAdded.bind(this), this._worldData);\n\t},\n\n\t_onWorldAdded: function(error, response)\n\t{\n\t\tif(!error)\n\t\t{\n\t\t\tthis._worldData.id = response.id;\n\n\t\t\tfor(var i = 0 ; i < this._worldData.games.length; ++i)\n\t\t\t{\n\t\t\t\tvar game = this._worldData.games[i];\n\t\t\t\tgame.id = response.games[i].id;\n\n\t\t\t\tfor(var j = 0 ; j < game.levels.length; ++j)\n\t\t\t\t{\n\t\t\t\t\tgame.levels[j].id = response.games[i].levels[j];\n\t\t\t\t\tgame.levels[j].revision = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar user = pm.settings.getUserData();\n\n\t\t\tpm.settings.addWorld(response.id);\n\n\t\t\tpm.settings.setWorldMetaData(response.id, {\n\t\t\t\tname: this._worldData.name,\n\t\t\t\tdescription: this._worldData.description,\n\t\t\t\tcreateDate: this._worldData.createDate,\n\t\t\t\towner: {id: user.id, name: user.username}\n\t\t\t});\n\n\t\t\tvar path = pm.settings.getWorldPath(response.id);\n\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(response.id));\n\n\t\t\tthis._worldData.save(path);\n\n\t\t\tthis._callback.call(this._target, null, response.id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._callback.call(this._target, error);\n\t\t}\n\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancelCreate: function(sender)\n\t{\n\t\tthis.removeFromParent();\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.WIDTH = 350.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.HEIGHT = 150.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.SEPARATOR = 15.0;\n","\n/**\n * This callback is used when new world uploaded.\n * @callback NewWorldLayer~addCallback\n * @param {String} newWorldName\n */\n\n/**\n * @class Layout for new world dialog.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {Object} target Target for callback.\n * @param {NewWorldLayer~addCallback} callback Called on successful login.\n */\nvar UploadWorldLayer = pmui.OvalLayout.extend(/** @lends NewWorldLayer# */{\n\t_worldNameInput: null,\n\t_target: null,\n\t_callback: null,\n\n\t_worldData: null,\n\t_world: null,\n\n\tctor: function(target, callback)\n\t{\n\t\tthis._super();\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._target = target;\n\t\tthis._callback = callback;\n\n\t\tthis.setContentSizeWithBorder(NewWorldLayer.WIDTH, NewWorldLayer.HEIGHT);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"EnterNewWorldName\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS + NewWorldLayer.SEPARATOR, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label);\n\n\t\tthis._worldNameInput = new pmui.TextInput(LocalizedString(\"NewWorldName\"), LocalizedString(\"NewWorldName\"), 20, 200);\n\n\t\tvar worldNameAlign = new ccui.RelativeLayoutParameter();\n\t\tworldNameAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tworldNameAlign.setRelativeName(\"worldNameInput\");\n\t\tworldNameAlign.setRelativeToWidgetName(\"label\");\n\t\tworldNameAlign.setMargin(0, 5, 0, 0);\n\t\tthis._worldNameInput.setLayoutParameter(worldNameAlign);\n\n\t\tthis.addChild(this._worldNameInput);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL);\n\t\tbuttonLayoutAlign.setMargin(0, 0, 0, pmui.OvalLayout.STANDARD_BORDER_RADIUS + NewWorldLayer.SEPARATOR);\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout);\n\n\t\tvar enter = new pmui.InterfaceButton(this._addWorld, this, LocalizedString(\"CreateButton\"));\n\t\tbuttonLayout.addChild(enter);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._cancelCreate, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(NewWorldLayer.SEPARATOR, 0, 0, 0);\n\t\tcancel.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancel);\n\n\t\tbuttonLayout.setContentSize(enter.getContentSize().width + cancel.getContentSize().width + LoginLayer.SEPARATOR,\n\t\t\tenter.getContentSize().height);\n\n\t\tFileSaver.upload( function (world) {\n\t\t\ttry {\n\t\t\t\tthis._world = JSON.parse(world);\n\t\t\t\tthis._worldNameInput.setString(this._world.name);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tthis._callback.call(this._target, e);\n\t\t\t}\n\t\t}.bind(this), this,\n\t\t\t{bottom: pm.settings.getScreenSize().height / 2,\n\t\t\t\tleft: pm.settings.getScreenSize().width / 2}\n\t\t\t\t);\n\t},\n\n\t_addWorld: function(sender)\n\t{\n\t\tif(!this._world)\n\t\t{\n\t\t\tthis._cancelCreate(this);\n\t\t\treturn;\n\t\t}\n\t\tthis._worldData = new pm.data.World();\n\t\tthis._worldData.name = this._worldNameInput.getString();\n\t\tpm.apiServerUtils.uploadWorld(this._onWorldAdded.bind(this), this._worldData);\n\t},\n\n\t_onWorldAdded: function(error, response)\n\t{\n\t\tif(!error) {\n\t\t\tthis._world.id = response.id;\n\t\t\tvar user = pm.settings.getUserData();\n\n\t\t\tthis._world.games.forEach(function (game) {\n\t\t\t\tgame.id = \"\";\n\t\t\t\tgame.levels.forEach(function (level) {\n\t\t\t\t\tlevel.id = \"\";\n\t\t\t\t\tlevel.revision = 1;\n\t\t\t\t});\n\t\t\t});\n\t\t\tpm.settings.setWorldMetaData(response.id, {\n\t\t\t\tname: this._worldData.name,\n\t\t\t\tdescription: this._world.description,\n\t\t\t\tcreateDate: this._world.createDate,\n\t\t\t\towner: {id: user.id, name: user.username}\n\t\t\t});\n\n\t\t\tpm.fileUtils.createDirectory(pm.settings.getWorldDir(response.id));\n\n\t\t\tpm.settings.addWorld(response.id);\n\t\t\tpm.fileUtils.saveObject(pm.settings.getWorldPath(response.id), this._world);\n\t\t\tpm.fileUtils.saveObject(pm.settings.getWorldEditLogPath(response.id), this._world);\n\n\t\t\tthis._callback.call(this._target, null, response.id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._callback.call(this._target, error);\n\t\t}\n\t\tFileSaver.removeFileReader();\n\t\tthis.removeFromParent();\n\t},\n\n\t_cancelCreate: function(sender)\n\t{\n\t\tFileSaver.removeFileReader();\n\t\tthis.removeFromParent();\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.WIDTH = 350.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.HEIGHT = 150.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nNewWorldLayer.SEPARATOR = 15.0;\n","/**\n * Created by danilaeremin on 17.04.15.\n */\n\n/**\n * @class Layout for select type of new level in editor.\n * @extends pmui.OvalLayout\n * @constructor\n * @param {cc.Node} object Copy of MenuEditorLayer.\n */\nvar SelectLevelTypeLayer = pmui.OvalLayout.extend(/** @lends SelectLevelTypeLayer# */{\n\t_selectLevelTypeInput: null,\n\n\ttarget: null,\n\n\tlevelTypesView: null,\n\n\t_selectedLevelType: 0,\n\n\tctor: function(target)\n\t{\n\t\tthis._super(null, null, pmui.OvalLayout.Type.SLIM);\n\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis.target = target;\n\n\t\tthis.setContentSizeWithBorder(SelectLevelTypeLayer.WIDTH, SelectLevelTypeLayer.HEIGHT);\n\n\t\tvar loadingLayer = new LoadingLayer(false);\n\t\tloadingLayer.setPosition((this.width - pm.settings.getScreenSize().width) / 2,\n\t\t\t(this.height - pm.settings.getScreenSize().height) / 2);\n\n\t\tthis.addChild(loadingLayer, -100);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"SelectLevelType\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tlabelAlign.setMargin(0, pmui.OvalLayout.STANDARD_BORDER_RADIUS, 0, 0);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis.addChild(label, 0);\n\n\t\tthis.levelTypesView = [];\n\t\tvar levelTypes = pm.moduleUtils.getLevelNames();\n\n\t\tfor (var levelType in levelTypes)\n\t\t{\n\t\t\tif (!levelTypes.hasOwnProperty(levelType))\n\t\t\t\tcontinue;\n\t\t\tthis.levelTypesView.push(LocalizedString(levelTypes[levelType]));\n\t\t}\n\n\t\tthis._selectLevelTypeInput = new pmui.ComboBox(this.levelTypesView, this, this._selectLevelTypeOnSelect, 20);\n\n\t\tvar selectLevelTypeInputAlign = new ccui.RelativeLayoutParameter();\n\t\tselectLevelTypeInputAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tselectLevelTypeInputAlign.setMargin(0, SelectLevelTypeLayer.SEPARATOR, 0, 0);\n\t\tselectLevelTypeInputAlign.setRelativeToWidgetName(\"label\");\n\t\tselectLevelTypeInputAlign.setRelativeName(\"combobox\");\n\t\tthis._selectLevelTypeInput.setLayoutParameter(selectLevelTypeInputAlign);\n\n\t\tthis.addChild(this._selectLevelTypeInput, 2);\n\n\t\tvar buttonLayout = new ccui.HBox();\n\n\t\tvar buttonLayoutAlign = new ccui.RelativeLayoutParameter();\n\t\tbuttonLayoutAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tbuttonLayoutAlign.setRelativeToWidgetName(\"combobox\");\n\t\tbuttonLayoutAlign.setMargin(0, SelectLevelTypeLayer.SEPARATOR, 0, 0);\n\t\tbuttonLayout.setLayoutParameter(buttonLayoutAlign);\n\n\t\tthis.addChild(buttonLayout, 0);\n\n\t\tvar enter = new pmui.InterfaceButton(this._selectLevelTypeButtonAction, this, LocalizedString(\"CreateButton\"));\n\t\tbuttonLayout.addChild(enter);\n\n\t\tvar cancel = new pmui.InterfaceButton(this._cancelCreate, this, LocalizedString(\"CancelButton\"));\n\t\tvar cancelMargin = new ccui.LinearLayoutParameter();\n\t\tcancelMargin.setMargin(SelectLevelTypeLayer.SEPARATOR, 0, 0, 0);\n\t\tcancel.setLayoutParameter(cancelMargin);\n\n\t\tbuttonLayout.addChild(cancel);\n\n\t\tbuttonLayout.setContentSize(enter.getContentSize().width + cancel.getContentSize().width + SelectLevelTypeLayer.SEPARATOR,\n\t\t\tenter.getContentSize().height);\n\t},\n\n\t_selectLevelTypeOnSelect: function(index)\n\t{\n\t\tthis._selectedLevelType = index;\n\t},\n\n\t_selectLevelTypeButtonAction: function(sender)\n\t{\n\t\tvar levelTypes = pm.moduleUtils.getLevelTypes();\n\t\tthis.target._addLevelWithType(levelTypes[this._selectedLevelType]);\n\t},\n\n\t_cancelCreate: function(sender)\n\t{\n\t\tthis.target._cancelAddLevelWithType();\n\t}\n});\n\n/**\n * @default\n * @const\n * @type {Number}\n */\nSelectLevelTypeLayer.WIDTH = 350.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nSelectLevelTypeLayer.HEIGHT = 150.0;\n/**\n * @default\n * @const\n * @type {Number}\n */\nSelectLevelTypeLayer.SEPARATOR = 7.0;\n","/**\n * Created by Nikita Besshaposhnikov on 15.06.16.\n */\n\n/**\n * @class Layer for editing tutorial scenario.\n * @extends ccui.Layout\n * @constructor\n * @param {pm.data.TutorialScenario } scenario A scenario for editing\n */\nvar TutorialEditLayer = ccui.Layout.extend(/** @lends TutorialEditLayer# */{\n\n\t_scenario: null,\n\n\t_scenarioLayout: null,\n\t_stepListLayer: null,\n\t_headerLayout: null,\n\t_selectStepCombobox: null,\n\t_upButton: null,\n\t_downButton: null,\n\n\t_addStepType: null,\n\t_selectedStepIndex: -1,\n\n\t_drawLayer: null,\n\t_arrowSprite: null,\n\n\t_touchType: -1,\n\t_startPoint: null,\n\t_clickedObject: null,\n\t_newStepType: null,\n\t_emulatedTouch: null,\n\t_touchListener: null,\n\n\tctor: function(scenario)\n\t{\n\t\tthis._super();\n\n\t\tthis.setContentSize(pm.settings.getScreenSize());\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._scenario = scenario;\n\n\t\tvar layoutSize = cc.size(TutorialEditLayer.SCENARIO_LAYOUT_WIDTH, this.height);\n\n\t\tthis._scenarioLayout = new ccui.Layout();\n\t\tthis._scenarioLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tthis._scenarioLayout.setBackGroundImage(\"System/TL_Border.png\");\n\t\tthis._scenarioLayout.setBackGroundImageScale9Enabled(true);\n\t\tthis._scenarioLayout.setCascadeOpacityEnabled(true);\n\t\tthis._scenarioLayout.setBackGroundImageCapInsets(cc.rect(80, 90, 100, 70));\n\t\tthis._scenarioLayout.setContentSize(layoutSize);\n\n\t\tvar scenarioAlign = new ccui.RelativeLayoutParameter();\n\t\tscenarioAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tthis._scenarioLayout.setLayoutParameter(scenarioAlign);\n\n\t\tthis._backgroundLayer = new cc.LayerColor(TutorialEditLayer.BACKGROUND_COLOR, layoutSize.width - 2 * TutorialEditLayer.BACKGROUND_BORDER,\n\t\t\tthis._scenarioLayout.height - 2 * TutorialEditLayer.BACKGROUND_BORDER);\n\t\tthis._backgroundLayer.setPosition(TutorialEditLayer.BACKGROUND_BORDER, TutorialEditLayer.BACKGROUND_BORDER);\n\t\tthis._scenarioLayout.addChild(this._backgroundLayer, -1);\n\n\t\tvar closeButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE\n\t\t);\n\n\t\tcloseButton.setRotation(45);\n\t\tcloseButton.addClickEventListener(this.hide.bind(this));\n\n\t\tvar closeButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tcloseButtonAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT);\n\t\tcloseButtonAlign.setMargin(0, 0, -closeButton.width / 4, 0);\n\t\tcloseButton.setLayoutParameter(closeButtonAlign);\n\n\t\tthis._scenarioLayout.addChild(closeButton);\n\n\t\tvar headerHeight = 0;\n\t\tthis._headerLayout = new ccui.Layout();\n\t\tthis._headerLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar headerAlign = new ccui.RelativeLayoutParameter();\n\t\theaderAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\theaderAlign.setRelativeName(\"header\");\n\t\theaderAlign.setMargin(0, TutorialEditLayer.BORDER, 0, 0);\n\t\tthis._headerLayout.setLayoutParameter(headerAlign);\n\n\t\tvar label = new ccui.Text(LocalizedString(\"TutorialScenario\"), pm.settings.fontName, pm.settings.fontSize);\n\n\t\tvar labelAlign = new ccui.RelativeLayoutParameter();\n\t\tlabelAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL);\n\t\tlabelAlign.setRelativeName(\"label\");\n\t\tlabelAlign.setMargin(TutorialEditLayer.BORDER, TutorialEditLayer.BORDER, 0, 0);\n\t\tlabel.setLayoutParameter(labelAlign);\n\n\t\tthis._headerLayout.addChild(label);\n\t\theaderHeight = Math.max(headerHeight, label.height);\n\n\t\tthis._upButton = new pmui.Button(pm.spriteUtils.getIconName(\"up\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"up\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"up\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tthis._upButton.addClickEventListener(this._upStep.bind(this));\n\n\t\tvar upButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tupButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tupButtonAlign.setRelativeName(\"up\");\n\t\tupButtonAlign.setRelativeToWidgetName(\"label\");\n\t\tupButtonAlign.setMargin(TutorialEditLayer.SEPARATOR, 0, 0, 0);\n\t\tthis._upButton.setLayoutParameter(upButtonAlign);\n\n\t\tthis._downButton = new pmui.Button(pm.spriteUtils.getIconName(\"down\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"down\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"down\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\t\tthis._downButton.addClickEventListener(this._downStep.bind(this));\n\n\t\tvar downButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tdownButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tdownButtonAlign.setRelativeName(\"down\");\n\t\tdownButtonAlign.setRelativeToWidgetName(\"up\");\n\t\tdownButtonAlign.setMargin(TutorialEditLayer.SEPARATOR, 0, 0, 0);\n\t\tthis._downButton.setLayoutParameter(downButtonAlign);\n\n\t\tthis._headerLayout.addChild(this._upButton);\n\t\tthis._headerLayout.addChild(this._downButton);\n\t\tthis._setUpDownButtonStates();\n\t\theaderHeight = Math.max(headerHeight, this._upButton.height);\n\n\t\tvar clearScenario = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tclearScenario.addClickEventListener(this._clearScenario.bind(this));\n\n\t\tvar clearScenarioAlign = new ccui.RelativeLayoutParameter();\n\t\tclearScenarioAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tclearScenarioAlign.setRelativeToWidgetName(\"down\");\n\t\tclearScenarioAlign.setMargin(TutorialEditLayer.SEPARATOR, 0, 0, 0);\n\t\tclearScenario.setLayoutParameter(clearScenarioAlign);\n\n\t\tthis._headerLayout.addChild(clearScenario);\n\t\theaderHeight = Math.max(headerHeight, clearScenario.height * 0.8);\n\n\t\tthis._headerLayout.setContentSize(TutorialEditLayer.SCENARIO_LAYOUT_WIDTH, headerHeight);\n\n\t\tvar addStepLayout = new ccui.Layout();\n\t\taddStepLayout.setLayoutType(ccui.Layout.RELATIVE);\n\n\t\tvar addStepAlign = new ccui.RelativeLayoutParameter();\n\t\taddStepAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\taddStepAlign.setRelativeName(\"addStep\");\n\t\taddStepAlign.setRelativeToWidgetName(\"header\");\n\t\taddStepAlign.setMargin(0, TutorialEditLayer.SEPARATOR, 0, 0);\n\t\taddStepLayout.setLayoutParameter(addStepAlign);\n\n\t\tvar stepMap = TutorialEditLayer.STEP_MAP;\n\t\tvar strList = [];\n\n\t\tfor (var i = 0; i < stepMap.length; ++i)\n\t\t\tstrList.push(LocalizedString(stepMap[i].locString));\n\n\t\tthis._addStepType = stepMap[0].step;\n\n\t\tthis._selectStepCombobox = new pmui.ComboBox(strList, this, this._selectStepOnSelect, 20);\n\n\t\tvar comboboxAlign = new ccui.RelativeLayoutParameter();\n\t\tcomboboxAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_LEFT);\n\t\tcomboboxAlign.setRelativeName(\"combobox\");\n\t\tcomboboxAlign.setMargin(TutorialEditLayer.BORDER, TutorialEditLayer.SHIFT, 0, 0);\n\t\tthis._selectStepCombobox.setLayoutParameter(comboboxAlign);\n\n\t\taddStepLayout.addChild(this._selectStepCombobox);\n\n\t\tvar addStepButton = new pmui.Button(pm.spriteUtils.getIconName(\"add\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"add\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\taddStepButton.addClickEventListener(this._addStepCallback.bind(this));\n\n\t\tvar stepButtonAlign = new ccui.RelativeLayoutParameter();\n\t\tstepButtonAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER);\n\t\tstepButtonAlign.setRelativeToWidgetName(\"combobox\");\n\t\tstepButtonAlign.setMargin(TutorialEditLayer.SEPARATOR, 0, 0, 0);\n\t\taddStepButton.setLayoutParameter(stepButtonAlign);\n\n\t\taddStepLayout.addChild(addStepButton);\n\n\t\taddStepLayout.setContentSize(TutorialEditLayer.SCENARIO_LAYOUT_WIDTH,\n\t\t\tMath.max(this._selectStepCombobox.height, addStepButton.height));\n\t\taddStepLayout.setScale(0.85);\n\n\t\tvar middleBorder = new cc.Scale9Sprite(\"System/PL_Middle.png\");\n\n\t\tmiddleBorder.setCapInsets(cc.rect(28, 18, 7, 4));\n\t\tmiddleBorder.setAnchorPoint(0, 0.5);\n\t\tmiddleBorder.setContentSize(layoutSize.width - 2 * TutorialEditLayer.BACKGROUND_BORDER, TutorialEditLayer.MIDDLE_BORDER);\n\t\tmiddleBorder.setPosition(TutorialEditLayer.BACKGROUND_BORDER, this.height - TutorialEditLayer.BACKGROUND_BORDER -\n\t\t\tTutorialEditLayer.BORDER - this._headerLayout.height - 2 * TutorialEditLayer.SEPARATOR - addStepLayout.height);\n\n\t\tthis._stepListLayer = new ccui.ListView();\n\n\t\tthis._stepListLayer.setDirection(ccui.ScrollView.DIR_VERTICAL);\n\t\tthis._stepListLayer.setItemsMargin(TutorialEditLayer.LIST_ITEM_SEPARATOR);\n\t\tthis._stepListLayer.setScrollBarEnabled(true);\n\t\tthis._stepListLayer.setScrollBarOpacity(255 * 0.9);\n\t\tthis._stepListLayer.setScrollBarWidth(ProgramLayer.SCROLL_BAR_WIDTH);\n\n\t\tthis._stepListLayer.setContentSize(layoutSize.width - TutorialEditLayer.BACKGROUND_BORDER - TutorialEditLayer.BORDER, layoutSize.height - TutorialEditLayer.BORDER -\n\t\t\theaderHeight - addStepLayout.height - middleBorder.height - 3 * TutorialEditLayer.SEPARATOR - TutorialEditLayer.BACKGROUND_BORDER);\n\n\t\tvar stepListMargin = new ccui.RelativeLayoutParameter();\n\t\tstepListMargin.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN);\n\t\tstepListMargin.setMargin(TutorialEditLayer.BACKGROUND_BORDER + TutorialEditLayer.SEPARATOR, TutorialEditLayer.MIDDLE_SEPARATOR, 0, 0);\n\t\tstepListMargin.setRelativeToWidgetName(\"addStep\");\n\t\tthis._stepListLayer.setLayoutParameter(stepListMargin);\n\n\t\tthis._scenarioLayout.addChild(this._headerLayout, 0);\n\t\tthis._scenarioLayout.addChild(addStepLayout, 1);\n\t\tthis._scenarioLayout.addChild(middleBorder, 0);\n\t\tthis._scenarioLayout.addChild(this._stepListLayer, 0);\n\n\t\tthis.addChild(this._scenarioLayout);\n\n\t\tthis._fillStepList();\n\n\t\tthis._drawLayer = new cc.DrawNode();\n\n\t\tthis._drawLayer.setContentSize(this.getContentSize());\n\t\tthis.addChild(this._drawLayer);\n\n\t\tthis._arrowSprite = new cc.Scale9Sprite(pm.spriteUtils.getInterfaceElementFrame(\"arrow\"),\n\t\t\tcc.rect(30 / 2, 8 / 2, 50 / 2, 6 / 2));\n\n\t\tthis._arrowSprite.setColor(TutorialEditLayer.RENDER_COLOR);\n\t\tthis._arrowSprite.setAnchorPoint(0, 0.5);\n\t\tthis._arrowSprite.setVisible(false);\n\t\tthis.addChild(this._arrowSprite);\n\n\t\tthis._stepListLayer.addEventListener(this._onSelectStep.bind(this));\n\n\t\tthis._touchListener = cc.EventListener.create({\n\t\t\tevent: cc.EventListener.TOUCH_ONE_BY_ONE,\n\t\t\tswallowTouches: true,\n\t\t\tonTouchBegan: this._touchBegan.bind(this),\n\t\t\tonTouchMoved: this._touchMoved.bind(this),\n\t\t\tonTouchEnded: this._touchEnded.bind(this)\n\t\t});\n\n\t\tcc.eventManager.addListener(this._touchListener, this);\n\t},\n\n\tshow: function()\n\t{\n\t\tif(this.enabled)\n\t\t\treturn;\n\n\t\tthis.enabled = true;\n\t\tthis._scenarioLayout.setVisible(true);\n\t\tthis._moveSelectionLayer();\n\t\tthis._renderSelectedStep();\n\t},\n\n\thide: function()\n\t{\n\t\tthis.enabled = false;\n\t\tthis._scenarioLayout.setVisible(false);\n\t\tthis._clearSelection(false);\n\n\t\tpm.sendCustomEvent(pm.TUTORIAL_SCENARIO_CLOSED);\n\t},\n\n\t_selectStepOnSelect: function(index)\n\t{\n\t\tthis._addStepType = TutorialEditLayer.STEP_MAP[index].step;\n\t},\n\n\t_addStepCallback: function()\n\t{\n\t\tvar step = new pm.data.TutorialStep();\n\t\tstep.type = this._addStepType;\n\n\t\tswitch(this._addStepType)\n\t\t{\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\tstep.data = pm.ROBOT_WIN_EVENT_STR;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._addStep(step, true);\n\t},\n\t_setUpDownButtonStates: function()\n\t{\n\t\tif(this._selectedStepIndex === -1)\n\t\t{\n\t\t\tthis._upButton.setEnabled(false);\n\t\t\tthis._downButton.setEnabled(false);\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar upState = true;\n\t\tvar downState = true;\n\n\t\tif(this._selectedStepIndex === 0)\n\t\t\tupState = false;\n\n\t\tif(this._selectedStepIndex === this._scenario.steps.length - 1)\n\t\t\tdownState = false;\n\n\t\tthis._upButton.setEnabled(upState);\n\t\tthis._downButton.setEnabled(downState);\n\t},\n\n\t_fillStepList: function()\n\t{\n\t\tfor (var i = 0 ; i < this._scenario.steps.length; ++i)\n\t\t{\n\t\t\tvar layer = this._generateStepLayer(this._scenario.steps[i], i);\n\n\t\t\tif (layer !== null)\n\t\t\t\tthis._stepListLayer.pushBackCustomItem(layer);\n\t\t}\n\t},\n\n\t_upStep: function()\n\t{\n\t\tif(this._selectedStepIndex === -1)\n\t\t\treturn;\n\n\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\t\tvar oldStepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\toldStepLayer.setSelectionVisible(false);\n\n\t\tthis._scenario.steps.splice(this._selectedStepIndex, 1);\n\t\tthis._scenario.steps.splice(this._selectedStepIndex - 1, 0, step);\n\n\t\tvar stepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\tvar number = stepLayer.getStepNumber();\n\n\t\tstepLayer.retain();\n\t\tthis._stepListLayer.removeChild(stepLayer, false);\n\t\tthis._stepListLayer.insertCustomItem(stepLayer, this._selectedStepIndex - 1);\n\t\tstepLayer.release();\n\n\t\tstepLayer.setStepNumber(this._stepListLayer.getItem(this._selectedStepIndex).getStepNumber());\n\t\tthis._stepListLayer.getItem(this._selectedStepIndex).setStepNumber(number);\n\n\t\t--this._selectedStepIndex;\n\n\t\tthis._moveSelectionLayer();\n\t},\n\n\t_downStep: function()\n\t{\n\t\tif(this._selectedStepIndex === -1)\n\t\t\treturn;\n\n\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\t\tvar oldStepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\toldStepLayer.setSelectionVisible(false);\n\n\t\tthis._scenario.steps.splice(this._selectedStepIndex, 1);\n\t\tthis._scenario.steps.splice(this._selectedStepIndex + 1, 0, step);\n\n\t\tvar stepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\tvar number = stepLayer.getStepNumber();\n\n\t\tstepLayer.retain();\n\t\tthis._stepListLayer.removeChild(stepLayer, false);\n\t\tthis._stepListLayer.insertCustomItem(stepLayer, this._selectedStepIndex + 1);\n\t\tstepLayer.release();\n\n\t\tstepLayer.setStepNumber(this._stepListLayer.getItem(this._selectedStepIndex).getStepNumber());\n\t\tthis._stepListLayer.getItem(this._selectedStepIndex).setStepNumber(number);\n\n\t\t++this._selectedStepIndex;\n\n\t\tthis._moveSelectionLayer();\n\t},\n\n\t_addStep: function(step, moveSelection)\n\t{\n\t\tthis._scenario.steps.push(step);\n\n\t\tif (this._selectedStepIndex !== -1)\n\t\t{\n\t\t\tvar oldStepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\t\toldStepLayer.setSelectionVisible(false);\n\t\t}\n\n\t\tvar layer = this._generateStepLayer(step, this._scenario.steps.length - 1);\n\n\t\tif(layer !== null)\n\t\t\tthis._stepListLayer.pushBackCustomItem(layer);\n\n\t\tif(moveSelection)\n\t\t{\n\t\t\tthis._selectedStepIndex = this._scenario.steps.length - 1;\n\t\t\tthis._stepListLayer.forceDoLayout();\n\n\t\t\tthis._moveSelectionLayer();\n\t\t\tthis._renderSelectedStep();\n\t\t}\n\n\t\tthis._processStep(step);\n\t},\n\n\t_processStep: function(step)\n\t{\n\t\tthis._touchListener.setEnabled(false);\n\n\t\tswitch (step.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\tthis._processClickStep(step);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\tthis._processDragStep(step);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\tthis._processMoveToStep(step);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\tthis._processClickAreaStep(step);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\t//No need to do smth\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._touchListener.setEnabled(true);\n\t},\n\n\t_processClickStep: function(step)\n\t{\n\t\tvar clickObject = pm.tutorialUtils._tutorialObjects[step.data].object;\n\n\t\tif (clickObject)\n\t\t{\n\t\t\tclickObject.unlock();\n\t\t\tvar transform = clickObject.getParent().getNodeToWorldTransform();\n\n\t\t\tvar objRect = cc.rectApplyAffineTransform(clickObject.getBoundingBox(), transform);\n\n\t\t\tvar emulateFn = function() {\n\t\t\t\tthis._emulateClick(cc.p(objRect.x + objRect.width / 2, objRect.y + objRect.height / 2), clickObject);\n\t\t\t};\n\n\t\t\temulateFn.call(this);\n\t\t}\n\t},\n\n\t_emulateClick: function(pos, object)\n\t{\n\t\tthis._createEmulatedTouch(1, pos.x, pos.y);\n\n\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.BEGAN);\n\n\t\tsetTimeout(function ()\n\t\t{\n\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.ENDED);\n\n\t\t\tif(cc.sys.isNative)\n\t\t\t\tpm.destroyNativeTouch();\n\n\t\t}.bind(this), pm.tutorialUtils.TUTORIAL_DELAY);\n\t},\n\n\t_processDragStep: function(step)\n\t{\n\t\tvar fromObject = pm.tutorialUtils._tutorialObjects[step.data.from].object;\n\t\tvar toObject = pm.tutorialUtils._tutorialObjects[step.data.to].object;\n\n\t\tif (fromObject && toObject)\n\t\t{\n\t\t\tfromObject.unlock();\n\n\t\t\tvar fromTransform = fromObject.getParent().getNodeToWorldTransform();\n\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromTransform);\n\n\t\t\tvar toTransform = toObject.getParent().getNodeToWorldTransform();\n\t\t\tvar toRect = cc.rectApplyAffineTransform(toObject.getBoundingBox(), toTransform);\n\n\t\t\tvar emulateFn = function() {\n\t\t\t\tthis._emulateMove(\n\t\t\t\t\tcc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n\t\t\t\t\tcc.p(toRect.x + toRect.width / 2, toRect.y + toRect.height / 2)\n\t\t\t\t);\n\t\t\t};\n\n\t\t\temulateFn.call(this);\n\t\t}\n\t},\n\n\t_emulateMove: function(fromPos, toPos)\n\t{\n\t\tthis._createEmulatedTouch(1, fromPos.x, fromPos.y);\n\n\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.BEGAN);\n\n\t\tvar totalTimeOutTime = 600;\n\t\tvar totalStepCount = 50;\n\n\t\tvar timePerMove = totalTimeOutTime / totalStepCount;\n\n\t\tvar dx = (toPos.x - fromPos.x) / totalStepCount;\n\t\tvar dy = (toPos.y - fromPos.y) / totalStepCount;\n\n\t\tvar stepCount = 1;\n\n\t\tfunction moveEvent()\n\t\t{\n\t\t\tif(stepCount <= totalStepCount)\n\t\t\t{\n\t\t\t\tthis._setEmulatedTouchLocation(fromPos.x + stepCount * dx, fromPos.y + stepCount * dy);\n\t\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.MOVED);\n\n\t\t\t\t++stepCount;\n\n\t\t\t\tsetTimeout(moveEvent.bind(this), timePerMove);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis._setEmulatedTouchLocation(toPos.x, toPos.y);\n\t\t\t\tthis._dispatchTouchEvent(cc.EventTouch.EventCode.ENDED);\n\n\t\t\t\tif(cc.sys.isNative)\n\t\t\t\t\tpm.destroyNativeTouch();\n\t\t\t}\n\t\t}\n\n\t\tsetTimeout(moveEvent.bind(this), timePerMove);\n\t},\n\n\t_processMoveToStep: function(step)\n\t{\n\t\tvar fromObject = pm.tutorialUtils._tutorialObjects[step.data.object].object;\n\n\t\tif (fromObject)\n\t\t{\n\t\t\tfromObject.unlock();\n\n\t\t\tvar fromTransform = fromObject.getParent().getNodeToWorldTransform();\n\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromTransform);\n\n\t\t\tvar fromPos = cc.p(fromRect.x, fromRect.y);\n\t\t\tvar toPos = cc.pAdd(fromPos, step.data.delta);\n\n\t\t\tvar emulateFn = function() {\n\t\t\t\tthis._emulateMove(\n\t\t\t\t\tcc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n\t\t\t\t\tcc.p(toPos.x, toPos.y)\n\t\t\t\t);\n\t\t\t};\n\n\t\t\temulateFn.call(this);\n\t\t}\n\t},\n\n\t_processClickAreaStep: function(step)\n\t{\n\t\tvar object = pm.tutorialUtils._tutorialObjects[step.data.object].object;\n\n\t\tif (object)\n\t\t{\n\t\t\tobject.unlock();\n\n\t\t\tvar destRect = cc.rectApplyAffineTransform(step.data.rect, object.getNodeToWorldTransform());\n\t\t\tvar pos = cc.p(destRect.x + destRect.width / 2, destRect.y + destRect.height / 2);\n\n\t\t\tvar emulateFn = function() {\n\t\t\t\tthis._emulateClick(cc.p(pos.x, pos.y), object);\n\t\t\t};\n\n\t\t\temulateFn.call(this);\n\t\t}\n\t},\n\n\t_createEmulatedTouch: function(id, x, y)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tvar realPoint = cc.director.convertToUI(cc.p(x, y));\n\t\t\tpm.createNativeTouch(1, realPoint.x + 0.00001, realPoint.y + 0.00001); //strange correction for work convert on native\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._emulatedTouch = new cc.Touch(x, y, id);\n\t\t}\n\t},\n\n\t_setEmulatedTouchLocation: function(x, y)\n\t{\n\t\tif(cc.sys.isNative)\n\t\t{\n\t\t\tvar realPoint = cc.director.convertToUI(cc.p(x, y));\n\t\t\tpm.setNativeTouchLocation(realPoint.x + 0.00001, realPoint.y + 0.00001); //strange correction for work convert on native\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._emulatedTouch.setTouchInfo(this._emulatedTouch.getID(), x, y);\n\t\t}\n\t},\n\n\t_dispatchTouchEvent: function(eventCode)\n\t{\n\t\tif(!cc.sys.isNative)\n\t\t{\n\t\t\tvar touchEvent = new cc.EventTouch([this._emulatedTouch]);\n\t\t\ttouchEvent._eventCode = eventCode;\n\t\t\tcc.eventManager.dispatchEvent(touchEvent);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpm.dispatchEventFromNativeTouch(eventCode);\n\t\t}\n\t},\n\n\t_generateStepLayer: function(step, stepNumber)\n\t{\n\t\tswitch(step.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\treturn new TutorialStepClickObjectEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\treturn new TutorialStepDragObjectEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\treturn new TutorialStepMoveToEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\treturn new TutorialStepClickAreaEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\treturn new TutorialStepWaitEventEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t\t\treturn new TutorialStepWaitEventEditLayer(step, stepNumber, this._stepListLayer.width, this._onStepRemoved, this);\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t_clearScenario: function()\n\t{\n\t\tthis._scenario.steps = [];\n\t\tthis._stepListLayer.removeAllChildren();\n\n\t\tthis._clearSelection(true);\n\t},\n\n\t_onStepRemoved: function(stepNumber)\n\t{\n\t\tthis._scenario.steps.splice(stepNumber, 1);\n\t\tthis._stepListLayer.removeItem(stepNumber);\n\n\t\tfor (var i = stepNumber; i < this._stepListLayer.getItems().length; ++i)\n\t\t\tthis._stepListLayer.getItem(i).decreaseStepNumber();\n\n\t\tif(stepNumber === this._selectedStepIndex)\n\t\t\tthis._clearSelection(true);\n\t\telse if(stepNumber < this._selectedStepIndex)\n\t\t\t--this._selectedStepIndex;\n\t},\n\n\t_onSelectStep: function(sender, event)\n\t{\n\t\tif(event === ccui.ListView.ON_SELECTED_ITEM_END)\n\t\t{\n\t\t\tif(this._selectedStepIndex !== this._stepListLayer.getCurSelectedIndex())\n\t\t\t{\n\t\t\t\tif (this._selectedStepIndex !== -1)\n\t\t\t\t{\n\t\t\t\t\tvar oldStepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\t\t\t\toldStepLayer.setSelectionVisible(false);\n\t\t\t\t}\n\n\t\t\t\tthis._selectedStepIndex = this._stepListLayer.getCurSelectedIndex();\n\n\t\t\t\tthis._moveSelectionLayer();\n\t\t\t\tthis._renderSelectedStep();\n\t\t\t}\n\t\t}\n\t},\n\n\t_moveSelectionLayer: function()\n\t{\n\t\tif(this._selectedStepIndex === -1)\n\t\t\treturn;\n\n\t\tvar stepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\t\tthis._stepListLayer.jumpToItem(this._selectedStepIndex, cc.p(0.5, 0.5), cc.p(0, 0));\n\n\t\tstepLayer.setSelectionVisible(true);\n\n\t\tthis._setUpDownButtonStates();\n\t},\n\n\t_clearSelection: function(clearIndex)\n\t{\n\t\tif(clearIndex)\n\t\t{\n\t\t\tif (this._selectedStepIndex !== -1)\n\t\t\t{\n\t\t\t\tvar oldStepLayer = this._stepListLayer.getItem(this._selectedStepIndex);\n\n\t\t\t\tif (oldStepLayer)\n\t\t\t\t\toldStepLayer.setSelectionVisible(false);\n\t\t\t}\n\n\t\t\tthis._selectedStepIndex = -1;\n\t\t\tthis._setUpDownButtonStates();\n\t\t}\n\n\t\tthis._drawLayer.clear();\n\t\tthis._arrowSprite.setVisible(false);\n\t},\n\n\t_renderSelectedStep: function()\n\t{\n\t\tif(this._selectedStepIndex === -1)\n\t\t\treturn;\n\n\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\t\tthis._arrowSprite.setVisible(false);\n\n\t\tswitch(step.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\n\t\t\t\tvar object = pm.tutorialUtils.getTutorialObjectByName(step.data).object;\n\n\t\t\t\tif(!object)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar rect = cc.rectApplyAffineTransform(object.getBoundingBox(), object.getParent().getNodeToWorldTransform());\n\t\t\t\tthis._renderClickObjectOrAreaStep(rect);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\tvar fromObject = pm.tutorialUtils.getTutorialObjectByName(step.data.from).object;\n\t\t\t\tvar toObject = pm.tutorialUtils.getTutorialObjectByName(step.data.to).object;\n\n\t\t\t\tif(!fromObject || !toObject)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromObject.getParent().getNodeToWorldTransform());\n\t\t\t\tvar toRect = cc.rectApplyAffineTransform(toObject.getBoundingBox(), toObject.getParent().getNodeToWorldTransform());\n\n\t\t\t\tthis._renderDragObjectStep(fromRect, toRect);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\tvar fromObject = pm.tutorialUtils.getTutorialObjectByName(step.data.object).object;\n\n\t\t\t\tif(!fromObject)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromObject.getParent().getNodeToWorldTransform());\n\n\t\t\t\tthis._renderMoveToStep(fromRect, step.data.delta, step.data.radius);\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\tvar object = pm.tutorialUtils.getTutorialObjectByName(step.data.object).object;\n\n\t\t\t\tif(!object)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar rect = cc.rectApplyAffineTransform(step.data.rect, object.getNodeToWorldTransform());\n\t\t\t\tthis._renderClickObjectOrAreaStep(rect);\n\n\t\t\t\tbreak;\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\tthis._drawLayer.clear();\n\t\t\t\tbreak;\n\t\t}\n\n\t},\n\n\t_renderClickObjectOrAreaStep: function(objectRect)\n\t{\n\t\tthis._drawLayer.clear();\n\n\t\tthis._drawLayer.drawRect(\n\t\t\tcc.p(objectRect.x, objectRect.y),\n\t\t\tcc.p(objectRect.x + objectRect.width, objectRect.y + objectRect.height),\n\t\t\tnull,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\t},\n\n\t_renderDragObjectStep: function(fromRect, toRect)\n\t{\n\t\tthis._drawLayer.clear();\n\n\t\tthis._drawLayer.drawRect(\n\t\t\tcc.p(fromRect.x, fromRect.y),\n\t\t\tcc.p(fromRect.x + fromRect.width, fromRect.y + fromRect.height),\n\t\t\tnull,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\n\t\tthis._drawLayer.drawRect(\n\t\t\tcc.p(toRect.x, toRect.y),\n\t\t\tcc.p(toRect.x + toRect.width, toRect.y + toRect.height),\n\t\t\tnull,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\n\t\tthis._drawArrow(\n\t\t\tcc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n\t\t\tcc.p(toRect.x + toRect.width / 2, toRect.y + toRect.height / 2)\n\t\t);\n\n\t},\n\n\t_renderDragObject: function(fromRect, toPoint)\n\t{\n\t\tthis._drawLayer.clear();\n\n\t\tthis._drawLayer.drawRect(\n\t\t\tcc.p(fromRect.x, fromRect.y),\n\t\t\tcc.p(fromRect.x + fromRect.width, fromRect.y + fromRect.height),\n\t\t\tnull,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\t\tthis._drawArrow(\n\t\t\tcc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2),\n\t\t\tcc.p(toPoint.x, toPoint.y)\n\t\t);\n\n\t},\n\n\t_renderMoveToStep: function(fromRect, delta, radius)\n\t{\n\t\tthis._drawLayer.clear();\n\n\t\tthis._drawLayer.drawRect(\n\t\t\tcc.p(fromRect.x, fromRect.y),\n\t\t\tcc.p(fromRect.x + fromRect.width, fromRect.y + fromRect.height),\n\t\t\tnull,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\n\t\tvar fromPoint = cc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2);\n\t\tvar toPoint = cc.pAdd(fromPoint, delta);\n\n\t\tthis._drawLayer.drawCircle(\n\t\t\ttoPoint, radius, 0, 50, false,\n\t\t\tTutorialEditLayer.RENDER_LINE_WIDTH,\n\t\t\tTutorialEditLayer.RENDER_COLOR\n\t\t);\n\n\t\tthis._drawArrow(fromPoint, toPoint);\n\t},\n\n\t_drawArrow: function(from, to)\n\t{\n\t\tthis._arrowSprite.setVisible(true);\n\n\t\tvar length = cc.pDistance(from, to);\n\n\t\tthis._arrowSprite.setPosition(from);\n\t\tthis._arrowSprite.setContentSize(length, this._arrowSprite.height);\n\n\t\tvar dx = to.x - from.x;\n\t\tvar dy = to.y - from.y;\n\n\t\tvar product = dx/Math.sqrt(dx * dx + dy * dy);\n\t\tvar angle = Math.acos(product);\n\n\t\tif(dy > 0)\n\t\t\tangle = 2 * Math.PI - angle;\n\n\t\tthis._arrowSprite.setRotation(cc.radiansToDegrees(angle));\n\t},\n\n\t_isObjectClickable: function(tutorialObj)\n\t{\n\t\treturn tutorialObj.object instanceof ccui.Button;\n\t},\n\n\t_touchBegan: function(touch, event)\n\t{\n\t\tif(!this.enabled)\n\t\t\treturn false;\n\n\t\tthis._touchType = -1;\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\tif(cc.rectContainsPoint(this._headerLayout.getBoundingBox(), this._scenarioLayout.convertTouchToNodeSpace(touch)))\n\t\t{\n\t\t\tthis._touchType = TutorialEditLayer.TouchType.DRAG_SCENARIO_LAYOUT;\n\t\t\treturn true;\n\t\t}\n\n\t\tif(cc.rectContainsPoint(this._scenarioLayout.getBoundingBox(), touchPoint))\n\t\t\treturn false;\n\n\t\tvar selectedStep = this._scenario.steps[this._selectedStepIndex];\n\n\t\tif(selectedStep)\n\t\t{\n\t\t\tthis._touchType = TutorialEditLayer.TouchType.CLICK_NEW;\n\n\t\t\tswitch(selectedStep.type)\n\t\t\t{\n\t\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\t\tvar fromObject = pm.tutorialUtils.getTutorialObjectByName(selectedStep.data.object).object;\n\n\t\t\t\t\tif(!fromObject)\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\tvar fromRect = cc.rectApplyAffineTransform(fromObject.getBoundingBox(), fromObject.getParent().getNodeToWorldTransform());\n\t\t\t\t\tvar fromPoint = cc.p(fromRect.x + fromRect.width / 2, fromRect.y + fromRect.height / 2);\n\t\t\t\t\tvar toPoint = cc.pAdd(fromPoint, selectedStep.data.delta);\n\t\t\t\t\tvar dx = touchPoint.x - toPoint.x;\n\t\t\t\t\tvar dy = touchPoint.y - toPoint.y;\n\n\t\t\t\t\tif(dx * dx + dy * dy <= selectedStep.data.radius * selectedStep.data.radius)\n\t\t\t\t\t\tthis._touchType = TutorialEditLayer.TouchType.CLICK_SELECTED;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\t\tvar object = pm.tutorialUtils.getTutorialObjectByName(selectedStep.data.object).object;\n\n\t\t\t\t\tif(!object)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar rect = cc.rectApplyAffineTransform(selectedStep.data.rect, object.getNodeToWorldTransform());\n\n\t\t\t\t\tif(cc.rectContainsPoint(cc.rect(rect.x + (rect.width - 10), rect.y, 10, 10), touchPoint))\n\t\t\t\t\t\tthis._touchType = TutorialEditLayer.TouchType.RESIZE_SELECTED_AREA;\n\t\t\t\t\telse if(cc.rectContainsPoint(rect, touchPoint))\n\t\t\t\t\t\tthis._touchType = TutorialEditLayer.TouchType.DRAG_SELECTED_AREA;\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._touchType = TutorialEditLayer.TouchType.CLICK_NEW;\n\t\t}\n\n\t\tthis._startPoint = touchPoint;\n\n\t\tif(this._touchType === TutorialEditLayer.TouchType.CLICK_NEW)\n\t\t{\n\t\t\tthis._clickedObject = pm.tutorialUtils.getTutorialObjectByPoint(touchPoint);\n\n\t\t\tif(this._clickedObject)\n\t\t\t{\n\t\t\t\tthis._clearSelection(true);\n\n\t\t\t\tif(this._isObjectClickable(this._clickedObject))\n\t\t\t\t\tthis._newStepType = pm.TutorialStepType.CLICK_OBJECT;\n\t\t\t\telse\n\t\t\t\t\tthis._newStepType = pm.TutorialStepType.CLICK_AREA;\n\t\t\t}\n\t\t\telse\n\t\t\t{ this._touchType = -1; }\n\t\t}\n\n\t\treturn this._touchType !== -1;\n\t},\n\n\t_touchMoved: function(touch)\n\t{\n\t\tif(this._touchType === TutorialEditLayer.TouchType.DRAG_SCENARIO_LAYOUT)\n\t\t{\n\t\t\tvar delta = touch.getDelta();\n\t\t\tthis._scenarioLayout.setPosition(cc.pAdd(this._scenarioLayout.getPosition(), delta));\n\t\t\tthis._moveSelectionLayer();\n\n\t\t\treturn;\n\t\t}\n\n\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\t\tvar moved = cc.pDistance(this._startPoint, touchPoint) > 5;\n\n\t\tif(!moved)\n\t\t\treturn;\n\n\t\tif(this._touchType === TutorialEditLayer.TouchType.CLICK_NEW)\n\t\t{\n\t\t\tif(this._clickedObject.isDraggable)\n\t\t\t{\n\t\t\t\tthis._touchType = TutorialEditLayer.TouchType.DRAG_NEW;\n\t\t\t\tthis._newStepType = pm.TutorialStepType.MOVE_TO;\n\t\t\t}\n\t\t\telse if(this._newStepType === pm.TutorialStepType.CLICK_AREA)\n\t\t\t{\n\t\t\t\tthis._touchType = TutorialEditLayer.TouchType.DRAG_NEW;\n\t\t\t}\n\t\t}\n\t\telse if(this._touchType === TutorialEditLayer.TouchType.CLICK_SELECTED)\n\t\t{\n\t\t\tthis._touchType = TutorialEditLayer.TouchType.DRAG_TO_AREA;\n\t\t}\n\n\t\tswitch(this._touchType)\n\t\t{\n\t\t\tcase TutorialEditLayer.TouchType.DRAG_NEW:\n\t\t\t\tif(this._newStepType === pm.TutorialStepType.MOVE_TO)\n\t\t\t\t{\n\t\t\t\t\tvar fromRect = cc.rectApplyAffineTransform(\n\t\t\t\t\t\tthis._clickedObject.object.getBoundingBox(),\n\t\t\t\t\t\tthis._clickedObject.object.getParent().getNodeToWorldTransform()\n\t\t\t\t\t);\n\n\t\t\t\t\tthis._renderDragObject(fromRect, touchPoint);\n\t\t\t\t}\n\t\t\t\telse if(this._newStepType === pm.TutorialStepType.CLICK_AREA)\n\t\t\t\t{\n\t\t\t\t\tvar dx = touchPoint.x - this._startPoint.x;\n\t\t\t\t\tvar dy = touchPoint.y - this._startPoint.y;\n\n\t\t\t\t\tvar origin = cc.p(0, 0);\n\n\t\t\t\t\tif(dx > 0)\n\t\t\t\t\t\torigin.x = this._startPoint.x;\n\t\t\t\t\telse\n\t\t\t\t\t\torigin.x = touchPoint.x;\n\n\t\t\t\t\tif(dy > 0)\n\t\t\t\t\t\torigin.y = this._startPoint.y;\n\t\t\t\t\telse\n\t\t\t\t\t\torigin.y = touchPoint.y;\n\n\t\t\t\t\tvar rect = cc.rect(origin.x, origin.y, Math.abs(dx), Math.abs(dy));\n\n\t\t\t\t\tthis._renderClickObjectOrAreaStep(rect);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase TutorialEditLayer.TouchType.DRAG_TO_AREA:\n\t\t\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\t\t\t\tstep.data.delta = cc.pAdd(step.data.delta, touch.getDelta());\n\n\t\t\t\tthis._renderSelectedStep();\n\n\t\t\t\tbreak;\n\n\t\t\tcase TutorialEditLayer.TouchType.DRAG_SELECTED_AREA:\n\t\t\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\n\t\t\t\tvar delta = touch.getDelta();\n\n\t\t\t\tstep.data.rect.x += delta.x;\n\t\t\t\tstep.data.rect.y += delta.y;\n\n\t\t\t\tthis._renderSelectedStep();\n\n\t\t\t\tbreak;\n\n\t\t\tcase TutorialEditLayer.TouchType.RESIZE_SELECTED_AREA:\n\t\t\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\n\t\t\t\tvar delta = touch.getDelta();\n\n\t\t\t\tif(step.data.rect.width + delta.x > 0 && step.data.rect.height + delta.y > 0)\n\t\t\t\t{\n\t\t\t\t\tstep.data.rect.width += delta.x;\n\t\t\t\t\tstep.data.rect.height -= delta.y;\n\t\t\t\t\tstep.data.rect.y += delta.y;\n\t\t\t\t\tthis._renderSelectedStep();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_touchEnded: function(touch)\n\t{\n\t\tswitch(this._touchType)\n\t\t{\n\t\t\tcase TutorialEditLayer.TouchType.CLICK_NEW:\n\n\t\t\t\tif(this._newStepType === pm.TutorialStepType.CLICK_OBJECT)\n\t\t\t\t{\n\t\t\t\t\tvar step = new pm.data.TutorialStep();\n\t\t\t\t\tstep.type = this._newStepType;\n\n\t\t\t\t\tstep.data = this._clickedObject.name;\n\n\t\t\t\t\tthis._addStep(step, true);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase TutorialEditLayer.TouchType.DRAG_NEW:\n\n\t\t\t\tif(this._newStepType === pm.TutorialStepType.CLICK_AREA)\n\t\t\t\t{\n\t\t\t\t\tvar step = new pm.data.TutorialStep();\n\t\t\t\t\tstep.type = this._newStepType;\n\n\t\t\t\t\tvar touchPoint = this._clickedObject.object.convertTouchToNodeSpace(touch);\n\t\t\t\t\tvar startPoint = this._clickedObject.object.convertToNodeSpace(this._startPoint);\n\n\t\t\t\t\tvar dx = touchPoint.x - startPoint.x;\n\t\t\t\t\tvar dy = touchPoint.y - startPoint.y;\n\n\t\t\t\t\tvar origin = cc.p(0, 0);\n\n\t\t\t\t\tif(dx > 0)\n\t\t\t\t\t\torigin.x = startPoint.x;\n\t\t\t\t\telse\n\t\t\t\t\t\torigin.x = touchPoint.x;\n\n\t\t\t\t\tif(dy > 0)\n\t\t\t\t\t\torigin.y = startPoint.y;\n\t\t\t\t\telse\n\t\t\t\t\t\torigin.y = touchPoint.y;\n\n\t\t\t\t\tstep.data = {\n\t\t\t\t\t\tobject: this._clickedObject.name,\n\t\t\t\t\t\trect: cc.rect(origin.x, origin.y, Math.abs(dx), Math.abs(dy))\n\t\t\t\t\t};\n\n\t\t\t\t\tthis._addStep(step, true);\n\t\t\t\t}\n\t\t\t\telse if(this._newStepType === pm.TutorialStepType.MOVE_TO)\n\t\t\t\t{\n\t\t\t\t\tvar step = new pm.data.TutorialStep();\n\t\t\t\t\tvar touchPoint = this.convertTouchToNodeSpace(touch);\n\n\t\t\t\t\tvar dropObject = pm.tutorialUtils.getTutorialObjectByPoint(touchPoint);\n\n\t\t\t\t\tif(dropObject && dropObject.isDroppable)\n\t\t\t\t\t{\n\t\t\t\t\t\tstep.type = pm.TutorialStepType.DRAG_OBJECT;\n\t\t\t\t\t\tstep.data = {\n\t\t\t\t\t\t\tfrom: this._clickedObject.name,\n\t\t\t\t\t\t\tto: dropObject.name\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstep.type = pm.TutorialStepType.MOVE_TO;\n\t\t\t\t\t\tstep.data = {\n\t\t\t\t\t\t\tobject: this._clickedObject.name,\n\t\t\t\t\t\t\tdelta: cc.pSub(touchPoint, this._startPoint),\n\t\t\t\t\t\t\tradius: TutorialEditLayer.DEFAULT_MOVE_TO_RADIUS\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._addStep(step, true);\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase TutorialEditLayer.TouchType.CLICK_SELECTED:\n\n\t\t\t\tvar step = this._scenario.steps[this._selectedStepIndex];\n\n\t\t\t\tif(step.type !== pm.TutorialStepType.MOVE_TO)\n\t\t\t\t\treturn;\n\n\t\t\t\tstep.data.radius += TutorialEditLayer.MOVE_TO_RADIUS_STEP;\n\n\t\t\t\tif(step.data.radius > TutorialEditLayer.MAX_MOVE_TO_RADIUS)\n\t\t\t\t\tstep.data.radius = TutorialEditLayer.DEFAULT_MOVE_TO_RADIUS;\n\n\t\t\t\tthis._renderSelectedStep();\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._touchType = -1;\n\t\tthis._clickedObject = null;\n\t\tthis._startPoint = null;\n\t\tthis._newStepType = null;\n\t}\n});\n\nTutorialEditLayer.TouchType = {\n\tCLICK_SELECTED: 0,\n\tCLICK_NEW: 1,\n\tDRAG_SELECTED_AREA: 2,\n\tRESIZE_SELECTED_AREA: 3,\n\tDRAG_TO_AREA: 4,\n\tDRAG_NEW: 5,\n\tDRAG_SCENARIO_LAYOUT: 6\n};\n\nTutorialEditLayer.RENDER_LINE_WIDTH = 4;\nTutorialEditLayer.RENDER_COLOR = cc.color(255, 0, 0);\nTutorialEditLayer.LIST_ITEM_SEPARATOR = 10;\nTutorialEditLayer.SCENARIO_LAYOUT_WIDTH = 405.0;\nTutorialEditLayer.SELECTED_STEP_COLOR = cc.color(144, 144, 144);\nTutorialEditLayer.DEFAULT_MOVE_TO_RADIUS = 40.0;\nTutorialEditLayer.MOVE_TO_RADIUS_STEP = 10.0;\nTutorialEditLayer.MAX_MOVE_TO_RADIUS = 100.0;\nTutorialEditLayer.BORDER = 25;\nTutorialEditLayer.MIDDLE_BORDER = 41;\nTutorialEditLayer.BACKGROUND_BORDER = 15;\nTutorialEditLayer.SEPARATOR = 5;\nTutorialEditLayer.SHIFT = -4;\nTutorialEditLayer.MIDDLE_SEPARATOR = 35;\nTutorialEditLayer.BACKGROUND_COLOR = cc.color(135, 160, 180);\n\n/**\n * Array of step mapping for select.\n * @type {Array<{event:String, string:String}>}\n */\nTutorialEditLayer.STEP_MAP = [{\n\tstep: pm.TutorialStepType.WAIT_EVENT, locString: \"WaitForEvent\"\n}];\n","/**\n * Created by Nikita Besshaposhnikov on 15.06.16.\n */\n\n/**\n * This callback is used on self remove of TutorialStepEditLayer.\n * @callback TutorialStepEditLayer~removeCallback\n * @param {Number} stepNumber A number of removed step.\n */\n\n/**\n * @class Layer for editing tutorial scenario step.\n * @interface\n * @extends ccui.Layout\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepEditLayer = ccui.Layout.extend(/** @lends TutorialStepEditLayer# */{\n\n\t_step: null,\n\t_stepNumber: -1,\n\t_removeCallback: null,\n\t_removeCallbackTarget: null,\n\n\t_upLayout: null,\n\t_downLayout: null,\n\t_selectedStepLayout: null,\n\n\tctor: function(step, stepNumber, width, removeCallback, removeCallbackTarget)\n\t{\n\t\tthis._super();\n\t\tthis.setLayoutType(ccui.Layout.RELATIVE);\n\t\tthis.setTouchEnabled(true);\n\n\t\tthis._step = step;\n\t\tthis._stepNumber = stepNumber;\n\t\tthis._removeCallback = removeCallback;\n\t\tthis._removeCallbackTarget = removeCallbackTarget;\n\n\t\tthis._upLayout = new ccui.HBox();\n\t\tthis._downLayout = new ccui.HBox();\n\n\t\tvar label = new ccui.Text(this._getLabelText(), pm.settings.fontName, TutorialStepEditLayer.FONT_SIZE);\n\n\t\tthis._upLayout.addChild(label);\n\n\t\tthis._fillUpLayout();\n\t\tthis._fillDownLayout();\n\n\t\tvar upHeight = 0;\n\t\tvar upChildren = this._upLayout.getChildren();\n\n\t\tvar align = new ccui.LinearLayoutParameter();\n\t\talign.setGravity(ccui.LinearLayoutParameter.CENTER_VERTICAL);\n\n\t\tfor (var i = 0 ; i < upChildren.length; ++i)\n\t\t{\n\t\t\tupHeight = Math.max(upHeight, upChildren[i].height);\n\t\t\tupChildren[i].setLayoutParameter(align.clone());\n\t\t}\n\n\t\tvar downHeight = 0;\n\t\tvar downChildren = this._downLayout.getChildren();\n\n\t\tfor(var i = 0 ; i < downChildren.length; ++i)\n\t\t{\n\t\t\tdownHeight = Math.max(downHeight, downChildren[i].height);\n\t\t\tdownChildren[i].setLayoutParameter(align.clone());\n\t\t}\n\n\t\tvar remove = new pmui.Button(pm.spriteUtils.getIconName(\"clear\", pm.NORMAL_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.SELECTED_STATE),\n\t\t\tpm.spriteUtils.getIconName(\"clear\", pm.DISABLED_STATE),\n\t\t\tccui.Widget.PLIST_TEXTURE);\n\n\t\tremove.setScale(0.8);\n\t\tremove.addClickEventListener(this._remove.bind(this));\n\n\t\tremove.setLayoutParameter(align.clone());\n\n\t\tthis._upLayout.addChild(remove);\n\n\t\tupHeight = Math.max(upHeight, remove.height * 0.8);\n\n\t\tthis._upLayout.setContentSize(width, upHeight);\n\t\tthis._downLayout.setContentSize(width, downHeight);\n\n\t\tvar upAlign = new ccui.RelativeLayoutParameter();\n\t\tupAlign.setAlign(ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL);\n\t\tupAlign.setRelativeName(\"up\");\n\t\tthis._upLayout.setLayoutParameter(upAlign);\n\n\t\tvar downAlign = new ccui.RelativeLayoutParameter();\n\t\tdownAlign.setAlign(ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER);\n\t\tdownAlign.setRelativeToWidgetName(\"up\");\n\t\tthis._downLayout.setLayoutParameter(downAlign);\n\n\t\tthis.addChild(this._upLayout);\n\t\tthis.addChild(this._downLayout);\n\n\t\tthis._selectedStepLayout = new ccui.Layout();\n\t\tthis._selectedStepLayout.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);\n\t\tthis._selectedStepLayout.setBackGroundColor(TutorialEditLayer.SELECTED_STEP_COLOR);\n\n\t\tthis._selectedStepLayout.setVisible(false);\n\t\tthis._selectedStepLayout.setContentSize(width, upHeight + downHeight + TutorialEditLayer.LIST_ITEM_SEPARATOR);\n\t\tthis.addChild(this._selectedStepLayout, -1);\n\n\t\tthis.setContentSize(width, upHeight + downHeight);\n\t},\n\n\t_remove: function()\n\t{\n\t\tthis._removeCallback.call(this._removeCallbackTarget, this._stepNumber);\n\t},\n\n\t_getLabelText: function()\n\t{\n\t\tswitch(this._step.type)\n\t\t{\n\t\t\tcase pm.TutorialStepType.CLICK_OBJECT:\n\t\t\t\treturn LocalizedString(\"ClickObject\");\n\t\t\tcase pm.TutorialStepType.DRAG_OBJECT:\n\t\t\t\treturn LocalizedString(\"DragObject\");\n\t\t\tcase pm.TutorialStepType.MOVE_TO:\n\t\t\t\treturn LocalizedString(\"MoveObjectTo\");\n\t\t\tcase pm.TutorialStepType.CLICK_AREA:\n\t\t\t\treturn LocalizedString(\"ClickArea\");\n\t\t\tcase pm.TutorialStepType.WAIT_EVENT:\n\t\t\t\treturn LocalizedString(\"WaitForEvent\");\n\t\t}\n\n\t\treturn \"\";\n\t},\n\n\tgetStepNumber: function()\n\t{\n\t\treturn this._stepNumber;\n\t},\n\n\tsetStepNumber: function(stepNumber)\n\t{\n\t\tthis._stepNumber = stepNumber;\n\t},\n\n\tdecreaseStepNumber: function()\n\t{\n\t\t--this._stepNumber;\n\t},\n\n\tsetSelectionVisible: function(state)\n\t{\n\t\tthis._selectedStepLayout.setVisible(state);\n\t},\n\n\t_fillUpLayout: function() {},\n\t_fillDownLayout: function() {},\n\n\trefresh: function() {}\n});\n\nTutorialStepEditLayer.FONT_SIZE = 16;\n\n/**\n * @class Layer for editing tutorial scenario step for type {@link pm.TutorialStepType.CLICK_OBJECT}.\n * @implements TutorialStepEditLayer\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepClickObjectEditLayer = TutorialStepEditLayer.extend(/** @lends TutorialStepClickObjectEditLayer# */{\n\n\t_label: null,\n\n\t_fillUpLayout: function()\n\t{\n\t\tthis._label = new ccui.Text(this._step.data, pm.settings.fontName, TutorialStepEditLayer.FONT_SIZE);\n\n\t\tthis._upLayout.addChild(this._label);\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._label.setString(this._step.data);\n\t}\n});\n\n/**\n * @class Layer for editing tutorial scenario step for type {@link pm.TutorialStepType.DRAG_OBJECT}.\n * @implements TutorialStepEditLayer\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepDragObjectEditLayer = TutorialStepEditLayer.extend(/** @lends TutorialStepDragObjectEditLayer# */{\n\n\t_label: null,\n\n\t_fillDownLayout: function()\n\t{\n\t\tvar text = LocalizedString(\"FromToPattern\").format(this._step.data.from, this._step.data.to);\n\t\tthis._label = new ccui.Text(text, pm.settings.fontName, TutorialStepEditLayer.FONT_SIZE);\n\n\t\tthis._downLayout.addChild(this._label);\n\t},\n\n\trefresh: function()\n\t{\n\t\tvar text = LocalizedString(\"FromToPattern\").format(this._step.data.from, this._step.data.to);\n\n\t\tthis._label.setString(text);\n\t}\n});\n\n/**\n * @class Layer for editing tutorial scenario step for type {@link pm.TutorialStepType.MOVE_TO}.\n * @implements TutorialStepEditLayer\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepMoveToEditLayer = TutorialStepEditLayer.extend(/** @lends TutorialStepMoveToEditLayer# */{\n\n\t_label: null,\n\n\t_fillUpLayout: function()\n\t{\n\t\tthis._label = new ccui.Text(this._step.data.object, pm.settings.fontName, TutorialStepEditLayer.FONT_SIZE);\n\n\t\tthis._upLayout.addChild(this._label);\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._label.setString(this._step.data.object);\n\t}\n});\n\n/**\n * @class Layer for editing tutorial scenario step for type {@link pm.TutorialStepType.CLICK_AREA}.\n * @implements TutorialStepEditLayer\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepClickAreaEditLayer = TutorialStepEditLayer.extend(/** @lends TutorialStepClickAreaEditLayer# */{\n\n\t_label: null,\n\n\t_fillUpLayout: function()\n\t{\n\t\tthis._label = new ccui.Text(this._step.data.object, pm.settings.fontName, TutorialStepEditLayer.FONT_SIZE);\n\n\t\tthis._upLayout.addChild(this._label);\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._label.setString(this._step.data.object);\n\t}\n});\n\n/**\n * @class Layer for editing tutorial scenario step for type {@link pm.TutorialStepType.WAIT_EVENT}.\n * @implements TutorialStepEditLayer\n * @constructor\n * @param {pm.data.TutorialStep } step A step for editing\n * @param {Number} stepNumber A number of step for editing\n * @param {Number} width Width of layer\n * @param {TutorialStepEditLayer~removeCallback} removeCallback A callback for self-removing\n * @param {ccui.Widget} removeCallbackTarget A target of callback for self-removing\n */\nvar TutorialStepWaitEventEditLayer = TutorialStepEditLayer.extend(/** @lends TutorialStepWaitEventEditLayer# */{\n\n\t_select: null,\n\n\t_fillDownLayout: function()\n\t{\n\t\tvar eventMap = TutorialStepWaitEventEditLayer.EVENT_MAP;\n\t\tvar strList = [];\n\t\tvar selectIndex = 0;\n\n\t\tfor(var i = 0 ; i < eventMap.length; ++i)\n\t\t{\n\t\t\tstrList.push(LocalizedString(eventMap[i].locString));\n\n\t\t\tif(eventMap[i].event === this._step.data)\n\t\t\t\tselectIndex = i;\n\t\t}\n\n\t\tthis._select = new pmui.ComboBox(\n\t\t\tstrList, this,\n\t\t\tthis._selectTaskOnSelect,\n\t\t\t20, 0,\n\t\t\tthis._selectTaskOnShow,\n\t\t\tthis._selectTaskOnClose\n\t\t);\n\n\t\tthis._select.setScale(0.85);\n\n\t\tthis._select.selectObject(selectIndex);\n\n\t\tthis._downLayout.addChild(this._select);\n\t},\n\n\t_selectTaskOnSelect: function(index)\n\t{\n\t\tthis._step.data = TutorialStepWaitEventEditLayer.EVENT_MAP[index].event;\n\t\tthis._selectTaskOnClose();\n\t},\n\n\t_selectTaskOnShow: function()\n\t{\n\t\tthis.setContentSize(this.width, this.height + 0.85 * this._select.getDropdownSize().height);\n\t\tthis.getParent().getParent().forceDoLayout();\n\t\tthis.getParent().getParent().scrollToItem(this._stepNumber, cc.p(0.5, 0.5), cc.p(0, 0.5));\n\t},\n\n\t_selectTaskOnClose: function()\n\t{\n\t\tthis.setContentSize(this.width, this.height - 0.85 * this._select.getDropdownSize().height);\n\t\tthis.getParent().getParent().forceDoLayout();\n\t\tthis.getParent().getParent().scrollToItem(this._stepNumber, cc.p(0.5, 0.5), cc.p(0, 0.5));\n\t},\n\n\trefresh: function()\n\t{\n\t\tthis._label.setString(this._step.data.object);\n\t}\n});\n\n/**\n * Array of events mapping for select.\n * @type {Array<{event:String, string:String}>}\n */\nTutorialStepWaitEventEditLayer.EVENT_MAP = [\n\t{event: pm.ROBOT_WIN_EVENT_STR, locString: \"RobotWinEvent\"},\n\t{event: pm.ROBOT_LOOSE_EVENT_STR, locString: \"RobotLooseEvent\"},\n\t{event: pm.ROBOT_FAILURE_EVENT_STR, locString: \"RobotFailureEvent\"},\n\t{event: pm.MAP_COMPLETED_STR, locString: \"MapCompleteEvent\"},\n\t{event: pm.COUNTER_LAYER_OPENED_EVENT_STR, locString: \"CounterLayerOpenedEvent\"},\n\t{event: pm.COUNTER_LAYER_CLOSED_EVENT_STR, locString: \"CounterLayerClosedEvent\"},\n\t{event: pm.GREEN_FLAG_LAYER_OPENED_EVENT_STR, locString: \"GreenFlagLayerOpenedEvent\"},\n\t{event: pm.GREEN_FLAG_LAYER_CLOSED_EVENT_STR, locString: \"GreenFlagLayerClosedEvent\"},\n\t{event: pm.ORANGE_FLAG_LAYER_OPENED_EVENT_STR, locString: \"OrangeFlagLayerOpenedEvent\"},\n\t{event: pm.ORANGE_FLAG_LAYER_CLOSED_EVENT_STR, locString: \"OrangeFlagLayerClosedEvent\"},\n\t{event: pm.METHOD_STACK_LAYER_OPENED_EVENT_STR, locString: \"MethodStackLayerOpenedEvent\"},\n\t{event: pm.METHOD_STACK_LAYER_CLOSED_EVENT_STR, locString: \"MethodStackLayerClosedEvent\"},\n {event: pm.METHOD_STACK_LAYER_ACTIVE_EVENT_STR, locString: \"MethodStackLayerActiveEvent\"},\n\t{event: pm.FORCED_COMMANDS_ENDED_EVENTS_STR, locString: \"ForcedCommandsEnded\"}\n];\n","/**\n * A brief explanation for \"project.json\":\n * Here is the content of project.json file, this is the global configuration for your game, you can modify it to customize some behavior.\n * The detail of each field is under it.\n {\n \"project_type\": \"javascript\",\n // \"project_type\" indicate the program language of your project, you can ignore this field\n\n \"debugMode\" : 1,\n // \"debugMode\" possible values :\n // 0 - No message will be printed.\n // 1 - cc.error, cc.assert, cc.warn, cc.log will print in console.\n // 2 - cc.error, cc.assert, cc.warn will print in console.\n // 3 - cc.error, cc.assert will print in console.\n // 4 - cc.error, cc.assert, cc.warn, cc.log will print on canvas, available only on web.\n // 5 - cc.error, cc.assert, cc.warn will print on canvas, available only on web.\n // 6 - cc.error, cc.assert will print on canvas, available only on web.\n\n \"showFPS\" : true,\n // Left bottom corner fps information will show when \"showFPS\" equals true, otherwise it will be hide.\n\n \"frameRate\" : 60,\n // \"frameRate\" set the wanted frame rate for your game, but the real fps depends on your game implementation and the running environment.\n\n \"id\" : \"gameCanvas\",\n // \"gameCanvas\" sets the id of your canvas element on the web page, it's useful only on web.\n\n \"renderMode\" : 0,\n // \"renderMode\" sets the renderer type, only useful on web :\n // 0 - Automatically chosen by engine\n // 1 - Forced to use canvas renderer\n // 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers\n\n \"engineDir\" : \"frameworks/cocos2d-html5/\",\n // In debug mode, if you use the whole engine to develop your game, you should specify its relative path with \"engineDir\",\n // but if you are using a single engine file, you can ignore it.\n\n \"modules\" : [\"cocos2d\"],\n // \"modules\" defines which modules you will need in your game, it's useful only on web,\n // using this can greatly reduce your game's resource size, and the cocos console tool can package your game with only the modules you set.\n // For details about modules definitions, you can refer to \"../../frameworks/cocos2d-html5/modulesConfig.json\".\n\n \"jsList\" : [\n ]\n // \"jsList\" sets the list of js files in your game.\n }\n *\n */\nfunction loadApp(appType)\n{\n\tcc.game.onStart = function ()\n\t{\n\t\tcc.log(\"App type: \" + appType);\n\n\t\tpm.appConfig.appType = appType;\n\n\t\tpm.appUtils.load();\n\n\t\tcc.director.setProjection(cc.Director.PROJECTION_2D);\n\n\t\tif (cc.sys.isMobile &&\n\t\t\tcc.sys.browserType !== cc.sys.BROWSER_TYPE_BAIDU &&\n\t\t\tcc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT)\n\n\t\t\tcc.view.enableAutoFullScreen(true);\n\n\t\tpm.settings.isRetinaEnabled = false;\n\n\t\tif (cc.sys.platform === cc.sys.MOBILE_BROWSER || cc.sys.platform === cc.sys.DESKTOP_BROWSER)\n\t\t{\n\t\t\tpm.settings.isRetinaEnabled = (window.devicePixelRatio > 1 ||\n\t\t\t\t(window.matchMedia && window.matchMedia(\"(-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)\").matches)\n\t\t\t);\n\t\t}\n\n\t\tvar scale = 1;\n\n\t\tif (cc.sys.isNative)\n\t\t\tcc.log(\"ScaleInfo: \" + cc.view.getFrameSize().width + ' ' + cc.view.getFrameSize().height + ' ' + cc.Device.getDPI());\n\n\t\tif (cc.sys.os !== cc.sys.OS_IOS && cc.sys.os !== cc.sys.OS_OSX)\n\t\t{\n\t\t\tif (cc.sys.isMobile || cc.sys.platform === cc.sys.MOBILE_BROWSER && !pm.settings.isRetinaEnabled)\n\t\t\t{\n\t\t\t\tif (cc.Device.getDPI() / pm.MOBILE_DPI_FACTOR > 1.0)\n\t\t\t\t\tpm.settings.isRetinaEnabled = true;\n\n\t\t\t\tif (cc.view.getFrameSize().width / cc.Device.getDPI() >= pm.DEVICE_WIDTH_INDICATOR)\n\t\t\t\t{\n\t\t\t\t\tcc.log(\"Tablet\");\n\n\t\t\t\t\tif (pm.settings.isRetinaEnabled)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sq = pm.TABLET_RETINA_TARGET_WIDTH * pm.TABLET_RETINA_TARGET_HEIGHT / pm.TABLET_RETINA_TARGET_DPI;\n\t\t\t\t\t\tvar sq1 = cc.view.getFrameSize().width * cc.view.getFrameSize().height / cc.Device.getDPI();\n\n\t\t\t\t\t\tvar density = cc.Device.getDPI() / pm.MOBILE_DPI_FACTOR;\n\n\t\t\t\t\t\tif (density <= 2)\n\t\t\t\t\t\t\tdensity = 2.0 / density;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdensity *= 2.0;\n\n\t\t\t\t\t\tscale = density * sq / sq1;\n\n\t\t\t\t\t\tif (scale > 2.0)\n\t\t\t\t\t\t\tscale = 2.0;\n\n\t\t\t\t\t\tif (scale < 1.1)\n\t\t\t\t\t\t\tscale = 1.1;\n\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tscale = 1.1;\n\t\t\t\t\t}\n\t\t\t\t\tcc.log(\"scale =\" + scale);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tcc.log(\"Phone\");\n\n\t\t\t\t\tif (pm.settings.isRetinaEnabled)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sq = pm.PHONE_RETINA_TARGET_WIDTH * pm.PHONE_RETINA_TARGET_HEIGHT / pm.PHONE_RETINA_TARGET_DPI;\n\t\t\t\t\t\tvar sq1 = cc.view.getFrameSize().width * cc.view.getFrameSize().height / cc.Device.getDPI();\n\n\t\t\t\t\t\tvar density = cc.Device.getDPI() / pm.MOBILE_DPI_FACTOR;\n\n\t\t\t\t\t\tif (density <= 2)\n\t\t\t\t\t\t\tdensity = 2.0 / density;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdensity *= 2.0;\n\n\t\t\t\t\t\tscale = density * sq / sq1;\n\n\t\t\t\t\t\tif (scale > 2.0)\n\t\t\t\t\t\t\tscale = 2.0;\n\n\t\t\t\t\t\tif (scale < 1.1)\n\t\t\t\t\t\t\tscale = 1.1;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tscale = 1.1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\telse if (cc.view.getFrameSize().width >= pm.DESKTOP_RETINA_DISPLAY_MIN_WIDTH)\n\t\t\t{\n\t\t\t\tpm.settings.isRetinaEnabled = true;\n\t\t\t\tscale = 2.0;\n\t\t\t}\n\t\t}\n\t\telse if (cc.sys.isNative)\n\t\t{\n\t\t\tpm.settings.isRetinaEnabled = cc.view.getRetinaFactor() >= 2 || cc.view.getContentScaleFactor() >= 2;\n\n\t\t\tif (pm.settings.isRetinaEnabled)\n\t\t\t{\n\t\t\t\tif (cc.sys.platform === cc.sys.IPHONE)\n\t\t\t\t{\n\t\t\t\t\tif (cc.view.getFrameSize().width < pm.IPHONE_BIG_DISPLAY_MIN_WIDTH)\n\t\t\t\t\t\tscale = 1.3;\n\t\t\t\t\telse\n\t\t\t\t\t\tscale = 2.0;\n\t\t\t\t}\n\t\t\t\telse if (cc.sys.platform === cc.sys.IPAD)\n\t\t\t\t{\n\t\t\t\t\tscale = 2.0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (cc.sys.platform === cc.sys.IPHONE)\n\t\t\t{\n\t\t\t\tscale = 0.7;\n\t\t\t}\n\t\t}\n\n\t\tcc.view.enableRetina(pm.settings.isRetinaEnabled && (cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.OS_OSX));\n\n\t\tif (pm.settings.isRetinaEnabled)\n\t\t\tcc.director.setContentScaleFactor(2.0);\n\n\t\tconsole.log(\"Is retina:\" + pm.settings.isRetinaEnabled + \", scale:\" + scale);\n\n\t\tcc.view.setDesignResolutionSize(cc.view.getFrameSize().width / scale, cc.view.getFrameSize().height / scale, cc.ResolutionPolicy.SHOW_ALL);\n\t\tcc.view.adjustViewPort(true);\n\t\tcc.view.resizeWithBrowserSize(true);\n\n\t\tpm.loadClassMapping();\n\n\t\tpm.settings.load();\n\n\t\tcc.log(\"ScreenSize : \" + JSON.stringify(pm.settings.getScreenSize()));\n\n\t\tvar resFile = pm.settings.isRetinaEnabled ? \"res/pre-resources-hd.plist\" : \"res/pre-resources.plist\";\n\n\t\tif (!cc.sys.isNative)\n\t\t{\n\t\t\tvar loadRes = [];\n\n\t\t\tfor (var key in pm.fonts)\n\t\t\t{\n\t\t\t\tif (cc.isObject(pm.fonts[key]))\n\t\t\t\t\tloadRes.push(pm.fonts[key]);\n\t\t\t}\n\n\t\t\tcc.loader.load(loadRes, function ()\n\t\t\t{\n\t\t\t\tcc.loader.loadAliases(resFile, function ()\n\t\t\t\t{\n\t\t\t\t\tif (document.getElementById(\"cocosLoading\")) //If referenced loading.js, please remove it\n\t\t\t\t\t\tdocument.body.removeChild(document.getElementById(\"cocosLoading\"));\n\n\t\t\t\t\tcc.director.runScene(new LoadScene());\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcc.loader.loadAliases(resFile, function ()\n\t\t\t{\n\t\t\t\tcc.director.runScene(new LoadScene());\n\t\t\t});\n\t\t}\n\t};\n\n\tcc.game.run();\n}\n"]}