示例#1
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);
        }
    }