Giter Site home page Giter Site logo

clickfarm's People

Contributors

baukevdw avatar hermanronk avatar marcade80 avatar tommyboynl avatar wderuijter avatar yamahabest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

clickfarm's Issues

Waste pellets teller breekt bij 1000+ kernreactoren

Situatie: 1100 kernreactoren. Elke seconde wordt er 100 bij mijn waste pellets opgeteld, en 1 bij mijn waste staven. Het lijkt er op dat er per tick maar 1 staaf van de waste pallets naar de afvalopslag verplaatst kan worden.

Excessieve onnodige AJAX calls

if (NaNMarket = 1) {objMarket.show(); NaNMarket = 0;};

Volgens mij zorgt die lijn ervoor dat je elke seconden een request maakt naar "https://clickfarm.nl/back/resources.php" .. denk dat dat niet te bedoeling is.

Als je idd. AJAX achtige calls gaat maken met JavaScript, moet je er goed op letten dat je er niet overmatig & onnodig gebruik van maakt. Is ook helemaal niet nodig om deze call te maken als de gebruiker nog niet eens level 12 is en de market-row nog niet zichtbaar is.

Na een refresh is handmatig kunststof maken onmogelijk

Situatie:
10.000 kunststoffabrieken
5.000 kunststofhelpers

Na een refresh is de "Maak kunststof" knop greyed-out. Een kunststofhelper aannemen en ontslaan (of in omgekeerde volgorde) lost dit probleem op tot de volgende reload.

Automatische verkoop Pasta/kunststof wordt weergegeven als handmatig

Aangezien de code voor kunststof gekopieerd is van pasta, is dit dezelfde bug. Dit heeft te maken met de verkooproutine die alleen opties kent voor handmatige verkoop, en overschot verkoop. De code voor handmatige verkoop wordt aangeroepen bij een automatische verkoop.

Kopermijnen - Koper - Electronica

De volgende mijn die ik wil gaan activeren moeten de kopermijnen worden. De stappen zien er grofweg als volgt uit:

image

De oranje vakken moeten nog gemaakt worden, de blauwe vakken zijn bestaande functionaliteit. De werking is het best vergelijkbaar met ijzererts en staal.

Farmrobots en farms gebruiken nog eigen timers

Zowel de farms als de farmrobot gebruiken nu nog eigen timers,

Het zou netter zijn om dit onder te brengen in de centrale timer. Dit voorkomt timing issue's

Het betreft onder andere deze code:


    work: function () {
        if (objFarmRobot.amount == 0) {
            return 0;
        };
        var tempEnergy = +objEnergy.available;
        objFarmRobot.activeRobots = Math.floor(+tempEnergy / +objFarmRobot.robotEnergy);
        if (+objFarmRobot.activeRobots > +objFarmRobot.robots) {
            objFarmRobot.activeRobots = +objFarmRobot.robots;
        };
        var robotEnergyUsage = +objFarmRobot.activeRobots * +objFarmRobot.robotEnergy;
        objEnergy.use(+robotEnergyUsage, "Farmrobot");
        if ((+objFarmRobot.activeRobots * +objFarmRobot.robotCap) > +objFarmland.amount) {
            var activeFields = +objFarmland.amount;
        } else {
            var activeFields = +objFarmRobot.activeRobots * +objFarmRobot.robotCap;
        }
        var robotLoop = setInterval(
            function () {
                objFarmRobot.robotTimer--;
                objFarmRobot.timerCountdown();
                if (objFarmRobot.robotTimer < 1) {
                    clearInterval(robotLoop);
                    //nog rekening houden met max aan de hand van aanwezige velden.
                    var production = (+activeFields * +objFarmland.harvest);
                    objGrainSilo.fill(production);
                    objGrainSilo.show();
                    objFarmRobot.robotTimer = 10;
                    objFarmRobot.work();
                }
            }, 1000)
},

Efficienter maken verwerking level

Momenteel wordt er middels een switch statement bepaald welke blokken er wel en niet zichtbaar zijn. Hiervoor worden naast het swtich statement een paar functies gebruikt, maar dat kan efficiënter gemaakt worden zodat het eenvoudiger wordt om toekomstige uitbreidingen te vereenvoudigen.

Het betreft (onder andere) deze code:


