Changeset 12

Show
Ignore:
Timestamp:
12/16/07 03:55:03 (8 months ago)
Author:
sagrer
Message:
  • Добавлен пункт меню для закрытия текущего открытого моба.
  • Исправлена ошибка, проявлявшаяся в некоторых случаях если начать крутить ориентатор при не выделенном в дереве реальном объекте.
  • При любом закрытии активного моба, в т.ч. при выходе из программы если файл был изменен - появляется вопрос о том что делать с измененным файлом.
  • Добавлен svn-clean.cmd для удаления неверсифицированных файлов в рабочей копии.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/2bin/ChangeLog.txt

    r10 r12  
    44 * Èñïðàâëåí íåðàáîòàâøèé ïîèñê. 
    55 * Óáðàíû ëèøíèå ïóíêòû ìåíþ, ïðåäíàçíà÷àâøèåñÿ äëÿ ðàáîòû ñ "ìîáîì ¹2" - â íèõ íå âîçíêëà íåîáõîäèìîñòü, îáìåí èíôîðìàöèåé ìåæäó ìîáàìè óæå ðåàëèçîâàí ÷åðåç ìàññîâûå èçìåíåíèÿ. 
     6 * Äîáàâëåí ïóíêò ìåíþ äëÿ çàêðûòèÿ òåêóùåãî îòêðûòîãî ìîáà. 
     7 * Èñïðàâëåíà îøèáêà, ïðîÿâëÿâøàÿñÿ â íåêîòîðûõ ñëó÷àÿõ åñëè íà÷àòü êðóòèòü îðèåíòàòîð ïðè íå âûäåëåííîì â äåðåâå ðåàëüíîì îáúåêòå. 
     8 * Ïðè ëþáîì çàêðûòèè àêòèâíîãî ìîáà, â ò.÷. ïðè âûõîäå èç ïðîãðàììû åñëè ôàéë áûë èçìåíåí - ïîÿâëÿåòñÿ âîïðîñ î òîì ÷òî äåëàòü ñ èçìåíåííûì ôàéëîì. 
    69 
    710Âåðñèÿ 0.3.5 
  • trunk/MainForm.cpp

    r11 r12  
    207207  //Òèïà ïî çàêðûòèþ îêíà... 
    208208 
    209   //Çàñàâèòü èçìåíåíèÿ â èíòåðôåéñå... 
    210   Save_MC_Interf();  //Ìàññîâûå èçìåíåíèÿ... 
    211  
    212   //Äåèíèöèàëèçàöèÿ OGL... 
    213   ObjectOrientator->GLDeInitialize(); 
     209  //Ïåðåìåííûå. 
     210  bool AllOk;  
     211 
     212  //Çàêðûòü ìîá. 
     213  AllOk = CloseMobComm(); 
     214 
     215  //Åñëè ìîá çàêðûò óñïåøíî - ïðîäîëæèòü ïðîöåäóðó çàêðûòèÿ ïðîãè. 
     216  if (AllOk == true) 
     217  { 
     218    //Çàñàâèòü èçìåíåíèÿ â èíòåðôåéñå... 
     219    Save_MC_Interf();  //Ìàññîâûå èçìåíåíèÿ... 
     220 
     221    //Äåèíèöèàëèçàöèÿ OGL... 
     222    ObjectOrientator->GLDeInitialize(); 
     223  } 
     224  else 
     225  { 
     226    //Íååå, íèôèããà, çàêðûâàööî íåëüçÿ ). 
     227    Action = caNone; 
     228  }; 
    214229} 
    215230//--------------------------------------------------------------------------- 
     
    480495    //Ìîá çàãðóæåí - âûâåñòè åãî èìÿ ôàéëà... 
    481496    Caption = Caption + ' ' + ExtractFileName(MobFileName); 
     497    if (MobModified == true) Caption = Caption + " *";    //Îòìåòêà î ìîäèôèöèðîâàííîñòè ôàéëà. 
    482498    Application->Title = ExtractFileName(MobFileName); 
    483499  }; 
     
    492508    SaveAsMobMenu->Enabled = true; 
    493509    BackupMobMenu->Enabled = true; 
     510    CloseMobMenu->Enabled = true; 
    494511 
    495512    //Ðàçáëîêèðîâàòü ðåäàêòîð ñêðèïòà... 
     
    575592    SaveAsMobMenu->Enabled = false; 
    576593    BackupMobMenu->Enabled = false; 
     594    CloseMobMenu->Enabled = false; 
    577595 
    578596    //Çàáëîêèðîâàòü ðåäàêòîð ñêðèïòà... 
     
    13961414//--------------------------------------------------------------------------- 
    13971415 
     1416void TMainF::SetMobModified() 
     1417//Ñòàâèò îòìåòêó ÷òî ìîá ìîäèôèöèðîâàí (ñ ïîñëåäíåãî save\load) è îáíîâëÿåò èíòåðôåéñ. 
     1418{ 
     1419  if (MobModified == false) 
     1420  { 
     1421    MobModified = true; 
     1422    this->UpdateMainInterf(); 
     1423  };  
     1424}; 
     1425 
     1426//--------------------------------------------------------------------------- 
     1427 
     1428void TMainF::SetMobNotModified() 
     1429//Ñòàâèò îòìåòêó ÷òî ìîá íå ìîäèôèöèðîâàí (ñ ïîñëåäíåãî save\load) è îáíîâëÿåò èíòåðôåéñ. 
     1430{ 
     1431  if (MobModified == true) 
     1432  { 
     1433    MobModified = false; 
     1434    this->UpdateMainInterf(); 
     1435  };  
     1436}; 
     1437//--------------------------------------------------------------------------- 
    13981438 
    13991439void __fastcall TMainF::MC_ResetButClick(TObject *Sender) 
     
    15031543  TTreeNode *CurrNode, *AddedNode; 
    15041544 
     1545  //Ïî÷èñòèòü äåðåâî... 
     1546  this->ObjectsTree->Items->Clear(); 
     1547  //... è òàáëè÷êó. 
     1548  this->ValuesEditor->Strings->Clear(); 
     1549 
    15051550  //Ñðàáàòûâàåì òîëüêî åñëè ìîá çàãðóæåí... 
    15061551  if (MobLoaded == true) 
     
    15091554 
    15101555    //Ñêèäûâàåì èíôó î îáúåêòàõ â äåðåâî ðåäàêòîðà îáúåêòîâ... 
    1511  
    1512     //Ïî÷èñòèòü äåðåâî... 
    1513     this->ObjectsTree->Items->Clear(); 
    15141556 
    15151557    //Þíèòû... 
     
    20462088      //Çàïîìèíàåì èíôó... 
    20472089      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->BodyTextures); 
     2090      this->SetMobModified(); 
    20482091    } 
    20492092    else 
     
    20612104      //Çàïîìèíàåì èíôó... 
    20622105      MobObject->PlayerNumber = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2106      this->SetMobModified(); 
    20632107    } 
    20642108    else 
     
    20762120      //Çàïîìèíàåì èíôó... 
    20772121      MobObject->ObjectID = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2122      this->SetMobModified(); 
    20782123    } 
    20792124    else 
     
    20912136      //Çàïîìèíàåì èíôó... 
    20922137      MobObject->ObjectType = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2138      this->SetMobModified(); 
    20932139    } 
    20942140    else 
     
    21032149    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21042150    MobObject->ScriptVariableName = this->ValuesEditor->Values[KeyName]; 
     2151    this->SetMobModified(); 
    21052152  } 
    21062153  else if (KeyName == "ModelName") 
     
    21092156    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21102157    MobObject->ModelName = this->ValuesEditor->Values[KeyName]; 
     2158    this->SetMobModified(); 
    21112159  } 
    21122160  else if (KeyName == "Name2") 
     
    21152163    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21162164    MobObject->Name2 = this->ValuesEditor->Values[KeyName]; 
     2165    this->SetMobModified(); 
    21172166  } 
    21182167  else if (KeyName == "FirstTexture") 
     
    21212170    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21222171    MobObject->FirstTexture = this->ValuesEditor->Values[KeyName]; 
     2172    this->SetMobModified(); 
    21232173  } 
    21242174  else if (KeyName == "SecondTexture") 
     
    21272177    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21282178    MobObject->SecondTexture = this->ValuesEditor->Values[KeyName]; 
     2179    this->SetMobModified(); 
    21292180  } 
    21302181  else if (KeyName == "UnknownStr1") 
     
    21332184    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    21342185    MobObject->UnknownStr1 = this->ValuesEditor->Values[KeyName]; 
     2186    this->SetMobModified(); 
    21352187  } 
    21362188  else if (KeyName == "LoadX") 
     
    21422194      //Çàïîìèíàåì èíôó... 
    21432195      MobObject->LoadX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2196      this->SetMobModified(); 
    21442197    } 
    21452198    else 
     
    21572210      //Çàïîìèíàåì èíôó... 
    21582211      MobObject->LoadY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2212      this->SetMobModified(); 
    21592213    } 
    21602214    else 
     
    21722226      //Çàïîìèíàåì èíôó... 
    21732227      MobObject->LoadZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2228      this->SetMobModified(); 
    21742229    } 
    21752230    else 
     
    21872242      //Çàïîìèíàåì èíôó... 
    21882243      MobObject->RotationW = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2244      this->SetMobModified(); 
    21892245      //Èíôà èçìåíåíà. Ïåðåêèíóòü íîâîå çíà÷åíèå êâàòåðíèîíà â îðèåíòàòîð... 
    21902246      FillOrientator(MobObject); 
     
    22042260      //Çàïîìèíàåì èíôó... 
    22052261      MobObject->RotationX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2262      this->SetMobModified(); 
    22062263      //Èíôà èçìåíåíà. Ïåðåêèíóòü íîâîå çíà÷åíèå êâàòåðíèîíà â îðèåíòàòîð... 
    22072264      FillOrientator(MobObject); 
     
    22212278      //Çàïîìèíàåì èíôó... 
    22222279      MobObject->RotationY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2280      this->SetMobModified(); 
    22232281      //Èíôà èçìåíåíà. Ïåðåêèíóòü íîâîå çíà÷åíèå êâàòåðíèîíà â îðèåíòàòîð... 
    22242282      FillOrientator(MobObject); 
     
    22382296      //Çàïîìèíàåì èíôó... 
    22392297      MobObject->RotationZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2298      this->SetMobModified(); 
    22402299      //Èíôà èçìåíåíà. Ïåðåêèíóòü íîâîå çíà÷åíèå êâàòåðíèîíà â îðèåíòàòîð... 
    22412300      FillOrientator(MobObject); 
     
    22552314      //Çàïîìèíàåì èíôó... 
    22562315      MobObject->IsQuestUnit = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2316      this->SetMobModified(); 
    22572317    } 
    22582318    else 
     
    22702330      //Çàïîìèíàåì èíôó... 
    22712331      MobObject->UncnByte1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2332      this->SetMobModified(); 
    22722333    } 
    22732334    else 
     
    22852346      //Çàïîìèíàåì èíôó... 
    22862347      MobObject->UncnDw2 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2348      this->SetMobModified(); 
    22872349    } 
    22882350    else 
     
    22972359    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    22982360    MobObject->QuestLightStr = this->ValuesEditor->Values[KeyName]; 
     2361    this->SetMobModified(); 
    22992362  } 
    23002363  else if (KeyName == "ComplectionStrength") 
     
    23062369      //Çàïîìèíàåì èíôó... 
    23072370      MobObject->ComplectionStrength = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2371      this->SetMobModified(); 
    23082372    } 
    23092373    else 
     
    23212385      //Çàïîìèíàåì èíôó... 
    23222386      MobObject->ComplectionDex = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2387      this->SetMobModified(); 
    23232388    } 
    23242389    else 
     
    23362401      //Çàïîìèíàåì èíôó... 
    23372402      MobObject->ComplectionTall = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2403      this->SetMobModified(); 
    23382404    } 
    23392405    else 
     
    23592425      //Çàïîìèíàåì èíôó... 
    23602426      MobObject->UseMobInfo = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2427      this->SetMobModified(); 
    23612428    } 
    23622429    else 
     
    23712438    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    23722439    MobObject->Name1 = this->ValuesEditor->Values[KeyName]; 
     2440    this->SetMobModified(); 
    23732441  } 
    23742442  else if (KeyName == "Armour") 
     
    23822450      //Çàïîìèíàåì èíôó... 
    23832451      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->Armour); 
     2452      this->SetMobModified(); 
    23842453    } 
    23852454    else 
     
    23992468      //Çàïîìèíàåì èíôó... 
    24002469      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->Weapon); 
     2470      this->SetMobModified(); 
    24012471    } 
    24022472    else 
     
    24162486      //Çàïîìèíàåì èíôó... 
    24172487      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->Spell); 
     2488      this->SetMobModified(); 
    24182489    } 
    24192490    else 
     
    24312502      //Çàïîìèíàåì èíôó... 
    24322503      MobObject->UncnDw1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2504      this->SetMobModified(); 
    24332505    } 
    24342506    else 
     
    24482520      //Çàïîìèíàåì èíôó... 
    24492521      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->Items); 
     2522      this->SetMobModified(); 
    24502523    } 
    24512524    else 
     
    24762549      //Çàïîìèíàåì èíôó... 
    24772550      MobObject->AsOpen = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2551      this->SetMobModified(); 
    24782552    } 
    24792553    else 
     
    24912565      //Çàïîìèíàåì èíôó... 
    24922566      MobObject->Key = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2567      this->SetMobModified(); 
    24932568    } 
    24942569    else 
     
    25062581      //Çàïîìèíàåì èíôó... 
    25072582      MobObject->Sleigth = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2583      this->SetMobModified(); 
    25082584    } 
    25092585    else 
     
    25212597      //Çàïîìèíàåì èíôó... 
    25222598      MobObject->UncnByte1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2599      this->SetMobModified(); 
    25232600    } 
    25242601    else 
     
    25362613      //Çàïîìèíàåì èíôó... 
    25372614      MobObject->UncnByte2 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2615      this->SetMobModified(); 
    25382616    } 
    25392617    else 
     
    25512629      //Çàïîìèíàåì èíôó... 
    25522630      MobObject->UncnByte3 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2631      this->SetMobModified(); 
    25532632    } 
    25542633    else 
     
    25662645      //Çàïîìèíàåì èíôó... 
    25672646      MobObject->UncnByte4 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2647      this->SetMobModified(); 
    25682648    } 
    25692649    else 
     
    25812661      //Çàïîìèíàåì èíôó... 
    25822662      MobObject->UncnByte5 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2663      this->SetMobModified(); 
    25832664    } 
    25842665    else 
     
    26092690      //Çàïîìèíàåì èíôó... 
    26102691      MobObject->UnknDw1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2692      this->SetMobModified(); 
    26112693    } 
    26122694    else 
     
    26212703    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    26222704    MobObject->MagicStr = this->ValuesEditor->Values[KeyName]; 
     2705    this->SetMobModified(); 
    26232706  } 
    26242707  else if (KeyName == "UnknDw2") 
     
    26302713      //Çàïîìèíàåì èíôó... 
    26312714      MobObject->UnknDw2 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2715      this->SetMobModified(); 
    26322716    } 
    26332717    else 
     
    26452729      //Çàïîìèíàåì èíôó... 
    26462730      MobObject->UnknByte1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2731      this->SetMobModified(); 
    26472732    } 
    26482733    else 
     
    26722757      //Çàïîìèíàåì èíôó... 
    26732758      MobObject->CoordX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2759      this->SetMobModified(); 
    26742760    } 
    26752761    else 
     
    26872773      //Çàïîìèíàåì èíôó... 
    26882774      MobObject->CoordY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2775      this->SetMobModified(); 
    26892776    } 
    26902777    else 
     
    27022789      //Çàïîìèíàåì èíôó... 
    27032790      MobObject->CoordZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2791      this->SetMobModified(); 
    27042792    } 
    27052793    else 
     
    27172805      //Çàïîìèíàåì èíôó... 
    27182806      MobObject->FlameSize = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2807      this->SetMobModified(); 
    27192808    } 
    27202809    else 
     
    27292818    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    27302819    MobObject->SoundStr = this->ValuesEditor->Values[KeyName]; 
     2820    this->SetMobModified(); 
    27312821  } 
    27322822  else 
     
    27492839      //Çàïîìèíàåì èíôó... 
    27502840      MobObject->ID = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2841      this->SetMobModified(); 
    27512842    } 
    27522843    else 
     
    27642855      //Çàïîìèíàåì èíôó... 
    27652856      MobObject->UnknByte1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     2857      this->SetMobModified(); 
    27662858    } 
    27672859    else 
     
    27792871      //Çàïîìèíàåì èíôó... 
    27802872      MobObject->CoordX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2873      this->SetMobModified(); 
    27812874    } 
    27822875    else 
     
    27942887      //Çàïîìèíàåì èíôó... 
    27952888      MobObject->CoordY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2889      this->SetMobModified(); 
    27962890    } 
    27972891    else 
     
    28092903      //Çàïîìèíàåì èíôó... 
    28102904      MobObject->CoordZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2905      this->SetMobModified(); 
    28112906    } 
    28122907    else 
     
    28242919      //Çàïîìèíàåì èíôó... 
    28252920      MobObject->ColorR = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2921      this->SetMobModified(); 
    28262922    } 
    28272923    else 
     
    28392935      //Çàïîìèíàåì èíôó... 
    28402936      MobObject->ColorG = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2937      this->SetMobModified(); 
    28412938    } 
    28422939    else 
     
    28542951      //Çàïîìèíàåì èíôó... 
    28552952      MobObject->ColorB = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2953      this->SetMobModified(); 
    28562954    } 
    28572955    else 
     
    28692967      //Çàïîìèíàåì èíôó... 
    28702968      MobObject->ParticleSize = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     2969      this->SetMobModified(); 
    28712970    } 
    28722971    else 
     
    28812980    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    28822981    MobObject->NameStr = this->ValuesEditor->Values[KeyName]; 
     2982    this->SetMobModified(); 
    28832983  } 
    28842984  else if (KeyName == "UnknStr1") 
     
    28872987    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    28882988    MobObject->UnknStr1 = this->ValuesEditor->Values[KeyName]; 
     2989    this->SetMobModified(); 
    28892990  }; 
    28902991}; 
     
    29043005      //Çàïîìèíàåì èíôó... 
    29053006      StrCommaList2StrArray(this->ValuesEditor->Values[KeyName],MobObject->SoundStr_s); 
     3007      this->SetMobModified(); 
    29063008    } 
    29073009    else 
     
    29193021      //Çàïîìèíàåì èíôó... 
    29203022      MobObject->ID = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3023      this->SetMobModified(); 
    29213024    } 
    29223025    else 
     
    29343037      //Çàïîìèíàåì èíôó... 
    29353038      MobObject->CoordX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3039      this->SetMobModified(); 
    29363040    } 
    29373041    else 
     
    29493053      //Çàïîìèíàåì èíôó... 
    29503054      MobObject->CoordY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3055      this->SetMobModified(); 
    29513056    } 
    29523057    else 
     
    29643069      //Çàïîìèíàåì èíôó... 
    29653070      MobObject->CoordZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3071      this->SetMobModified(); 
    29663072    } 
    29673073    else 
     
    29793085      //Çàïîìèíàåì èíôó... 
    29803086      MobObject->UnknDW1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3087      this->SetMobModified(); 
    29813088    } 
    29823089    else 
     
    29943101      //Çàïîìèíàåì èíôó... 
    29953102      MobObject->UnknDW2 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3103      this->SetMobModified(); 
    29963104    } 
    29973105    else 
     
    30063114    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    30073115    MobObject->NameStr = this->ValuesEditor->Values[KeyName]; 
     3116    this->SetMobModified(); 
    30083117  } 
    30093118  else if (KeyName == "UnknStr1") 
     
    30123121    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    30133122    MobObject->UnknStr1 = this->ValuesEditor->Values[KeyName]; 
     3123    this->SetMobModified(); 
    30143124  } 
    30153125  else if (KeyName == "UnknDW3") 
     
    30213131      //Çàïîìèíàåì èíôó... 
    30223132      MobObject->UnknDW3 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3133      this->SetMobModified(); 
    30233134    } 
    30243135    else 
     
    30363147      //Çàïîìèíàåì èíôó... 
    30373148      MobObject->UnknDW4 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3149      this->SetMobModified(); 
    30383150    } 
    30393151    else 
     
    30513163      //Çàïîìèíàåì èíôó... 
    30523164      MobObject->UnknByte1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3165      this->SetMobModified(); 
    30533166    } 
    30543167    else 
     
    30663179      //Çàïîìèíàåì èíôó... 
    30673180      MobObject->UnknByte2 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3181      this->SetMobModified(); 
    30683182    } 
    30693183    else 
     
    30873201      //Çàïîìèíàåì èíôó... 
    30883202      MobObject->ID = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3203      this->SetMobModified(); 
    30893204    } 
    30903205    else 
     
    31023217      //Çàïîìèíàåì èíôó... 
    31033218      MobObject->CoordX = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3219      this->SetMobModified(); 
    31043220    } 
    31053221    else 
     
    31173233      //Çàïîìèíàåì èíôó... 
    31183234      MobObject->CoordY = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3235      this->SetMobModified(); 
    31193236    } 
    31203237    else 
     
    31323249      //Çàïîìèíàåì èíôó... 
    31333250      MobObject->CoordZ = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3251      this->SetMobModified(); 
    31343252    } 
    31353253    else 
     
    31443262    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    31453263    MobObject->NameStr = this->ValuesEditor->Values[KeyName]; 
     3264    this->SetMobModified(); 
    31463265  } 
    31473266  else if (KeyName == "UnknStr1") 
     
    31503269    //Çàïîìèíàåì èíôó... ñàìûé ïðîñòîé òèï ïîëÿ %) 
    31513270    MobObject->UnknStr1 = this->ValuesEditor->Values[KeyName]; 
     3271    this->SetMobModified(); 
    31523272  } 
    31533273  else if (KeyName == "UnknDw1") 
     
    31593279      //Çàïîìèíàåì èíôó... 
    31603280      MobObject->UnknDw1 = StrToInt(this->ValuesEditor->Values[KeyName]); 
     3281      this->SetMobModified(); 
    31613282    } 
    31623283    else 
     
    31743295      //Çàïîìèíàåì èíôó... 
    31753296      MobObject->UnknFloat1 = StrToFloat(this->ValuesEditor->Values[KeyName]); 
     3297      this->SetMobModified(); 
    31763298    } 
    31773299    else 
     
    32763398//--------------------------------------------------------------------------- 
    32773399 
     3400void __fastcall TMainF::CloseMobMenuClick(TObject *Sender) 
     3401{ 
     3402  //Çàêðûâàåì ôàéë. 
     3403  CloseMobComm();         
     3404} 
     3405//--------------------------------------------------------------------------- 
     3406 
     3407void __fastcall TMainF::ScriptEdChange(TObject *Sender) 
     3408{ 
     3409  //Èíôà â ðåäàêòîðå áûëà èçìåíåíà - îòìåòèòü ÷òî ìîá ìîäèôèöèðîâàí. 
     3410  this->SetMobModified();         
     3411} 
     3412//--------------------------------------------------------------------------- 
     3413 
  • trunk/MainForm.dfm

    r10 r12  
    6464        Options = [eoAutoIndent, eoDragDropEditing, eoGroupUndo, eoScrollPastEof, eoScrollPastEol, eoShowScrollHint, eoSmartTabDelete, eoSmartTabs, eoTrimTrailingSpaces] 
    6565        SearchEngine = SynEditSearchEngine 
     66        OnChange = ScriptEdChange 
    6667        RemovedKeystrokes = < 
    6768          item 
     
    791792    Width = 839 
    792793    Height = 29 
     794    ButtonHeight = 21 
     795    ButtonWidth = 36 
    793796    Caption = 'ToolBar1' 
     797    ShowCaptions = True 
    794798    TabOrder = 2 
    795799  end 
     
    812816        Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100' mob '#1082#1072#1082'...          Ctrl+Shift+S' 
    813817        OnClick = SaveAsMobMenuClick 
     818      end 
     819      object N8: TMenuItem 
     820        Caption = '-' 
     821      end 
     822      object CloseMobMenu: TMenuItem 
     823        Caption = #1047#1072#1082#1088#1099#1090#1100' '#1084#1086#1073 
     824        OnClick = CloseMobMenuClick 
    814825      end 
    815826      object N1: TMenuItem 
  • trunk/MainForm.h

    r10 r12  
    179179        TMenuItem *ReadmeMenu; 
    180180        TSynEditSearch *SynEditSearchEngine; 
     181        TMenuItem *N8; 
     182        TMenuItem *CloseMobMenu; 
    181183        void __fastcall FormShow(TObject *Sender); 
    182184        void __fastcall ExitMenuClick(TObject *Sender); 
     
    248250        void __fastcall MC_AS_Params_PlayerNumberEdChange(TObject *Sender); 
    249251        void __fastcall ReadmeMenuClick(TObject *Sender); 
     252        void __fastcall CloseMobMenuClick(TObject *Sender); 
     253        void __fastcall ScriptEdChange(TObject *Sender); 
    250254private:        // User declarations 
    251255        bool FirstShowed; 
     
    277281        void Save_MC_Interf();    //Ñàâèò íàñòðîéêè èíòåðôåéñà ìàññîâûõ èçìåíåíèé â ini 
    278282        void Reset_MC_Interf();   //Ñòàâèò óìîë÷àëüíûå çíà÷åíèÿ èíòåðôåéñó ìàññîâûõ èçìåíåíèé. 
    279  
     283        void SetMobModified();    //Ñòàâèò îòìåòêó ÷òî ìîá ìîäèôèöèðîâàí (ñ ïîñëåäíåãî save\load) è îáíîâëÿåò èíòåðôåéñ. 
     284        void SetMobNotModified(); //Ñòàâèò îòìåòêó ÷òî ìîá íå ìîäèôèöèðîâàí (ñ ïîñëåäíåãî save\load) è îáíîâëÿåò èíòåðôåéñ. 
    280285 
    281286        //Ðåäàêòîð îáúåêòîâ... 
  • trunk/MobFormat.cpp

    r3 r12  
    2222#include "MobFormat.h" 
    2323#include <Dialogs.hpp> 
    24 #include "initer.h" 
    2524#include "MainForm.h" 
    2625 
  • trunk/MobFormat.h

    r3 r12  
    113113    bool LoadMob(String& FileName);  //Ãðóçèò ìîá â îáúåêò. Âûçûâàåò ReallyLoadMob 
    114114    bool SaveMob(String& FileName);  //Ñåéâèò ìîá èç îáúåêòà. 
     115    void UnloadMob(); //Òèïà ÷èñòèò êëàññ îò èíôû íà ñëó÷àé åñëè ìîá äî ýòîãî çàãðóæàëñÿ óæå. 
    115116    void StringToLog(String& message); 
    116117    bool ReallyLoadMob(String& FileName); //Ðåàëüíî çàãðóæàåò ìîá. Ìîæåò ðàáîòàòü èç íèòêè. 
     
    140141 
    141142  private: 
    142     void UnloadMob(); //Òèïà ÷èñòèò êëàññ îò èíôû íà ñëó÷àé åñëè ìîá äî ýòîãî çàãðóæàëñÿ óæå. 
    143143    void ClearObjectsBlockInfo();  //×èñòèò êëàññ îò èíôû îòíîñÿùåéñÿ ê áëîêó îáúåêòîâ... 
    144144    String DeCodeScript(byte *ScriptTextBytes,DWORD Size,DWORD Key); //Ôóíêöèÿ äîëæíà òèïà äåêîäèðîâàòü ñêðèïò. È âîçâðàùàòü åãî óæå â âèäå ñòðîêè. 
  • trunk/OrientatorFrame.cpp

    r3 r12  
    434434  if ( MainF->ObjectsTree->Selected != NULL) 
    435435  { 
    436     //Åñëè êàêîé-òî îáúåêò âîîáùå áûë âûáðàí... 
    437     if ( ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles1Node ) && 
    438          ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles2Node ) && 
    439          ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles3Node ) ) 
    440     { 
    441       //Êîðî÷å - åñëè ýòî íå ïàðòèêë - òî ó íåãî åñòü îðèåíòàöèÿ, à çíà÷èò èíôó íàäî 
    442       //ñîõðàíÿòü... ×òî ìû è äåëàåì... 
    443  
    444       //Â ðåäàêòîð... 
    445       /* 
    446       MainF->ValuesEditor->Values["RotationW"] = FloatToStr(this->ObjectQuat->QuatW); 
    447       MainF->ValuesEditor->Values["RotationX"] = FloatToStr(this->ObjectQuat->QuatX); 
    448       MainF->ValuesEditor->Values["RotationY"] = FloatToStr(this->ObjectQuat->QuatY); 
    449       MainF->ValuesEditor->Values["RotationZ"] = FloatToStr(this->ObjectQuat->QuatZ); 
    450       */ 
    451       //Â îáúåêò êëàññà... 
    452       PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationW = this->ObjectQuat->QuatW; 
    453       PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationX = this->ObjectQuat->QuatX; 
    454       PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationY = this->ObjectQuat->QuatY; 
    455       PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationZ = this->ObjectQuat->QuatZ; 
    456  
    457       OrientationChanged = true; 
    458  
     436    //Åñëè îáúåêò - íå ÷òî-òî êîðíåâîå... 
     437    if (MainF->ObjectsTree->Selected->Parent != NULL) { 
     438      //Åñëè êàêîé-òî îáúåêò âîîáùå áûë âûáðàí... 
     439      if ( ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles1Node ) && 
     440           ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles2Node ) && 
     441           ( MainF->ObjectsTree->Selected->Parent->Data != &MainF->ObjTree_Particles3Node ) ) 
     442      { 
     443        //Êîðî÷å - åñëè ýòî íå ïàðòèêë - òî ó íåãî åñòü îðèåíòàöèÿ, à çíà÷èò èíôó íàäî 
     444        //ñîõðàíÿòü... ×òî ìû è äåëàåì... 
     445 
     446        //Â îáúåêò êëàññà... 
     447        PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationW = this->ObjectQuat->QuatW; 
     448        PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationX = this->ObjectQuat->QuatX; 
     449        PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationY = this->ObjectQuat->QuatY; 
     450        PObjectObjBlock(MainF->ObjectsTree->Selected->Data)->RotationZ = this->ObjectQuat->QuatZ; 
     451        OrientationChanged = true;  //Â ðåäàêòîð èíôà ïîìåñòèòñÿ òàéìåðîì ïî ýòîìó èíäèêàòîðó. 
     452 
     453        //Îòìåòèòü ÷òî ìîá áûë ìîäèôèöèðîâàí. 
     454        MainF->SetMobModified(); 
     455 
     456      }; 
    459457    }; 
    460458  }; 
  • trunk/SettsForm.dfm

    r1 r12  
    3838    Width = 75 
    3939    Height = 25 
    40     Caption = #1040#1040#1040#1090#1084#1077#1085#1072 
     40    Caption = #1054#1090#1084#1077#1085#1072 
    4141    TabOrder = 1 
    4242    OnClick = CancelButClick 
  • trunk/initer.cpp

    r11 r12  
    100100String ProgPath, MobFileName; 
    101101TMob *MobInMem1, *TargetMob; 
    102 bool MobLoaded, SearchDialCanceled, MakeSLBlockInterf
     102bool MobLoaded, SearchDialCanceled, MakeSLBlockInterf, MobModified
    103103TIniFile *MainIni; 
    104104 
     
    110110  //Èíèöèàëèçîâàòü ïåðåìåííûå... 
    111111  MobLoaded = false; 
     112  MobModified = false; 
    112113  MobFileName = ""; 
    113114  MakeSLBlockInterf = true; 
     
    536537}; 
    537538 
    538 void OpenMobComm(const AnsiString FileName) 
     539bool OpenMobComm(const AnsiString FileName) 
    539540//Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè îòêðûòèè ìîáà. 
    540541{ 
    541542  //Ïåðåìåííûå 
    542   bool LoadResult = false, MakeSave = false, NodeFound = false; 
     543  bool LoadResult = false, MakeLoad = false, NodeFound = false; 
    543544  String FName; 
    544545  int i, CurrNodeID; 
     
    548549  { 
    549550    //Åñëè â ïàðàìåòðå áûë ïåðåäàí ôàéë... 
    550     MakeSave = true; 
     551    MakeLoad = true; 
    551552    FName = FileName; 
    552553  } 
     
    558559    if (MainF->OpenDialog1->Execute()) 
    559560    { 
    560       //Åñëè äèàëîã âûïîëíèëñÿ - ïðîâåðèòü, ñóùåñòâóåò ëè âûáðàííûé ôàéë
     561      //Åñëè äèàëîã âûïîëíèëñÿ - ôàéë ìîæíî îòêðûâàòü
    561562      FName = MainF->OpenDialog1->FileName; 
    562       MakeSave = true; 
    563     }; 
    564   }; 
    565  
    566   if (MakeSave == true) 
    567   { 
    568     //Åñëè ìîæíî ñàâèòü - òî íàäî ñàâèòü :). 
     563      MakeLoad = true; 
     564    }; 
     565  }; 
     566 
     567  if (MakeLoad == true) 
     568  { 
     569    //Åñëè ìîæíî îòêðûâàòü - òî íàäî îòêðûâàòü :). 
    569570 
    570571    //Ïðîâåðèòü, åñòü ëè òàêîé ôàéë... 
     
    588589      SaveProgSetts(); 
    589590 
    590       MobLoaded = false;  //Âñå, òèïà ñòàðûé ìîá åñëè îí è áûë çàãðóæåí 
    591                            // - óæå óáèò :). 
    592  
    593       MobInMem1->UsingThread = UseTMobThreads;  //Îòêðûâàòü ëè â îòäåëüíîé íèòêå. 
    594       MobInMem1->LogEd = MainF->LogEd; 
    595  
    596       //È ãðóçèòü ñ áëîêèðîâêîé èíòåðôåéñà... 
    597       if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); 
    598       LoadResult = MobInMem1->LoadMob(FName); 
    599       if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); 
    600  
    601       if (MobInMem1->UsingThread == false) 
    602       { 
    603         //Åñëè ãðóçèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. 
    604         if (MainF->MainF_PK->ActivePage->Name == "LogSh") 
    605         { 
    606           MainF->LogEd->SetFocus(); 
    607         }; 
    608         MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); 
    609       }; 
    610  
    611       //Òèïà çàïîìíèòü èìÿ ôàéëà, åñëè çàãðóçêà áûëà óñïåøíîé... 
    612       if (LoadResult == true) 
    613       { 
    614         MobFileName = FName; 
    615         MobLoaded = true;  //È åññíî ïîìåòèòü ÷òî ìîá çàãðóæåí. 
    616  
    617         //Çàãðóçèòü èíôó ìîáà â èíòåðôåéñ ïðîãè... 
    618  
    619         //Ñêðèïò. 
    620         MainF->ScriptEd->Lines->Clear(); 
    621         MainF->ScriptEd->Text = MobInMem1->ScriptText; 
    622  
    623         //Îáúåêòû â ðåäàêòîð îáúåêòîâ... 
    624         MainF->MobObjectsChanged(); 
    625       } 
    626       else 
    627       { 
    628         //Åñëè çàãðóçèòüñÿ íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. 
    629         MainF->MainF_PK->ActivePage = MainF->LogSh; 
    630       }; 
    631  
    632     } 
     591      //Çàêðûòü ñòàðûé ìîá. 
     592      if (CloseMobComm() == true) 
     593      { 
     594        MobInMem1->UsingThread = UseTMobThreads;  //Îòêðûâàòü ëè â îòäåëüíîé íèòêå. 
     595        MobInMem1->LogEd = MainF->LogEd; 
     596 
     597        //È ãðóçèòü ñ áëîêèðîâêîé èíòåðôåéñà... 
     598        if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); 
     599        LoadResult = MobInMem1->LoadMob(FName); 
     600        if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); 
     601 
     602        if (MobInMem1->UsingThread == false) 
     603        { 
     604          //Åñëè ãðóçèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. 
     605          if (MainF->MainF_PK->ActivePage->Name == "LogSh") 
     606          { 
     607            MainF->LogEd->SetFocus(); 
     608          }; 
     609          MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); 
     610        }; 
     611 
     612        //Òèïà çàïîìíèòü èìÿ ôàéëà, åñëè çàãðóçêà áûëà óñïåøíîé... 
     613        if (LoadResult == true) 
     614        { 
     615          MobFileName = FName; 
     616          MobLoaded = true;  //È åññíî ïîìåòèòü ÷òî ìîá çàãðóæåí. 
     617          MobModified = false;   //Îòìåòèòü ÷òî ïîêà â ìîá èçìåíåíèé íå âíîñèëîñü. 
     618 
     619          //Çàãðóçèòü èíôó ìîáà â èíòåðôåéñ ïðîãè... 
     620 
     621          //Ñêðèïò. 
     622          MainF->ScriptEd->Lines->Clear(); 
     623          MainF->ScriptEd->Text = MobInMem1->ScriptText; 
     624 
     625          //Îáúåêòû â ðåäàêòîð îáúåêòîâ... 
     626          MainF->MobObjectsChanged(); 
     627        }//if (LoadResult == true) 
     628        else 
     629        { 
     630          //Åñëè çàãðóçèòüñÿ íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. 
     631          MainF->MainF_PK->ActivePage = MainF->LogSh; 
     632        }; 
     633      };//if (CloseMobComm() == true) 
     634    }//if ( FileExists(FName) == true ) 
    633635    else 
    634636    { 
     
    645647 
    646648  }; 
     649 
     650  //Âåðíóòü ðåçóëüòàò 
     651  return LoadResult; 
    647652}; 
    648653 
    649 void SaveMobComm() 
     654bool SaveMobComm() 
    650655//Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè ñåéâå ìîáà. 
    651656{ 
    652   SaveInterfInfo();   //Ñîõðàíèòü èíôó èç èíòåðôåéñà... 
     657  //Ïåðåìåííûå 
     658  bool Result = false; 
     659 
     660  //Äëÿ íà÷àëà ïðîâåðèì - åñòü ëè óæå ôàéë ìîáà ñ òàêèì èìåíåì... 
     661  if (FileExists(MobFileName) == true) 
     662  { 
     663    //Óæå åñòü ôàéë ñ òàêèì èìåíåì. 
     664    SaveInterfInfo();   //Ñîõðàíèòü èíôó èç èíòåðôåéñà... 
    653665   
    654   MobInMem1->UsingThread = UseTMobThreads;  //Ñåéâèòü ëè â îòäåëüíîé íèòêå. 
    655   MobInMem1->SaveAttempts = SaveAttempts;  //Êîëè÷åñòâî ïîïûòîê ñàâà ïîñëå ñáîÿ... 
    656   MobInMem1->LogEd = MainF->LogEd; 
    657   //È çàñàâèòü ñ áëîêèðîâêîé èíòåðôåéñà... 
    658   if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); 
    659   //Åñëè íàäî äåëàòü áåêàïû -