diff --git a/src/as/com/threerings/stage/client/CharacterIsoSprite.as b/src/as/com/threerings/stage/client/CharacterIsoSprite.as index fff1bbb3..73e8a148 100644 --- a/src/as/com/threerings/stage/client/CharacterIsoSprite.as +++ b/src/as/com/threerings/stage/client/CharacterIsoSprite.as @@ -19,19 +19,32 @@ package com.threerings.stage.client { +import flash.display.DisplayObject; +import flash.display.Sprite; + import com.threerings.miso.util.MisoSceneMetrics; import com.threerings.miso.util.MisoUtil; 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; _bodyOid = bodyOid; 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 diff --git a/src/as/com/threerings/stage/client/CrowdStageScenePanel.as b/src/as/com/threerings/stage/client/CrowdStageScenePanel.as index 97505ab4..b1e72442 100644 --- a/src/as/com/threerings/stage/client/CrowdStageScenePanel.as +++ b/src/as/com/threerings/stage/client/CrowdStageScenePanel.as @@ -19,6 +19,8 @@ package com.threerings.stage.client { +import flash.display.DisplayObject; + import flash.geom.Point; import flash.geom.Rectangle; @@ -569,7 +571,12 @@ public class CrowdStageScenePanel extends StageScenePanel 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