Skip to content

Commit

Permalink
view and control split
Browse files Browse the repository at this point in the history
  • Loading branch information
ttwings committed Aug 21, 2022
1 parent 477c252 commit 19d5a85
Show file tree
Hide file tree
Showing 45 changed files with 2,002 additions and 349 deletions.
7 changes: 6 additions & 1 deletion AnimTest.gd
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,10 @@ extends Node2D

func _ready():
Anima.begin(self)\
.then(Anima.Node(self).anima_position_x(640,3))\
.then(Anima.Node(get_node("Sprite")).anima_position_x(640,3))\
.play()


# 玩家节点向地图节点发送移动信号
# 地图节点控制玩家节点移动
# 移动完成后,玩家节点坐标变化
12 changes: 0 additions & 12 deletions Main.gd
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
extends Control
# class_name Main

# Declare member variables here. Examples:
# var a = 2
# var b = "text"
onready var game = $Game
onready var ui = $UI

# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
38 changes: 6 additions & 32 deletions Main.tscn

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions core/Attack.gd
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@ enum AP_damage_effects{none, daze, fear, silence, confusion}


func _init(alias = "", min_damage = 0, max_damage = 0, critical_rate = 0.05, critical_multiple = 2, attack_type = "", attack_range = 1, attack_distance = 1, attack_speed = 100, attack_animation = "", attack_sound = ""):
self.alias = alias
self.min_damage = min_damage
self.max_damage = max_damage
self.critical_rate = critical_rate
self.critical_multiple = critical_multiple
self.attack_type = attack_type
self.attack_range = attack_range
self.attack_distance = attack_distance
self.attack_speed = attack_speed
self.attack_animation = attack_animation
self.attack_sound = attack_sound
self.effects = {}
self.alias = alias
self.min_damage = min_damage
self.max_damage = max_damage
self.critical_rate = critical_rate
self.critical_multiple = critical_multiple
self.attack_type = attack_type
self.attack_range = attack_range
self.attack_distance = attack_distance
self.attack_speed = attack_speed
self.attack_animation = attack_animation
self.attack_sound = attack_sound
self.effects = {}
16 changes: 8 additions & 8 deletions core/Base.gd
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,16 @@ func del_append(base:Base):

#查找是否有目标id的append
func find_append(id:String):
for base in appends:
if base.id == id:
return base
return null
for base in appends:
if base.id == id:
return base
return null
# 判断是否含有目标id的append
func has_append(id:String):
for base in appends:
if base.id == id:
return true
return false
for base in appends:
if base.id == id:
return true
return false

#是否包含所有标签 tabs 可以是多个标签如“xxx xxx”
func has_all_tabs(tabs):
Expand Down
2 changes: 2 additions & 0 deletions core/Character.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
extends Thing

14 changes: 7 additions & 7 deletions core/Defense.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ var ap_def = 0
var effect_def = {}
# 添加一个效果防御
func add_effect_def(effect_name, value):
effect_def[effect_name] = value
return
effect_def[effect_name] = value
return
# 删除一个效果防御
func del_effect_def(effect_name):
if effect_name in effect_def:
effect_def.erase(effect_name)
return
return
if effect_name in effect_def:
effect_def.erase(effect_name)
return
return
# 防御
func defend(attack:Attack):
pass
pass
7 changes: 7 additions & 0 deletions core/Fighter.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends Resource
class_name Fighter

var race : Race

func _init(r):
race = r
12 changes: 12 additions & 0 deletions core/Hero.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@ class_name Hero

var player_id = "ttwings"

# 种族的基本属性
export(Resource) var race
# 战斗属性、动作
export(Resource) var fighter
# 接收控制
export(Resource) var controller

var map

func Grap():
var items = []
for ob in map.get_objects_in_cell(fighter.get_map_pos()):
if ob.item:
items.append(ob)

2 changes: 1 addition & 1 deletion core/Item.gd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
extends Buff
extends Thing
class_name Item

signal onSetNum()
Expand Down
60 changes: 13 additions & 47 deletions core/Monster.gd
Original file line number Diff line number Diff line change
@@ -1,53 +1,19 @@
extends Actor
class_name Monster
# view is MonsterV

# race is Race
export(Resource) var race
# 角色名称
export(String) var alias
# 玩家名称
export(String) var character_name
# 设置基本属性,肉身HP,灵力MP,神识AP
export(int) var Hp = 0
export(int) var Mp = 0
export(int) var Ap = 0
export(int) var Hp_max = 0
export(int) var Mp_max = 0
export(int) var Ap_max = 0
export(int) var Hp_temp = 0
export(int) var Mp_temp = 0
export(int) var Ap_temp = 0
# 设置等级
export(int) var level = 0
# 设置经验值
export(int) var experience = 0

