public DanceScene(String scriptname)
 {
     this.script = ContentScript.FromFile(scriptname);
     this.textures = new TextureContext();
     this.sequences = new DanceSequenceProtocol();
     this.background = new DanceBackground();
     this.ui = new IngameUI();
 }
        public DanceSceneAnimationBundle(TextureContext textures, Song song)
        {
            this.opponent = new Dictionary<InputState.Move, ButtonAnimation>();
            this.player = new Dictionary<PlayerProgress.Rating, Dictionary<InputState.Move, ButtonAnimation>>();
            this.player[PlayerProgress.Rating.OK] = new Dictionary<InputState.Move, ButtonAnimation>();
            this.player[PlayerProgress.Rating.GOOD] = new Dictionary<InputState.Move, ButtonAnimation>();
            this.player[PlayerProgress.Rating.PERFECT] = new Dictionary<InputState.Move, ButtonAnimation>();
            this.fail = new Dictionary<InputState.Move, ButtonAnimation>();

            long length = (long)song.beatTimeInMs;
            this.setup(this.opponent, textures, Color.LightBlue, length);
            this.setup(this.player[PlayerProgress.Rating.OK], textures, Color.Yellow, length);
            this.setup(this.player[PlayerProgress.Rating.GOOD], textures, Color.Green, length);
            this.setup(this.player[PlayerProgress.Rating.PERFECT], textures, Color.Lime, length);

            this.setup(this.fail, textures, Color.Black, length, new string[]{"btn_fail"});
        }
 private void setup(Dictionary<InputState.Move, ButtonAnimation> animationSet,
         TextureContext textures, Color color, long length,
         string[] textureNames)
 {
     animationSet[InputState.Move.UP] = new ButtonAnimation(
         textures.getRaw(textureNames[0 % textureNames.Length]), new Vector2(0, -1 * CENTER_OFFSET + Y_OFFSET), color, length);
     animationSet[InputState.Move.LEFT] = new ButtonAnimation(
         textures.getRaw(textureNames[1 % textureNames.Length]), new Vector2(-1 * CENTER_OFFSET, Y_OFFSET), color, length);
     animationSet[InputState.Move.RIGHT] = new ButtonAnimation(
         textures.getRaw(textureNames[2 % textureNames.Length]), new Vector2(CENTER_OFFSET, Y_OFFSET), color, length);
     animationSet[InputState.Move.DOWN] = new ButtonAnimation(
         textures.getRaw(textureNames[3 % textureNames.Length]), new Vector2(0, CENTER_OFFSET + Y_OFFSET), color, length);
 }
 private void setup(Dictionary<InputState.Move, ButtonAnimation> animationSet, 
         TextureContext textures, Color color, long length)
 {
     this.setup(animationSet, textures, color, length,
         new string[]{"btn_up", "btn_left", "btn_right", "btn_down"});
 }