private void InitComponent(EnemyData data, EnemyType type, Sprite sprite, ITrajectoryData trajectoryData)
    {
        //更新飞机图片
        Renderer = gameObject.AddOrGet <RenderComponent>();
        Renderer.Init();
        Renderer.SetSprite(sprite);
        //路径初始化
        _path = new PathMgr();
        _path.Init(transform, data, trajectoryData);

        gameObject.AddOrGet <CameraMove>().enabled = _path.NeedMoveWithCamera();
        gameObject.AddOrGet <AutoDespawnComponent>();
        gameObject.AddOrGet <EnemyTypeComponent>().Init(type);
        var lifeC = gameObject.AddOrGet <LifeComponent>();

        lifeC.Init(data.life);
        gameObject.AddOrGet <EnemyBehaviour>().Init(data);
        _moveComponent = gameObject.AddOrGet <MoveComponent>();
        _moveComponent.Init((float)data.speed);
        gameObject.AddOrGet <ColliderComponent>();
        gameObject.AddOrGet <PlaneCollideMsgComponent>();
        var bulletMgr = transform.Find("BulletRoot").AddOrGet <EnemyBulletMgr>();

        bulletMgr.Init(data);

        if (_lifeView == null)
        {
            var lifeGo = LoadMgr.Single.LoadPrefabAndInstantiate(Paths.PREFAB_ENEMY_LIFE, transform);
            _lifeView = lifeGo.AddComponent <EnemyLifeView>();
        }

        _lifeView.Init();
    }
Exemplo n.º 2
0
    public void SetupDungeon()
    {
        CAMap(0.465f, 2, 4, 5);
        Print(map_draft);
        List <MapTile> region = FindLargestRegion(map_draft);

        playerEntity = Instantiate(actorEntityPrefab);
        playerEntity.Setup();
        RenderComponent rc = playerEntity.GetComponent <RenderComponent>();

        rc.SetSprite(spriteManager.GetSpriteByName("knight"));
        rc.GetComponent <RenderComponent>().SetColor(new Color(0.964f, 0.839f, 0.741f, 1f));
        playerEntity.AddComponent(playerEntity.gameObject.AddComponent <MeleeCombatComponent>());
        playerEntity.AddComponent(playerEntity.gameObject.AddComponent <PlayerComponent>());
        NameComponent nc = playerEntity.GetComponent <NameComponent>();

        nc.SetData("Player", "c3a38a");
        playerEntity.AddComponent(nc);
        playerEntity.AddComponent("OrganicCreature");

        CameraTrackObject.instance.trackObject = playerEntity.gameObject;

        EquipSlotsComponent esc = playerEntity.GetComponent <EquipSlotsComponent>();

        esc.AddSlot("LeftHand");
        esc.AddSlot("Chest");

        entityList.Add(playerEntity);
        MapTile start = region[Random.Range(0, region.Count)];

        map.PutEntityAt(playerEntity, start.x, start.y);
        playerEntity.PropagateEvent(new FEvent(FEventCodes.ENTITY_SPAWN, "x", start.x, "y", start.y));

        FEntity sword = GambitPrototypes.instance.SpawnPrototype("sword", -1, -1);

        sword.PropagateEvent(new FEvent(FEventCodes.PICKED_UP, "carrier", playerEntity));
        playerEntity.PropagateEvent(new FEvent(FEventCodes.RECEIVE_ITEM, "item", sword));
        playerEntity.PropagateEvent(new FEvent(FEventCodes.EQUIP_ITEM, "item", sword, "slotName", "LeftHand"));

        FEntity armor = GambitPrototypes.instance.SpawnPrototype("armor", -1, -1);

        //Player can't die.
        armor.AddComponent("InvulnerableComponent");
        armor.PropagateEvent(new FEvent(FEventCodes.PICKED_UP, "carrier", playerEntity));
        playerEntity.PropagateEvent(new FEvent(FEventCodes.RECEIVE_ITEM, "item", armor));
        playerEntity.PropagateEvent(new FEvent(FEventCodes.EQUIP_ITEM, "item", armor, "slotName", "Chest"));

        nonPlayerAgents = new List <FEntity>();

        for (int i = 0; i < 10; i++)
        {
            start = region[Random.Range(0, region.Count)];
            SpawnPrototypeAt("skeleton_fighter", start.x, start.y);
        }

        for (int i = 0; i < 5; i++)
        {
            start = region[Random.Range(0, region.Count)];
            SpawnPrototypeAt("healingpotion", start.x, start.y);
        }

        for (int i = 0; i < 20; i++)
        {
            start = region[Random.Range(0, region.Count)];
            SpawnPrototypeAt("grass", start.x, start.y);
        }
    }