// Player object
var objPlayerInfo = {
    level: localStorage.getItem('PlayerLevel') || 1,
    nextlevel: 3000,
    show: function () {
        document.getElementById('currentlevel').innerHTML = "Huidig level is: " + objPlayerInfo.level;
        document.getElementById('nextlevel').innerHTML = "Drempel voor volgend level: " + FixMoney(objPlayerInfo.nextlevel);
    },
    proceslevel: function (reason) {
        var c = "none";
        var d = "";
        if (+objPlayerInfo.level == 1) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, c, c, c, c, c, c, c, c, c, c);
        }
        if (+objPlayerInfo.level == 2) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, c, c, c, c, c, c, c, c, c);
        }
        if (+objPlayerInfo.level == 3) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, c, c, c, c, c, c, c, c);
        }
        if (+objPlayerInfo.level == 4) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, d, c, c, c, c, c, c, c);
        }
        if (+objPlayerInfo.level == 5) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 4;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, c, c, c, c, c, c);
        }
        if (+objPlayerInfo.level == 6) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 3;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, c, c, c, c);
        }
        if (+objPlayerInfo.level == 7) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 4;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, d, c, c, c);
        }
        if (+objPlayerInfo.level == 8) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, d, d, c, c);
            objResearch.show();
        }
        if (+objPlayerInfo.level == 9) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, d, d, c, c);
            objResearch.show();
        }
        if (+objPlayerInfo.level == 10) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, d, d, d, c);
            objResearch.show();
        }
        if (+objPlayerInfo.level > 10) {
            if (reason == "levelup") {
                objPlayerInfo.nextlevel = +objPlayerInfo.nextlevel * 5;
            }
            objPlayerInfo.levelFunction(d, d, d, d, d, d, d, d, d, d, d);
            objResearch.show();
        }
        localStorage.setItem('NextLevel', objPlayerInfo.nextlevel);
    },
    levelup: function () {
        if (+objMoney.amount > +objPlayerInfo.nextlevel) {
            +objPlayerInfo.level++;
            localStorage.setItem('PlayerLevel', objPlayerInfo.level);
            objPlayerInfo.proceslevel("levelup");
            notificationOverlay("Levelup! je bent nu level: " + objPlayerInfo.level, "Level", "fa-arrow-circle-up");
        }
        objPlayerInfo.show();
    },
    levelFunction: function (a, b, c, d, e, f, g, h, i, j, k) {
        document.getElementById("landbouw-col").style.display = a;
        document.getElementById("grain-col").style.display = a;
        document.getElementById("flour-col").style.display = b;
        document.getElementById("windmills").style.display = b;
        document.getElementById("Flourstock").style.display = b;
        document.getElementById("graanopbrengst-col").style.display = c;
        document.getElementById("olie-col").style.display = c;
        document.getElementById("Oilstock").style.display = c;
        // /document.getElementById("research-menu").style.display = d;
        document.getElementById("pomp-col").style.display = d;
        document.getElementById("energieproductie-col").style.display = d;
        document.getElementById("EnergyStatsLevel").style.disabled = d;
        document.getElementById("energy-col").style.display = d;
        document.getElementById("farmland-automation").style.display = e;
        document.getElementById("WindmillController").style.display = f;
        document.getElementById("chicken-col").style.display = g;
        document.getElementById("pasta-col").style.display = h;
        document.getElementById("AutoSell-col").style.display = h;
        document.getElementById("plastic-row").style.display = g
        document.getElementById("MiningResearch-col").style.display = i;
        document.getElementById("mijnbouw-row").style.display = i;
        document.getElementById("mijnen-row").style.display = i;
        document.getElementById("mijnen-row2").style.display = i;
        document.getElementById("Uranium-col").style.display = j;
        document.getElementById("nuclearFuel-row").style.display = k;
    },
    init: function () {
        objPlayerInfo.level = localStorage.getItem('PlayerLevel') || 1;
        objPlayerInfo.nextlevel = localStorage.getItem('NextLevel') || 3000;
        objPlayerInfo.proceslevel("init");
        objPlayerInfo.show();
    }
};

Browser niet compatible (sliders)

Niet in alle browsers werken de huidige sliders voor de automatische verkoop van resources goed. Ik heb hier zelf wat in elkaar geprutst, maar als iemand een betere implementatie heeft kan dit nog wel wat verbetering gebruiken.

image

Suggestie: Cache probleem bij updates van websites

Browsers houden ervan om web bestanden lokaal op te slaan en alleen te verversen als ze nieuw zijn. Specifiek de CSS/JavaScript files. Dat kan nog wel is vreemd gedrag opleveren bij mensen.

Een mogelijke oplossing is om de index.html -> index.php te veranderen, zodat we PHP kunnen gebruiken en een 'modified' timestamp achter elke CSS/Javascript kunnen plaatsen. Doordat er een timestamp toegevoegd word; word het bestand lokaal ververst door web browsers als de timestamp niet matched met het lokaal opgeslagen bestand. Klinkt ingewikkelder dan het eigenlijk is.

Voorbeeld in index.html (wat PHP word):
<link rel="stylesheet" href="./css/style.css">
naar
<link rel="stylesheet" href="./css/style.css?<?php echo filemtime('./css/style.css')?>">

Wat door PHP vertaald word naar:
<link rel="stylesheet" href="./css/style.css?1531493874">

PHP functie filemtime() geeft de 'last modified' tijd/datum van het bestand terug in epoch seconden. Dus zodra iemand het bestand update; verandert het nummer automatisch en weet je zeker dat pagina bezoekers het laatste bestand zullen downloaden.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.