public void Draw(Expression.Id exp, short frame, DrawArgument args) { if (_expressions.ContainsKey(exp) && _expressions[exp].ContainsKey(frame)) { _expressions[exp][frame].Tex.Draw(args); } }
public short GetDelay(Expression.Id exp, short frame) { if (_expressions.ContainsKey(exp) && _expressions[exp].ContainsKey(frame)) { return(_expressions[exp][frame].delay); } return(0); }
public short NextFrame(Expression.Id exp, short frame) { if (_expressions.ContainsKey(exp) && _expressions[exp].ContainsKey((short)(frame + 1))) { return((short)(frame + 1)); } return(0); }
public void SetExpression(Expression.Id newExpression) { if (_expression.Get() == newExpression) { return; } _expression.Set(newExpression); _expFrame.Set(0); _expELapSed = 0; }
public void Draw(Vector2 position, bool flipped, Stance.Id inStance, Expression.Id inExpression) { inStance = _equips.AdjustStance(inStance); Draw(inStance, inExpression, 0, 0, new DrawArgument(position, flipped)); }
private void Draw(Stance.Id inStance, Expression.Id inExpression, short inFrame, short inExpFrame, DrawArgument args) { if (Stance.IsClimbing(inStance)) // 判断是否为 爬绳 { Body.Draw(inStance, Body.Layer.Body, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.Glove, inFrame, args); _equips.Draw(EquipSlot.Id.Shoes, inStance, Clothing.Layer.Shoes, inFrame, args); _equips.Draw(EquipSlot.Id.Bottom, inStance, Clothing.Layer.Pants, inFrame, args); _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.Top, inFrame, args); _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.Mail, inFrame, args); _equips.Draw(EquipSlot.Id.Cape, inStance, Clothing.Layer.Cape, inFrame, args); Body.Draw(inStance, Body.Layer.Head, inFrame, args); _equips.Draw(EquipSlot.Id.EarAcc, inStance, Clothing.Layer.Earrings, inFrame, args); switch (_equips.GetCapType()) { case CharEquips.CapType.None: Hair.Draw(inStance, Hair.Layer.Back, inFrame, args); break; case CharEquips.CapType.Headband: _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); Hair.Draw(inStance, Hair.Layer.Back, inFrame, args); break; case CharEquips.CapType.HalfCover: Hair.Draw(inStance, Hair.Layer.BelowCap, inFrame, args); _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); break; case CharEquips.CapType.FullCover: _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); break; } _equips.Draw(EquipSlot.Id.Shield, inStance, Clothing.Layer.BackShield, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.BackWeapon, inFrame, args); } else { var faceShift = _drawInfo.GetFacePosition(inStance, inFrame); var faceArgs = args + (faceShift - (args.XScale.Equals(-1f) ? new Vector2(faceShift.X * 2, 0) : new Vector2())); Hair.Draw(inStance, Hair.Layer.BelowBody, inFrame, args); _equips.Draw(EquipSlot.Id.Cape, inStance, Clothing.Layer.Cape, inFrame, args); _equips.Draw(EquipSlot.Id.Shield, inStance, Clothing.Layer.ShieldBelowBody, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.WeaponBelowBody, inFrame, args); _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.CapBelowBody, inFrame, args); Body.Draw(inStance, Body.Layer.Body, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.WristOverBody, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.GloveOverBody, inFrame, args); _equips.Draw(EquipSlot.Id.Shoes, inStance, Clothing.Layer.Shoes, inFrame, args); Body.Draw(inStance, Body.Layer.ArmBelowHead, inFrame, args); if (_equips.HasOverAll) { _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.Mail, inFrame, args); } else { _equips.Draw(EquipSlot.Id.Bottom, inStance, Clothing.Layer.Pants, inFrame, args); _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.Top, inFrame, args); } Body.Draw(inStance, Body.Layer.ArmBelowHeadOverMail, inFrame, args); Hair.Draw(inStance, Hair.Layer.Default, inFrame, args); _equips.Draw(EquipSlot.Id.Shield, inStance, Clothing.Layer.ShieldOverHair, inFrame, args); _equips.Draw(EquipSlot.Id.EarAcc, inStance, Clothing.Layer.Earrings, inFrame, args); Body.Draw(inStance, Body.Layer.Head, inFrame, args); Hair.Draw(inStance, Hair.Layer.Shade, inFrame, args); Face.Draw(inExpression, inExpFrame, faceArgs); _equips.Draw(EquipSlot.Id.Face, inStance, Clothing.Layer.FaceAcc, 0, faceArgs); _equips.Draw(EquipSlot.Id.EyeAcc, inStance, Clothing.Layer.EyeAcc, inFrame, args); _equips.Draw(EquipSlot.Id.Shield, inStance, Clothing.Layer.Shield, inFrame, args); switch (_equips.GetCapType()) { case CharEquips.CapType.None: Hair.Draw(inStance, Hair.Layer.OverHead, inFrame, args); break; case CharEquips.CapType.Headband: _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); Hair.Draw(inStance, Hair.Layer.Default, inFrame, args); Hair.Draw(inStance, Hair.Layer.OverHead, inFrame, args); _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.CapOverHair, inFrame, args); break; case CharEquips.CapType.HalfCover: Hair.Draw(inStance, Hair.Layer.Default, inFrame, args); _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); break; case CharEquips.CapType.FullCover: _equips.Draw(EquipSlot.Id.Hat, inStance, Clothing.Layer.Cap, inFrame, args); break; } _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.WeaponBelowArm, inFrame, args); if (inStance == Stance.Id.StabO1) { Console.WriteLine(); } if (IsTwoHanded(inStance)) { _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.MailArm, inFrame, args); Body.Draw(inStance, Body.Layer.Arm, inFrame, args); Body.Draw(inStance, Body.Layer.ArmOverHair, inFrame, args); Body.Draw(inStance, Body.Layer.ArmOverHairBelowWeapon, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.Weapon, inFrame, args); } else { _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.Weapon, inFrame, args); Body.Draw(inStance, Body.Layer.Arm, inFrame, args); Body.Draw(inStance, Body.Layer.ArmOverHair, inFrame, args); Body.Draw(inStance, Body.Layer.ArmOverHairBelowWeapon, inFrame, args); _equips.Draw(EquipSlot.Id.Top, inStance, Clothing.Layer.MailArm, inFrame, args); } _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.Wrist, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.Glove, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.WeaponOverGlove, inFrame, args); Body.Draw(inStance, Body.Layer.HandBelowWeapon, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.WeaponOverHand, inFrame, args); _equips.Draw(EquipSlot.Id.Weapon, inStance, Clothing.Layer.WeaponOverBody, inFrame, args); Body.Draw(inStance, Body.Layer.HandOverHair, inFrame, args); Body.Draw(inStance, Body.Layer.HandOverWeapon, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.WristOverHair, inFrame, args); _equips.Draw(EquipSlot.Id.Gloves, inStance, Clothing.Layer.GloveOverHair, inFrame, args); } }