package com.red.circle.other.inner.endpoint.game.api;

import com.red.circle.framework.dto.ResultResponse;
import com.red.circle.other.inner.model.cmd.game.GameLudoQryCmd;
import com.red.circle.other.inner.model.dto.game.GameLudoHistoryDTO;
import com.red.circle.other.inner.model.dto.game.GameLudoHistoryInfoDTO;
import com.red.circle.other.inner.model.dto.game.GameLudoPlayersDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 飞行棋
 *
 * @author zongpubin on 2024/1/26
 */
public interface GameLudoClientApi {

  String API_PREFIX = "/game/ludo/client";

  @PostMapping("/listGameLudoRun")
  ResultResponse<List<GameLudoHistoryInfoDTO>> listGameLudoRun(@RequestBody GameLudoQryCmd query);

  @GetMapping("/dismiss")
  ResultResponse<Void> dismiss(@RequestParam("roomId") Long roomId);

  @PostMapping("/flowSelective")
  ResultResponse<List<GameLudoHistoryDTO>> flowSelective(@RequestBody GameLudoQryCmd query);

  @PostMapping("/mapLudoPlayersByGameId")
  ResultResponse<Map<Long, List<GameLudoPlayersDTO>>> mapLudoPlayersByGameId(
      @RequestBody Set<Long> gameIds);
}
