online multiplayer chess game (note server currently down)
Diffstat (limited to 'SanParse/Move.gd')
-rw-r--r--SanParse/Move.gd124
1 files changed, 0 insertions, 124 deletions
diff --git a/SanParse/Move.gd b/SanParse/Move.gd
deleted file mode 100644
index 66fbbd7..0000000
--- a/SanParse/Move.gd
+++ /dev/null
@@ -1,124 +0,0 @@
-class_name Move
-extends Resource
-
-enum CHECKTYPES { NONE, CHECK, CHECKMATE }
-var generated_from := ""
-var piece := -1
-var move_kind: MoveKind
-var promotion := -1
-# var annotation := "" # later
-var check_type := 0
-var is_capture := false
-
-
-func _init(newpiece: int, newmove, capture := false) -> void:
- piece = newpiece
- is_capture = capture
- move_kind = MoveKind.new(newmove)
-
-
-static func castle_type(type: String) -> int:
- return MoveKind.CASTLETYPES.QUEEN_SIDE if type == "O-O-O" else MoveKind.CASTLETYPES.KING_SIDE
-
-
-func set_check_type(type: String) -> Move:
- match type:
- "+":
- check_type = CHECKTYPES.CHECK
- "#":
- check_type = CHECKTYPES.CHECKMATE
- _:
- check_type = CHECKTYPES.NONE
- return self
-
-
-func compile() -> String: # compiles the structure to a san
- var res := ""
- match move_kind.type:
- MoveKind.CASTLE:
- res += move_kind.to_str()
- MoveKind.NORMAL:
- res += to_str(piece)
- res += Utils.to_algebraic(move_kind.data[0])
- res += "x" if is_capture else ""
- res += Utils.to_algebraic(move_kind.data[1])
- res += "=" + to_str(promotion) if promotion != -1 else ""
- match check_type:
- CHECKTYPES.CHECK:
- res += "+"
- CHECKTYPES.CHECKMATE:
- res += "#"
- return res.strip_edges()
-
-
-static func to_str(type: int) -> String:
- return " NBRQK"[type].strip_edges() # if its a pawn, return nothing
-
-
-### fix short san
-func make_long() -> Move:
- if move_kind.type == MoveKind.CASTLE:
- return self
- var newvecs: PoolVector2Array = []
-
- var vectors = move_kind.data
-
- if Piece.is_on_board(vectors[0]): # [0] is the only one with -1(s) possible
- return self
-
- if is_capture:
- newvecs.append(long_helper(vectors[0], true, false, vectors[1]))
- else:
- newvecs.append(long_helper(vectors[0], false, true, vectors[1]))
-
- if newvecs.empty():
- Log.error("cruddlesticks")
- return self
- newvecs.append(vectors[1])
-
- move_kind.data = newvecs
- return self
-
-
-func long_helper(vec: Vector2, attack: bool, move: bool, touch: Vector2):
- if vec.y == -1 and vec.x != -1:
- for y in range(8):
- var spot = Piece.at_pos(Vector2(vec.x, y))
- if long_helper_helper(spot, touch, attack, move):
- return Vector2(vec.x, y)
- elif vec.x == -1 and vec.y != -1:
- for x in range(8):
- var spot = Piece.at_pos(Vector2(x, vec.y))
- if long_helper_helper(spot, touch, attack, move):
- return Vector2(x, vec.y)
- elif vec == Vector2(-1, -1):
- for x in range(8):
- for y in range(8):
- var spot = Piece.at_pos(Vector2(x, y))
- if long_helper_helper(spot, touch, attack, move):
- return Vector2(x, y)
-
-
-func long_helper_helper(spot, touch, attack, move):
- return Utils.spotispiece(piece, spot) and spot.white == Globals.turn and spot.can_touch(touch, attack, move)
-
-
-class MoveKind:
- extends Resource
- enum CASTLETYPES { NONE, QUEEN_SIDE, KING_SIDE }
- enum { NONE, NORMAL, CASTLE }
- var type := 0
- var data # string OR array
-
- func _init(something):
- if typeof(something) == TYPE_ARRAY and len(something) == 2:
- type = NORMAL
- data = PoolVector2Array(something)
- elif typeof(something) == TYPE_INT:
- type = CASTLE
- data = something
- else:
- assert(false)
-
- func to_str() -> String:
- return "O-O-O" if data == CASTLETYPES.QUEEN_SIDE else "O-O"