[untested] Implemented Miner role. Not in spawner yet.
This commit is contained in:
BIN
.cache/jb/UpdateWork.dat
Normal file
BIN
.cache/jb/UpdateWork.dat
Normal file
Binary file not shown.
1
.cache/jb/version.txt
Normal file
1
.cache/jb/version.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(ssh://git@git.jetbrains.team/llvm/llvm-project.git f4157ca9dd49181f6d35eaf6d324ffa84a40f01b based on LLVM 31f1590e4fb324c43dc36199587c453e27b6f6fa revision)
|
||||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/screeps.iml" filepath="$PROJECT_DIR$/.idea/screeps.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
23
douwco_hivemind/include/Creeps/Miner.hpp
Normal file
23
douwco_hivemind/include/Creeps/Miner.hpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef DOUWCO_HIVEMIND_MINER_HPP
|
||||||
|
#define DOUWCO_HIVEMIND_MINER_HPP
|
||||||
|
|
||||||
|
#include <Creeps/CreepBase.hpp>
|
||||||
|
|
||||||
|
namespace DouwcoHivemind
|
||||||
|
{
|
||||||
|
class Miner : public CreepBase
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
bool requestedContainer = false;
|
||||||
|
public:
|
||||||
|
Miner(Screeps::Creep crp);
|
||||||
|
~Miner() override;
|
||||||
|
void loop() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool mineSource();
|
||||||
|
std::unique_ptr<Screeps::Source> getSourceTarget();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DOUWCO_HIVEMIND_MINER_HPP
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef DOUWCO_HIVEMIND_HARVESTER_HPP
|
#ifndef DOUWCO_HIVEMIND_WORKER_HPP
|
||||||
#define DOUWCO_HIVEMIND_HARVESTER_HPP
|
#define DOUWCO_HIVEMIND_WORKER_HPP
|
||||||
|
|
||||||
#include "Creeps/CreepBase.hpp"
|
#include "Creeps/CreepBase.hpp"
|
||||||
|
|
||||||
@@ -26,4 +26,4 @@ namespace DouwcoHivemind
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // DOUWCO_HIVEMIND_HARVESTER_HPP
|
#endif // DOUWCO_HIVEMIND_WORKER_HPP
|
||||||
67
douwco_hivemind/src/Miner.cpp
Normal file
67
douwco_hivemind/src/Miner.cpp
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#include <emscripten.h>
|
||||||
|
#include <Screeps/Constants.hpp>
|
||||||
|
#include <Screeps/Source.hpp>
|
||||||
|
#include <Screeps/Room.hpp>
|
||||||
|
#include <Screeps/RoomPosition.hpp>
|
||||||
|
|
||||||
|
#include "Creeps/Miner.hpp"
|
||||||
|
|
||||||
|
DouwcoHivemind::Miner::Miner(Screeps::Creep crp) : CreepBase(crp)
|
||||||
|
{
|
||||||
|
requestedContainer = memory.contains("requestedContainer") ? static_cast<bool>(memory["requestedContainer"]) : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
DouwcoHivemind::Miner::~Miner()
|
||||||
|
{
|
||||||
|
memory["requestedContainer"] = requestedContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DouwcoHivemind::Miner::loop()
|
||||||
|
{
|
||||||
|
if (mineSource() && !requestedContainer)
|
||||||
|
{
|
||||||
|
creep.room().createConstructionSite(creep.pos(), Screeps::STRUCTURE_CONTAINER);
|
||||||
|
requestedContainer = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DouwcoHivemind::Miner::mineSource()
|
||||||
|
{
|
||||||
|
auto source = getSourceTarget();
|
||||||
|
if (!source){
|
||||||
|
EM_ASM({console.log($0 + ': Miner doesn\'t have valid source target')}, creep.name().c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isNearTo(source->pos(), 1))
|
||||||
|
{
|
||||||
|
int resp = creep.harvest(*source);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
moveToTarget();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<Screeps::Source> DouwcoHivemind::Miner::getSourceTarget()
|
||||||
|
{
|
||||||
|
auto roomObj = getRoomObjectTarget();
|
||||||
|
if (!roomObj)
|
||||||
|
{
|
||||||
|
// todo: request source from room
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if found roomobject is an actual source
|
||||||
|
auto source = std::unique_ptr<Screeps::Source>(dynamic_cast<Screeps::Source *>(roomObj.release()));
|
||||||
|
if (!source)
|
||||||
|
{
|
||||||
|
// EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, creep.name().c_str());
|
||||||
|
// todo: request source from room
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::move(source);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user