![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Знаю, что где-то подобная тема была, но что-то не могу найти. Собственно вопрос: как заставить FD (или компилятор через FD) компилировать даже те классы, которые нигде не импортированы и никак не упоминаются. Нужно, чтобы getDefinitionByName() работал без упоминания классов в проекте.
Уже весь нет перерыл, и на форуме FD тему создал. Пока безрезультатно |
|
|||||
|
Нет, они просто текстовые
Я постоянно забываю упомянуть какой-нибудь новый класс в проекте, и получаю рантайм ошибку при попытке создать объект на его основе. У меня в игре в описании локаций прописаны текстовые пакеты и классы объектов, которые должны использоваться в той или иной локации. Это конечно не принципиально, но хотелось бы автоматизировать процесс |
|
|||||
|
Цитата:
Эти классы не используются нигде сразу, а должны быть доступны исплючительно по требованию Цитата:
|
|
|||||
|
Регистрация: Dec 2014
Сообщений: 312
|
Можно в project properties->build->pre-build с помощью .bat файла например генерировать .as файл с упоминанием всех классов.
|
|
|||||
|
Использовать что-нибудь типа фабрики и энумератора типа объектов? Не тащить классы в данные, а вместо этого хранить тип объекта по которому генерить объект нужного класса. Так классы не потеряешь и данные чистые. При этом инфа о конкретных классах будет только внутри фабрики.
Хотя это оффтоп по теме
__________________
Будь проще. |
|
|||||
|
Собственно, у меня так и есть. Но в том то и проблема, что туда надо указывать вновь созданные классы и удалять убранные вручную. Я забываю это делать, и это уже напрягает)
Я хочу, чтобы я создавал новый класс в определенной директории, и ничего больше не делая собирал проект, а он уже был туда вкомпилирован. Я уже почти написал батник, как посоветовал callme, но что-то не могу разобраться как мне получить именно имена файлов в директории, а не полные пути к ним. Видимо придется забить на батч, и написать это на си шарпе) Добавлено через 1 час 10 минут Все, вопрос решен. Написал батник гененирующий что-то типа энумератора. callme, спасибо за идею ![]() Собственно, кому интересно, сам батник такой set DIR=%~dp0
set OUTPUT_FILE_NAME=com\untitledproject\game\levels\ClassDefinitions.as
set OBSTACLES_DIR=%DIR%com\untitledproject\game\view\obstacles
set ENEMIES_DIR=%DIR%com\untitledproject\game\view\characters\enemies
set BOSSESS_DIR=%DIR%com\untitledproject\game\view\characters\enemies\bosses
set NPC_DIR=%DIR%com\untitledproject\game\view\characters\npc
set EXTENSION=.as
set OUTPUT_FILE=%DIR%\%OUTPUT_FILE_NAME%
set PACKAGE=package com.untitledproject.game.levels {
set CLASS= public class ClassDefinitions {
set CONSTRUCTOR= public function ClassDefinitions() {
@echo off
@echo %PACKAGE%> %OUTPUT_FILE%
@echo import com.untitledproject.game.view.obstacles.*; >> %OUTPUT_FILE%
@echo import com.untitledproject.game.view.characters.enemies.*; >> %OUTPUT_FILE%
@echo import com.untitledproject.game.view.characters.enemies.bosses.*; >> %OUTPUT_FILE%
@echo import com.untitledproject.game.view.characters.npc.*; >> %OUTPUT_FILE%
@echo. >> %OUTPUT_FILE%
@echo %CLASS%>> %OUTPUT_FILE%
@echo %CONSTRUCTOR%>> %OUTPUT_FILE%
for %%i in ( %OBSTACLES_DIR%\*%EXTENSION%) do (
echo %%~ni >> %OUTPUT_FILE%;
)
for %%i in ( %ENEMIES_DIR%\*%EXTENSION%) do (
echo %%~ni >> %OUTPUT_FILE%;
)
for %%i in ( %BOSSESS_DIR%\*%EXTENSION%) do (
echo %%~ni >> %OUTPUT_FILE%;
)
for %%i in ( %NPC_DIR%\*%EXTENSION%) do (
echo %%~ni >> %OUTPUT_FILE%;
)
@echo }>> %OUTPUT_FILE%
@echo }>> %OUTPUT_FILE%
@echo }>> %OUTPUT_FILE%
exit;
Батник называется FileImporter.bat и лежит в директории src проекта. А в project - build - pre-build добавил следующий код Все работает как по маслу) Последний раз редактировалось caseyryan; 30.11.2015 в 21:18. |
|
|||||
|
Цитата:
Код тут достаточно примитивный, уверен, что его можно написать гораздо лучше. Но мою задачу он выполняет, и мне этого достаточно |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|