def __init__(self): SceneBase.__init__(self) #musique self.MX = [] self.MX.append('assets/audio/MX/DirtySoil.ogg') self.MX.append('assets/audio/MX/DystopianBallad.ogg') self.MX.append('assets/audio/MX/LazyBartender.ogg') self.MX.append('assets/audio/MX/LostInParadise.ogg') self.MX.append('assets/audio/MX/PapayaJuice.ogg') self.MX.append('assets/audio/MX/RetroDance.ogg') self.MX.append('assets/audio/MX/SunnyBeach.ogg') self.MX.append('assets/audio/MX/TimeTraveler.ogg') self.MX.append('assets/audio/MX/WeirdJungle.ogg') self.MX.append('assets/audio/MX/WhereAreYou.ogg') self.SetupMimo() # initialize state # setup the layout for the scene self.SetupLayout() # load event, title, description, objective and material # currento_evento = int(random.random() * 4) if constants.currento_evento == 3: constants.currento_evento = -1 constants.currento_evento += 1 self.LoadEvent(news[constants.currento_evento])
def __init__(self): SceneBase.__init__(self) self.HWSetup() subtitlefont = pygame.font.Font(constants.VCR_OSD_MONO, constants.FONT_SUBTITLE) self.subtitle = utils.Text("", subtitlefont) self.subtitle.SetPosition(constants.VIEWPORT_CENTER_X, 610) self.intro_subtitles = [ { "text": "M corp le da la bienvenida y agradece su participacion\nen esta prueba de seleccion.", "image": "" }, { "text": "Esta prueba evaluara su capacidad para editar y presentar\nnoticias segun las necesidades propuestas por las directivas.", "image": "" }, { "text": "Ante usted tiene la mas reciente version de nuestro modulador\n de mentes, M.i.M.o 3.2.\n\nRecibira una induccion basica y suficiente para operar esta maquina.", "image": "" }, { "text": "Toda la operacion que haga sobre la maquina sera grabada\ny almacenada para nuestro posterior analisis.", "image": "" }, ] self.intro_subtitles_index = -1 self.textLoader = None self.LoadNextSubtitle()
def __init__(self): SceneBase.__init__(self) mimo.reset() self.percentage = 0 mimo.set_led_brightness(120) mimo.set_independent_lights(True, True) # check ring and bulbs leds self.AddTrigger(1, self, 'LoadRing')
def __init__(self): SceneBase.__init__(self) self.HWSetup() # initialize state self.pressed_keys = 0 # setup the layout for the scene self.SetupLayout()
def __init__(self): SceneBase.__init__(self) self.HWSetup() # initialize state self.instruction_msg = "press (w) and (i) to start editing the news" self.loading_msg = "facts incoming..." self.loading = False self.countdown = 3000 # setup the layout for the scene self.SetupLayout()
def __init__(self): SceneBase.__init__(self) # -- initialize state -------------------------------------------------- self.state = STATUS.PLAYING # in milliseconds self.countdown = 20000 self.current_time = 20000 self.popup_active = False self.score = 0 self.SetupMimo() # -- setup layout ------------------------------------------------------ self.SetupLayout() self.SetupPopup()
def Update(self, dt): SceneBase.Update(self, dt) if self.no_facts: return if self.showing_minigame_tutorial: self.minigame_preview.updateFrame(dt) ring.fill_percentage(self.percentage)
def Update(self, dt): SceneBase.Update(self, dt) if self.IsPlaying(): self.current_time -= int(1000 * dt) if self.current_time < 0: self.FinishOptimization() self.current_time = 0 self.timerprogress = self.current_time / self.countdown ring.fill_percentage(self.timerprogress)
def __init__(self): SceneBase.__init__(self) mimo.reset() mimo.set_led_brightness(120) mimo.set_independent_lights(True, True) # check ring and bulbs leds factor = 0.2 loops = 50 n_leds = 28 leds = list(range(0, 28)) for index in range(0, n_leds * loops): led_i = leds[index % n_leds] self.AddTrigger((1.5 + index) * factor, mimo, 'set_material_leds_color', [ led_i, int(random.random() * 255), int(random.random() * 255), int(random.random() * 255) ]) self.AddTrigger((1.5 + index + 0.9) * factor, mimo, 'set_material_leds_color', [led_i, 0, 0, 0]) n_leds = 69 leds = list(range(0, 69)) for index in range(0, n_leds * loops): led_i = leds[index % n_leds] self.AddTrigger((1.5 + index) * factor, mimo, 'set_optimization_leds_color', [ led_i, int(random.random() * 255), int(random.random() * 255), int(random.random() * 255) ]) self.AddTrigger((1.5 + index + 0.9) * factor, mimo, 'set_optimization_leds_color', [led_i, 0, 0, 0])
def Update(self, dt): SceneBase.Update(self, dt) if self.textLoader.update(dt): self.subtitle.SetText(self.textLoader.current_text)
def Update(self, dt): SceneBase.Update(self, dt)
def __init__(self): SceneBase.__init__(self) # initialize state self.image_positions = [ { 'x': 400, 'y': 500 }, { 'x': 400 + 340, 'y': 500 }, { 'x': 400 + (340 * 2), 'y': 500 }, { 'x': 400 + (340 * 3), 'y': 500 } ] self.sequence = [-1, -1, -1, -1] self.material = [False, False, False, False, False, False] self.busy_slots = 0 self.popupActive = False self.can_optimize = False self.showing_minigame_tutorial = False self.selected_minigame = "" self.impact = 0 self.mtl_switcher = { 0: self.hook, 1: self.plot, 2: self.plot, 3: self.conclusion } self.available_minigames = [] self.no_facts = False # Cargar el arreglo de direcciones pa' la musique self.MX = [] self.MX.append('assets/audio/MX/DirtySoil.ogg') self.MX.append('assets/audio/MX/DystopianBallad.ogg') self.MX.append('assets/audio/MX/LazyBartender.ogg') self.MX.append('assets/audio/MX/LostInParadise.ogg') self.MX.append('assets/audio/MX/PapayaJuice.ogg') self.MX.append('assets/audio/MX/RetroDance.ogg') self.MX.append('assets/audio/MX/SunnyBeach.ogg') self.MX.append('assets/audio/MX/TimeTraveler.ogg') self.MX.append('assets/audio/MX/WeirdJungle.ogg') self.MX.append('assets/audio/MX/WhereAreYou.ogg') # Cargar arreglos de SFX audio_path = 'assets/audio/SFX/M_OS/' self.UI_MatSel = [] self.UI_MatSel.append(utils.get_sound(audio_path + 'UI_MatSel_01.ogg')) self.UI_MatSel.append(utils.get_sound(audio_path + 'UI_MatSel_02.ogg')) self.UI_MatSel.append(utils.get_sound(audio_path + 'UI_MatSel_03.ogg')) self.UI_MatSel.append(utils.get_sound(audio_path + 'UI_MatSel_04.ogg')) self.UI_EndGame = utils.get_sound(audio_path + 'UI_EndGame.ogg') self.UI_EndGame.set_volume(1) self.UI_SwitchScene = utils.get_sound('assets/audio/SFX/Scanning/MG1_ObjSort.ogg') # Preparar la máquina para la destrucción self.SetupMimo() # ─────────────────────────────────────────────────────────────────────┐ # obtener el hecho o ir a la pantalla de resultados if constants.currento_evento == len(news): self.no_facts = True self.AddTrigger(0.16, self, 'SwitchToScene', "Results") constants.currento_evento = 0 self.current_event = news[constants.currento_evento] self.current_frame = '???' constants.currento_evento += 1 # obtener el material del hecho self.event_mtl = self.current_event['material'] # ─────────────────────────────────────────────────────────────────────┘ # setup the layout for the scene self.SetupLayout() self.images = [] self.details = [] for mtl in self.event_mtl: mtl_dtl = utils.Text( mtl['detail'][constants.language], self.normal_font, color = constants.PALETTE_TEXT_CYAN ) mtl_dtl.setAnchor(0, 0) mtl_img = utils.Sprite(constants.MATERIAL + mtl['img']) mtl_img.SetOpacity(64) self.images.append(mtl_img) self.details.append(mtl_dtl) material_indexes = [0, 1, 2, 4, 5, 6] index = 0 # set buttons to switch mode for material in self.current_event['material']: line1_text = utils.align_text(material['label'][constants.language][0], index < 3, 16, ' ') line2_text = utils.align_text(material['label'][constants.language][1], index < 3, 16, ' ') mimo.set_material_buttons_light([index] + material['color']) #mimo.set_material_leds_color([material_indexes[index]] + material['color']) mimo.lcd_display_at(index, line1_text, 1) mimo.lcd_display_at(index, line2_text, 2) index += 1
def Update(self, dt): SceneBase.Update(self, dt) self.countdown -= int(1000 * dt) if self.loading else 0 if self.countdown < 0: self.SwitchToScene("Begin")
def __init__(self): SceneBase.__init__(self) mimo.reset() self.logo = utils.Sprite('assets/sprites/logo_MCorp.png', 1280 / 2, 720 / 2) self.logo.opacity = 0 self.sfx_mimo_logo = utils.get_sound('assets/audio/SFX/MimoLogo.ogg') self.AddTween("easeInOutSine", 2, self.logo, "opacity", 0, 255, 1) self.AddTrigger(1, self.sfx_mimo_logo, 'play') #self.comm.opt.set_led_brightness(50) #mimo.set_led_brightness(250) #self.comm.opt.lock_buttons([3, 0, 4, 0]) #mimo.set_optimization_leds_color([0, 255, 0, 0]) #mimo.set_optimization_leds_color([1, 0, 255, 0]) #mimo.set_optimization_leds_color([2, 0, 0, 255]) #mimo.set_optimization_leds_color([3, 255, 0, 0]) #mimo.set_optimization_leds_color([4, 255, 255, 255]) #mimo.set_independent_lights(False, True) #mimo.set_independent_lights(True, True) #mimo.set_buttons_enable_status(True, True) #mimo.set_optimization_buttons_lock_status([0,0,1,0,2,0,3,0,4,0]) #mimo.set_material_buttons_lock_status([0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0]) #mimo.set_tunners_enable_status(False) #mimo.set_optimization_leds_color([2, 255,0,255]) #mimo.set_optimization_leds_color([5, 255,0,255]) #mimo.set_optimization_leds_color([19, 255,0,255]) #mimo.set_optimization_leds_color([27, 255,0,0]) #mimo.set_optimization_leds_color([28, 255,255]) #mimo.set_optimization_leds_color([29, 255,0,255]) #mimo.set_optimization_leds_color([30, 255,0,255]) factor = 0.05 loops = 100 n_leds = 64 + 5 #for index in range(0, n_leds*loops): # self.AddTrigger((1+index)*factor, mimo, 'set_optimization_leds_color', [index%n_leds, int(random.random()*255), int(random.random()*255), int(random.random()*255)]) # self.AddTrigger((1+index+0.9)*factor, mimo, 'set_optimization_leds_color', [index%n_leds, 0, 0, 0]) n_leds = 64 leds = list(range(0, 64)) #for index in range(0, n_leds*loops): # led_i = leds[index%n_leds] + 5 # self.AddTrigger((1.5+index)*factor, mimo, 'set_optimization_leds_color', [led_i, int(random.random()*255), int(random.random()*255), int(random.random()*255)]) # self.AddTrigger((1.5+index+0.9)*factor, mimo, 'set_optimization_leds_color', [led_i, 0, 0, 0]) #self.comm.opt.activate_buttons(True) mimo.set_buttons_enable_status(True, True) mimo.set_independent_lights(False, False) mimo.set_led_brightness(250) mimo.set_material_buttons_lock_status( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0]) mimo.set_material_buttons_mode( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0]) mimo.set_optimization_buttons_lock_status( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0]) mimo.set_optimization_buttons_mode([0, 0, 1, 0, 2, 0, 3, 0, 4, 0]) #self.comm.opt.activate_tunners(False) #mimo.set_tunners_enable_status(False) #self.comm.opt.set_independent_lights(False) #self.comm.opt.clean_matrix() #graphics.clear() #self.AddTrigger(0, self.comm.mat, 'set_led_light', [1, 125, 125, 0, 1, 255, 255, 0]) #self.AddTrigger(1, mimo, 'set_material_leds_color', [0, 125, 125, 0, 1, 255, 255, 0]) #self.AddTrigger(2, self.comm.mat, 'set_led_light', [7, 0, 255, 0]) #self.AddTrigger(2, mimo, 'set_material_leds_color', [7, 0, 255, 0]) #self.AddTrigger(3, self.comm.opt, 'set_led_light', [0, 255, 0, 0]) # debe prender el led del boton de optimizacion 0 #self.AddTrigger(3, mimo, 'set_optimization_leds_color', [10, 255, 0, 0]) mimo.set_tunners_enable_status(True) #self.testSprite = AnimatedNeoSprite('assets/tilesprite.png') self.testSprite = AnimatedNeoSprite('assets/palomita.png') #self.testSprite.setFrameRate(8) #self.testSprite.playing = True self.label = TextNeoSprite("people") # self.label.y = 2 # font = pygame.font.Font("assets/fonts/VCR_OSD_MONO_1.001.ttf", 36) self.title = utils.Text("Hello Machinaria!", font) self.title.opacity = 0 self.title.SetPosition(400, 200) self.AddTween("easeInOutSine", 2, self.title, "opacity", 0, 255, 1)
def __init__(self): SceneBase.__init__(self) titlefont = pygame.font.Font("assets/fonts/VCR_OSD_MONO_1.001.ttf", 44) self.title = utils.Text("Submit scene", titlefont) self.title.SetPosition(1280 / 2, 546) self.AddTrigger(60, self, 'SwitchToScene', ResultsScene)
def __init__(self): SceneBase.__init__(self) mimo.reset() self.logo = utils.Sprite('assets/sprites/logo_MCorp.png', 1280 / 2, 720 / 2) self.logo.opacity = 0 self.sfx_mimo_logo = utils.get_sound( 'assets/audio/SFX/M_OS/UI_Booth.ogg') self.AddTween("easeInOutSine", 2, self.logo, "opacity", 0, 255, 1) self.AddTrigger(1, self.sfx_mimo_logo, 'play') # check ring and bulbs leds factor = 0.1 loops = 50 n_leds = 20 leds = list(range(8, 28)) for index in range(0, n_leds * loops): led_i = leds[index % n_leds] self.AddTrigger((1.5 + index) * factor, mimo, 'set_material_leds_color', [ led_i, int(random.random() * 255), int(random.random() * 255), int(random.random() * 255) ]) self.AddTrigger((1.5 + index + 0.9) * factor, mimo, 'set_material_leds_color', [led_i, 0, 0, 0]) # check buttons and backlight buttons. mimo.set_buttons_enable_status(True, True) mimo.set_independent_lights(False, False) mimo.set_led_brightness(120) mimo.set_material_buttons_lock_status( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0]) mimo.set_material_buttons_mode( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0]) mimo.set_optimization_buttons_lock_status( [0, 0, 1, 0, 2, 0, 3, 0, 4, 0]) mimo.set_optimization_buttons_mode([0, 0, 1, 0, 2, 0, 3, 0, 4, 0]) # activate knobs mimo.set_tunners_enable_status(True) # create matrix sprite self.testSprite = AnimatedNeoSprite('assets/palomita.png') self.label = TextNeoSprite("people") self.label.y = 2 font = pygame.font.Font("assets/fonts/VCR_OSD_MONO_1.001.ttf", 36) self.title = utils.Text("Hello Machinaria!", font) self.title.opacity = 0 self.title.SetPosition(400, 200) self.AddTween("easeInOutSine", 2, self.title, "opacity", 0, 255, 1) # check lcd screens for index in range(0, 6): mimo.lcd_display_at(index, 'id' + str(index) + '- line 1', 1) mimo.lcd_display_at(index, 'id' + str(index) + '- line 2', 2)
def Update(self, dt): SceneBase.Update(self, dt) self.testSprite.update(dt) self.label.x -= 0.1 if self.label.x < -self.label.width: self.label.x = 8
def __init__(self): SceneBase.__init__(self) mimo.set_led_brightness(50) self.mimo_blueprint = utils.Sprite('assets/sprites/mimo_blueprint.png', 640, 265) self.mimo_blueprint.opacity = 0 self.printer01 = utils.Sprite('assets/sprites/printer-01.png', 380, 181) self.printer02 = utils.Sprite('assets/sprites/printer-02.png', 380, 181) self.printer03 = utils.Sprite('assets/sprites/printer-03.png', 380, 181) self.printer01.opacity = 0 self.printer02.opacity = 0 self.printer03.opacity = 0 self.printer01.setAnchor(0.5, 1) self.printer02.setAnchor(0.5, 1) self.printer03.setAnchor(0.5, 1) self.materialL1 = utils.Sprite('assets/sprites/mtlL1.png', 301, 292) self.materialL2 = utils.Sprite('assets/sprites/mtlL2.png', 301, 365) self.materialL3 = utils.Sprite('assets/sprites/mtlL3.png', 301, 443) self.materialR1 = utils.Sprite('assets/sprites/mtlR1.png', 979, 292) self.materialR2 = utils.Sprite('assets/sprites/mtlR2.png', 979, 365) self.materialR3 = utils.Sprite('assets/sprites/mtlR3.png', 979, 443) self.materialL1.opacity = 0 self.materialL2.opacity = 0 self.materialL3.opacity = 0 self.materialR1.opacity = 0 self.materialR2.opacity = 0 self.materialR3.opacity = 0 self.opt_knobs = utils.Sprite('assets/sprites/opt_knobs.png', 640, 325) self.opt_buttons = utils.Sprite('assets/sprites/opt_buttons.png', 640, 447) self.opt_knobs.opacity = 0 self.opt_buttons.opacity = 0 self.sfx_tut_st = utils.get_sound('assets/audio/SFX/SFX_Tut_St.ogg') self.sfx_tut_print = utils.get_sound( 'assets/audio/SFX/SFX_Tut_Print.ogg') self.sfx_tut_mat = utils.get_sound('assets/audio/SFX/SFX_Tut_Mat.ogg') self.sfx_tut_opt = utils.get_sound('assets/audio/SFX/SFX_Tut_Opt.ogg') self.sfx_tut_end = utils.get_sound('assets/audio/SFX/SFX_Tut_End.ogg') titlefont = pygame.font.Font("assets/fonts/VCR_OSD_MONO_1.001.ttf", 44) self.title = utils.Text("", titlefont) self.title.SetPosition(1280 / 2, 546) subtitlefont = pygame.font.Font("assets/fonts/VCR_OSD_MONO_1.001.ttf", 32) self.subtitle = utils.Text("", subtitlefont) self.subtitle.SetPosition(1280 / 2, 610) # second 0 second = 0 self.AddTween("easeOutCubic", 2, self.mimo_blueprint, "opacity", 0, 255, second) # second 2 second = 2 self.AddTrigger(second, self.sfx_tut_st, 'play') self.AddTrigger(second, self.title, 'SetText', '-- M.I.M.O. VERIFICATION PROCESS --') # second 4 second = 4 self.AddTween("easeOutCubic", 0.5, self.mimo_blueprint, "opacity", 255, 64, second) self.AddTween("easeOutCubic", 1, self.printer01, "opacity", 0, 255, second) # second 5 second = 5.5 self.AddTrigger(second, self.sfx_tut_print, 'play') self.AddTrigger(second, self.printer01, 'SetOpacity', 0) self.AddTrigger(second, self.printer02, 'SetOpacity', 255) self.AddTrigger(second, self.title, 'SetText', 'VERIFYING PRINTER') self.AddTrigger( second, self.subtitle, 'SetText', 'READ EACH INCOMING EVENT AND USE THE MATERIAL\nATTACHED TO IT TO TRANSFORM IT INTO THE NEWS' ) second = 6 self.AddTrigger(second, self.printer02, 'SetOpacity', 0) self.AddTrigger(second, self.printer03, 'SetOpacity', 255) second = 6.5 self.AddTrigger(second, self.printer03, 'SetOpacity', 0) self.AddTrigger(second, self.printer01, 'SetOpacity', 255) second = 7 self.AddTrigger(second, self.printer01, 'SetOpacity', 0) self.AddTrigger(second, self.printer02, 'SetOpacity', 255) second = 7.5 self.AddTrigger(second, self.printer02, 'SetOpacity', 0) self.AddTrigger(second, self.printer03, 'SetOpacity', 255) second = 8 self.AddTrigger(second, self.printer03, 'SetOpacity', 0) self.AddTrigger(second, self.printer01, 'SetOpacity', 255) second = 8.5 self.AddTrigger(second, self.printer01, 'SetOpacity', 0) self.AddTrigger(second, self.printer02, 'SetOpacity', 255) second = 9 self.AddTrigger(second, self.printer02, 'SetOpacity', 0) self.AddTrigger(second, self.printer03, 'SetOpacity', 255) self.AddTrigger(second, mimo, 'termal_print', "System check\nveryfing printer") second = 10.5 self.AddTrigger(second, self.printer03, 'SetOpacity', 0) self.AddTrigger(second, self.sfx_tut_mat, 'play') self.AddTrigger(second, self.title, 'SetText', 'VERIFYING MATERIAL PANEL') self.AddTrigger( second, self.subtitle, 'SetText', 'PRESS EACH BUTTON TO SELECT THE MATERIAL\nYOU WANT TO USE TO EVOKE AN EMOTION IN THE CURRENT NEWS' ) self.AddTween('easeOutCubic', 0.5, self.materialL1, "opacity", 0, 255, second) self.AddTrigger(10.7, mimo, 'set_material_leds_color', [0, 255, 0, 0]) second = 11.5 self.AddTween('easeOutCubic', 0.5, self.materialL2, "opacity", 0, 255, second) self.AddTrigger(11.7, mimo, 'set_material_leds_color', [1, 255, 255, 255]) second = 12.5 self.AddTween('easeOutCubic', 0.5, self.materialL3, "opacity", 0, 255, second) self.AddTrigger(12.7, mimo, 'set_material_leds_color', [2, 0, 255, 0]) second = 13.5 self.AddTween('easeOutCubic', 0.5, self.materialR1, "opacity", 0, 255, second) self.AddTrigger(13.7, mimo, 'set_material_leds_color', [7, 255, 255, 0]) second = 14.5 self.AddTween('easeOutCubic', 0.5, self.materialR2, "opacity", 0, 255, second) self.AddTrigger(14.7, mimo, 'set_material_leds_color', [6, 0, 255, 255]) second = 15.5 self.AddTween('easeOutCubic', 0.5, self.materialR3, "opacity", 0, 255, second) self.AddTrigger(15.7, mimo, 'set_material_leds_color', [5, 255, 0, 255]) second = 16.5 self.AddTween('easeOutCubic', 0.5, self.materialL1, "opacity", 255, 0, second) self.AddTween('easeOutCubic', 0.5, self.materialL2, "opacity", 255, 0, second) self.AddTween('easeOutCubic', 0.5, self.materialL3, "opacity", 255, 0, second) self.AddTween('easeOutCubic', 0.5, self.materialR1, "opacity", 255, 0, second) self.AddTween('easeOutCubic', 0.5, self.materialR2, "opacity", 255, 0, second) self.AddTween('easeOutCubic', 0.5, self.materialR3, "opacity", 255, 0, second) self.AddTrigger(17, mimo, 'set_material_leds_color', [ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0 ]) second = 18 self.AddTrigger(second, self.sfx_tut_opt, 'play') self.AddTrigger(second, self.title, 'SetText', 'VERIFYING OPTIMIZATION PANEL') self.AddTrigger( second, self.subtitle, 'SetText', 'USE THE KNOBS AND BUTTONS TO IMPROVE THE IMPACT\nOF THE EVOKED EMOTION' ) self.AddTween('easeOutCubic', 4, self.opt_knobs, "opacity", 0, 255, second) self.AddTween('easeOutCubic', 5, self.opt_buttons, "opacity", 0, 255, second) second = 24 self.AddTrigger(second, self.sfx_tut_end, 'play') self.AddTrigger(second, self.title, 'SetText', '-- M.I.M.O. VERIFICATION COMPLETE --') self.AddTrigger( second, self.subtitle, 'SetText', 'ALL SYSTEMS WORKING.\nWELCOME!\nYOU CAN START MANUFACTURING THE NEWS.' )