Скопировать/перене?ти Entity?
Please login or register.

Login with username, password and session length
Advanced search  

News:

For WME related articles and tutorials visit WME Resource Center.

Author Topic: Скопировать/перене?ти Entity?  (Read 2213 times)

0 Members and 1 Guest are viewing this topic.

GVG

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 11
    • View Profile
Скопировать/перене?ти Entity?
« on: September 05, 2010, 11:22:30 AM »

Logged

2.0

  • Regular poster
  • ***
  • Karma: 4
  • Offline Offline
  • Posts: 217
    • View Profile
Re: Скопировать/перенести Entity?
« Reply #1 on: September 11, 2010, 11:31:06 PM »

Решил переделать довольно архаичный интерфейс работы с инвентарем. Переделываю как в Kyrandia (кто играл с этим циклом игрушек - в курсе). Сделал:
1. левый клик "обычной" мышью на вещь на сцене, сохраняю параметры соответствующего entity, делаю курсор мыши картинкой из соответствующего item, со сцены entity удаляю.
2. следующий левый клик указывает, куда положить (пока только это) данную вещь.
- проверяю место, walkable ли оно (пока только это)
- создаю entity, заполняю его сохраненными параметрами
- делаю активность. готово

НО! Нет никакого способа (не нашел) взять у исходного entity прикрепленные к нему скрипты!!!

Вопросы:
1. может есть вышеуказанная возможность?
2. если нет - может можно как-то сделать копию исходного entity и потом положить её на нужное место?


Напрямую такого сделать, насколько я понял, нельзя.
Но можно попробовать с помощью доп. телодвижений.
Если скрипты аттачатся динамически, то, например, так:

Code: [Select]
var AttachedScripts = new array();

Entity.AttachScript("Script1FileName"); // Entity - это исходный объект
AttachedScripts[0] = "Script1FileName";
Entity.AttachScript("Script2FileName");
AttachedScripts[1] = "Script2FileName";

Entity.AttachedScripts = AttachedScripts; // Теперь эта новая переменная (часть класса Энтити) будет хранить список присоединённых скриптов.

А потом в другом месте ты прочтёшь этот список следующим образом:

Code: [Select]
var AttachedScripts = Entity.AttachedScripts;

for (var i=0; i< AttachedScripts.Length; i=i+1)
{
   Entity1.AttachScript(AttachedScripts[i]); // Entity1 - это новый объект
}
« Last Edit: September 11, 2010, 11:34:01 PM by 2.0 »
Logged

GVG

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 11
    • View Profile
Re: Скопировать/перене?ти Entity?
« Reply #2 on: September 13, 2010, 07:50:01 AM »

Logged

2.0

  • Regular poster
  • ***
  • Karma: 4
  • Offline Offline
  • Posts: 217
    • View Profile
Re: Скопировать/перене?ти Entity?
« Reply #3 on: September 13, 2010, 04:07:38 PM »

Code: [Select]
method SetSpriteObject (var oSprite) //oSprite - это тот объект в памяти, который надо при?воить тек?щем? энтити
{
   this.SetSprite(sObject.Filename); // по идее, в?ё. Более того, вме?то метода можно и?пользовать про?то эт? ?трок?.
   //Однако е?ли объект в памяти имеет параметры, отличные от тех, что хранят?я в файле, т.е. они изменили?ь (что очень вряд ли!), то н?жно б?дет про?то
   //перебрать в?е параметры, а также в?е фреймы и в?е ?абфреймы и перепри?воить их значения. Это не очень ?ложно, на не?колько мин?т не?пе?ной работы
   var tSprite = this.GetSpriteObject();
   tSprite.Name = oSprite.Name; // и т.д. по ?пи?к?

   for (var i=0; i<sObject.NumFrames; i=i+1)
   {
       var oFrame = oSprite.GetFrame[i];
       for (var j=0; j<oFrame.NumSubframes; j=j+1)
       {
       .....
       }
   }
}
« Last Edit: September 13, 2010, 04:26:51 PM by 2.0 »
Logged

GVG

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 11
    • View Profile
Logged
 

Page created in 0.657 seconds with 22 queries.