X-Git-Url: https://troll.desast.re/troll.git/blobdiff_plain/9e6c50a065afce798eedf02c7a6dbfe3c4f3b91a..aa30a90760aead679e9ee3dd88d80761bf2faf22:/src/main/java/com/codingame/game/View.java diff --git a/src/main/java/com/codingame/game/View.java b/src/main/java/com/codingame/game/View.java index 45b4401..e8ae7d7 100644 --- a/src/main/java/com/codingame/game/View.java +++ b/src/main/java/com/codingame/game/View.java @@ -189,7 +189,7 @@ class View { } void destroy() { - gameManager.addToGameSummary(GameManager.formatErrorMessage("Troll destroys " + nicknameToken + ".")); + gameManager.addToGameSummary(GameManager.formatErrorMessage(trollRace.starter + " destroys " + nicknameToken + ".")); graphicEntityModule.commitEntityState(0.5, castle); castle.setX(castle.getX(), Curve.ELASTIC); castle.setScaleY(-0.2, Curve.EASE_IN); @@ -209,7 +209,7 @@ class View { } void throwStones(int stones) { - gameManager.addToGameSummary(String.format("%s throws %d stone%s at the troll.", nicknameToken, stones, stones == 1 ? "" : "s")); + gameManager.addToGameSummary(String.format("%s throws %d stone%s at " + trollRace.nonStarter(), nicknameToken, stones, stones == 1 ? "" : "s")); } void threwMoreStonesThanHad() { @@ -348,12 +348,64 @@ class View { } } + enum TrollRace { + Troll("The troll", 0xfac200, "bland"), + IceTroll("The ice troll", 0x59a2a2, "ice"), + RockTroll("The rock troll", 0x78877f, "rock"), + WaterTroll("The water troll", 0x2b2fc6, "water"), + OlogHai("The Olog-Hai", 0x5b2e7d, "ologhai"); + String starter, parser; int tint; + TrollRace(String s, int t, String p) { + starter = s; + tint = t; + parser = p; + } + String nonStarter() { + return Character.toLowerCase(starter.charAt(0)) + + starter.substring(1); + } + } + TrollRace trollRace; + private void drawTroll() { + int r, league = gameManager.getLeagueLevel(); + if (league <= 1) r = 4; + else if (league <= 2) r = 8; + else r = 10; + + r = random.nextInt(r); + if (r < 4) trollRace = TrollRace.Troll; + else if (r < 6) trollRace = TrollRace.IceTroll; + else if (r < 8) trollRace = TrollRace.RockTroll; + else if (r < 9) trollRace = TrollRace.WaterTroll; + else if (r < 10) trollRace = TrollRace.OlogHai; + else throw new RuntimeException("Internal error: unknown troll race " + r); + + // We read it for debugging purposes, but don't echo it back + // to the IDE. It is, after all, *not* a map parameter! + String buf = gameManager.getGameParameters().getProperty("ehtnicity"); + if (buf != null) { + String key = ""; + for (char c : buf.toCharArray()) + if (Character.isLetter(c)) + key += Character.toLowerCase(c); + iHateJava: do { + for (TrollRace race : TrollRace.values()) { + if (key.equals(race.parser)) { + trollRace = race; + break/*ing news: */ iHateJava; + } + } + gameManager.addToGameSummary("Ignoring unknown troll race: " + buf); + } while (false); + } + photoFinish: ; // The race is through, but Java has no goto :-( + Sprite trollBody = graphicEntityModule.createSprite() .setImage("troll_body.png") .setAnchorX(0.5) .setAnchorY(1) - .setTint(0xfac200); + .setTint(trollRace.tint); Sprite trollPants = graphicEntityModule.createSprite() .setImage("pants_red.png") .setAnchorX(0.5) @@ -411,7 +463,7 @@ class View { void moveTroll(Dir d) { moveTroll(); - gameManager.addToGameSummary("Troll " + d.movement); + gameManager.addToGameSummary(trollRace.starter + " " + d.movement); trollMessage.setText(selectTrollMessage(d)).setAlpha(1, Curve.NONE); graphicEntityModule.commitEntityState(0.5, trollMessage); @@ -531,6 +583,7 @@ class View { // movies { "Han shot first", "I am your father", "Greedo shot first" }, { "Inception ends\non level zero", "BRAAAAAAM", "Inception ends\non level one" }, + { "star wars > star trek", "my god, it's full of troll", "star trek > star wars" }, // More movie controversies sought. Apply on the puzzle contrib page. // music @@ -542,6 +595,7 @@ class View { { "Marvel > DC", "Disney > 50 shades", "DC > Marvel" }, { "cats > dogs", "humans make\ngood pets", "dogs > cats" }, { "the moon landing was staged", "elvis lives", "9/11 was an inside job" }, + { "santa claus is really\nthe tooth fairy", "the easter bunny tasted yummy", "the tooth fairy is\nreally santa claus" }, // Ditto. Need moar troll. // gaming @@ -550,6 +604,9 @@ class View { { "pad > stick", "mouse gaming is lame", "stick > pad" }, { "RTS > FPS", "solitaire best game", "FPS > RTS" }, { "YT gaming > twitch", "i watch other ppl play", "twitch > YT gaming" }, + { "orcs are wusses", "the amulet is in another dungeon", "elves are wusses" }, + { "here's a link to my patreon", "my apm > yours", "here's my soundcloud" }, + { "all your stones is belong to us", "all your castle are belong to us", "all your rocks is belong to us" }, // I'm not exactly a gamer myself, I take hints on the topics du jour // programming @@ -574,6 +631,9 @@ class View { // More always welcome here. // CodinGame + { "my nn is in python", "my language has -O3", "my code is more than 100k" }, + { "i found a bug\nin temperatures", "i found a bug on\nthe leaderboard", "i found a bug\nin chuck norris" }, + { "fix it", "how is ur csb", "ezpz" }, { "searcho no chokudai", "GAimax is True AI", "Smitsimax FTW" }, { "Automaton2000 > NN", "bots > humans", "AutomatonNN > 2000" }, { "optimizing for the contest\ntestcase is cheating", "having moar accounts than cg\nstaff will get you banned", "it's not hardcoding\nif it's stochastic" }, @@ -585,6 +645,7 @@ class View { // Those for which I couldn't find a meaningful directednessability. String isotropic[] = { + "(unclosed", "Electron apps are the fastest", "Rosebud", "Thanos did nothing wrong", @@ -592,7 +653,6 @@ class View { "the cloud is just\nother ppl's computers", "ur doin it rong", "tortue", - "how is ur csb", "31OCT = 25DEC", "ASCII stupid question\nget a stupid ANSI", "trolling is a art"