34 dest = qMax(inv_to->
Start(), dest);
38 && dest < inv_to->
Size()
51 for (
int i=0; i<from->
Size(); ++i) {
52 if ( from->
Drop(i, 0, from->
Number(i),
this) ) {
66 for (
int i=0; i<
Size(); ++i) {
70 for (
int j=0; j<
Number(i); ++j) {
79 if ( block ==
nullptr )
return true;
81 for (
int i=0; i<
Size(); ++i) {
84 if ( inner && inner->
Get(block) ) {
90 for (
int i=start; i<
Size(); ++i) {
104 if ( block ==
nullptr)
return true;
116 for (
int i=0; i<num; ++i) {
124 const int number =
Number(num);
128 const int sub =
inventory[num].top()->Sub();
130 for (
int i=0; i<number; ++i) {
134 for (
int i=0; i<number; ++i) {
135 if ( not
inventory[num].at(i)->Inscribe(str) ) {
146 return QString(
"%1%2").
148 QObject::tr(
"-empty-") :
151 "" : QString(
" (x%1)").arg(
Number(num)));
171 for (
int i=0; i<
Size(); ++i) {
178 return ( slot >=
Size() || index >=
Number(slot) ) ?
197 const int push_direction)
199 int x_targ, y_targ, z_targ;
200 world->
Focus(x, y, z, &x_targ, &y_targ, &z_targ,
204 if ( inv !=
nullptr ) {
212 arg(
char(num +
'a')));
222 for (
int i=0; i<crafted->
num; ++i) {
229 ReceiveSignal(QObject::tr(
"You don't know how to craft this."));
237 for (
int j=i; j<
Size(); ++j) {
246 inventory(new QStack<
Block *>[sz])
252 for (
int i=0; i<
Size(); ++i) {
266 for (
int i=0; i<
size; ++i) {
virtual QString FullName() const
bool InscribeInv(int num, QString str)
Returns true on success.
bool MiniCraft(CraftItem **) const
void DeleteBlock(Block *) const
Does not actually delete normal blocks.
BlockManager block_manager
void MoveInside(int num_from, int num_to, int num)
void RestoreDurabilityAfterSave()
Importart! Use it if block won't be deleted after SaveToFile.
void Shake()
Stacks items in inventory if possible.
Block * Normal(int sub) const
Use this to receive a pointer to normal block.
virtual bool Access() const
virtual bool Drop(int src, int dest, int num, Inventory *to)
Returns true on success.
static dirs Anti(dirs dir)
virtual bool Get(Block *block, int start=0)
Returns true on success.
int GetInvSub(int i) const
Returns AIR if slot number i is empty.
virtual Inventory * HasInventory()
int GetInvKind(int i) const
Returns BLOCK if slot number i is empty.
int GetInvWeight(int i) const
Block * ShowBlock(int slot) const
virtual int Start() const
virtual bool GetAll(Inventory *from)
Returns true on success.
virtual void ReceiveSignal(QString)=0
static dirs MakeDirFromDamage(int damage_kind)
Block * GetBlock(int x, int y, int z) const
Provides declaration for class Inventory for freg.
Block * ShowBlockInSlot(int slot, int index) const
Don't move block shown by this function.
QStack< Block * > *const inventory
Inventory(Inventory &inv)=delete
virtual Inventory * HasInventory()=0
virtual wearable Wearable() const
virtual bool GetExact(Block *block, int num)
Returns true if block found its place.
static Block * NewBlock(int kind, int sub)
Use this to receive a pointer to new not-normal block.
virtual int Weight() const
void Push(int x, int y, int z, int push_direction)
void Pull(int num)
Removes block from inventory. Does not delete block.
Provides block ability to contain other blocks inside.
virtual QString FullName() const =0
void SaveToFile(QDataStream &out)
bool Focus(int x, int y, int z, int *x_targ, int *y_targ, int *z_targ, dirs dir) const
False on error, true if focus is received to _targ successfully.
const CraftManager * craft_manager
static Block * BlockFromFile(QDataStream &, int kind, int sub)
Use this to load block from file.
Block without special physics and attributes.
virtual QString InvFullName(int num) const
virtual void SaveAttributes(QDataStream &out) const
Provides definition for class Block.
bool MiniCraft(int num)
Returns true on success (something has been crafted).
static bool KindSubFromFile(QDataStream &, quint8 *kind, quint8 *sub)
Returns true if block is normal.