From f7e571c2aa2dc9c04f8526a09d97ad75ba2403e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz>
Date: Thu, 22 Jan 2015 15:01:22 +0100
Subject: [PATCH] #5 Scaling creatures by screen resolution

---
 .../nic/tablexia/creature/CreatureRoot.java   | 17 ++----
 .../cz/nic/tablexia/screen/GameScreen.java    | 53 ++++++++++---------
 2 files changed, 31 insertions(+), 39 deletions(-)

diff --git a/core/src/cz/nic/tablexia/creature/CreatureRoot.java b/core/src/cz/nic/tablexia/creature/CreatureRoot.java
index cf3b8fb45..cc8d7a23d 100644
--- a/core/src/cz/nic/tablexia/creature/CreatureRoot.java
+++ b/core/src/cz/nic/tablexia/creature/CreatureRoot.java
@@ -140,10 +140,9 @@ public class CreatureRoot extends Actor {
 
     public CreatureRoot(AttributeGender attributeGender, float x, float y) {
 		this.attributeGender = attributeGender;
-		setPosition(x, y);
         attributes = new ArrayList<Attribute>();
         Texture backgroundTexture = BankRoberryAssetManager.getInstance().get(BankRoberryAssetManager.CREATURE_BACKGROUND_TEXTURE, Texture.class);
-        setSize(backgroundTexture.getWidth(), backgroundTexture.getHeight());
+        setBounds(x, y, backgroundTexture.getWidth(), backgroundTexture.getHeight());
     }
 
     /**
@@ -165,16 +164,6 @@ public class CreatureRoot extends Actor {
 
         return this;
     }
-    
-    @Override
-    public float getWidth() {
-    	return super.getWidth() * getScaleX();
-    }
-    
-    @Override
-    public float getHeight() {
-    	return super.getHeight() * getScaleY();
-    }
 
     /**
      * Returns <code>true</code> if creature is thief.
@@ -435,7 +424,7 @@ public class CreatureRoot extends Actor {
     	if (highliteColor != null) {
     		batch.setColor(highliteColor.r, highliteColor.g, highliteColor.b, parentAlpha);
     		Texture texture = BankRoberryAssetManager.getInstance().get(BankRoberryAssetManager.CREATURE_BACKGROUND_TEXTURE, Texture.class);
-    		batch.draw(texture, getX(), getY(), getOriginX(), getOriginY(), texture.getWidth(), texture.getHeight(), getScaleX(), getScaleY(), getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
+    		batch.draw(texture, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
     		batch.setColor(Color.WHITE);
     	}
     	for (Attribute attribute : attributes) {
@@ -444,7 +433,7 @@ public class CreatureRoot extends Actor {
     			texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
     		}
     		batch.setColor(getColor());
-    		batch.draw(texture, getX(), getY(), getOriginX(), getOriginY(), texture.getWidth(), texture.getHeight(), getScaleX(), getScaleY(), getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
+    		batch.draw(texture, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
     		batch.setColor(Color.WHITE);
 		}
     }
diff --git a/core/src/cz/nic/tablexia/screen/GameScreen.java b/core/src/cz/nic/tablexia/screen/GameScreen.java
index 5d0a7be53..d4235c93d 100644
--- a/core/src/cz/nic/tablexia/screen/GameScreen.java
+++ b/core/src/cz/nic/tablexia/screen/GameScreen.java
@@ -52,7 +52,31 @@ public class GameScreen extends ScreenAdapter {
 		
 	}
 	
-	private Stage stage;
+    private static final float          CREATURE_STRAT_MOVE_DURATION 	= 1.5f;
+    private static final float          CREATURE_MOVE_DURATION_STEP  	= 0.013f;
+    private static final float          CREATURE_FROM_SCALE          	= 0.1f;
+    private static final float          CREATURE_TO_SCALE            	= 1.05f;
+    private static final float          CREATURE_FINAL_SCALE         	= 0.9f;
+    
+    private final static float 			CREATURE_MIDDLE_DELAY_MODIFIER 	= 0.5f;
+	private final static float 			CREATURE_FINISH_DELAY_MODIFIER 	= 0.25f;
+	
+	private final static Interpolation 	CREATURE_START_INTERPOLATION 	= Interpolation.pow4Out;
+	private final static Interpolation 	CREATURE_MIDDLE_INTERPOLATION 	= Interpolation.pow4In;
+	private final static Interpolation 	CREATURE_FINISH_INTERPOLATION 	= Interpolation.linear;
+	
+	private float 	creatureStartPositionX;
+	private float 	creatureStartPositionY;
+	private float 	creatureMiddle1PositionX;
+	private float 	creatureMiddle1PositionY;
+	private float 	creatureMiddle2PositionX;
+	private float 	creatureMiddle2PositionY;
+	private float 	creatureFinishPositionX;
+	private float 	creatureFinishPositionY;
+	
+	private Stage 	stage;
+	
+	private int 	creatureNumber = 0;
 
 	@Override
 	public void show() {
@@ -81,29 +105,6 @@ public class GameScreen extends ScreenAdapter {
 		stage = null;
 	}
 	
-	int creatureNumber = 0;
-    private static final float            CREATURE_STRAT_MOVE_DURATION = 1.5f;
-    private static final float            CREATURE_MOVE_DURATION_STEP  = 0.013f;
-    private static final float            CREATURE_FROM_SCALE          = 0.1f;
-    private static final float            CREATURE_TO_SCALE            = 1.05f;
-    private static final float            CREATURE_FINAL_SCALE         = 0.9f;
-	
-	private float creatureStartPositionX;
-	private float creatureStartPositionY;
-	private float creatureMiddle1PositionX;
-	private float creatureMiddle1PositionY;
-	private float creatureMiddle2PositionX;
-	private float creatureMiddle2PositionY;
-	private float creatureFinishPositionX;
-	private float creatureFinishPositionY;
-	
-	private final static Interpolation CREATURE_START_INTERPOLATION = Interpolation.pow4Out;
-	private final static Interpolation CREATURE_MIDDLE_INTERPOLATION = Interpolation.pow4In;
-	private final static Interpolation CREATURE_FINISH_INTERPOLATION = Interpolation.linear;
-	
-	private final static float CREATURE_MIDDLE_DELAY_MODIFIER = 0.5f;
-	private final static float CREATURE_FINISH_DELAY_MODIFIER = 0.25f;
-	
 	private int getNumberOfMistakesInGame() {
 		return 0;
 	}
@@ -128,10 +129,11 @@ public class GameScreen extends ScreenAdapter {
         	final float duration = getCreatureMoveDurationForCreatureNumber(creatureNumber);
             final CreatureRoot creature = creatures.get(creatureNumber);
 //            creature.setClickable(scene, this, getVertexBufferObjectManager());
+            float creatureRatio = (stage.getHeight() * (3f/5)) / creature.getHeight();
+            creature.setSize(creature.getWidth() * creatureRatio, creature.getHeight() * creatureRatio);
             creature.setOrigin(Align.center);
             creature.setPosition(creatureStartPositionX, creatureStartPositionY);
             creature.setScale(CREATURE_FROM_SCALE);
-            stage.addActor(creature);
             creature.addAction(sequence(parallel(moveTo(creatureMiddle1PositionX, creatureMiddle1PositionY, duration, CREATURE_START_INTERPOLATION),
             									 scaleTo(CREATURE_TO_SCALE, CREATURE_TO_SCALE, duration, CREATURE_START_INTERPOLATION)),
             							parallel(moveTo(creatureMiddle2PositionX, creatureMiddle2PositionY, duration * CREATURE_MIDDLE_DELAY_MODIFIER, CREATURE_MIDDLE_INTERPOLATION),
@@ -146,6 +148,7 @@ public class GameScreen extends ScreenAdapter {
 												showNextCreature(creatures);
 											}
 										})));
+            stage.addActor(creature);
             
 
 //            IModifierListener<IEntity> firstAnimListener = new EntityModifierListenerAdapter() {
-- 
GitLab