Pokazywanie postów oznaczonych etykietą Delphi. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Delphi. Pokaż wszystkie posty

1 sierpnia 2009

Koniec CME?

Ponieważ dowiedziałem się o potędze języka C# i środowiska SharpDevelop, postanowiłem zrezygnować z Delphi. W związku z tym aktualna wersja 1.2.1.2 edytora map jest wersją ostatnią.

Była napisana chaotycznie i mało obiektowo, a najstarsze fragmenty kody pochodzą z czasów, gdy nie umiałem jeszcze programować obiektowo.

Poza tym SharpDevelop jest Open Source :)

19 lipca 2009

Colobot Maps Editor wersja 1.2.1.2

Mam zaszczyt poinformować, że edytor map do Colobota doczekał się wersji 1.2.1.2!

Pobierz CME v.1.2.1.2



Najważniejsze zmiany:

  • Zrezygnowano z "widocznej strefy" i zoomu regulowanego suwakiem, na rzecz wygodnego przesuwania i powiększania z użyciem scrolla

  • Bez problemów importuje pliki misji z wbudowanych poziomów

  • Dzięki Schockerowi mamy prawie wszystkie obiekty, mianowicie dodał on wraki, ruiny i rośliny. Brawo!



Jak posługiwać się nawigowaniem po mapie:

  • Aby zmieniać widoczną strefę naciskamy środkowy przycisk i przeciągamy

  • Aby zmienić zoom kręcimy kółkiem

PWM CPU Limiter - coming soon...

Podstawowe funkcje "PWM CPU Limitera" zostały zrobione. Pozostało tylko popracować nad interfejsem.

Do czego to służy



PWM CPU Limiter obniża wykorzystanie procesora przez konkretny program korzystając z PWM - modulacji szerokości impulsu. Osoby siedzące w elektronice wiedzą o co chodzi :)

Program bardzo szybko wstrzymuje i wznawia wybrany proces, przy czym zarówno między wstrzymaniem a wznowieniem, a wznowieniem i wstrzymaniem jest jakaś przerwa. Dobierając odpowiednio te przerwy można sterować "wypełnieniem" tego procesu w ogólnym czasie procesora.

Dla zainteresowanych, fragment kodu źródłowego:


v := Form1.LimitBar.Position;
r := Form1.LimitBar.Max-v;
repeat
for i := 0 to threads.Count-1 do SuspendThread(cardinal(threads[i]));
// linia wyżej odpowiada za wstrzymanie procesu
timeBeginPeriod(1);
Sleep(r);
timeEndPeriod(1);

for i := 0 to threads.Count-1 do ResumeThread(cardinal(threads[i]));
// linia wyżej odpowiada za wznowienie procesu
timeBeginPeriod(1);
Sleep(v);
timeEndPeriod(1);

{ ... } // nieistotne
until timetoend;