コード例 #1
0
ファイル: AiGenerator.java プロジェクト: Whet/Atrophy
  private void generateTeam(
      String team,
      int members,
      List<String> allowedItems,
      List<String> allowedWeapons,
      LevelBlock spawnRoom) {

    double[] randomLocation = levelManager.randomInPosition(spawnRoom);

    Pattern numberPattern = Pattern.compile("[0-9]+");
    Matcher numberMatcher;
    numberMatcher = numberPattern.matcher(team);
    numberMatcher.find();

    for (int i = 0; i < members; i++) {
      AiImage aiImg =
          new AiImage(
              aiCrowd,
              combatMembersManager,
              combatUiManager,
              combatVisualManager,
              panningManager,
              0,
              0,
              mouseAbilityHandler,
              floatingIcons);

      String faction = team.substring(numberMatcher.group().length());

      DialoguePool dialoguePool =
          new DialoguePool(faction, missionManager, cartographer, messageBox);

      ThinkingAi ai =
          new ThinkingAi(
              dialoguePool,
              panningManager,
              combatVisualManager,
              turnProcess,
              floatingIcons,
              mouseAbilityHandler,
              aiCrowd,
              combatMembersManager,
              randomName(),
              randomLocation[0],
              randomLocation[1],
              levelManager,
              combatInorganicManager,
              combatUiManager,
              lootbox);

      ai.setImage(randomImage());

      ai.setTeam(team);

      applyLootList(allowedItems, allowedWeapons, ai);

      switch (ai.getFaction()) {
        case BANDITS:
          ai.setBaseAggression(ThinkingAiEmotion.AGGRESSIVE_FIGHTER);
          ai.setImage("Bandit");
          break;
        case WHITE_VISTA:
          ai.setBaseAggression(ThinkingAiEmotion.PASSIVE_RESPOND);
          ai.setImage("Armour");
          break;
      }

      ai.assignAbilities();
      aiImg.setAi(ai);
      aiCrowd.addDisplayItem(aiImg);
      aiCrowd.addMouseActionItem(aiImg);

      aiCrowd.addActor(ai, new DirectorClassification(DirectorArchetype.UNDECIDED));
      aiCrowd.addMask(aiImg);

      randomLocation = levelManager.randomInPosition(spawnRoom);

      combatMembersManager.addAi(ai);
    }
  }