public CarotADMLCharacter(ADML.Character src, string override_image_filename) { admlchar = src; string srcimage = (override_image_filename!=null)?override_image_filename:src.source; //dice up the source image if it hasnt been done yet using(Image srcimg = GameEngine.Game.LoadImage(srcimage)) { foreach(ADML.View view in src.views.Values) { FrameServer fs = new FrameServer(view); fs.dice(src.tcol, srcimg); view.SetFrameServer(fs); } } tryCreateIdleAnim("l_idle", "l_walk"); tryCreateIdleAnim("r_idle", "r_walk"); tryCreateIdleAnim("u_idle", "u_walk"); tryCreateIdleAnim("d_idle", "d_walk"); //create the animrecords foreach(ADML.Anim anim in admlchar.anims.Values) { AnimRecord ar = new AnimRecord(); ar.admlanim = anim; ar.controller = new StandardChrAnimationController(ar.admlanim.str); ar.address = int.Parse(ar.admlanim.addr); animations[anim.name] = ar; } //setup the hardcoded animation types walkAnims[(int)Directions.w] = findAnim("l_walk"); walkAnims[(int)Directions.e] = findAnim("r_walk"); walkAnims[(int)Directions.n] = findAnim("u_walk"); walkAnims[(int)Directions.s] = findAnim("d_walk"); idleAnims[(int)Directions.w] = findAnim("l_idle"); idleAnims[(int)Directions.e] = findAnim("r_idle"); idleAnims[(int)Directions.n] = findAnim("u_idle"); idleAnims[(int)Directions.s] = findAnim("d_idle"); if(walkAnims[(int)Directions.w].admlanim.idle != null) idleAnims[(int)Directions.w] = animations["l_idle"]; if(walkAnims[(int)Directions.e].admlanim.idle != null) idleAnims[(int)Directions.e] = animations["r_idle"]; if(walkAnims[(int)Directions.n].admlanim.idle != null) idleAnims[(int)Directions.n] = animations["u_idle"]; if(walkAnims[(int)Directions.s].admlanim.idle != null) idleAnims[(int)Directions.s] = animations["d_idle"]; }
public void Command(CharacterCommands command, params object[] args) { customAnimation = null; switch(command) { case CharacterCommands.Step: state = 1; d = (Directions)args[0]; walkAnims[(int)d].controller.reset(); return; case CharacterCommands.Face: //if(state == 1 && d == (Directions)args[0]) { } //else //state = 0; //if(d != (Directions)args[0]) state = 0; if(d != (Directions)args[0]) { d = (Directions)args[0]; if(GetCurrentAnimRecord() != null) GetCurrentAnimRecord().controller.reset(); } return; case CharacterCommands.Stop: { state = 0; AnimRecord ar = GetCurrentAnimRecord(); if(ar != null) ar.controller.reset(); } return; case CharacterCommands.Walk: if(d == (Directions)args[0] && state == 1) { } else { state = 1; walkAnims[(int)(Directions)args[0]].controller.reset(); d = (Directions)args[0]; } return; case CharacterCommands.Animate: if(animations.TryGetValue((string)args[0], out customAnimation)) { customAnimation.controller.reset(); state = 3; } else state = 0; return; default: return; } }