
Сообщение от
Small_Bee
2. Сделать по аналогии с Battle. Т.е. делаешь AMission -> LocMission, AMission -> StatMission, после еще делаешь AMission - > MyBattle. В MyBattle добавляешь приватным мембером List<AMission> myMissions. Там же переопределяешь каждый метод, и в методе, к примеру OnBattleStarted() пишешь foreach(AMission mis in myMissions) mis.OnBattleStarted(); Аналогично для остальных. Далее все легко и просто. На этапе инициализации надо просто сделать
AMission mission = new LocMission();
myMissions.Add(mission);
mission = new StatMission();
myMissions.Add(mission);
От кого наследоваться собственно в скрипте миссии - задача на сообразительность )
Этот вариант вроде подходит. Основная задача использовать различные набор dll по необходимости в миссиях. Имеем две dll с нэймспайсами - locaddin и stataddin.
Код:
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;
using maddox.GP;
using part;
namespace locaddin
{
public class localization : AMission
{
public static int locText(int number1, int number2)
{
int result = number1 + number2;
return result;
}
}
}
Код:
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;
using maddox.GP;
using part;
namespace stataddin
{
public class statistic : AMission
{
public static int statText(int number1, int number2)
{
int result = number1 + number2;
return result;
}
}
}
И сама миссия, которая использует обе dll в исходном состоянии:
Код:
//$reference "P11_folder\P11_localization.dll"
//$reference "P11_folder\P11_statistic.dll"
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;
using maddox.GP;
using locaddin;
using stataddin;
public class Mission : AMission
{
public override void OnBattleStarted()
{
base.OnBattleStarted();
MissionNumberListener = -1;
//LOAD MAIN MISSION MAP OBJEKTS
//GamePlay.gpPostMissionLoad("missions\\SMP\\Friday on my mind\\submissions\\Map AAA\\Map AAA.mis");
}
Далее добавляем List<AMission> myMissions. В OnBattleStarted() или Inited? Или совсем в другое место?
Код:
//$reference "P11_folder\P11_localization.dll"
//$reference "P11_folder\P11_statistic.dll"
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using maddox.game;
using maddox.game.world;
using maddox.GP;
using locaddin;
using stataddin;
public class Mission : AMission
{
public override void OnBattleStarted()
{
base.OnBattleStarted();
MissionNumberListener = -1;
List<AMission> myMissions; //новый список переменных типа AMission
AMission mission = new LocMission(); // заполняю список созданными миссиями, только не пойму чем если честно. Что это за миссии и как они связаны с dll?
myMissions.Add(mission);
mission = new StatMission();
myMissions.Add(mission);
//Как-то так? :
StatMission : statistic;
LocMission : localization;
// "Там же переопределяешь каждый метод" - вот это не понял. Где там же и какие методы? У меня в неразумной голове это так пока выглядит:
foreach(AMission mis in myMissions)
{
mis.OnBattleStarted(); //т.е. именно здесь переопределяю методы
}
//LOAD MAIN MISSION MAP OBJEKTS
//GamePlay.gpPostMissionLoad("missions\\SMP\\Friday on my mind\\submissions\\Map AAA\\Map AAA.mis");
}
Вроде истина где-то рядом, но пока мозаика не собирается.

Сообщение от
Small_Bee
3. Событийная модель. Долго объяснять, если интересно, покопай мою dll из коммандера.
А что значит покопай? Просто посмотреть методы или декомпилировать(что я не умею)? Или можно просмотреть исходник dll?