Add uncomitted changes

This commit is contained in:
Kienan Stewart 2018-11-24 13:36:49 -05:00
parent 6d680e3f0d
commit 86d118af6a
77 changed files with 2353 additions and 3 deletions

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" tiledversion="1.0.3" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="32" tileheight="32" nextobjectid="1">
<tileset firstgid="1" source="../../tilesets/default/default.tsx"/>
<layer name="Tile Layer 1" width="50" height="50">
<data encoding="csv">
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,
1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,
4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,1,1,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
</data>
</layer>
</map>

BIN
assets/ui/clock.xcf Normal file

Binary file not shown.

BIN
assets/ui/icons/help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

BIN
assets/ui/icons/help.xcf Normal file

Binary file not shown.

Binary file not shown.

249
game/game.gd Normal file
View File

@ -0,0 +1,249 @@
extends Node
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
var command_registry = Dictionary();
var command_history = []
export(bool) var debug = false
export(NodePath) var level_path = 'res://levels/sample/level.tscn'
var level = null
export(float) var turn_max_length = 60.0 # Seconds
var turn_time_left = -1.0
export(int) var population_start = 10
export(int) var jobs_start = 0
export(int) var food_start = 20
export(int) var resources_start = 0
export(int) var effort_start = 20
export(int) var goods_start = 0
var game_resources = {
'population': population_start,
'jobs': jobs_start,
'food': food_start,
'resources': resources_start,
'effort': effort_start,
'goods': goods_start,
}
var turns = 0
var build_regex = RegEx.new()
var set_resource_regex = RegEx.new()
# Game rules ish
export(bool) var advance_turn_on_successful_command = true
var game_object_registry = {
# TileMap ID. this is a crap way. but hey. do it fast.
2: {
"name": 'road',
},
3: {
"name": 'road',
},
4: {
'name': 'road',
},
5: {
'name': 'road',
},
6: {
'name': 'bridge',
},
7: {
'name': 'house'
},
8: {
"name": 'farm',
"node_path": 'N/A',
}
}
func _ready():
# Called every time the node is added to the scene.
# Initialization here
self.register_command('help', funcref(self, "command_help"))
self.build_regex.compile("build (?<object_id>[a-z_]*) (?<x>\\d+),(?<y>\\d+)")
self.register_command('build', funcref(self, "command_build"))
self.register_command('skip', funcref(self, 'command_skip'))
self.set_level(self.level_path)
if not self.debug:
get_node('ui/left sidebar/toggleWorldButton').hide()
if self.debug:
self.register_command('set_resource', funcref(self, 'command_set_resource'))
self.set_resource_regex.compile('set_resource (?<resource_name>[a-z_]*) (?<value>\\d+)')
get_node('ui/right sidebar/resources').update_resources(self.game_resources)
func set_level(path):
self.level = load(self.level_path).instance()
self.level.hide()
# Display?
get_node('world').add_child(self.level)
get_node('ui/right sidebar/MapSizeContainer').set_level_size(self.level.get_level_size())
# Set objects / simulation parameters.
# Start time
self.turn_time_left = self.turn_max_length
get_node('ui/right sidebar/timer').set_time_max(self.turn_max_length)
self.update_timer()
func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
self.turn_time_left -= delta
if self.turn_time_left <= 0.0:
self.advance_turn()
self.update_timer()
func advance_turn():
self.turn_time_left = self.turn_max_length
# Find people who can't get to jobs
# Find unfilled jobs
# Report unconnected buildings
# Update stats: consume food, word, etc.
self.turns += 1
func update_timer():
get_node('ui/right sidebar/timer').set_time_left(self.turn_time_left)
# A player has hit enter
func _on_prompt_text_entered(new_text):
history_append(new_text)
if new_text:
run_command(new_text)
# @TODO Run the command
get_node('ui/prompt').clear()
func history_append(text, is_command_result = false, return_code = 0):
var n = get_node('ui/ViewportContainer/history')
if not n:
return
if is_command_result:
if return_code != 0:
n.push_color(Color(1.0, 0.0, 0.0, 1.0))
n.add_text(' > (%d) %s' %[return_code, text])
if return_code != 0:
n.pop()
else:
n.add_text("$ " + text)
n.newline()
func history_search():
pass
func run_command(text):
var result;
var callback = parse_command(text)
if not callback[1]:
result = [-1, 'Command "%s" not found' % callback[0]]
else:
result = callback[1].call_func(text)
self.history_append(result[1], true, result[0])
# Possibly advance the turn depending on the game rule.
if self.advance_turn_on_successful_command && result[0] == 0:
self.advance_turn()
func parse_command(text):
var a = text.split(' ')
if self.command_registry.has(a[0]):
return [a[0], self.command_registry[a[0]]]
return [a[0], false]
func register_command(name, callback):
self.command_registry[name] = callback;
func remove_command(name):
if self.command_registry.has(name):
self.command_registry.erase(name);
func command_help(text):
print("received command: '%s'" % text)
return [0, 'no!']
func command_set_resource(text):
var r = self.set_resource_regex.search(text)
if r == null:
return [-1, 'set_resource command could not match arguments. Format: set_resource <resource_name> <value>']
var resource_name = r.get_string(1)
if ! self.game_resources.has(resource_name):
return [-2, 'Resource "%s" does not exist' %resource_name]
var value = int(r.get_string(2))
self.set_game_resource(resource_name, value)
return [0, 'Set resource "%s" to %d' %[resource_name, value]]
func set_game_resource(name, value):
self.game_resources[name] = value
get_node('ui/right sidebar/resources').update_resources(self.game_resources)
func command_build(text):
var r = self.build_regex.search(text)
if r == null:
return [-1, 'Build command could not match arguments. Format: build <object_id> <x>,<y>']
var object_id = _get_obj_id_by_name(r.get_string(1))
if object_id == null:
return [-3, "Object with id '%s' is not registered" % r.get_string(1)]
var p = Vector2(int(r.get_string(2)), int(r.get_string(3)))
if not _is_in_level(p):
return [-4, "Point %d,%d is not in current level" %[p.x, p.y]]
var obj_exists = _obj_exists_in_level(p)
if obj_exists:
var obj_name = self.game_object_registry[_obj_in_level(p)]['name']
return [-5, "Object %s already exists at %d, %d" % [obj_name, p.x, p.y]]
# Check if base terrain is valid.
var terrain_object_id = self.level.get_node('terrain').get_cellv(p)
if terrain_object_id == -1:
return [-6, "No terrain underneath point at %d,%d" %[p.x, p.y]]
# grass
if terrain_object_id == 0 && object_id == 6:
return [-7, "Can not build over water at %d,%d" %[p.x, p.y]]
if terrain_object_id == 1 && object_id != 6:
return [-8, "Can not build over grass at %d,%d" %[p.x, p.y]]
# (optional) check resources
# Build
self.level.get_node('objects').set_cellv(p, object_id)
# (optional) spend resources
return [0, 'Built %s at %d,%d' % [self.game_object_registry[object_id]['name'], p.x, p.y]]
func _is_in_level(v):
if v.x >= self.level.origin.x and v.x <= self.level.origin.x + self.level.width and \
v.y >= self.level.origin.y and v.y <= self.level.origin.y + self.level.height:
return true
return false
func _get_obj_id_by_name(n):
for i in self.game_object_registry.keys():
if self.game_object_registry[i]['name'] == n:
return i
return null
func _obj_in_level(v):
var c = self.level.get_node('objects').get_cellv(v)
if c == -1:
return null
return c
func _obj_exists_in_level(v):
if _obj_in_level(v) != null:
return true
return false
func _on_toggleWorldButton_toggled(button_pressed):
print(button_pressed)
if self.level.is_visible_in_tree():
self.level.hide()
else:
self.level.show()
func command_skip(t):
self.advance_turn()
return [0, 'OK']
func _on_timer_skip_presssed():
print('a')
self.advance_turn()

