Browse Source

объекты: тело + изо

tags/4.1
parent
commit
1b49e1e0b3
2 changed files with 51 additions and 47 deletions
  1. +50
    -46
      3.5/игра/180.Объекты.js
  2. +1
    -1
      3.5/игра/700.Игра.js

+ 50
- 46
3.5/игра/180.Объекты.js View File

@@ -1,4 +1,4 @@
function Объекты(события, изображения, тела, слежение)
function Объекты(события, состояние)
{
this.создать = function()
{
@@ -9,67 +9,71 @@ function Объекты(события, изображения, тела, сле
события.подписать(this);
};

this.обработатьКлюч = function(ключ, путь, значение)
this.обновитьИзображение = function(имя)
{
if (путь[0] != "объекты")
let имяИзо = `объекты-${имя}`;
let за = this.задано[имя];
let пр = this.умолчание.пр;
var описание = {
ширина: за["пр.2"] ? за["пр.2"] : пр[2],
высота: за["пр.3"] ? за["пр.3"] : пр[3],
вид: {},
};
for (var ключ in за)
{
return;
if (ключ.startsWith("вид."))
{
var к = ключ.substring(4);
var значение = за[ключ];
описание.вид[к] = значение;
}
}

var имя = путь[1];
var свойство = путь.slice(2).join(".");
if (!this.задано[имя])
{
this.задано[имя] = {};
}
this.задано[имя][свойство] = значение;
this.обновитьОбъект(имя);
состояние.разобрать({
изображения: {
[имяИзо]: описание,
},
});
};

this.обновитьОбъект = function(имя)
this.обработатьКлюч = function(ключ, путь, значение)
{
/*
var тело = тела.тела[за.тело];
if (!тело)
if (путь[0] != "объекты")
{
return;
}

var элемент = изображения.элементы[за.изображение];
var ум = this.умолчание;

// Параметры.
var скорость = за.скорость ? за.скорость : ум.скорость;
var смещениеX = за["смещение.0"] ? за["смещение.0"] : ум.смещение[0];
var смещениеY = за["смещение.1"] ? за["смещение.1"] : ум.смещение[1];
var предел = за.предел ? за.предел : ум.предел;

// Текущая позиция.
var x0 = 0;
if (элемент.dataset.слежениеX)
let имя = путь[1];
let свойство = путь.slice(2).join(".");
if (!this.задано[имя])
{
x0 = элемент.dataset.слежениеX;
this.задано[имя] = {};
}
var y0 = 0;
if (элемент.dataset.слежениеY)
this.задано[имя][свойство] = значение;

let пр = свойство.startsWith("пр.");
if (пр)
{
y0 = элемент.dataset.слежениеY;
this.пересоздатьТело(имя);
}
this.обновитьИзображение(имя);
};

// Целевая позиция.
var x1 = тело.position.x + смещениеX;
var y1 = тело.position.y + смещениеY;
// Radians -> Degrees.
var угол = тело.angle * 180 / Math.PI;

// Устанавливаемая плавно позиция.
var x = this.lerp(x0, x1, скорость, предел);
var y = this.lerp(y0, y1, скорость, предел);

элемент.dataset.слежениеX = x;
элемент.dataset.слежениеY = y;
изображения.обновитьРасположение(за.изображение, x, y, угол);
*/
this.пересоздатьТело = function(имя)
{
let имяТела = `объекты-${имя}`;
let за = this.задано[имя];
let пр = this.умолчание.пр;
состояние.разобрать({
тела: {
[имяТела]: {
x: за["пр.0"] ? за["пр.0"] : пр[0],
y: за["пр.1"] ? за["пр.1"] : пр[1],
ширина: за["пр.2"] ? за["пр.2"] : пр[2],
высота: за["пр.3"] ? за["пр.3"] : пр[3],
},
},
});
};

// Конструктор.


+ 1
- 1
3.5/игра/700.Игра.js View File

@@ -10,7 +10,7 @@ function Игра()
мир.изображения = new Изображения(корень),
мир.тела = new Тела(мир.события, мир.физика.движок.world);
мир.слежение = new Слежение(мир.события, мир.изображения, мир.тела);
мир.объекты = new Объекты(мир.события, мир.изображения, мир.тела, мир.слежение);
мир.объекты = new Объекты(мир.события, мир.состояние);
this.ключники = [
new Заголовок(),
мир.изображения,


Loading…
Cancel
Save