summaryrefslogtreecommitdiff
path: root/util/colors.txt
blob: 74c8f9993fa785cd0bbc2ad555573149a5606eb3 (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
0 128 128 128   # CONTENT_STONE
2 39 66 106     # CONTENT_WATER
3 255 255 0     # CONTENT_TORCH
9 39 66 106     # CONTENT_WATERSOURCE
e 117 86 41     # CONTENT_SIGN_WALL
f 128 79 0      # CONTENT_CHEST
10 118 118 118  # CONTENT_FURNACE
15 103 78 42    # CONTENT_FENCE
1e 162 119 53   # CONTENT_RAIL
1f 154 110 40   # CONTENT_LADDER
20 255 100 0    # CONTENT_LAVA
21 255 100 0    # CONTENT_LAVASOURCE
800 107 134 51  # CONTENT_GRASS
801 86 58 31    # CONTENT_TREE
802 48 95 8     # CONTENT_LEAVES
803 102 129 38  # CONTENT_GRASS_FOOTSTEPS
804 178 178 0   # CONTENT_MESE
805 101 84 36   # CONTENT_MUD
808 104 78 42   # CONTENT_WOOD
809 210 194 156 # CONTENT_SAND
80a 123 123 123 # CONTENT_COBBLE
80b 199 199 199 # CONTENT_STEEL
80c 183 183 222 # CONTENT_GLASS
80d 219 202 178 # CONTENT_MOSSYCOBBLE
80e 70 70 70    # CONTENT_GRAVEL
80f 204 0 0     # CONTENT_SANDSTONE
810 0 215 0     # CONTENT_CACTUS
811 170 50 25   # CONTENT_BRICK
812 104 78 42   # CONTENT_CLAY
813 58 105 18   # CONTENT_PAPYRUS
814 196 160 0   # CONTENT_BOOKSHELF
815 205 190 121 # CONTENT_JUNGLETREE
816 62 101 25   # CONTENT_JUNGLEGRASS
817 255 153 255 # CONTENT_NC
818 102 50 255  # CONTENT_NC_RB
819 200 0 0     # CONTENT_APPLE

default:stone 128 128 128
default:stone_with_coal 50 50 50
default:water_flowing 39 66 106
default:torch 255 255 0
default:water_source 39 66 106
default:sign_wall 117 86 41
default:chest 128 79 0
default:furnace 118 118 118
default:fence_wood 103 78 42
default:rail 162 119 53
default:ladder 154 110 40
default:lava_flowing 255 100 0
default:lava_source 255 100 0
default:dirt_with_grass 107 134 51
default:tree 86 58 31
default:leaves 48 95 8
default:dirt_with_grass_and_footsteps 102 129 38
default:mese 178 178 0
default:dirt 101 84 36
default:wood 104 78 42
default:sand 210 194 156
default:cobble 123 123 123
default:steelblock 199 199 199
default:glass 183 183 222
default:mossycobble 219 202 178
default:gravel 70 70 70
default:sandstone 204 0 0
default:cactus 0 215 0
default:brick 170 50 25
default:clay 104 78 42
default:papyrus 58 105 18
default:bookshelf 196 160 0
default:jungletree 205 190 121
default:junglegrass 62 101 25
default:nyancat 255 153 255
default:nyancat_rainbow 102 50 255
default:apple 200 0 0
default:desert_sand 210 180 50
default:desert_stone 150 100 30
default:dry_shrub 100 80 40

'n153' href='#n153'>153 154 155 156
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#ifndef ROLLBACK_INTERFACE_HEADER
#define ROLLBACK_INTERFACE_HEADER

#include "irr_v3d.h"
#include <string>
#include <iostream>
#include "exceptions.h"

class Map;
class IGameDef;
struct MapNode;
class InventoryManager;

struct RollbackNode
{
	std::string name;
	int param1;
	int param2;
	std::string meta;

	bool operator==(const RollbackNode &other)
	{
		return (name == other.name && param1 == other.param1 &&
				param2 == other.param2 && meta == other.meta);
	}
	bool operator!=(const RollbackNode &other)
	{
		return !(*this == other);
	}

	RollbackNode():
		param1(0),
		param2(0)
	{}

	RollbackNode(Map *map, v3s16 p, IGameDef *gamedef);
};

struct RollbackAction
{
	enum Type{
		TYPE_NOTHING,
		TYPE_SET_NODE,
		TYPE_MODIFY_INVENTORY_STACK,
	} type;

	time_t unix_time;
	std::string actor;
	bool actor_is_guess;

	v3s16 p;
	RollbackNode n_old;
	RollbackNode n_new;
	
	std::string inventory_location;
	std::string inventory_list;
	u32 inventory_index;
	bool inventory_add;
	std::string inventory_stack;

	RollbackAction():
		type(TYPE_NOTHING),
		unix_time(0),
		actor_is_guess(false)
	{}

	void setSetNode(v3s16 p_, const RollbackNode &n_old_,
			const RollbackNode &n_new_)
	{
		type = TYPE_SET_NODE;
		p = p_;
		n_old = n_old_;
		n_new = n_new_;
	}

	void setModifyInventoryStack(const std::string &inventory_location_,
			const std::string &inventory_list_, int index_,
			bool add_, const std::string &inventory_stack_)
	{
		type = TYPE_MODIFY_INVENTORY_STACK;
		inventory_location = inventory_location_;
		inventory_list = inventory_list_;
		inventory_index = index_;
		inventory_add = add_;
		inventory_stack = inventory_stack_;
	}
	
	// String should not contain newlines or nulls
	std::string toString() const;
	void fromStream(std::istream &is) throw(SerializationError);
	
	// Eg. flowing water level changes are not important
	bool isImportant(IGameDef *gamedef) const;
	
	bool getPosition(v3s16 *dst) const;

	bool applyRevert(Map *map, InventoryManager *imgr, IGameDef *gamedef) const;
};

class IRollbackReportSink
{
public:
	virtual ~IRollbackReportSink(){}
	virtual void reportAction(const RollbackAction &action) = 0;
	virtual std::string getActor() = 0;
	virtual bool isActorGuess() = 0;
	virtual void setActor(const std::string &actor, bool is_guess) = 0;
	virtual std::string getSuspect(v3s16 p, float nearness_shortcut,
			float min_nearness) = 0;
};

class RollbackScopeActor
{
public:
	RollbackScopeActor(IRollbackReportSink *sink, const std::string &actor,
			bool is_guess=false):
		m_sink(sink)
	{
		if(m_sink){
			m_actor_was = m_sink->getActor();
			m_actor_was_guess = m_sink->isActorGuess();
			m_sink->setActor(actor, is_guess);
		}
	}
	~RollbackScopeActor()
	{
		if(m_sink){
			m_sink->setActor(m_actor_was, m_actor_was_guess);
		}
	}
private:
	IRollbackReportSink *m_sink;
	std::string m_actor_was;
	bool m_actor_was_guess;
};

#endif