public override Component ToEdxComponent(string displayName, Slide slide, int componentIndex) { var items = Items.Select(x => new Choice { Correct = x.IsCorrect, Text = EdxTexReplacer.ReplaceTex(x.Description) }).ToArray(); ChoiceResponse cr; if (Multiple) { var cg = new CheckboxGroup { Label = Text, Direction = "vertical", Choices = items }; cr = new ChoiceResponse { ChoiceGroup = cg }; } else { var cg = new MultipleChoiceGroup { Label = Text, Type = "MultipleChoice", Choices = items }; cr = new MultipleChoiceResponse { ChoiceGroup = cg }; } return(new MultipleChoiceComponent { UrlName = slide.NormalizedGuid + componentIndex, ChoiceResponse = cr, Title = EdxTexReplacer.ReplaceTex(Text) }); }
public void SendChoiceResponse(Player sender, Card chosenCard, ChoiceResponse response) { string msg; switch (response) { case ChoiceResponse.Attacked: msg = " - *" + chosenCard.Name + " has attacked, please choose another minion.*"; break; case ChoiceResponse.NoEnemyMinionCanBeAttacked: msg = " - *" + chosenCard.Name + " cannot attack anyone because they are disabled to be attacked.*"; break; case ChoiceResponse.AttackAfterPuttingMinionsOnField: msg = " - *You have put cards on field, you cannot choose a minion in hand to attack.*"; break; case ChoiceResponse.FieldIsFull: msg = " - *Field is full, you cannot put " + chosenCard.Name + " on field.*"; break; case ChoiceResponse.DisabledToBeAttacked: msg = " - *" + chosenCard.Name + " is disabled to be attack.*"; break; case ChoiceResponse.LackOfCash: if (chosenCard is Minion) { msg = " - *You have no enough cash, you cannot put " + chosenCard.Name + " on field.*"; } else { msg = " - *You have no enough cash, you cannot launch " + chosenCard.Name + ".*"; } break; case ChoiceResponse.NotMyCard: msg = " - *Please choose your card!*"; break; case ChoiceResponse.NotCardOnEnemyField: msg = " - *Please choose a card of your enemy!*"; break; default: if (chosenCard is Player) { msg = " - " + sender.Name + " chooses a player: " + chosenCard.Name; } else { msg = " - " + sender.Name + " chooses a card: " + chosenCard.Player.Name + "'s " + chosenCard.Name; } break; } Console.WriteLine(msg); }
void HandlePlayerChoiceResponse(ChoiceResponse choiceResponse) { if (_player.PlayerTalkClass.GetInteractionData().PlayerChoiceId != choiceResponse.ChoiceID) { Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to respond to invalid player choice {choiceResponse.ChoiceID} (allowed {_player.PlayerTalkClass.GetInteractionData().PlayerChoiceId}) (possible packet-hacking detected)"); return; } PlayerChoice playerChoice = Global.ObjectMgr.GetPlayerChoice(choiceResponse.ChoiceID); if (playerChoice == null) { return; } PlayerChoiceResponse playerChoiceResponse = playerChoice.GetResponse(choiceResponse.ResponseID); if (playerChoiceResponse == null) { Log.outError(LogFilter.Player, $"Error in CMSG_CHOICE_RESPONSE: {GetPlayerInfo()} tried to select invalid player choice response {choiceResponse.ResponseID} (possible packet-hacking detected)"); return; } Global.ScriptMgr.OnPlayerChoiceResponse(GetPlayer(), (uint)choiceResponse.ChoiceID, (uint)choiceResponse.ResponseID); if (playerChoiceResponse.Reward.HasValue) { var reward = playerChoiceResponse.Reward.Value; if (reward.TitleId != 0) { _player.SetTitle(CliDB.CharTitlesStorage.LookupByKey(reward.TitleId), false); } if (reward.PackageId != 0) { _player.RewardQuestPackage((uint)reward.PackageId); } if (reward.SkillLineId != 0 && _player.HasSkill((SkillType)reward.SkillLineId)) { _player.UpdateSkillPro((uint)reward.SkillLineId, 1000, reward.SkillPointCount); } if (reward.HonorPointCount != 0) { _player.AddHonorXP(reward.HonorPointCount); } if (reward.Money != 0) { _player.ModifyMoney((long)reward.Money, false); } if (reward.Xp != 0) { _player.GiveXP(reward.Xp, null, 0.0f); } foreach (PlayerChoiceResponseRewardItem item in reward.Items) { List <ItemPosCount> dest = new(); if (_player.CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, item.Id, (uint)item.Quantity) == InventoryResult.Ok) { Item newItem = _player.StoreNewItem(dest, item.Id, true, ItemEnchantmentManager.GenerateItemRandomBonusListId(item.Id), null, ItemContext.QuestReward, item.BonusListIDs); _player.SendNewItem(newItem, (uint)item.Quantity, true, false); } } foreach (PlayerChoiceResponseRewardEntry currency in reward.Currency) { _player.ModifyCurrency((CurrencyTypes)currency.Id, currency.Quantity); } foreach (PlayerChoiceResponseRewardEntry faction in reward.Faction) { _player.GetReputationMgr().ModifyReputation(CliDB.FactionStorage.LookupByKey(faction.Id), faction.Quantity); } } }
public void SendChoiceResponse(Player sender, Card chosenCard, ChoiceResponse response) { Debug.Log("Choice Response: " + response.ToString()); }