1919 * @author [email protected] (Liz Looney) 2020 */
2121
22+ import * as Blockly from 'blockly/core' ;
2223import * as storageModule from './module' ;
2324import * as storageNames from './names' ;
2425import startingOpModeBlocks from '../modules/opmode_start.json' ;
@@ -39,6 +40,7 @@ export type Method = {
3940} ;
4041
4142export type MechanismInRobot = {
43+ moduleId : string // ID of the mechanism module.
4244 blockId : string , // ID of the mrc_mechanism block that adds the mechanism to the robot.
4345 name : string ,
4446 className : string , // Includes the module name, for example 'game_piece_shooter.GamePieceShooter'.
@@ -79,6 +81,7 @@ export function newRobotContent(projectName: string): string {
7981 const module : storageModule . Robot = {
8082 modulePath : storageNames . makeRobotPath ( projectName ) ,
8183 moduleType : storageModule . MODULE_TYPE_ROBOT ,
84+ moduleId : Blockly . utils . idGenerator . genUid ( ) ,
8285 projectName : projectName ,
8386 className : storageNames . CLASS_NAME_ROBOT ,
8487 dateModifiedMillis : 0 ,
@@ -94,6 +97,7 @@ export function newMechanismContent(projectName: string, mechanismClassName: str
9497 const module : storageModule . Mechanism = {
9598 modulePath : storageNames . makeModulePath ( projectName , mechanismClassName ) ,
9699 moduleType : storageModule . MODULE_TYPE_MECHANISM ,
100+ moduleId : Blockly . utils . idGenerator . genUid ( ) ,
97101 projectName : projectName ,
98102 className : mechanismClassName ,
99103 dateModifiedMillis : 0 ,
@@ -109,6 +113,7 @@ export function newOpModeContent(projectName: string, opModeClassName: string):
109113 const module : storageModule . OpMode = {
110114 modulePath : storageNames . makeModulePath ( projectName , opModeClassName ) ,
111115 moduleType : storageModule . MODULE_TYPE_OPMODE ,
116+ moduleId : Blockly . utils . idGenerator . genUid ( ) ,
112117 projectName : projectName ,
113118 className : opModeClassName ,
114119 dateModifiedMillis : 0 ,
@@ -129,6 +134,7 @@ export function makeModuleContentText(
129134 methods : Method [ ] ) : string {
130135 const moduleContent = new ModuleContent (
131136 module . moduleType ,
137+ module . moduleId ,
132138 blocks ,
133139 mechanisms ,
134140 components ,
@@ -139,8 +145,12 @@ export function makeModuleContentText(
139145
140146export function parseModuleContentText ( moduleContentText : string ) : ModuleContent {
141147 const parsedContent = JSON . parse ( moduleContentText ) ;
148+ if ( ! parsedContent . moduleId ) {
149+ parsedContent . moduleId = Blockly . utils . idGenerator . genUid ( ) ;
150+ }
142151 return new ModuleContent (
143152 parsedContent . moduleType ,
153+ parsedContent . moduleId ,
144154 parsedContent . blocks ,
145155 parsedContent . mechanisms ,
146156 parsedContent . components ,
@@ -151,6 +161,7 @@ export function parseModuleContentText(moduleContentText: string): ModuleContent
151161export class ModuleContent {
152162 constructor (
153163 private moduleType : string ,
164+ private moduleId : string ,
154165 private blocks : { [ key : string ] : any } ,
155166 private mechanisms : MechanismInRobot [ ] ,
156167 private components : Component [ ] ,
@@ -166,6 +177,10 @@ export class ModuleContent {
166177 return this . moduleType ;
167178 }
168179
180+ getModuleId ( ) : string {
181+ return this . moduleId ;
182+ }
183+
169184 getBlocks ( ) : { [ key : string ] : any } {
170185 return this . blocks ;
171186 }
0 commit comments