# 获得最大肉体值
func get_max_hp():
var maxhp = 0
if race and race is Race:
maxhp = int(rand_range(race.Hp_dice,level * race.Hp_dice))
else:
print("race is ",race)
return maxhp
return maxhp
# 攻击方式
export(Dictionary) var attacks = {}
# 目前的攻击方式
export(String) var current_attack = ""
# 防御方式
export(Dictionary) var defenses = {}
# 目前的防御方式
export(String) var current_defense = ""

# 获得最大灵力值
func get_max_mp():
var maxmp = 0
if race and race is Race:
maxmp = int(rand_range(race.Hp_dice,level * race.Hp_dice))
else:
print("race is ",race)
return maxmp
return maxmp
func _init(r):
race = r

# 获得最大神识值
func get_max_ap():
var maxap = 0
if race and race is Race:
maxap = int(rand_range(race.Hp_dice,level * race.Hp_dice))
else:
print("race is ",race)
return maxap
return maxap


10 changes: 1 addition & 9 deletions core/Race.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ class_name Race
# 当设置属性时
# signal on_set_attribute(id)
# 种类
export(String) var race
export(String) var type
# 名称
export(String) var alias
# 体型
Expand Down Expand Up @@ -34,14 +34,6 @@ export(int) var fortitude = 0
export(int) var reflex = 0
# 意志
export(int) var will = 0
# 攻击方式
export(Dictionary) var attacks = {}
# 目前的攻击方式
export(String) var current_attack = ""
# 防御方式
export(Dictionary) var defenses = {}
# 目前的防御方式
export(String) var current_defense = ""

# 遵守法律
export(int) var law = 0
Expand Down
2 changes: 1 addition & 1 deletion core/Scroll.gd
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ var quantity = 1
var level = 1

func use():
pass
pass
93 changes: 36 additions & 57 deletions core/Thing.gd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
extends Node2D
extends Resource
class_name Thing

tool
# const color for rice text label bbcode
const NOR = "[/color]"
const BLK = "[color=#000000]"
Expand Down Expand Up @@ -37,84 +37,63 @@ signal about_to_act(delta)

var map

export(String) var alias = "thing"
export(String,MULTILINE) var description = ""
var alias = "thing"
var description = "this is a thing"
var apperence = "thing"
#export(Texture) var sprite_path setget _set_sprite_path

export(Texture) var sprite_path setget _set_sprite_path

export(bool) var blocks_movement = false
export(bool) var blocks_sight = false
export(bool) var stay_visible = false
var blocks_movement = false
var blocks_sight = false
var stay_visible = false

var found = false
# current map cell
var cell = Vector2() setget _set_cell, _get_cell
# components dictionary
var components = {}
var item
var race
var fighter
var ai
# status effects dictionary
var status_effects = {}
# AI
var ai
# sid
var sid = 0
# dbpath
var dbpath = ""
# get save dictionary
func get_save_dict():
var data = {
"sid": sid,
"dbpath": dbpath,
"cell": {"x":self.cell.x, "y":self.cell.y},
"components": {},
"status_effects": status_effects,
"found": found
}
for component in components:
if self.components[component].has_method("get_save_dict"):
data["components"][component] = self.components[component].get_save_dict()
return data
var data = {
"sid": sid,
"dbpath": dbpath,
"cell": {"x":self.cell.x, "y":self.cell.y},
"components": {},
"status_effects": status_effects,
"found": found
}
return data

func get_message_name():
if "player" in self.components:
return "你"
else:
return self.alias
if "player" in self.components:
return "你"
else:
return self.alias

func kill():
if self.blocks_movement or self.blocks_sight:
emit_signal("map_cell_changed", self.cell, null)
queue_free()
if self.blocks_movement or self.blocks_sight:
emit_signal("map_cell_changed", self.cell, null)

func _rpg_process(delta = 5):
for status in self.status_effects:
status._rpg_process(delta)
if "AI" in self.components:
self.components["AI"].act(delta)
for status in self.status_effects:
status._rpg_process(delta)
if ai :
ai.act(delta)

func _ready():
connect("about_to_act",self,"_on_about_to_act")
add_to_group("things")
if self.blocks_movement:
add_to_group("blockers")
if self.blocks_sight:
add_to_group("sight_blockers")

func _get_cell():
if map is TileMap:
return map.world_to_map(position)
return cell

func _set_cell(cell):
var old = self.cell
self.cell = cell
self.position = map.map_to_world(cell)
emit_signal("map_cell_changed", old, cell)

func _set_sprite_path(path):
sprite_path = path
if is_inside_tree():
$Sprite.texture = sprite_path
var old = self.cell
self.cell = cell
self.position = map.map_to_world(cell)
emit_signal("map_cell_changed", old, cell)

func _on_about_to_act(delta):
_rpg_process(delta)
_rpg_process(delta)
Loading

0 comments on commit 19d5a85

Please sign in to comment.