Skip to content

Commit

Permalink
GeM: random name et fin de tour
Browse files Browse the repository at this point in the history
  • Loading branch information
DrDr3ck committed Jan 13, 2024
1 parent a1d4252 commit b0da5b0
Showing 1 changed file with 147 additions and 43 deletions.
190 changes: 147 additions & 43 deletions GuildeMarchande/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,54 @@ const towerPV = [6, 8, 10, 14];
let cubes = [];
let constraint = CONSTRAINT.FREE;

function getRandomName() {
const firstNames = [
"Marco",
"Christopher",
"Amerigo",
"John",
"Ferdinand",
"Hernan",
"Francis",
"Walter",
"James",
"Francisco",
"Vasco",
"Giovanni",
"Bartolomeu",
];
const firstName = firstNames[Math.floor(Math.random() * firstNames.length)];
const lastNames = [
"Polo",
"Columbus",
"Vespucci",
"Cabot",
"Magellan",
"Cortes",
"Drake",
"Raleigh",
"Cook",
"Pizarro",
"Gama",
"Verrazzano",
"Dias",
];
const lastName = lastNames[Math.floor(Math.random() * lastNames.length)];
if (Math.random() < 0.3) {
return `Sir ${firstName} ${lastName}`;
}
if (Math.random() > 0.8) {
return `${firstName} da ${lastName}`;
}
return `${firstName} ${lastName}`;
}

const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
let seed = urlParams.get("seed");
// TODO: seed
if (!seed) {
seed = "Avenia"; //getRandomName().replaceAll(' ', '_');
seed = getRandomName().replaceAll(" ", "_");
console.log("seed:", seed);
}

function preload() {
Expand Down Expand Up @@ -117,27 +159,66 @@ function speakerClicked() {
localStorage.setItem(speakerStorageKey, speakerButton.checked ? "on" : "off");
}

function getUrl() {
if (
document.location.toString().includes("seed=") &&
document.location.toString().includes("map=")
) {
return `${document.location.toString()}`;
} else if (document.location.toString().includes("seed=")) {
return `${document.location.toString()}&map=${map}`;
} else if (document.location.toString().includes("map=")) {
return `${document.location.toString()}&seed=${seed}`;
} else if (document.location.toString().includes("index.html")) {
return `${document.location.toString()}?map=${map}&seed=${seed}`;
}
return `${document.location.toString()}index.html?map=${map}&seed=${seed}`;
}

function initMap(mapName) {
map = mapName;
goals_cards = `${mapName}_goals`;
randomizer = new Randomizer(seed);

goalArray = [0, 1, 2, 3, 4, 5];
randomizer.shuffleArray(goalArray);
goalArray = goalArray.splice(-3); // remove 3 last goals

ageCards = [0, 1, 2, 3, 4, 5];
randomizer.shuffleArray(ageCards);
ageCards.unshift(9);

specialityArray = [
1, 2, 3, 4, 5, 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, 26, 27,
];
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28];
randomizer.shuffleArray(specialityArray);

tresorArray = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,
];
randomizer.shuffleArray(tresorArray);
}

function startAveniaClicked() {
map = "avenia";
goals_cards = "avenia_goals";
startClicked();
initMap("avenia");
document.location.href = getUrl();
//startClicked();
}

function startAghonClicked() {
map = "aghon";
goals_cards = "aghon_goals";
initMap("aghon");
startClicked();
}

function startCnidariaClicked() {
map = "cnidaria";
goals_cards = "cnidaria_goals";
initMap("cnidaria");
startClicked();
}

function startKazanClicked() {
map = "kazan";
goals_cards = "kazan_goals";
initMap("kazan");
startClicked();
}

Expand Down Expand Up @@ -170,12 +251,12 @@ const findExplorationCell = (cell) => {
return ageExploration[index];
};

