/* * 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.merge; import org.catrobat.catroid.content.Scene; import org.catrobat.catroid.content.Script; import org.catrobat.catroid.content.Sprite; import org.catrobat.catroid.content.bricks.Brick; import org.catrobat.catroid.content.bricks.FormulaBrick; public class ReferenceHelper { Scene into; Scene from; public ReferenceHelper(Scene into, Scene from) { this.into = into; this.from = from; } public Scene updateAllReferences() { for (int i = 0; i < into.getSpriteList().size(); i++) { Sprite sprite = into.getSpriteList().get(i); if (from.containsSpriteBySpriteName(sprite.getName())) { into.getSpriteList().set(i, updateReference(sprite)); } } return into; } public Sprite updateReference(Sprite sprite) { for (int i = 0; i < sprite.getScriptList().size(); i++) { Script script = sprite.getScript(i); sprite.getScriptList().set(i, updateReference(script)); } return sprite; } public Script updateReference(Script script) { for (int i = 0; i < script.getBrickList().size(); i++) { Brick brick = script.getBrickList().get(i); script.getBrickList().set(i, updateReference(brick)); } return script; } public Brick updateReference(Brick brick) { if (brick instanceof FormulaBrick) { ((FormulaBrick) brick).updateReferenceAfterMerge(into, from); } return brick; } }