/// <summary> /// User special used for all event /// </summary> /// <param name="senderUserID">Sender user ID</param> /// <param name="special">Special</param> private void UserSpecialUsedForAllEvent(int senderUserID, ESpecial special) { if (users.IsIDValid(senderUserID)) { OnUserSpecialUsedForAll?.Invoke(users[senderUserID], special); } }
public virtual SCS_SpecialAttack CreateAttackState(ESpecial type) { SCS_SpecialAttack specialAttack = new SCS_SpecialAttack(); specialAttack.animationName = animationName; specialAttack.aerialLimit = aerialLimit; specialAttack.attackBuff = new AttackBuff(); specialAttack.type = type; specialAttack.comboPowerCost = comboPowerCost; return(specialAttack); }
public override SCS_SpecialAttack CreateAttackState(ESpecial type) { SCS_SpecialAttackProjectile projectileAttack = new SCS_SpecialAttackProjectile(); projectileAttack.animationName = animationName; projectileAttack.aerialLimit = aerialLimit; projectileAttack.attackBuff = new AttackBuff(); projectileAttack.projectile = projectile; projectileAttack.projectileVelocity = projectileVelocity; projectileAttack.type = type; projectileAttack.comboPowerCost = comboPowerCost; return(projectileAttack); }
/// <summary> /// Special used for all event /// </summary> /// <param name="special">Special</param> private void SpecialUsedForAllEvent(ESpecial special) => OnSpecialUsedForAll?.Invoke(special);
/// <summary> /// Use special /// </summary> /// <param name="special">Special</param> /// <returns>"true" if possible, otherwise "false"</returns> public bool UseSpecial(ESpecial special) => user.InventoryInternal.UseSpecial(special);
/// <summary> /// Send special used message (asynchronous) /// </summary> /// <param name="senderUser">Sender user</param> /// <param name="targetUser">Target user</param> /// <param name="special">Special</param> /// <returns>Send result task</returns> internal Task <SendResult> SendSpecialUsedMessageAsync(IUser senderUser, IUser targetUser, ESpecial special) => SendMessageAsync(messageBuilder.BuildSpecialUsedMessage(senderUser, targetUser, special));
/// <summary> /// Build special used message /// </summary> /// <param name="senderUser">Sender user</param> /// <param name="targetUser">Target user</param> /// <param name="special">Special</param> /// <returns>Built message</returns> internal string BuildSpecialUsedMessage(IUser senderUser, IUser targetUser, ESpecial special) => ("sb " + targetUser.ID + " " + GetSpecialChar(special) + " " + senderUser.ID);
/// <summary> /// Get special character /// </summary> /// <param name="special">Special</param> /// <returns>Special character is successful, otherwise "0"</returns> private static char GetSpecialChar(ESpecial special) { char ret = '0'; switch (special) { case ESpecial.AddLine: ret = 'a'; break; case ESpecial.ClearLine: ret = 'c'; break; case ESpecial.ClearSpecialBlocks: ret = 'n'; break; case ESpecial.RandomBlocksClear: ret = 'r'; break; case ESpecial.BlockBomb: ret = 's'; break; case ESpecial.QuakeField: ret = 'b'; break; case ESpecial.Gravity: ret = 'g'; break; case ESpecial.SwitchFields: ret = 'q'; break; case ESpecial.NukeField: ret = 'o'; break; //case ESpecial.Immunity: // ret = ''; // break; //case ESpecial.ClearColumn: // ret = ''; // break; //case ESpecial.MutatePieces: // ret = ''; // break; //case ESpecial.Darkness: // ret = ''; // break; //case ESpecial.Confusion: // ret = ''; // break; //case ESpecial.LeftGravity: // ret = ''; // break; //case ESpecial.PieceChange: // ret = ''; // break; //case ESpecial.ZebraField: // ret = ''; // break; // TODO // Specials } return(ret); }
public virtual void SCS_CountSpecial(ESpecial type) { }