411
game/game.tscn Normal file
View File

@ -0,0 +1,411 @@
[gd_scene load_steps=10 format=2]
[ext_resource path="res://game.gd" type="Script" id=1]
[ext_resource path="res://ui/prompt.gd" type="Script" id=2]
[ext_resource path="res://ui/help.png" type="Texture" id=3]
[ext_resource path="res://ui/mapsize.tscn" type="PackedScene" id=4]
[ext_resource path="res://ui/timer.tscn" type="PackedScene" id=5]
[ext_resource path="res://ui/current_resources.tscn" type="PackedScene" id=6]
[ext_resource path="res://help_popup.gd" type="Script" id=7]
[sub_resource type="Environment" id=1]
background_mode = 0
background_sky_custom_fov = 0.0
background_color = Color( 0, 0, 0, 1 )
background_energy = 1.0
background_canvas_max_layer = 0
ambient_light_color = Color( 0, 0, 0, 1 )
ambient_light_energy = 1.0
ambient_light_sky_contribution = 1.0
fog_enabled = false
fog_color = Color( 0.5, 0.6, 0.7, 1 )
fog_sun_color = Color( 1, 0.9, 0.7, 1 )
fog_sun_amount = 0.0
fog_depth_enabled = true
fog_depth_begin = 10.0
fog_depth_curve = 1.0
fog_transmit_enabled = false
fog_transmit_curve = 1.0
fog_height_enabled = false
fog_height_min = 0.0
fog_height_max = 100.0
fog_height_curve = 1.0
tonemap_mode = 0
tonemap_exposure = 1.0
tonemap_white = 1.0
auto_exposure_enabled = false
auto_exposure_scale = 0.4
auto_exposure_min_luma = 0.05
auto_exposure_max_luma = 8.0
auto_exposure_speed = 0.5
ss_reflections_enabled = false
ss_reflections_max_steps = 64
ss_reflections_fade_in = 0.15
ss_reflections_fade_out = 2.0
ss_reflections_depth_tolerance = 0.2
ss_reflections_roughness = true
ssao_enabled = false
ssao_radius = 1.0
ssao_intensity = 1.0
ssao_radius2 = 0.0
ssao_intensity2 = 1.0
ssao_bias = 0.01
ssao_light_affect = 0.0
ssao_color = Color( 0, 0, 0, 1 )
ssao_quality = 0
ssao_blur = 3
ssao_edge_sharpness = 4.0
dof_blur_far_enabled = false
dof_blur_far_distance = 10.0
dof_blur_far_transition = 5.0
dof_blur_far_amount = 0.1
dof_blur_far_quality = 1
dof_blur_near_enabled = false
dof_blur_near_distance = 2.0
dof_blur_near_transition = 1.0
dof_blur_near_amount = 0.1
dof_blur_near_quality = 1
glow_enabled = false
glow_levels/1 = false
glow_levels/2 = false
glow_levels/3 = true
glow_levels/4 = false
glow_levels/5 = true
glow_levels/6 = false
glow_levels/7 = false
glow_intensity = 0.8
glow_strength = 1.0
glow_bloom = 0.0
glow_blend_mode = 2
glow_hdr_threshold = 1.0
glow_hdr_scale = 2.0
glow_bicubic_upscale = false
adjustment_enabled = false
adjustment_brightness = 1.0
adjustment_contrast = 1.0
adjustment_saturation = 1.0
[sub_resource type="World" id=2]
environment = SubResource( 1 )
[node name="game" type="Node" index="0"]
script = ExtResource( 1 )
debug = true
level_path = "res://levels/sample/level.tscn"
turn_max_length = 60.0
population_start = 10
jobs_start = 0
food_start = 20
resources_start = 0
effort_start = 20
goods_start = 0
advance_turn_on_successful_command = true
[node name="ui" type="Control" parent="." index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 40.0
margin_bottom = 40.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
_sections_unfolded = [ "Anchor", "Grow Direction", "Hint", "Margin", "Material", "Rect", "Visibility" ]
[node name="left sidebar" type="VBoxContainer" parent="ui" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 175.0
margin_bottom = 600.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 0
_sections_unfolded = [ "Rect", "Size Flags" ]
[node name="toggleWorldButton" type="CheckButton" parent="ui/left sidebar" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 175.0
margin_bottom = 40.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = true
enabled_focus_mode = 2
shortcut = null
group = null
text = "Show World"
flat = false
align = 0
[node name="ViewportContainer" type="ViewportContainer" parent="ui" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 175.0
margin_right = 850.0
margin_bottom = 550.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch = false
stretch_shrink = 1
_sections_unfolded = [ "Rect" ]
[node name="history" type="RichTextLabel" parent="ui/ViewportContainer" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 2.0
margin_top = 1.0
margin_right = 677.0
margin_bottom = 551.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = true
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
bbcode_enabled = false
bbcode_text = ""
visible_characters = -1
percent_visible = 1.0
meta_underlined = true
tab_size = 4
text = ""
scroll_active = true
scroll_following = false
selection_enabled = false
override_selected_font_color = false
[node name="Viewport" type="Viewport" parent="ui/ViewportContainer" index="1"]
arvr = false
size = Vector2( 0, 0 )
own_world = true
world = SubResource( 2 )
transparent_bg = false
msaa = 0
hdr = true
disable_3d = false
usage = 2
debug_draw = 0
render_target_v_flip = false
render_target_clear_mode = 0
render_target_update_mode = 3
audio_listener_enable_2d = false
audio_listener_enable_3d = false
physics_object_picking = false
gui_disable_input = false
gui_snap_controls_to_pixels = true
shadow_atlas_size = 0
shadow_atlas_quad_0 = 2
shadow_atlas_quad_1 = 2
shadow_atlas_quad_2 = 3
shadow_atlas_quad_3 = 4
[node name="prompt" type="LineEdit" parent="ui" index="2"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 175.0
margin_top = 550.0
margin_right = 850.0
margin_bottom = 600.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 1
size_flags_horizontal = 1
size_flags_vertical = 1
focus_mode = 2
context_menu_enabled = true
placeholder_text = "Click here and type to start entering commands"
placeholder_alpha = 0.6
caret_blink = true
caret_blink_speed = 0.65
caret_position = 0
script = ExtResource( 2 )
_sections_unfolded = [ "Caret", "Placeholder", "Rect" ]
[node name="right sidebar" type="VBoxContainer" parent="ui" index="3"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 850.0
margin_right = 1025.0
margin_bottom = 600.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 0
_sections_unfolded = [ "Rect" ]
[node name="help" type="Button" parent="ui/right sidebar" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 175.0
margin_bottom = 38.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
group = null
text = "Help"
icon = ExtResource( 3 )
flat = false
align = 1
_sections_unfolded = [ "Rect", "Textures", "Theme", "Visibility" ]
[node name="MapSizeContainer" parent="ui/right sidebar" index="1" instance=ExtResource( 4 )]
margin_top = 42.0
margin_bottom = 56.0
alignment = 2
[node name="timer" parent="ui/right sidebar" index="2" instance=ExtResource( 5 )]
margin_top = 60.0
margin_bottom = 260.0
rect_min_size = Vector2( 175, 200 )
[node name="resources" parent="ui/right sidebar" index="3" instance=ExtResource( 6 )]
margin_top = 264.0
margin_bottom = 464.0
rect_min_size = Vector2( 175, 200 )
[node name="help_popup" type="PopupPanel" parent="ui" index="4"]
editor/display_folded = true
visible = false
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 166.0
margin_top = 2.0
margin_right = 852.0
margin_bottom = 539.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
popup_exclusive = true
script = ExtResource( 7 )
_sections_unfolded = [ "Popup" ]
[node name="Label" type="Label" parent="ui/help_popup" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 310.0
margin_top = 5.0
margin_right = 350.0
margin_bottom = 19.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
text = "Help"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="ToolButton" type="ToolButton" parent="ui/help_popup" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 5.0
margin_top = 5.0
margin_right = 52.0
margin_bottom = 27.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
group = null
text = "Close"
flat = true
align = 1
[node name="world" type="Node2D" parent="." index="1"]
z_index = -1
_sections_unfolded = [ "Transform", "Z Index" ]
[connection signal="toggled" from="ui/left sidebar/toggleWorldButton" to="." method="_on_toggleWorldButton_toggled"]
[connection signal="gui_input" from="ui/prompt" to="ui/prompt" method="_on_prompt_gui_input"]
[connection signal="text_entered" from="ui/prompt" to="." method="_on_prompt_text_entered"]
[connection signal="text_entered" from="ui/prompt" to="ui/prompt" method="_on_prompt_text_entered"]
[connection signal="pressed" from="ui/right sidebar/help" to="ui/help_popup" method="_on_help_pressed"]
[connection signal="skip_presssed" from="ui/right sidebar/timer" to="." method="_on_timer_skip_presssed"]
[connection signal="pressed" from="ui/help_popup/ToolButton" to="ui/help_popup" method="_on_ToolButton_pressed"]

23
game/help_popup.gd Normal file
View File

@ -0,0 +1,23 @@
extends PopupPanel
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass
func _on_help_pressed():
self.popup()
func _on_ToolButton_pressed():
self.hide()

View File

@ -0,0 +1,22 @@
extends Node2D
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
export(int) var height;
export(int) var width;
export(Vector2) var origin = Vector2(0, 0)
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass
func get_level_size():
return Vector2(self.width, self.height)

View File

@ -0,0 +1,37 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://levels/sample/level.gd" type="Script" id=1]
[ext_resource path="res://levels/sample/terrain.tscn" type="PackedScene" id=2]
[ext_resource path="res://levels/tilesets/default/default.tres" type="TileSet" id=3]
[node name="level" type="Node2D"]
script = ExtResource( 1 )
height = 19
width = 32
origin = Vector2( 0, 0 )
[node name="terrain" parent="." index="0" instance=ExtResource( 2 )]
[node name="objects" type="TileMap" parent="." index="1"]
mode = 0
tile_set = ExtResource( 3 )
cell_size = Vector2( 32, 32 )
cell_quadrant_size = 16
cell_custom_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
cell_half_offset = 2
cell_tile_origin = 0
cell_y_sort = false
cell_clip_uv = false
collision_use_kinematic = false
collision_friction = 1.0
collision_bounce = 0.0
collision_layer = 1
collision_mask = 1
occluder_light_mask = 1
format = 1
tile_data = PoolIntArray( 196612, 8, 0, 196624, 7, 0 )
_sections_unfolded = [ "Cell" ]

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" tiledversion="1.0.3" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="32" tileheight="32" nextobjectid="1">
<tileset firstgid="1" source="../../tilesets/default/default.tsx"/>
<layer name="Tile Layer 1" width="50" height="50">
<data encoding="csv">
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,
1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,
4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,1,1,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,4,4,4,4,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,4,1,1,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,4,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,4,4,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
</data>
</layer>
</map>

View File

@ -0,0 +1,20 @@
[remap]
importer="vnen.tiled_importer"
type="PackedScene"
valid=false
[deps]
source_file="res://levels/sample/sample_level.tmx"
source_md5="c93c2b42ad236f11d839e7afb7ef89ab"
[params]
custom_properties=false
tile_metadata=true
uv_clip=true
image_flags=7
embed_internal_images=true
save_tiled_properties=false
post_import_script=""

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset name="ld41" tilewidth="32" tileheight="32" tilecount="6" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="32" height="32" source="png/water.png"/>
</tile>
<tile id="1">
<image width="32" height="32" source="png/road_tee.png"/>
</tile>
<tile id="2">
<image width="32" height="32" source="png/road_straight.png"/>
</tile>
<tile id="3">
<image width="32" height="32" source="png/grass.png"/>
</tile>
<tile id="4">
<image width="32" height="32" source="png/road_single.png"/>
</tile>
<tile id="5">
<image width="32" height="32" source="png/road_cross.png"/>
</tile>
</tileset>

View File

@ -0,0 +1,20 @@
[remap]
importer="vnen.tiled_tileset_importer"
type="TileSet"
valid=false
[deps]
source_file="res://levels/sample/sample_level.tsx"
source_md5="093f655dca7c76883d0057a4d3963412"
[params]
custom_properties=true
tile_metadata=true
image_flags=7
embed_internal_images=true
save_tiled_properties=true
apply_offset=false
post_import_script=""

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,102 @@
[gd_resource type="TileSet" load_steps=10 format=2]
[ext_resource path="res://levels/tilesets/default/png/grass.png" type="Texture" id=1]
[ext_resource path="res://levels/tilesets/default/png/water.png" type="Texture" id=2]
[ext_resource path="res://levels/tilesets/default/png/road_cross.png" type="Texture" id=3]
[ext_resource path="res://levels/tilesets/default/png/road_single.png" type="Texture" id=4]
[ext_resource path="res://levels/tilesets/default/png/road_straight.png" type="Texture" id=5]
[ext_resource path="res://levels/tilesets/default/png/road_tee.png" type="Texture" id=6]
[ext_resource path="res://levels/tilesets/default/png/bridge.png" type="Texture" id=7]
[ext_resource path="res://levels/tilesets/default/png/house.png" type="Texture" id=8]
[ext_resource path="res://levels/tilesets/default/png/farm.png" type="Texture" id=9]
[resource]
0/name = "Grass"
0/texture = ExtResource( 1 )
0/tex_offset = Vector2( 0, 0 )
0/modulate = Color( 1, 1, 1, 1 )
0/region = Rect2( 0, 0, 0, 0 )
0/is_autotile = false
0/occluder_offset = Vector2( 0, 0 )
0/navigation_offset = Vector2( 0, 0 )
0/shapes = [ ]
1/name = "Water"
1/texture = ExtResource( 2 )
1/tex_offset = Vector2( 0, 0 )
1/modulate = Color( 1, 1, 1, 1 )
1/region = Rect2( 0, 0, 0, 0 )
1/is_autotile = false
1/occluder_offset = Vector2( 0, 0 )
1/navigation_offset = Vector2( 0, 0 )
1/shapes = [ ]
2/name = "Road (Cross)"
2/texture = ExtResource( 3 )
2/tex_offset = Vector2( 0, 0 )
2/modulate = Color( 1, 1, 1, 1 )
2/region = Rect2( 0, 0, 0, 0 )
2/is_autotile = false
2/occluder_offset = Vector2( 0, 0 )
2/navigation_offset = Vector2( 0, 0 )
2/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"shape": null,
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
3/name = "Road (End)"
3/texture = ExtResource( 4 )
3/tex_offset = Vector2( 0, 0 )
3/modulate = Color( 1, 1, 1, 1 )
3/region = Rect2( 0, 0, 0, 0 )
3/is_autotile = false
3/occluder_offset = Vector2( 0, 0 )
3/navigation_offset = Vector2( 0, 0 )
3/shapes = [ ]
4/name = "Road (Straight)"
4/texture = ExtResource( 5 )
4/tex_offset = Vector2( 0, 0 )
4/modulate = Color( 1, 1, 1, 1 )
4/region = Rect2( 0, 0, 0, 0 )
4/is_autotile = false
4/occluder_offset = Vector2( 0, 0 )
4/navigation_offset = Vector2( 0, 0 )
4/shapes = [ ]
5/name = "Road (Tee)"
5/texture = ExtResource( 6 )
5/tex_offset = Vector2( 0, 0 )
5/modulate = Color( 1, 1, 1, 1 )
5/region = Rect2( 0, 0, 0, 0 )
5/is_autotile = false
5/occluder_offset = Vector2( 0, 0 )
5/navigation_offset = Vector2( 0, 0 )
5/shapes = [ ]
6/name = "Bridge"
6/texture = ExtResource( 7 )
6/tex_offset = Vector2( 0, 0 )
6/modulate = Color( 1, 1, 1, 1 )
6/region = Rect2( 0, 0, 0, 0 )
6/is_autotile = false
6/occluder_offset = Vector2( 0, 0 )
6/navigation_offset = Vector2( 0, 0 )
6/shapes = [ ]
7/name = "House"
7/texture = ExtResource( 8 )
7/tex_offset = Vector2( 0, 0 )
7/modulate = Color( 1, 1, 1, 1 )
7/region = Rect2( 0, 0, 0, 0 )
7/is_autotile = false
7/occluder_offset = Vector2( 0, 0 )
7/navigation_offset = Vector2( 0, 0 )
7/shapes = [ ]
8/name = "Farm"
8/texture = ExtResource( 9 )
8/tex_offset = Vector2( 0, 0 )
8/modulate = Color( 1, 1, 1, 1 )
8/region = Rect2( 0, 0, 0, 0 )
8/is_autotile = false
8/occluder_offset = Vector2( 0, 0 )
8/navigation_offset = Vector2( 0, 0 )
8/shapes = [ ]
_sections_unfolded = [ "0", "1", "2", "3", "4", "5", "6", "7", "8" ]

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<tileset name="ld41" tilewidth="32" tileheight="32" tilecount="6" columns="0">
<grid orientation="orthogonal" width="1" height="1"/>
<tile id="0">
<image width="32" height="32" source="png/water.png"/>
</tile>
<tile id="1">
<image width="32" height="32" source="png/road_tee.png"/>
</tile>
<tile id="2">
<image width="32" height="32" source="png/road_straight.png"/>
</tile>
<tile id="3">
<image width="32" height="32" source="png/grass.png"/>
</tile>
<tile id="4">
<image width="32" height="32" source="png/road_single.png"/>
</tile>
<tile id="5">
<image width="32" height="32" source="png/road_cross.png"/>
</tile>
</tileset>

View File

@ -0,0 +1,20 @@
[remap]
importer="vnen.tiled_tileset_importer"
type="TileSet"
valid=false
[deps]
source_file="res://levels/tilesets/default/default.tsx"
source_md5="093f655dca7c76883d0057a4d3963412"
[params]
custom_properties=true
tile_metadata=false
image_flags=7
embed_internal_images=false
save_tiled_properties=false
apply_offset=false
post_import_script=""

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/bridge.png-2db149efb21bb9bbfac413be9641e085.stex"
[deps]
source_file="res://levels/tilesets/default/png/bridge.png"
source_md5="e8cbf8545804a79b256b9e3a3735460b"
dest_files=[ "res://.import/bridge.png-2db149efb21bb9bbfac413be9641e085.stex" ]
dest_md5="a95a2c1428670fb99095bc713ac6f243"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/farm.png-defc6fd14185d12b7de4e2cbc06ae785.stex"
[deps]
source_file="res://levels/tilesets/default/png/farm.png"
source_md5="a8a0165c22ff60a9e8226a5079ffecd0"
dest_files=[ "res://.import/farm.png-defc6fd14185d12b7de4e2cbc06ae785.stex" ]
dest_md5="2f62792167780bc1689e621e951723df"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/grass.png-b7950067027b0d689b097507982efb2a.stex"
[deps]
source_file="res://levels/tilesets/default/png/grass.png"
source_md5="3d1ff9f41d8a9f35816223b3706d4aae"
dest_files=[ "res://.import/grass.png-b7950067027b0d689b097507982efb2a.stex" ]
dest_md5="93bcdde3baabe028c90e91ca85e95f28"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex"
[deps]
source_file="res://levels/tilesets/default/png/house.png"
source_md5="8bac60f2c16f7350223cb826508d06ea"
dest_files=[ "res://.import/house.png-90b2798c1dfceadf2b73486f421d1f9c.stex" ]
dest_md5="69b1c2780e71562bc7c1b04aebda2ac8"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/road_cross.png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex"
[deps]
source_file="res://levels/tilesets/default/png/road_cross.png"
source_md5="30767db6f91eac1ea98e7742b8abaa08"
dest_files=[ "res://.import/road_cross.png-c9952a90dbaaecffbc9e220ef4dbdc8d.stex" ]
dest_md5="a89dbe7c59146b4985ce9c6a7f9364ef"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/road_single.png-cf1cddecd73dd335a077840111cb9343.stex"
[deps]
source_file="res://levels/tilesets/default/png/road_single.png"
source_md5="17801f7f903b615e6dfd371e21a1f3a8"
dest_files=[ "res://.import/road_single.png-cf1cddecd73dd335a077840111cb9343.stex" ]
dest_md5="5e11880b21baef78db928866a5184cfa"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/road_straight.png-87dff282d0a16c1706f7235cbdb25bb6.stex"
[deps]
source_file="res://levels/tilesets/default/png/road_straight.png"
source_md5="b21b1e9a9c0cf458df8363de9ca44cc0"
dest_files=[ "res://.import/road_straight.png-87dff282d0a16c1706f7235cbdb25bb6.stex" ]
dest_md5="9a59eaa499d6f84258b5fc36e37111df"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/road_tee.png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex"
[deps]
source_file="res://levels/tilesets/default/png/road_tee.png"
source_md5="080f804e7072a19355aa4b5ee53654e7"
dest_files=[ "res://.import/road_tee.png-1e119bbfbb4a1c0ab0627bf2e30a96d2.stex" ]
dest_md5="ee99abdaa173ac39ed31a360b170d4ac"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex"
[deps]
source_file="res://levels/tilesets/default/png/water.png"
source_md5="96a9ed8fd6d25eaf7ba8656bf1072fd8"
dest_files=[ "res://.import/water.png-cfef9686b4b28753118fd0b3683f052e.stex" ]
dest_md5="4100211fef875f35a450c8e296a15f03"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

5
game/mainmenu.tscn Normal file
View File

@ -0,0 +1,5 @@
[gd_scene format=2]
[node name="Node" type="Node"]

View File

@ -10,7 +10,7 @@ config_version=3
[application] [application]
config/name="Godot3 Project Template" config/name="LD41 : Sim S****y"
run/main_scene="res://tests/test-2d.tscn" run/main_scene="res://tests/test-2d.tscn"
boot_splash/fullsize=false boot_splash/fullsize=false
config/icon="res://icon.png" config/icon="res://icon.png"
@ -21,7 +21,7 @@ window/stretch/shrink="1"
[editor_plugins] [editor_plugins]
enabled=PoolStringArray( "gut" ) enabled=PoolStringArray( "tiled_importer" )
[rendering] [rendering]

View File

@ -15,7 +15,7 @@ gradient = SubResource( 1 )
width = 1024 width = 1024
_sections_unfolded = [ "Resource" ] _sections_unfolded = [ "Resource" ]
[node name="test-2d" type="Node" index="0"] [node name="test-2d" type="Node"]
script = ExtResource( 1 ) script = ExtResource( 1 )

BIN
game/ui/clock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

32
game/ui/clock.png.import Normal file
View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex"
[deps]
source_file="res://ui/clock.png"
source_md5="c51f169ca04f3f1454f4a36aca7b902a"
dest_files=[ "res://.import/clock.png-09b4a660a58c86478b8ce31163fe5a4d.stex" ]
dest_md5="45be711dfb788be0dcd6c54e33bb9fda"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -0,0 +1,33 @@
extends Panel
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
var resources = [
'population',
'jobs',
'food',
'resources',
'effort',
'goods'
]
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
func update_resources(r):
print(self.resources)
for i in self.resources:
if not i:
continue
var v = r[i]
get_node('HBoxContainer/%s/progress' %i).value = v
get_node('HBoxContainer/%s' %i).hint_tooltip = '%s: %d' %[i, v]
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass

View File

@ -0,0 +1,449 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://ui/current_resources.gd" type="Script" id=1]
[ext_resource path="res://ui/progress_texture.png" type="Texture" id=2]
[node name="resources" type="Panel"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 64.0
margin_right = 175.0
margin_bottom = 264.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
script = ExtResource( 1 )
_sections_unfolded = [ "Rect" ]
[node name="HBoxContainer" type="HBoxContainer" parent="." index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 179.0
margin_bottom = 197.0
rect_min_size = Vector2( 175, 200 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 1
_sections_unfolded = [ "Rect" ]
[node name="population" type="VBoxContainer" parent="HBoxContainer" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 4.0
margin_right = 29.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/population" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/population" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="jobs" type="VBoxContainer" parent="HBoxContainer" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 33.0
margin_right = 58.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/jobs" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/jobs" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="food" type="VBoxContainer" parent="HBoxContainer" index="2"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 62.0
margin_right = 87.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Hint", "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/food" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/food" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="resources" type="VBoxContainer" parent="HBoxContainer" index="3"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 91.0
margin_right = 116.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/resources" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/resources" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="effort" type="VBoxContainer" parent="HBoxContainer" index="4"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 120.0
margin_right = 145.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/effort" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/effort" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="goods" type="VBoxContainer" parent="HBoxContainer" index="5"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 149.0
margin_right = 174.0
margin_bottom = 200.0
rect_min_size = Vector2( 25, 0 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 2
_sections_unfolded = [ "Rect" ]
[node name="progress" type="TextureProgress" parent="HBoxContainer/goods" index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 21.0
margin_right = 25.0
margin_bottom = 196.0
rect_min_size = Vector2( 0, 175 )
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = ExtResource( 2 )
fill_mode = 3
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Rect", "Textures" ]
[node name="icon" type="TextureRect" parent="HBoxContainer/goods" index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 200.0
margin_right = 25.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1

BIN
game/ui/help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

32
game/ui/help.png.import Normal file
View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/help.png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex"
[deps]
source_file="res://ui/help.png"
source_md5="b6dca20b5d1cd4c2fa015b2a78630632"
dest_files=[ "res://.import/help.png-e2b8cfcaccb3e2cf0ea7059f79a1642c.stex" ]
dest_md5="0dcba7b3df6253b41024d662b57f5e15"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

19
game/ui/mapsize.gd Normal file
View File

@ -0,0 +1,19 @@
extends HBoxContainer
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
func set_level_size(size):
get_node('mapsize').text = '%d x %d' % [size.x, size.y]
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass

77
game/ui/mapsize.tscn Normal file
View File

@ -0,0 +1,77 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://ui/mapsize.gd" type="Script" id=1]
[node name="MapSizeContainer" type="HBoxContainer"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 175.0
margin_bottom = 14.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 0
script = ExtResource( 1 )
[node name="icon" type="TextureRect" parent="." index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_bottom = 14.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="Label" type="Label" parent="." index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 4.0
margin_right = 61.0
margin_bottom = 14.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
text = "Map Size"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="mapsize" type="Label" parent="." index="2"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 65.0
margin_right = 96.0
margin_bottom = 14.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
text = "X x X"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

View File

@ -0,0 +1,32 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/progress_texture.png-457c15d58017cd09c9bd2f6adbe8ac4e.stex"
[deps]
source_file="res://ui/progress_texture.png"
source_md5="1f3e052e1febf74611f78d634c3e4a30"
dest_files=[ "res://.import/progress_texture.png-457c15d58017cd09c9bd2f6adbe8ac4e.stex" ]
dest_md5="d304153aa385c6eb7be032a85fdeef13"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

45
game/ui/prompt.gd Normal file
View File

@ -0,0 +1,45 @@
extends LineEdit
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass
# This only fires when a user presses enter
func _on_prompt_text_entered(new_text):
print(text)
pass # replace with function body
# Here we can do tab complete, ctrl-c clear line, etc.
# ctrl-r search
func _on_prompt_gui_input(ev):
# Check if we have focus on the prompt
if not self.has_focus():
return
if ev is InputEventKey and ev.pressed:
if ev.scancode == KEY_C:
# This is Ctrl-c
if ev.get_scancode_with_modifiers() == 268435523:
# Emit signal on clear?
self.clear()
# How to mark input as consumed
if ev.scancode == KEY_TAB:
# @TODO: Autocomplete current text if possible
print("@TODO: Implemement auto-complete")
if ev.scancode == KEY_R:
# This is Ctrl-r
if ev.get_scancode_with_modifiers() == 268435538:
# Emit signal to start search
print("@TODO Implementare Ctrl-r Search")

View File

@ -0,0 +1,21 @@
extends VBoxContainer
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
export(Texture) var icon;
export(String) var name;
export(Texture) var progress_texture;
func _ready():
# Called every time the node is added to the scene.
# Initialization here
if this.icon:
get_node('TextureRect').texture = this.icon
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass

View File

@ -0,0 +1,91 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://ui/resource_progress_bar.gd" type="Script" id=1]
[node name="VBoxContainer" type="VBoxContainer"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1.0
margin_bottom = 40.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
alignment = 0
script = ExtResource( 1 )
icon = null
name = null
progress_texture = null
[node name="ProgressBar" type="TextureProgress" parent="." index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1.0
margin_bottom = 1.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 0
min_value = 0.0
max_value = 100.0
step = 1.0
page = 0.0
value = 0.0
exp_edit = false
rounded = false
texture_under = null
texture_over = null
texture_progress = null
radial_fill_degrees = 360.0
radial_center_offset = Vector2( 0, 0 )
nine_patch_stretch = false
_sections_unfolded = [ "Percent" ]
[node name="TextureRect" type="TextureRect" parent="." index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 5.0
margin_right = 1.0
margin_bottom = 5.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
stretch_mode = 0
[node name="Label" type="Label" parent="." index="2"]
visible = false
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 9.0
margin_right = 1.0
margin_bottom = 23.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1

43
game/ui/timer.gd Normal file
View File

@ -0,0 +1,43 @@
extends Panel
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
var t_max = 60.0
var t = 60.0
signal skip_presssed
func set_time_max(t):
self.t_max = t
self.set_time_left(t)
func set_time_left(t):
if t == null && self.t > self.t_max:
self.t = self.t_max
if t <= self.t_max:
self.t = t
get_node('timeleft').text = self.format_time(self.t)
func format_time(t):
var minutes = t / 60;
var seconds = int(t) % 60;
return '%d:%02d' % [minutes, seconds]
func _draw():
pass
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass
func _on_skip_pressed():
emit_signal('skip_pressed')

93
game/ui/timer.tscn Normal file
View File

@ -0,0 +1,93 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://ui/timer.gd" type="Script" id=1]
[ext_resource path="res://ui/clock.png" type="Texture" id=2]
[node name="timer" type="Panel"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_top = 18.0
margin_right = 175.0
margin_bottom = 218.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
script = ExtResource( 1 )
_sections_unfolded = [ "Rect" ]
[node name="TextureRect" type="TextureRect" parent="." index="0"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 175.0
margin_bottom = 175.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 1
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
texture = ExtResource( 2 )
stretch_mode = 0
_sections_unfolded = [ "Rect" ]
[node name="timeleft" type="Label" parent="." index="1"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 39.0
margin_top = 179.0
margin_right = 131.0
margin_bottom = 210.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 2
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 4
text = "asdf
"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
_sections_unfolded = [ "Hint", "Rect" ]
[node name="skip" type="Button" parent="." index="2"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = 103.0
margin_top = 173.0
margin_right = 174.0
margin_bottom = 200.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
group = null
text = "Skip"
flat = false
align = 1
_sections_unfolded = [ "Anchor", "Grow Direction", "Hint", "Margin" ]
[connection signal="pressed" from="skip" to="." method="_on_skip_pressed"]