/**
 * Educational Extracurricular Activities
 * College and extracurricular activities (ages 13+)
 */

import { Player } from '../../models/Player';
import { createQuestionEvent, checkProbability, createAnswerOption, type EventResult } from '../base';

export function extracurricular(player: Player, _type: 'message' | 'question' = 'message'): EventResult {
  const fname = 'extracurricular';
  const check = !player.askedQuestions.has(fname) &&
    player.character.ageYears >= 13 &&
    player.character.ageYears < 18 &&
    checkProbability(1000000);

  if (check) {
    player.askedQuestions.add(fname);
  }

  // Note: In full implementation, would use player.extraCurriculars
  return createQuestionEvent(
    fname,
    "What extra curricular activity would you like to join?",
    player,
    check,
    {
      answerOptions: ['Sports Team', 'Drama Club', 'Music Band', 'Debate Team', 'None']
    }
  );
}

export function collegeExtracurricular(player: Player, _type: 'message' | 'question' = 'message'): EventResult {
  const fname = 'collegeExtracurricular';
  const check = !player.askedQuestions.has(fname) &&
    player.character.activities.length > 0 &&
    player.character.education.includes('college') &&
    player.character.occupation === 'student' &&
    checkProbability(100);

  if (check) {
    player.askedQuestions.add(fname);
  }

  return createQuestionEvent(
    fname,
    'Would you like to continue your extracurricular activities in college?',
    player,
    check,
    {
      answerOptions: ['Yes', 'No']
    }
  );
}

export function chooseMajor(player: Player, _type: 'message' | 'question' = 'message'): EventResult {
  const fname = 'chooseMajor';
  const check = !!player.character.actScore &&
    !player.askedQuestions.has(fname) &&
    !player.character.major &&
    checkProbability(100);

  if (check) {
    player.askedQuestions.add(fname);
  }

  // Note: In full implementation, would use player.majors
  return createQuestionEvent(
    fname,
    "Your guidance counselor reminds you that college is coming! What would you like to major in?",
    player,
    check,
    {
      answerOptions: [
        createAnswerOption('Computer Science', '1'),
        createAnswerOption('Business', '2'),
        createAnswerOption('Psychology', '3'),
        createAnswerOption('Engineering', '4'),
        createAnswerOption('None')
      ]
    }
  );
}

export function chooseCollege(player: Player, _type: 'message' | 'question' = 'message'): EventResult {
  const fname = 'chooseCollege';
  const check = !!player.character.actScore &&
    !player.askedQuestions.has(fname) &&
    !player.character.college &&
    checkProbability(100);

  if (check) {
    player.askedQuestions.add(fname);
  }

  // Note: In full implementation, would use player.colleges with GPA/ACT requirements
  return createQuestionEvent(
    fname,
    "Your guidance counselor reminds you that it's time to start applying to colleges. Where would you like to apply?",
    player,
    check,
    {
      answerOptions: [
        createAnswerOption('State University - Affordable and practical', 'State University'),
        createAnswerOption('Private College - Prestigious but expensive', 'Private College'),
        createAnswerOption('Community College - Start local', 'Community College'),
        createAnswerOption('None')
      ]
    }
  );
}
