Witam. Chciałem utworzyć aplikację, coś na zasadzie prostej gry sieciowej, którą można by było w przyszłości modyfikować za pomocą Api. Aktualnie mam 2 projekty:
Game:
- Main.cs
- Start();
- Stop();
- Config.cs
- Load();
- Save();
- Network.cs
- SendUdpTcpPacket();
- RecieveUdpTcpPacket();
GameApi:
- Player.cs
- Move();
- World.cs
- WhenPlayerClick();
- Game.cs
- int HighScore;
Nazwy klas i funkcji są na razie przykładowe, dla zobrazowania tematu, na razie jeszcze nic nie zaimplementowałem. Zastanawiam się jednak nad tym, jak dobrać modyfikatory typu np. abstract, interface, virtual, etc. żeby móc działać pomiędzy tymi klasami. Bo o ile mogę dodać referencję np. z Game do GameApi, tak w drugą stronę już nie mogę, bo by się zapętliło. A chciałbym używać funkcji pomiędzy projektami, np:
// Project: Game
RecieveUdpTcpPacket()
{
if(Message == "Move")
{
GameApi.Player.Move();
}
}
// Project: GameApi
WhenPlayerClick()
{
if(Object == "Button")
{
Game.SendUdpTcpPacket("Click");
}
}
Wydaje mi się że najlepiej by było zrobić tak, aby w GameApi była tylko definicja np. Player.Move(), tak żeby można byłą ją wykorzystać programując jakąś modyfikację do gry, a w Game jej implementacja, żeby, która np. wysyła odpowiedni pakiet do servera czy clienta. Jak to można zrobić? Albo może jest jakiś inny sposób podziału takiej aplikacji?