/* * Catroid: An on-device visual programming system for Android devices * Copyright (C) 2010-2016 The Catrobat Team * (<http://developer.catrobat.org/credits>) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * An additional term exception under section 7 of the GNU Affero * General Public License, version 3, is available at * http://developer.catrobat.org/license_additional_term * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.catrobat.catroid.content; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.scenes.scene2d.Action; import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.actions.SequenceAction; import org.catrobat.catroid.ProjectManager; import org.catrobat.catroid.camera.CameraManager; import org.catrobat.catroid.common.BrickValues; import org.catrobat.catroid.common.Constants; import org.catrobat.catroid.common.LookData; import org.catrobat.catroid.common.SoundInfo; import org.catrobat.catroid.content.BroadcastEvent.BroadcastType; import org.catrobat.catroid.content.actions.AddItemToUserListAction; import org.catrobat.catroid.content.actions.ArduinoSendDigitalValueAction; import org.catrobat.catroid.content.actions.ArduinoSendPWMValueAction; import org.catrobat.catroid.content.actions.AskAction; import org.catrobat.catroid.content.actions.AskSpeechAction; import org.catrobat.catroid.content.actions.BackgroundNotifyAction; import org.catrobat.catroid.content.actions.BroadcastAction; import org.catrobat.catroid.content.actions.BroadcastNotifyAction; import org.catrobat.catroid.content.actions.CameraBrickAction; import org.catrobat.catroid.content.actions.ChangeBrightnessByNAction; import org.catrobat.catroid.content.actions.ChangeColorByNAction; import org.catrobat.catroid.content.actions.ChangeSizeByNAction; import org.catrobat.catroid.content.actions.ChangeTransparencyByNAction; import org.catrobat.catroid.content.actions.ChangeVariableAction; import org.catrobat.catroid.content.actions.ChangeVolumeByNAction; import org.catrobat.catroid.content.actions.ChangeXByNAction; import org.catrobat.catroid.content.actions.ChangeYByNAction; import org.catrobat.catroid.content.actions.ChooseCameraAction; import org.catrobat.catroid.content.actions.ClearBackgroundAction; import org.catrobat.catroid.content.actions.ClearGraphicEffectAction; import org.catrobat.catroid.content.actions.CloneAction; import org.catrobat.catroid.content.actions.ComeToFrontAction; import org.catrobat.catroid.content.actions.DeleteItemOfUserListAction; import org.catrobat.catroid.content.actions.DeleteThisCloneAction; import org.catrobat.catroid.content.actions.DroneEmergencyAction; import org.catrobat.catroid.content.actions.DroneFlipAction; import org.catrobat.catroid.content.actions.DroneMoveBackwardAction; import org.catrobat.catroid.content.actions.DroneMoveDownAction; import org.catrobat.catroid.content.actions.DroneMoveForwardAction; import org.catrobat.catroid.content.actions.DroneMoveLeftAction; import org.catrobat.catroid.content.actions.DroneMoveRightAction; import org.catrobat.catroid.content.actions.DroneMoveUpAction; import org.catrobat.catroid.content.actions.DronePlayLedAnimationAction; import org.catrobat.catroid.content.actions.DroneSwitchCameraAction; import org.catrobat.catroid.content.actions.DroneTakeoffAndLandAction; import org.catrobat.catroid.content.actions.DroneTurnLeftAction; import org.catrobat.catroid.content.actions.DroneTurnLeftWithMagnetometerAction; import org.catrobat.catroid.content.actions.DroneTurnRightAction; import org.catrobat.catroid.content.actions.DroneTurnRightWithMagnetometerAction; import org.catrobat.catroid.content.actions.FlashAction; import org.catrobat.catroid.content.actions.GoNStepsBackAction; import org.catrobat.catroid.content.actions.GoToOtherSpritePositionAction; import org.catrobat.catroid.content.actions.GoToRandomPositionAction; import org.catrobat.catroid.content.actions.GoToTouchPositionAction; import org.catrobat.catroid.content.actions.HideTextAction; import org.catrobat.catroid.content.actions.IfLogicAction; import org.catrobat.catroid.content.actions.InsertItemIntoUserListAction; import org.catrobat.catroid.content.actions.LegoEv3MotorMoveAction; import org.catrobat.catroid.content.actions.LegoEv3MotorStopAction; import org.catrobat.catroid.content.actions.LegoEv3MotorTurnAngleAction; import org.catrobat.catroid.content.actions.LegoEv3PlayToneAction; import org.catrobat.catroid.content.actions.LegoEv3SetLedAction; import org.catrobat.catroid.content.actions.LegoNxtMotorMoveAction; import org.catrobat.catroid.content.actions.LegoNxtMotorStopAction; import org.catrobat.catroid.content.actions.LegoNxtMotorTurnAngleAction; import org.catrobat.catroid.content.actions.LegoNxtPlayToneAction; import org.catrobat.catroid.content.actions.MoveNStepsAction; import org.catrobat.catroid.content.actions.NextLookAction; import org.catrobat.catroid.content.actions.PenDownAction; import org.catrobat.catroid.content.actions.PenUpAction; import org.catrobat.catroid.content.actions.PhiroMotorMoveBackwardAction; import org.catrobat.catroid.content.actions.PhiroMotorMoveForwardAction; import org.catrobat.catroid.content.actions.PhiroMotorStopAction; import org.catrobat.catroid.content.actions.PhiroPlayToneAction; import org.catrobat.catroid.content.actions.PhiroRGBLightAction; import org.catrobat.catroid.content.actions.PhiroSensorAction; import org.catrobat.catroid.content.actions.PlaySoundAction; import org.catrobat.catroid.content.actions.PointInDirectionAction; import org.catrobat.catroid.content.actions.PointToAction; import org.catrobat.catroid.content.actions.PreviousLookAction; import org.catrobat.catroid.content.actions.RaspiIfLogicAction; import org.catrobat.catroid.content.actions.RaspiPwmAction; import org.catrobat.catroid.content.actions.RaspiSendDigitalValueAction; import org.catrobat.catroid.content.actions.RepeatAction; import org.catrobat.catroid.content.actions.RepeatUntilAction; import org.catrobat.catroid.content.actions.ReplaceItemInUserListAction; import org.catrobat.catroid.content.actions.SceneStartAction; import org.catrobat.catroid.content.actions.SceneTransitionAction; import org.catrobat.catroid.content.actions.SetBrightnessAction; import org.catrobat.catroid.content.actions.SetColorAction; import org.catrobat.catroid.content.actions.SetLookAction; import org.catrobat.catroid.content.actions.SetNfcTagAction; import org.catrobat.catroid.content.actions.SetPenColorAction; import org.catrobat.catroid.content.actions.SetPenSizeAction; import org.catrobat.catroid.content.actions.SetRotationStyleAction; import org.catrobat.catroid.content.actions.SetSizeToAction; import org.catrobat.catroid.content.actions.SetTextAction; import org.catrobat.catroid.content.actions.SetTransparencyAction; import org.catrobat.catroid.content.actions.SetVariableAction; import org.catrobat.catroid.content.actions.SetVisibleAction; import org.catrobat.catroid.content.actions.SetVolumeToAction; import org.catrobat.catroid.content.actions.SetXAction; import org.catrobat.catroid.content.actions.SetYAction; import org.catrobat.catroid.content.actions.ShowTextAction; import org.catrobat.catroid.content.actions.SpeakAction; import org.catrobat.catroid.content.actions.StampAction; import org.catrobat.catroid.content.actions.StopAllScriptsAction; import org.catrobat.catroid.content.actions.StopAllSoundsAction; import org.catrobat.catroid.content.actions.StopOtherScriptsAction; import org.catrobat.catroid.content.actions.StopThisScriptAction; import org.catrobat.catroid.content.actions.ThinkSayBubbleAction; import org.catrobat.catroid.content.actions.TurnLeftAction; import org.catrobat.catroid.content.actions.TurnRightAction; import org.catrobat.catroid.content.actions.UserBrickAction; import org.catrobat.catroid.content.actions.VibrateAction; import org.catrobat.catroid.content.actions.WaitAction; import org.catrobat.catroid.content.actions.WaitForBubbleBrickAction; import org.catrobat.catroid.content.actions.WaitUntilAction; import org.catrobat.catroid.content.actions.conditional.GlideToAction; import org.catrobat.catroid.content.actions.conditional.IfOnEdgeBounceAction; import org.catrobat.catroid.content.bricks.LegoEv3MotorMoveBrick; import org.catrobat.catroid.content.bricks.LegoEv3MotorStopBrick; import org.catrobat.catroid.content.bricks.LegoEv3MotorTurnAngleBrick; import org.catrobat.catroid.content.bricks.LegoEv3SetLedBrick; import org.catrobat.catroid.content.bricks.LegoNxtMotorMoveBrick; import org.catrobat.catroid.content.bricks.LegoNxtMotorStopBrick; import org.catrobat.catroid.content.bricks.LegoNxtMotorTurnAngleBrick; import org.catrobat.catroid.content.bricks.PhiroMotorMoveBackwardBrick; import org.catrobat.catroid.content.bricks.PhiroMotorMoveForwardBrick; import org.catrobat.catroid.content.bricks.PhiroMotorStopBrick; import org.catrobat.catroid.content.bricks.PhiroPlayToneBrick; import org.catrobat.catroid.content.bricks.PhiroRGBLightBrick; import org.catrobat.catroid.content.bricks.UserBrick; import org.catrobat.catroid.formulaeditor.Formula; import org.catrobat.catroid.formulaeditor.UserList; import org.catrobat.catroid.formulaeditor.UserVariable; import org.catrobat.catroid.physics.PhysicsObject; public class ActionFactory extends Actions { public static Action createBackgroundNotifyAction(LookData lookData) { BackgroundNotifyAction action = Actions.action(BackgroundNotifyAction.class); action.setLookData(lookData); return action; } public static Action createBroadcastAction(Sprite sprite, String broadcastMessage) { BroadcastAction action = Actions.action(BroadcastAction.class); BroadcastEvent event = new BroadcastEvent(); event.setSenderSprite(sprite); event.setBroadcastMessage(broadcastMessage); event.setType(BroadcastType.broadcast); action.setBroadcastEvent(event); return action; } public static Action createBroadcastNotifyAction(BroadcastEvent event) { BroadcastNotifyAction action = Actions.action(BroadcastNotifyAction.class); action.setEvent(event); return action; } public Action createWaitAction(Sprite sprite, Formula delay) { WaitAction action = action(WaitAction.class); action.setSprite(sprite); action.setDelay(delay); return action; } public Action createWaitForBubbleBrickAction(Sprite sprite, Formula delay) { WaitForBubbleBrickAction action = Actions.action(WaitForBubbleBrickAction.class); action.setSprite(sprite); action.setDelay(delay); return action; } public Action createBroadcastActionFromWaiter(Sprite sprite, String broadcastMessage) { BroadcastAction action = Actions.action(BroadcastAction.class); BroadcastEvent event = new BroadcastEvent(); event.setSenderSprite(sprite); event.setBroadcastMessage(broadcastMessage); event.setRun(false); event.setType(BroadcastType.broadcastWait); action.setBroadcastEvent(event); return action; } public Action createChangeBrightnessByNAction(Sprite sprite, Formula changeBrightness) { ChangeBrightnessByNAction action = Actions.action(ChangeBrightnessByNAction.class); action.setSprite(sprite); action.setBrightness(changeBrightness); return action; } public Action createChangeColorByNAction(Sprite sprite, Formula changeColor) { ChangeColorByNAction action = Actions.action(ChangeColorByNAction.class); action.setSprite(sprite); action.setColor(changeColor); return action; } public Action createChangeTransparencyByNAction(Sprite sprite, Formula transparency) { ChangeTransparencyByNAction action = Actions.action(ChangeTransparencyByNAction.class); action.setSprite(sprite); action.setTransparency(transparency); return action; } public Action createChangeSizeByNAction(Sprite sprite, Formula size) { ChangeSizeByNAction action = Actions.action(ChangeSizeByNAction.class); action.setSprite(sprite); action.setSize(size); return action; } public Action createChangeVolumeByNAction(Sprite sprite, Formula volume) { ChangeVolumeByNAction action = Actions.action(ChangeVolumeByNAction.class); action.setVolume(volume); action.setSprite(sprite); return action; } public Action createChangeXByNAction(Sprite sprite, Formula xMovement) { ChangeXByNAction action = Actions.action(ChangeXByNAction.class); action.setSprite(sprite); action.setxMovement(xMovement); return action; } public Action createChangeYByNAction(Sprite sprite, Formula yMovement) { ChangeYByNAction action = Actions.action(ChangeYByNAction.class); action.setSprite(sprite); action.setyMovement(yMovement); return action; } public Action createSetRotationStyleAction(Sprite sprite, int mode) { SetRotationStyleAction action = Actions.action(SetRotationStyleAction.class); action.setRotationStyle(mode); action.setSprite(sprite); return action; } public Action createClearGraphicEffectAction(Sprite sprite) { ClearGraphicEffectAction action = Actions.action(ClearGraphicEffectAction.class); action.setSprite(sprite); return action; } public Action createComeToFrontAction(Sprite sprite) { ComeToFrontAction action = Actions.action(ComeToFrontAction.class); action.setSprite(sprite); return action; } public Action createGlideToAction(Sprite sprite, Formula x, Formula y, Formula duration) { GlideToAction action = Actions.action(GlideToAction.class); action.setPosition(x, y); action.setDuration(duration); action.setSprite(sprite); return action; } public Action createGlideToAction(Sprite sprite, Formula x, Formula y, Formula duration, Interpolation interpolation) { GlideToAction action = Actions.action(GlideToAction.class); action.setPosition(x, y); action.setDuration(duration); action.setInterpolation(interpolation); action.setSprite(sprite); return action; } public Action createPlaceAtAction(Sprite sprite, Formula x, Formula y) { GlideToAction action = Actions.action(GlideToAction.class); action.setPosition(x, y); action.setDuration(0); action.setInterpolation(null); action.setSprite(sprite); return action; } public Action createGoToAction(Sprite sprite, Sprite destinationSprite, int spinnerSelection) { switch (spinnerSelection) { case BrickValues.GO_TO_TOUCH_POSITION: GoToTouchPositionAction touchPositionAction = Actions.action(GoToTouchPositionAction.class); touchPositionAction.setSprite(sprite); return touchPositionAction; case BrickValues.GO_TO_RANDOM_POSITION: GoToRandomPositionAction randomPositionAction = Actions.action(GoToRandomPositionAction.class); randomPositionAction.setSprite(sprite); return randomPositionAction; case BrickValues.GO_TO_OTHER_SPRITE_POSITION: GoToOtherSpritePositionAction otherSpritePositionAction = Actions .action(GoToOtherSpritePositionAction.class); otherSpritePositionAction.setSprite(sprite); otherSpritePositionAction.setDestinationSprite(destinationSprite); return otherSpritePositionAction; default: return null; } } public Action createGoNStepsBackAction(Sprite sprite, Formula steps) { GoNStepsBackAction action = Actions.action(GoNStepsBackAction.class); action.setSprite(sprite); action.setSteps(steps); return action; } public Action createHideAction(Sprite sprite) { SetVisibleAction action = Actions.action(SetVisibleAction.class); action.setSprite(sprite); action.setVisible(false); return action; } public Action createIfOnEdgeBounceAction(Sprite sprite) { IfOnEdgeBounceAction action = Actions.action(IfOnEdgeBounceAction.class); action.setSprite(sprite); return action; } public Action createLegoNxtMotorMoveAction(Sprite sprite, LegoNxtMotorMoveBrick.Motor motorEnum, Formula speed) { LegoNxtMotorMoveAction action = Actions.action(LegoNxtMotorMoveAction.class); action.setMotorEnum(motorEnum); action.setSprite(sprite); action.setSpeed(speed); return action; } public Action createLegoNxtMotorStopAction(LegoNxtMotorStopBrick.Motor motorEnum) { LegoNxtMotorStopAction action = Actions.action(LegoNxtMotorStopAction.class); action.setMotorEnum(motorEnum); return action; } public Action createLegoNxtMotorTurnAngleAction(Sprite sprite, LegoNxtMotorTurnAngleBrick.Motor motorEnum, Formula degrees) { LegoNxtMotorTurnAngleAction action = Actions.action(LegoNxtMotorTurnAngleAction.class); action.setMotorEnum(motorEnum); action.setSprite(sprite); action.setDegrees(degrees); return action; } public Action createLegoNxtPlayToneAction(Sprite sprite, Formula hertz, Formula durationInSeconds) { LegoNxtPlayToneAction action = Actions.action(LegoNxtPlayToneAction.class); action.setHertz(hertz); action.setSprite(sprite); action.setDurationInSeconds(durationInSeconds); return action; } public Action createLegoEv3SingleMotorMoveAction(Sprite sprite, LegoEv3MotorMoveBrick.Motor motorEnum, Formula speed) { LegoEv3MotorMoveAction action = action(LegoEv3MotorMoveAction.class); action.setSprite(sprite); action.setMotorEnum(motorEnum); action.setSpeed(speed); return action; } public Action createLegoEv3MotorStopAction(LegoEv3MotorStopBrick.Motor motorEnum) { LegoEv3MotorStopAction action = action(LegoEv3MotorStopAction.class); action.setMotorEnum(motorEnum); return action; } public Action createLegoEv3SetLedAction(LegoEv3SetLedBrick.LedStatus ledStatusEnum) { LegoEv3SetLedAction action = action(LegoEv3SetLedAction.class); action.setLedStatusEnum(ledStatusEnum); return action; } public Action createLegoEv3PlayToneAction(Sprite sprite, Formula hertz, Formula durationInSeconds, Formula volumeInPercent) { LegoEv3PlayToneAction action = action(LegoEv3PlayToneAction.class); action.setHertz(hertz); action.setSprite(sprite); action.setDurationInSeconds(durationInSeconds); action.setVolumeInPercent(volumeInPercent); return action; } public Action createLegoEv3MotorTurnAngleAction(Sprite sprite, LegoEv3MotorTurnAngleBrick.Motor motorEnum, Formula degrees) { LegoEv3MotorTurnAngleAction action = action(LegoEv3MotorTurnAngleAction.class); action.setMotorEnum(motorEnum); action.setSprite(sprite); action.setDegrees(degrees); return action; } public Action createPhiroPlayToneActionAction(Sprite sprite, PhiroPlayToneBrick.Tone toneEnum, Formula duration) { PhiroPlayToneAction action = action(PhiroPlayToneAction.class); action.setSelectedTone(toneEnum); action.setSprite(sprite); action.setDurationInSeconds(duration); return action; } public Action createPhiroMotorMoveForwardActionAction(Sprite sprite, PhiroMotorMoveForwardBrick.Motor motorEnum, Formula speed) { PhiroMotorMoveForwardAction action = action(PhiroMotorMoveForwardAction.class); action.setMotorEnum(motorEnum); action.setSprite(sprite); action.setSpeed(speed); return action; } public Action createPhiroMotorMoveBackwardActionAction(Sprite sprite, PhiroMotorMoveBackwardBrick.Motor motorEnum, Formula speed) { PhiroMotorMoveBackwardAction action = action(PhiroMotorMoveBackwardAction.class); action.setMotorEnum(motorEnum); action.setSprite(sprite); action.setSpeed(speed); return action; } public Action createPhiroRgbLedEyeActionAction(Sprite sprite, PhiroRGBLightBrick.Eye eye, Formula red, Formula green, Formula blue) { PhiroRGBLightAction action = action(PhiroRGBLightAction.class); action.setSprite(sprite); action.setEyeEnum(eye); action.setRed(red); action.setGreen(green); action.setBlue(blue); return action; } public Action createPhiroSendSelectedSensorAction(Sprite sprite, int sensorNumber, Action ifAction, Action elseAction) { PhiroSensorAction action = action(PhiroSensorAction.class); action.setSprite(sprite); action.setSensor(sensorNumber); action.setIfAction(ifAction); action.setElseAction(elseAction); return action; } public Action createPhiroMotorStopActionAction(PhiroMotorStopBrick.Motor motorEnum) { PhiroMotorStopAction action = action(PhiroMotorStopAction.class); action.setMotorEnum(motorEnum); return action; } public Action createMoveNStepsAction(Sprite sprite, Formula steps) { MoveNStepsAction action = Actions.action(MoveNStepsAction.class); action.setSprite(sprite); action.setSteps(steps); return action; } public Action createPenDownAction(Sprite sprite) { PenDownAction action = Actions.action(PenDownAction.class); action.setSprite(sprite); return action; } public Action createPenUpAction(Sprite sprite) { PenUpAction action = Actions.action(PenUpAction.class); action.setSprite(sprite); return action; } public Action createSetPenSizeAction(Sprite sprite, Formula penSize) { SetPenSizeAction action = Actions.action(SetPenSizeAction.class); action.setSprite(sprite); action.setPenSize(penSize); return action; } public Action createSetPenColorAction(Sprite sprite, Formula red, Formula green, Formula blue) { SetPenColorAction action = Actions.action(SetPenColorAction.class); action.setSprite(sprite); action.setRed(red); action.setGreen(green); action.setBlue(blue); return action; } public Action createClearBackgroundAction() { ClearBackgroundAction action = Actions.action(ClearBackgroundAction.class); return action; } public Action createStampAction(Sprite sprite) { StampAction action = Actions.action(StampAction.class); action.setSprite(sprite); return action; } public Action createNextLookAction(Sprite sprite) { NextLookAction action = Actions.action(NextLookAction.class); action.setSprite(sprite); return action; } public Action createPlaySoundAction(Sprite sprite, SoundInfo sound) { PlaySoundAction action = Actions.action(PlaySoundAction.class); action.setSprite(sprite); action.setSound(sound); return action; } public Action createPointInDirectionAction(Sprite sprite, Formula degrees) { PointInDirectionAction action = Actions.action(PointInDirectionAction.class); action.setSprite(sprite); action.setDegreesInUserInterfaceDimensionUnit(degrees); return action; } public Action createPointToAction(Sprite sprite, Sprite pointedSprite) { PointToAction action = Actions.action(PointToAction.class); action.setSprite(sprite); action.setPointedSprite(pointedSprite); return action; } public Action createCloneAction(Sprite sprite) { CloneAction action = Actions.action(CloneAction.class); action.setSprite(sprite); return action; } public Action createDeleteThisCloneAction(Sprite sprite) { DeleteThisCloneAction action = Actions.action(DeleteThisCloneAction.class); action.setSprite(sprite); return action; } public Action createSetBrightnessAction(Sprite sprite, Formula brightness) { SetBrightnessAction action = Actions.action(SetBrightnessAction.class); action.setSprite(sprite); action.setBrightness(brightness); return action; } public Action createSetColorAction(Sprite sprite, Formula color) { SetColorAction action = Actions.action(SetColorAction.class); action.setSprite(sprite); action.setColor(color); return action; } public Action createSetTransparencyAction(Sprite sprite, Formula transparency) { SetTransparencyAction action = Actions.action(SetTransparencyAction.class); action.setSprite(sprite); action.setTransparency(transparency); return action; } public Action createSetLookAction(Sprite sprite, LookData lookData) { SetLookAction action = Actions.action(SetLookAction.class); action.setSprite(sprite); action.setLookData(lookData); return action; } public Action createSetLookAction(Sprite sprite, LookData lookData, boolean wait) { SetLookAction action = (SetLookAction) createSetLookAction(sprite, lookData); action.setWait(wait); return action; } public Action createSetSizeToAction(Sprite sprite, Formula size) { SetSizeToAction action = Actions.action(SetSizeToAction.class); action.setSprite(sprite); action.setSize(size); return action; } public Action createSetVolumeToAction(Sprite sprite, Formula volume) { SetVolumeToAction action = Actions.action(SetVolumeToAction.class); action.setVolume(volume); action.setSprite(sprite); return action; } public Action createSetXAction(Sprite sprite, Formula x) { SetXAction action = Actions.action(SetXAction.class); action.setSprite(sprite); action.setX(x); return action; } public Action createSetYAction(Sprite sprite, Formula y) { SetYAction action = Actions.action(SetYAction.class); action.setSprite(sprite); action.setY(y); return action; } public Action createShowAction(Sprite sprite) { SetVisibleAction action = Actions.action(SetVisibleAction.class); action.setSprite(sprite); action.setVisible(true); return action; } public Action createSpeakAction(Sprite sprite, Formula text) { SpeakAction action = action(SpeakAction.class); action.setSprite(sprite); action.setText(text); return action; } public Action createStopAllSoundsAction() { return Actions.action(StopAllSoundsAction.class); } public Action createTurnLeftAction(Sprite sprite, Formula degrees) { TurnLeftAction action = Actions.action(TurnLeftAction.class); action.setSprite(sprite); action.setDegrees(degrees); return action; } public Action createTurnRightAction(Sprite sprite, Formula degrees) { TurnRightAction action = Actions.action(TurnRightAction.class); action.setSprite(sprite); action.setDegrees(degrees); return action; } public Action createChangeVariableAction(Sprite sprite, Formula variableFormula, UserVariable userVariable) { ChangeVariableAction action = Actions.action(ChangeVariableAction.class); action.setSprite(sprite); action.setChangeVariable(variableFormula); action.setUserVariable(userVariable); return action; } public Action createSetVariableAction(Sprite sprite, Formula variableFormula, UserVariable userVariable) { SetVariableAction action = Actions.action(SetVariableAction.class); action.setSprite(sprite); action.setChangeVariable(variableFormula); action.setUserVariable(userVariable); return action; } public Action createAskAction(Sprite sprite, Formula questionFormula, UserVariable answerVariable) { AskAction action = Actions.action(AskAction.class); action.setSprite(sprite); action.setQuestionFormula(questionFormula); action.setAnswerVariable(answerVariable); return action; } public Action createAskSpeechAction(Sprite sprite, Formula questionFormula, UserVariable answerVariable) { AskSpeechAction action = Actions.action(AskSpeechAction.class); action.setSprite(sprite); action.setQuestionFormula(questionFormula); action.setAnswerVariable(answerVariable); return action; } public Action createDeleteItemOfUserListAction(Sprite sprite, Formula userListFormula, UserList userList) { DeleteItemOfUserListAction action = action(DeleteItemOfUserListAction.class); action.setSprite(sprite); action.setFormulaIndexToDelete(userListFormula); action.setUserList(userList); return action; } public Action createAddItemToUserListAction(Sprite sprite, Formula userListFormula, UserList userList) { AddItemToUserListAction action = action(AddItemToUserListAction.class); action.setSprite(sprite); action.setFormulaItemToAdd(userListFormula); action.setUserList(userList); return action; } public Action createInsertItemIntoUserListAction(Sprite sprite, Formula userListFormulaIndexToInsert, Formula userListFormulaItemToInsert, UserList userList) { InsertItemIntoUserListAction action = action(InsertItemIntoUserListAction.class); action.setSprite(sprite); action.setFormulaIndexToInsert(userListFormulaIndexToInsert); action.setFormulaItemToInsert(userListFormulaItemToInsert); action.setUserList(userList); return action; } public Action createReplaceItemInUserListAction(Sprite sprite, Formula userListFormulaIndexToReplace, Formula userListFormulaItemToInsert, UserList userList) { ReplaceItemInUserListAction action = action(ReplaceItemInUserListAction.class); action.setSprite(sprite); action.setFormulaIndexToReplace(userListFormulaIndexToReplace); action.setFormulaItemToInsert(userListFormulaItemToInsert); action.setUserList(userList); return action; } public Action createThinkBubbleAction(Sprite sprite, Formula text) { ThinkSayBubbleAction action = action(ThinkSayBubbleAction.class); action.setText(text); action.setSprite(sprite); action.setType(Constants.THINK_BRICK); return action; } public Action createSayBubbleAction(Sprite sprite, Formula text) { ThinkSayBubbleAction action = action(ThinkSayBubbleAction.class); action.setText(text); action.setSprite(sprite); action.setType(Constants.SAY_BRICK); return action; } public Action createThinkForBubbleAction(Sprite sprite, Formula text) { ThinkSayBubbleAction action = action(ThinkSayBubbleAction.class); action.setText(text); action.setSprite(sprite); action.setType(Constants.THINK_BRICK); return action; } public Action createSayForBubbleAction(Sprite sprite, Formula text) { ThinkSayBubbleAction action = action(ThinkSayBubbleAction.class); action.setText(text); action.setSprite(sprite); action.setType(Constants.SAY_BRICK); return action; } public Action createSceneTransitionAction(String sceneName) { SceneTransitionAction action = action(SceneTransitionAction.class); action.setScene(sceneName); return action; } public Action createSceneStartAction(String sceneName) { SceneStartAction action = action(SceneStartAction.class); action.setScene(sceneName); return action; } public Action createIfLogicAction(Sprite sprite, Formula condition, Action ifAction, Action elseAction) { IfLogicAction action = Actions.action(IfLogicAction.class); action.setIfAction(ifAction); action.setIfCondition(condition); action.setElseAction(elseAction); action.setSprite(sprite); return action; } public Action createRepeatAction(Sprite sprite, Formula count, Action repeatedAction) { RepeatAction action = Actions.action(RepeatAction.class); action.setRepeatCount(count); action.setAction(repeatedAction); action.setSprite(sprite); return action; } public Action createWaitUntilAction(Sprite sprite, Formula condition) { WaitUntilAction action = Actions.action(WaitUntilAction.class); action.setSprite(sprite); action.setCondition(condition); return action; } public Action createRepeatUntilAction(Sprite sprite, Formula condition, Action repeatedAction) { RepeatUntilAction action = action(RepeatUntilAction.class); action.setRepeatCondition(condition); action.setAction(repeatedAction); action.setSprite(sprite); return action; } public Action createDelayAction(Sprite sprite, Formula delay) { WaitAction action = Actions.action(WaitAction.class); action.setSprite(sprite); action.setDelay(delay); return action; } public Action createForeverAction(Sprite sprite, SequenceAction foreverSequence) { RepeatAction action = Actions.action(RepeatAction.class); action.setIsForeverRepeat(true); action.setAction(foreverSequence); action.setSprite(sprite); return action; } public Action createUserBrickAction(Action userBrickAction, UserBrick userBrick) { UserBrickAction action = action(UserBrickAction.class); action.setAction(userBrickAction); action.setUserBrick(userBrick); return action; } public Action createSequence() { return Actions.sequence(); } public Action createSetBounceFactorAction(Sprite sprite, Formula bounceFactor) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createTurnRightSpeedAction(Sprite sprite, Formula degreesPerSecond) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createTurnLeftSpeedAction(Sprite sprite, Formula degreesPerSecond) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createSetVelocityAction(Sprite sprite, Formula velocityX, Formula velocityY) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createSetPhysicsObjectTypeAction(Sprite sprite, PhysicsObject.Type type) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createSetMassAction(Sprite sprite, Formula mass) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createSetGravityAction(Sprite sprite, Formula gravityX, Formula gravityY) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createSetFrictionAction(Sprite sprite, Formula friction) { throw new RuntimeException("No physics action available in non-physics sprite!"); } public Action createDroneTakeOffAndLandAction() { return action(DroneTakeoffAndLandAction.class); } public Action createDroneMoveUpAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveUpAction action = action(DroneMoveUpAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneMoveDownAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveDownAction action = action(DroneMoveDownAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneMoveLeftAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveLeftAction action = action(DroneMoveLeftAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneMoveRightAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveRightAction action = action(DroneMoveRightAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneMoveForwardAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveForwardAction action = action(DroneMoveForwardAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneMoveBackwardAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneMoveBackwardAction action = action(DroneMoveBackwardAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneTurnRightAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneTurnRightAction action = action(DroneTurnRightAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneTurnLeftAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneTurnLeftAction action = action(DroneTurnLeftAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneTurnLeftMagnetoAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneTurnLeftWithMagnetometerAction action = action(DroneTurnLeftWithMagnetometerAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDroneTurnRightMagnetoAction(Sprite sprite, Formula seconds, Formula powerInPercent) { DroneTurnRightWithMagnetometerAction action = action(DroneTurnRightWithMagnetometerAction.class); action.setSprite(sprite); action.setDelay(seconds); action.setPower(powerInPercent); return action; } public Action createDronePlayLedAnimationAction() { return action(DronePlayLedAnimationAction.class); } public Action createDroneFlipAction() { return action(DroneFlipAction.class); } public Action createDroneSwitchCameraAction() { return action(DroneSwitchCameraAction.class); } public Action createDroneGoEmergencyAction() { return action(DroneEmergencyAction.class); } public Action createSetTextAction(Sprite sprite, Formula x, Formula y, Formula text) { SetTextAction action = action(SetTextAction.class); action.setPosition(x, y); action.setText(text); action.setDuration(5); action.setSprite(sprite); return action; } public Action createShowVariableAction(Sprite sprite, Formula xPosition, Formula yPosition, UserVariable userVariable) { ShowTextAction action = action(ShowTextAction.class); action.setPosition(xPosition, yPosition); action.setVariableToShow(userVariable); action.setSprite(sprite); UserBrick userBrick = ProjectManager.getInstance().getCurrentUserBrick(); action.setUserBrick(userBrick); return action; } public Action createHideVariableAction(Sprite sprite, UserVariable userVariable) { HideTextAction action = action(HideTextAction.class); action.setVariableToHide(userVariable); UserBrick userBrick = ProjectManager.getInstance().getCurrentUserBrick(); action.setUserBrick(userBrick); action.setSprite(sprite); return action; } public Action createTurnFlashOnAction() { FlashAction action = action(FlashAction.class); action.turnFlashOn(); return action; } public Action createTurnFlashOffAction() { FlashAction action = action(FlashAction.class); action.turnFlashOff(); return action; } public Action createVibrateAction(Sprite sprite, Formula duration) { VibrateAction action = action(VibrateAction.class); action.setSprite(sprite); action.setDuration(duration); return action; } public Action createUpdateCameraPreviewAction(CameraManager.CameraState state) { CameraBrickAction action = action(CameraBrickAction.class); action.setCameraAction(state); return action; } public Action createSetFrontCameraAction() { ChooseCameraAction action = action(ChooseCameraAction.class); action.setFrontCamera(); return action; } public Action createSetBackCameraAction() { ChooseCameraAction action = action(ChooseCameraAction.class); action.setBackCamera(); return action; } public Action createSendDigitalArduinoValueAction(Sprite sprite, Formula pinNumber, Formula pinValue) { ArduinoSendDigitalValueAction action = action(ArduinoSendDigitalValueAction.class); action.setSprite(sprite); action.setPinNumber(pinNumber); action.setPinValue(pinValue); return action; } public Action createSendPWMArduinoValueAction(Sprite sprite, Formula pinNumber, Formula pinValue) { ArduinoSendPWMValueAction action = action(ArduinoSendPWMValueAction.class); action.setSprite(sprite); action.setPinNumber(pinNumber); action.setPinValue(pinValue); return action; } public Action createSendDigitalRaspiValueAction(Sprite sprite, Formula pinNumber, Formula pinValue) { RaspiSendDigitalValueAction action = action(RaspiSendDigitalValueAction.class); action.setSprite(sprite); action.setPinNumber(pinNumber); action.setPinValue(pinValue); return action; } public Action createSendRaspiPwmValueAction(Sprite sprite, Formula pinNumber, Formula pwmFrequency, Formula pwmPercentage) { RaspiPwmAction action = action(RaspiPwmAction.class); action.setSprite(sprite); action.setPinNumberFormula(pinNumber); action.setPwmFrequencyFormula(pwmFrequency); action.setPwmPercentageFormula(pwmPercentage); return action; } public Action createRaspiIfLogicActionAction(Sprite sprite, Formula pinNumber, Action ifAction, Action elseAction) { RaspiIfLogicAction action = action(RaspiIfLogicAction.class); action.setSprite(sprite); action.setPinNumber(pinNumber); action.setIfAction(ifAction); action.setElseAction(elseAction); return action; } public Action createPreviousLookAction(Sprite sprite) { PreviousLookAction action = action(PreviousLookAction.class); action.setSprite(sprite); return action; } public Action createStopScriptAction(int spinnerSelection, Action currentAction) { switch (spinnerSelection) { case BrickValues.STOP_THIS_SCRIPT: return Actions.action(StopThisScriptAction.class); case BrickValues.STOP_OTHER_SCRIPTS: StopOtherScriptsAction action = Actions.action(StopOtherScriptsAction.class); action.setCurrentAction(currentAction); return action; default: return Actions.action(StopAllScriptsAction.class); } } public Action createSetNfcTagAction(Sprite sprite, Formula nfcNdefMessage, int nfcNdefSpinnerSelection) { SetNfcTagAction setNfcTagAction = Actions.action(SetNfcTagAction.class); setNfcTagAction.setSprite(sprite); setNfcTagAction.setNfcTagNdefSpinnerSelection(nfcNdefSpinnerSelection); setNfcTagAction.setNfcNdefMessage(nfcNdefMessage); return setNfcTagAction; } }