Пример #1
0
    public void Init(EntitySpawnData data, int rendererLayer)
    {
        Type      = data.objecttype;
        Direction = ((NpcDirection)data.PosDir[2]).ToDirection();

        GID = data.GID;
        AID = data.AID;

        Status.name       = data.name;
        Status.jobId      = data.job;
        Status.sex        = data.sex;
        Status.hair       = (short)data.head;
        Status.walkSpeed  = data.speed;
        Status.hp         = data.HP;
        Status.max_hp     = data.MaxHP;
        Status.char_id    = GID;
        Status.account_id = AID;

        EquipInfo = new EntityEquipInfo {
            Weapon     = (short)data.Weapon,
            Shield     = (short)data.Shield,
            HeadTop    = (short)data.Accessory2,
            HeadBottom = (short)data.Accessory,
            HeadMid    = (short)data.Accessory3,
            Robe       = (short)data.Robe
        };

        gameObject.transform.position = new Vector3(data.PosDir[0], Core.PathFinding.GetCellHeight(data.PosDir[0], data.PosDir[1]), data.PosDir[1]);

        SetupViewer(EquipInfo, rendererLayer);
    }
Пример #2
0
    private Entity SpawnMOB(EntitySpawnData data)
    {
        var mob = new GameObject(data.name);

        mob.layer = LayerMask.NameToLayer("Monsters");
        mob.transform.localScale = Vector3.one;
        var entity = mob.AddComponent <Entity>();

        entity.Init(data, LayerMask.NameToLayer("Monsters"));

        entityCache.Add(data.AID, entity);
        entity.SetReady(true);

        return(entity);
    }
Пример #3
0
    private Entity SpawnNPC(EntitySpawnData data)
    {
        var npc = new GameObject(data.name);

        npc.layer = LayerMask.NameToLayer("NPC");
        npc.transform.localScale = Vector3.one;
        var entity = npc.AddComponent <Entity>();

        entity.Init(data, LayerMask.NameToLayer("NPC"));

        entityCache.Add(data.AID, entity);
        entity.SetReady(true);

        return(entity);
    }
 /// <inheritdoc />
 public void AddEntity(AddEntityPipelineOp addEntityOp)
 {
     if (!IsEntityTracked(addEntityOp.EntityId))
     {
         knownEntities.Add(addEntityOp.EntityId);
         var spawnData = new EntitySpawnData();
         entitiesToSpawn.Add(addEntityOp.EntityId, spawnData);
         spawnData.StalledOps.Enqueue(addEntityOp);
         metrics.IncrementGauge(EntityCountGaugeName);
     }
     else
     {
         Debug.LogErrorFormat("Trying to add the entity '{0}' that already exists.", addEntityOp.EntityId);
     }
 }
Пример #5
0
    private Entity SpawnPC(EntitySpawnData data)
    {
        var player = new GameObject(data.name);

        player.layer = LayerMask.NameToLayer("Characters");
        player.transform.localScale = Vector3.one;

        var entity = player.AddComponent <Entity>();

        entity.Init(data, LayerMask.NameToLayer("Characters"));

        entityCache.Add(data.AID, entity);
        entity.SetReady(true);

        return(entity);
    }
Пример #6
0
    public Entity Spawn(EntitySpawnData data)
    {
        switch (data.objecttype)
        {
        case EntityType.PC:
            entityCache.TryGetValue(data.GID, out var pc);
            pc?.gameObject.SetActive(true);
            return(pc ?? SpawnPC(data));

        case EntityType.NPC:
            entityCache.TryGetValue(data.AID, out var npc);
            npc?.gameObject.SetActive(true);
            return(npc ?? SpawnNPC(data));

        case EntityType.MOB:
            entityCache.TryGetValue(data.AID, out var mob);
            mob?.gameObject.SetActive(true);
            return(mob ?? SpawnMOB(data));

        default:
            return(null);
        }
    }
Пример #7
0
        public void Read(MemoryStreamReader br, int size)
        {
            entityData = new EntitySpawnData();

            entityData.objecttype = (EntityType)br.ReadByte();

            entityData.AID = br.ReadUInt();
            entityData.GID = br.ReadUInt();

            entityData.speed       = br.ReadShort();
            entityData.bodyState   = br.ReadShort();
            entityData.healthState = br.ReadShort();

            entityData.effectState = br.ReadInt();

            entityData.job = br.ReadShort();

            entityData.head = br.ReadUShort();

            entityData.Weapon        = br.ReadUInt();
            entityData.Accessory     = br.ReadUShort();
            entityData.moveStartTime = br.ReadUInt();
            entityData.Shield        = br.ReadUInt();

            /**
             * might represent emblem/guild_id1/guild_id0
             * rA clif.cpp #1102
             */
            entityData.Accessory2 = br.ReadUShort();
            entityData.Accessory3 = br.ReadUShort();

            entityData.HairColor    = br.ReadShort();
            entityData.ClothesColor = br.ReadShort();
            entityData.headDir      = br.ReadShort();

            entityData.Robe = br.ReadUShort();

            entityData.GUID = br.ReadUInt();

            entityData.GEmblemVer = br.ReadShort();
            entityData.honor      = br.ReadShort();

            entityData.virtue = br.ReadInt();

            entityData.isPKModeON = (byte)br.ReadByte();
            entityData.sex        = (byte)br.ReadByte();

            entityData.PosDir = br.ReadPos2();

            entityData.xSize = (byte)br.ReadByte();
            entityData.ySize = (byte)br.ReadByte();
            entityData.state = (byte)br.ReadByte();

            entityData.clevel = br.ReadShort();
            entityData.font   = br.ReadShort();

            entityData.MaxHP = br.ReadInt();
            entityData.HP    = br.ReadInt();

            entityData.isBoss = (byte)br.ReadByte();

            entityData.body = br.ReadUShort();
            entityData.name = br.ReadBinaryString(24);
        }