function checkCubes() {
function checkCubes(curCubes) {
const isCellInExploration = (rcell) => {
return ageExploration.some((exploration) => sameCells(exploration, rcell));
};
let isolatedCube = false;
cubes.forEach((cube) => {
curCubes.forEach((cube) => {
const getRegion = (cell) => {
const exploration = findExplorationCell(cell);
const allCells = [{ x: exploration.x, y: exploration.y, type: "cube" }];
Expand Down Expand Up @@ -219,21 +300,25 @@ function checkCubes() {
return "ok";
} else if (constraint === CONSTRAINT.CONSECUTIVE) {
if (
checkConsecutiveCubes(cubes.filter((cube) => cube.type !== CARD.VILLAGE))
checkConsecutiveCubes(
curCubes.filter((cube) => cube.type !== CARD.VILLAGE)
)
) {
return "ok";
} else {
return "Le chemin est interrompu";
}
} else if (constraint === CONSTRAINT.ALIGNED) {
if (checkAlignedCubes(cubes.filter((cube) => cube.type !== CARD.VILLAGE))) {
if (
checkAlignedCubes(curCubes.filter((cube) => cube.type !== CARD.VILLAGE))
) {
return "ok";
} else {
return "Des cubes ne sont pas bien alignés";
}
} else if (constraint === CONSTRAINT.CENTERED) {
if (
checkCenteredCubes(cubes.filter((cube) => cube.type !== CARD.VILLAGE))
checkCenteredCubes(curCubes.filter((cube) => cube.type !== CARD.VILLAGE))
) {
return "ok";
} else {
Expand Down Expand Up @@ -373,15 +458,17 @@ function checkAlignedCubes(alignedCubes) {
return false;
}

function validateClicked() {
// TODO: verifier si les conditions sont bonnes ?
const condition = checkCubes();
function validateClicked(force = false) {
const curCubes = force
? cubes.filter((cube) => cube.x !== 0 || cube.y !== 0)
: cubes;
const condition = checkCubes(curCubes);
if (condition !== "ok") {
uiManager.addLogger(condition);
return;
}
let treasureCubes = 0;
cubes.forEach((cube) => {
curCubes.forEach((cube) => {
if (cube.type === CARD.VILLAGE) {
transformCubeToVillage(cube.x, cube.y);
uiManager.addLogger(`village: + ${age} PV`);
Expand Down Expand Up @@ -422,6 +509,7 @@ function validateClicked() {
constraint = CONSTRAINT.FREE;
// passer à la carte exploration suivante
validateButton.enabled = false;
validateForceButton.enabled = true;
if (treasureCubes === 0) {
playState = EXPLORATION_STATE;
uiManager.setUI([speakerButton, musicButton, helpButton]);
Expand All @@ -447,6 +535,10 @@ function validateClicked() {
countPVTreasure();

soundManager.playSound("validate");

if (playState === EXPLORATION_STATE) {
newExplorationCard();
}
}

/**
Expand Down Expand Up @@ -605,6 +697,11 @@ const helpButton = new BFloatingSwitchButton(
}
);
helpButton.previewCheck = false;

function resetSeed() {
seed = getRandomName().replaceAll(" ", "_");
}
const resetSeedButton = new BButton(1400, 300, "Reset", resetSeed);
const aveniaButton = new BButton(
140,
windowHeight - 120,
Expand Down Expand Up @@ -633,13 +730,15 @@ const kazanButton = new BButton(
startKazanClicked
);

const validateButton = new BButton(
630,
windowHeight - 5,
"Valider",
validateClicked
);
const validateButton = new BButton(1147, 677, "Valider", validateClicked);
validateButton.setTextSize(30);
validateButton.w = 180;
const undoButton = new BButton(530, 80, "Annuler", undoClicked);
const validateForceButton = new BButton(805, 980, "Fin de Tour", () => {
validateClicked(true);
});
validateForceButton.setTextSize(30);
validateForceButton.w = 180;

class Randomizer {
constructor(seed) {
Expand All @@ -665,29 +764,23 @@ class Randomizer {
}
}

const randomizer = new Randomizer(seed);
let randomizer = null;

let board = [];

let goalArray = [0, 1, 2, 3, 4, 5];
randomizer.shuffleArray(goalArray);
goalArray = goalArray.splice(-3); // remove 3 last goals

const ageCards = [0, 1, 2, 3, 4, 5];
randomizer.shuffleArray(ageCards);
ageCards.unshift(9);
let ageCards = [0, 1, 2, 3, 4, 5];

const specialityArray = [
1, 2, 3, 4, 5, 9, 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, 26, 27,
let specialityArray = [
1, 2, 3, 4, 5, 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, 26, 27,
];
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28];
randomizer.shuffleArray(specialityArray);

const tresorArray = [
let tresorArray = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,
];
randomizer.shuffleArray(tresorArray);

let tresors = [];

Expand Down Expand Up @@ -718,6 +811,7 @@ function undoCube(cubeIndex) {
(cell) => cell.x !== x || cell.y !== y
);
validateButton.enabled = false;
validateForceButton.enabled = true;
}

function checkType(cell, types, withTower = false) {
Expand Down Expand Up @@ -775,6 +869,7 @@ function addCube(x, y) {
// check if all cubes have been put on board
if (cubes.every((cube) => cube.x !== 0)) {
validateButton.enabled = true;
validateForceButton.enabled = false;
}
return true;
}
Expand Down Expand Up @@ -803,8 +898,11 @@ function initUI() {
aghonButton.enabled = false;
cnidariaButton.enabled = false;
kazanButton.enabled = false;
resetSeedButton.setTextSize(35);
resetSeedButton.w = 200;
const menu = [
speakerButton,
resetSeedButton,
aveniaButton,
cnidariaButton,
kazanButton,
Expand Down Expand Up @@ -1456,8 +1554,10 @@ function drawLoading() {
document.location.toString().includes("seed=") &&
document.location.toString().includes("map=")
) {
// TODO - get map
map = "avenia";
console.log(document.location.toString());
console.log("seed:", seed);
map = urlParams.get("map");
initMap(map);
startClicked();
}
}
Expand Down Expand Up @@ -1485,6 +1585,10 @@ function draw() {
50,
1.5
);
noStroke();
fill(250);
textSize(15);
text(seed.replaceAll("_", " "), 1400, 350);
if (overHelpButton) {
spritesheet.drawSprite("solo_rules", 0, (windowWidth - 550) / 2, 50);
}
Expand Down Expand Up @@ -1619,9 +1723,11 @@ function newExplorationCard() {

function addValidateButton() {
validateButton.enabled = false;
validateForceButton.enabled = true;
undoButton.enabled = true;
uiManager.setUI([
validateButton,
validateForceButton,
undoButton,
speakerButton,
musicButton,
Expand Down Expand Up @@ -1653,10 +1759,6 @@ function prepareCube2Play(specialityCardIndex) {
setPieceBonus(3);
addCube2Play(CARD.SAND, 4);
}
if (specialityCardIndex === 5) {
setPieceBonus(3);
addCube2Play(CARD.SEA, 4);
}
if (specialityCardIndex === 13) {
setConstraint(CONSTRAINT.CENTERED);
addCube2Play(CARD.MOUNTAIN, 1);
Expand Down Expand Up @@ -1765,6 +1867,7 @@ function mouseClicked() {
// 4. change state
playState = VILLAGE_STATE;
validateButton.enabled = false;
validateForceButton.enabled = false;
villageRegion = region;
soundManager.playSound("new_cube");
}
Expand All @@ -1783,6 +1886,7 @@ function mouseClicked() {
// check if all cubes have been put on board
if (cubes.every((cube) => cube.x !== 0)) {
validateButton.enabled = true;
validateForceButton.enabled = false;
}
}
if (playState === TRADE_STATE && overTrade) {
Expand Down

0 comments on commit b0da5b0

Please sign in to comment.