Fancier iso sprites for the character - let the scene panel extension define the display object to show.

git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@948 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
Mike Thomas
2010-08-10 23:46:34 +00:00
parent 9199f4ccc7
commit fa558d11ae
2 changed files with 24 additions and 4 deletions
@@ -19,19 +19,32 @@
package com.threerings.stage.client { package com.threerings.stage.client {
import flash.display.DisplayObject;
import flash.display.Sprite;
import com.threerings.miso.util.MisoSceneMetrics; import com.threerings.miso.util.MisoSceneMetrics;
import com.threerings.miso.util.MisoUtil; import com.threerings.miso.util.MisoUtil;
import com.threerings.stage.data.StageLocation; import com.threerings.stage.data.StageLocation;
import as3isolib.display.primitive.IsoBox; import as3isolib.display.IsoSprite;
import as3isolib.graphics.SolidColorFill;
public class CharacterIsoSprite extends IsoBox public class CharacterIsoSprite extends IsoSprite
{ {
public function CharacterIsoSprite (bodyOid :int, metrics :MisoSceneMetrics) public function CharacterIsoSprite (bodyOid :int, metrics :MisoSceneMetrics,
disp :DisplayObject)
{ {
_metrics = metrics; _metrics = metrics;
_bodyOid = bodyOid; _bodyOid = bodyOid;
setSize(1, 1, 2); setSize(1, 1, 2);
// We wrap the sprite so we can shift it where we need it. Components like to line up
// to the middle of a tile and as3isolib likes to line up to the back of a tile.
var wrapper :Sprite = new Sprite();
wrapper.y = _metrics.tilehhei;
wrapper.addChild(disp);
sprites = [wrapper];
} }
public function isMoving () :Boolean public function isMoving () :Boolean
@@ -19,6 +19,8 @@
package com.threerings.stage.client { package com.threerings.stage.client {
import flash.display.DisplayObject;
import flash.geom.Point; import flash.geom.Point;
import flash.geom.Rectangle; import flash.geom.Rectangle;
@@ -569,7 +571,12 @@ public class CrowdStageScenePanel extends StageScenePanel
protected function createSprite (info :OccupantInfo) :CharacterIsoSprite protected function createSprite (info :OccupantInfo) :CharacterIsoSprite
{ {
return new CharacterIsoSprite(info.getBodyOid(), _metrics); return new CharacterIsoSprite(info.getBodyOid(), _metrics, createCharacter(info));
}
protected function createCharacter (info :OccupantInfo) :DisplayObject
{
throw new Error("abstract");
} }
protected function getSprite (bodyOid :int) :CharacterIsoSprite protected function getSprite (bodyOid :int) :CharacterIsoSprite