mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-05-09 22:41:39 +02:00
Test implementation for sending objects across the network.
This commit is contained in:
parent
ae55dce96e
commit
30332f7e7d
@ -225,7 +225,6 @@ Dictionary AuraData::to_dict() {
|
||||
void AuraData::from_dict(const Dictionary &dict) {
|
||||
call("_from_dict", dict);
|
||||
}
|
||||
|
||||
Dictionary AuraData::_to_dict() {
|
||||
Dictionary dict;
|
||||
|
||||
@ -281,6 +280,27 @@ void AuraData::_from_dict(const Dictionary &dict) {
|
||||
_unhandled_ticks = dict.get("unhandled_ticks", 0);
|
||||
}
|
||||
|
||||
Array AuraData::to_send_array() {
|
||||
return call("_to_send_array");
|
||||
}
|
||||
void AuraData::from_send_array(const Array &arr) {
|
||||
call("_from_send_array", arr);
|
||||
}
|
||||
Array AuraData::_to_send_array() {
|
||||
Array arr;
|
||||
|
||||
arr.append(_aura_id);
|
||||
arr.append(_remaining_time);
|
||||
|
||||
return arr;
|
||||
}
|
||||
void AuraData::_from_send_array(const Array &arr) {
|
||||
ERR_FAIL_COND(arr.size() < 2);
|
||||
|
||||
_aura_id = arr.get(0);
|
||||
_remaining_time = arr.get(1);
|
||||
}
|
||||
|
||||
AuraData::AuraData() {
|
||||
_owner = NULL;
|
||||
_aura_id = 0;
|
||||
@ -375,7 +395,16 @@ void AuraData::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("from_dict", "dict"), &AuraData::from_dict);
|
||||
ClassDB::bind_method(D_METHOD("to_dict"), &AuraData::to_dict);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_from_dict", "dict"), &AuraData::_from_dict);
|
||||
ClassDB::bind_method(D_METHOD("_to_dict"), &AuraData::_to_dict);
|
||||
|
||||
//Networking
|
||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::ARRAY, "arr"), "_to_send_array"));
|
||||
BIND_VMETHOD(MethodInfo("_from_send_array", PropertyInfo(Variant::ARRAY, "arr")));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("to_send_array"), &AuraData::to_send_array);
|
||||
ClassDB::bind_method(D_METHOD("from_send_array", "arr"), &AuraData::from_send_array);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_to_send_array"), &AuraData::_to_send_array);
|
||||
ClassDB::bind_method(D_METHOD("_from_send_array", "arr"), &AuraData::_from_send_array);
|
||||
}
|
||||
|
@ -1,8 +1,11 @@
|
||||
#ifndef AURA_DATA_H
|
||||
#define AURA_DATA_H
|
||||
|
||||
#include "../../spell_enums.h"
|
||||
#include "core/reference.h"
|
||||
#include "core/array.h"
|
||||
#include "core/dictionary.h"
|
||||
|
||||
#include "../../spell_enums.h"
|
||||
|
||||
class Aura;
|
||||
class Entity;
|
||||
@ -69,10 +72,14 @@ public:
|
||||
|
||||
Dictionary to_dict();
|
||||
void from_dict(const Dictionary &dict);
|
||||
|
||||
Dictionary _to_dict();
|
||||
void _from_dict(const Dictionary &dict);
|
||||
|
||||
Array to_send_array();
|
||||
void from_send_array(const Array &arr);
|
||||
Array _to_send_array();
|
||||
void _from_send_array(const Array &arr);
|
||||
|
||||
AuraData();
|
||||
|
||||
protected:
|
||||
|
@ -2346,7 +2346,7 @@ void Entity::sadd_aura(Ref<AuraData> aura) {
|
||||
emit_signal("saura_added", aura);
|
||||
|
||||
if (!aura->get_aura()->get_hide())
|
||||
SEND_RPC(rpc("cadd_aura", aura), cadd_aura(aura));
|
||||
SEND_RPC(rpc("rcadd_aura", aura), cadd_aura(aura));
|
||||
}
|
||||
|
||||
void Entity::sremove_aura(Ref<AuraData> aura) {
|
||||
@ -2450,6 +2450,16 @@ void Entity::saura_refreshed(Ref<AuraData> aura) {
|
||||
SEND_RPC(rpc("caura_refreshed", aura), caura_refreshed(aura));
|
||||
}
|
||||
|
||||
void Entity::rcadd_aura(Array arr) {
|
||||
Ref<AuraData> ad;
|
||||
ad.instance();
|
||||
|
||||
ad->set_owner(this);
|
||||
ad->from_send_array(arr);
|
||||
|
||||
cadd_aura(ad);
|
||||
}
|
||||
|
||||
void Entity::cadd_aura(Ref<AuraData> aura) {
|
||||
ERR_FAIL_COND(!aura.is_valid());
|
||||
|
||||
|
@ -433,6 +433,7 @@ public:
|
||||
void sremove_aura_dispelled(Ref<AuraData> aura);
|
||||
void saura_refreshed(Ref<AuraData> aura);
|
||||
|
||||
void rcadd_aura(Array aura);
|
||||
void cadd_aura(Ref<AuraData> aura);
|
||||
void cremove_aura(Ref<AuraData> aura);
|
||||
void cremove_aura_exact(Ref<AuraData> aura);
|
||||
|
Loading…
Reference in New Issue
Block a user