aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/DiodeTile.h
blob: 16f3347b238d65d5c90435ef89d6da471924398b (plain)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#pragma once
#include "DirectionalTile.h"

class Player;
class Random;
class Level;

class DiodeTile : public DirectionalTile
{
	friend class Tile;
protected:
	bool on;

protected:
	DiodeTile(int id, bool on);
public:
	virtual void updateDefaultShape(); // 4J Added override
	virtual bool isCubeShaped();
	virtual bool mayPlace(Level *level, int x, int y, int z);
	virtual bool canSurvive(Level *level, int x, int y, int z);
	virtual void tick(Level *level, int x, int y, int z, Random *random);
	virtual Icon *getTexture(int face, int data);
	virtual bool shouldRenderFace(LevelSource *level, int x, int y, int z, int face);
	virtual int getRenderShape();

protected:
	virtual bool isOn(int data);

public:
	virtual int getDirectSignal(LevelSource *level, int x, int y, int z, int dir);
	virtual int getSignal(LevelSource *level, int x, int y, int z, int facing);
	virtual void neighborChanged(Level *level, int x, int y, int z, int type);

protected:
	virtual void checkTickOnNeighbor(Level *level, int x, int y, int z, int type);

public:
	virtual bool isLocked(LevelSource *level, int x, int y, int z, int data);

protected:
	virtual bool shouldTurnOn(Level *level, int x, int y, int z, int data);
	virtual int getInputSignal(Level *level, int x, int y, int z, int data);
	virtual int getAlternateSignal(LevelSource *level, int x, int y, int z, int data);
	virtual int getAlternateSignalAt(LevelSource *level, int x, int y, int z, int facing);

public:
	virtual bool isSignalSource();
	virtual void setPlacedBy(Level *level, int x, int y, int z, shared_ptr<LivingEntity> by, shared_ptr<ItemInstance> itemInstance);
	virtual void onPlace(Level *level, int x, int y, int z);

protected:
	virtual void updateNeighborsInFront(Level *level, int x, int y, int z);

public:
	virtual void destroy(Level *level, int x, int y, int z, int data);
	virtual bool isSolidRender(bool isServerLevel = false);
	virtual int getResource(int data, Random *random, int playerBonusLevel) = 0;
	virtual int cloneTileId(Level *level, int x, int y, int z) = 0;

protected:
	virtual bool isAlternateInput(int tile);
	virtual int getOutputSignal(LevelSource *level, int x, int y, int z, int data);

public:
	static bool isDiode(int id);
	virtual bool isSameDiode(int id);
	virtual bool shouldPrioritize(Level *level, int x, int y, int z, int data);

protected:
	virtual int getTurnOffDelay(int data);

	virtual int getTurnOnDelay(int data) = 0;
	virtual DiodeTile *getOnTile() = 0;
	virtual DiodeTile *getOffTile() = 0;

public:
	virtual bool isMatching(int id);
};