XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
vladfaust

offline
Опыт: 12,714
Активность:
Еще раз про таймеры в структурах
struct st
{
	timer t
	unit main

	void update()
	{
		KillUnit(.main)
	}

	static st create(unit u)
	{
		st a = st.allocate()
		a.main = u
		a.t = CreateTimer()
		TimerStart(a.t, 1., true, function a.update)
		return a
	}
}
Как правильно организовать все это дело, чтобы парсер не ругался?
Старый 02.10.2012, 14:54
ScorpioT1000
Работаем
online
Опыт: отключен
Ещё тыщу раз про статьи и поиск xgm.ru/p/wc3/w3_special_programming#h4.0.2
Старый 02.10.2012, 15:13
Doc

offline
Опыт: 63,163
Активность:
Это неправильно и делается не так.
#define private <implement List> = {
    static thistype list[]
    static int listCount = 0
    
    readonly bool onDestroy = false
    
    void setOnDestroy(bool b){
        onDestroy = b
    }
    
    bool isOnDestroy(){
        return onDestroy
    }
    
    void listAdd(){
        thistype.list[thistype.listCount] = this
        thistype.listCount++
    }
    
    void listRemove(int number){
        thistype.listCount--
        thistype.list[number] = thistype.list[thistype.listCount]
    }
    
    static void updateAll(){
        int i = 0
        whilenot(i == thistype.listCount){
            if (thistype.list[i].onDestroy){
                thistype.list[i].destroy()
                thistype.list[i].listRemove(i)
                i--
            } else {
                thistype.list[i].update()
            }
            i++
        }
    }
}
Старый 02.10.2012, 18:09
vladfaust

offline
Опыт: 12,714
Активность:
слоооожно(
Старый 02.10.2012, 20:01
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Сложно? Юзай хт не парь мозг, ну или это + это
Старый 02.10.2012, 20:04
adic3x

offline
Опыт: 108,439
Активность:
А кстати, Док, зачем тут дефайн? Можно же использовать module? Разницы не будет, кроме использования встроенного средства языка место макроса.
Старый 02.10.2012, 21:07
Doc

offline
Опыт: 63,163
Активность:
ADOLF, сжасс иногда с ними все таки баганый.
Старый 02.10.2012, 21:10
vladfaust

offline
Опыт: 12,714
Активность:
ADOLF, Doc, вы такие умные, намутите использование таймеров в структурах как в первом посте.
Старый 02.10.2012, 21:58
spellwerk

offline
Опыт: 4,869
Активность:
Структуру к таймеру привяжи
struct st
{
	timer t
	unit main

	static void update()
	{
		st a = ... // загрузка структуры из таймера
		KillUnit(a.main)
	}

	static st create(unit u)
	{
		st a = st.allocate()
		a.main = u
		a.t = CreateTimer()
		TimerStart(a.t, 1., true, function st.update)
		return a
	}
}
Старый 02.10.2012, 22:08
vladfaust

offline
Опыт: 12,714
Активность:
spellwerk,
загрузка структуры из таймера
Как?
Старый 02.10.2012, 22:32
Doc

offline
Опыт: 63,163
Активность:
struct st
{
	implement List

	unit main

	void update()
	{
		KillUnit(.main)
		.setOnDestroy(true)
	}

	static st create(unit u)
	{
		st a = st.allocate()
		a.main = u
		a.listAdd()
		return a
	}
}

callback onInit(){
	TimerStart(CreateTimer(), 1., true, function st.updateAll)
}
Старый 02.10.2012, 22:42
ScorpioT1000
Работаем
online
Опыт: отключен
Наркоманы?
ScorpioT1000 добавил:
Я кстати не понимаю, какого хрена абстрактный класс они называют модулем =\

Отредактировано ScorpioT1000, 03.10.2012 в 12:20.
Старый 03.10.2012, 12:22
Doc

offline
Опыт: 63,163
Активность:
ScorpioT1000, ага и на каждый снаряд по таймеру, это всего лишь варкрафт, а мы такие щедрые.
Старый 03.10.2012, 15:29
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000, бесполезный баг, ибо несовместим с ресайклом.
Старый 03.10.2012, 15:36
ScorpioT1000
Работаем
online
Опыт: отключен
Ресайкл довольно экзотическая фича.
Doc, вы же делаете то же самое выше. Не твой код конкретно, но твой код слишком сложен для автора.
Старый 03.10.2012, 15:52
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:57.