| 50 | } |
| 51 | |
| 52 | void CSpecificCharacter::load_shared(LPCSTR) |
| 53 | { |
| 54 | #if 0 |
| 55 | CTimer timer; |
| 56 | timer.Start (); |
| 57 | #endif |
| 58 | const ITEM_DATA& item_data = *id_to_index::GetById(m_OwnId); |
| 59 | |
| 60 | CUIXml* pXML = item_data._xml; |
| 61 | |
| 62 | pXML->SetLocalRoot(pXML->GetRoot()); |
| 63 | |
| 64 | XML_NODE* item_node = pXML->NavigateToNode(id_to_index::tag_name, item_data.pos_in_file); |
| 65 | R_ASSERT3(item_node, "specific_character id=", *item_data.id); |
| 66 | |
| 67 | pXML->SetLocalRoot(item_node); |
| 68 | |
| 69 | int norandom = pXML->ReadAttribInt(item_node, "no_random", 0); |
| 70 | if (1 == norandom) |
| 71 | data()->m_bNoRandom = true; |
| 72 | else |
| 73 | data()->m_bNoRandom = false; |
| 74 | |
| 75 | int team_default = pXML->ReadAttribInt(item_node, "team_default", 0); |
| 76 | if (1 == team_default) |
| 77 | data()->m_bDefaultForCommunity = true; |
| 78 | else |
| 79 | data()->m_bDefaultForCommunity = false; |
| 80 | |
| 81 | R_ASSERT3(!(data()->m_bNoRandom && data()->m_bDefaultForCommunity), "cannot set 'no_random' and 'team_default' flags simultaneously, profile id", *shared_str(item_data.id)); |
| 82 | |
| 83 | #ifdef XRGAME_EXPORTS |
| 84 | |
| 85 | LPCSTR start_dialog = pXML->Read("start_dialog", 0, NULL); |
| 86 | if (start_dialog) |
| 87 | { |
| 88 | data()->m_StartDialog = start_dialog; |
| 89 | } |
| 90 | else |
| 91 | data()->m_StartDialog = NULL; |
| 92 | |
| 93 | int dialogs_num = pXML->GetNodesNum(pXML->GetLocalRoot(), "actor_dialog"); |
| 94 | data()->m_ActorDialogs.clear(); |
| 95 | for (int i = 0; i < dialogs_num; ++i) |
| 96 | { |
| 97 | shared_str dialog_name = pXML->Read(pXML->GetLocalRoot(), "actor_dialog", i, ""); |
| 98 | data()->m_ActorDialogs.push_back(dialog_name); |
| 99 | } |
| 100 | |
| 101 | data()->m_icon_name = pXML->Read("icon", 0, "ui_npc_u_barman"); |
| 102 | |
| 103 | //игровое имя персонажа |
| 104 | data()->m_sGameName = pXML->Read("name", 0, ""); |
| 105 | data()->m_sBioText = pXML->Read("bio", 0, ""); |
| 106 | |
| 107 | data()->m_fPanic_threshold = pXML->ReadFlt("panic_threshold", 0, 0.f); |
| 108 | data()->m_fHitProbabilityFactor = pXML->ReadFlt("hit_probability_factor", 0, 1.f); |
| 109 | data()->m_crouch_type = pXML->ReadInt("crouch_type", 0, 0); |
nothing calls this directly
no test coverage detected