refactor proj and bring new design

This commit is contained in:
yyc12345 2022-08-28 13:32:05 +08:00
parent 449b95e036
commit fdcdbdc30a
151 changed files with 2118 additions and 1422 deletions

4
.gitattributes vendored Normal file
View File

@ -0,0 +1,4 @@
*.import eol=lf
*.tscn eol=lf
*.godot eol=lf
*.tres eol=lf

225
.gitignore vendored
View File

@ -1,7 +1,7 @@
# my own ban # my own ban
resources/fonts/*.otf src/resources/fonts/*.otf
resources/fonts/*.ttf src/resources/fonts/*.ttf
resources/textures src/resources/textures/ballance
# Godot-specific ignores # Godot-specific ignores
.import/ .import/
@ -15,3 +15,222 @@ export_presets.cfg
.mono/ .mono/
data_*/ data_*/
.vs/ .vs/
## ------------------------Visual Studio normal settings---------------------------------------
## Ignore Visual Studio build files, cache files, and rubbish files.
# Windows
Thumbs.db
ehthumbs.db
Desktop.ini
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Visual Studio 2015 cache/options directory
.vs/
# Build result
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
## TODO: Comment the next line if you want to checkin your
## web deploy settings but do note that will include unencrypted
## passwords
#*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml

View File

@ -1,19 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BallanceStalker", "BallanceStalker.csproj", "{55B5D158-D2E5-4A32-9C96-5878BD379AD3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
ExportDebug|Any CPU = ExportDebug|Any CPU
ExportRelease|Any CPU = ExportRelease|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
EndGlobalSection
EndGlobal

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# BallanceStalker
A software created by a sad and withered person.

View File

@ -1,21 +0,0 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/btn_click.wav-10bd4155242a075bd68a0c5c45b66a23.sample"
[deps]
source_file="res://resources/user_interface/soundeffects/btn_click.wav"
dest_files=[ "res://.import/btn_click.wav-10bd4155242a075bd68a0c5c45b66a23.sample" ]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop=false
compress/mode=0

View File

@ -1,11 +0,0 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/btn-small-deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,11 +0,0 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/lineedit_borderless_deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,11 +0,0 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/lineedit_borderless_select.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,11 +0,0 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/lineedit_deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/hslider-grabber-deselect.png-dbd5e229e735b61fac88b8a1fde9e3d5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/hslider-grabber-deselect.png"
dest_files=[ "res://.import/hslider-grabber-deselect.png-dbd5e229e735b61fac88b8a1fde9e3d5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/hslider-grabber-select.png-7673e5df914571ff3de950ffc32eb49c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/hslider-grabber-select.png"
dest_files=[ "res://.import/hslider-grabber-select.png-7673e5df914571ff3de950ffc32eb49c.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/lineedit_deselect.png-45991e7209bc02828712ac76f58e16af.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/lineedit_deselect.png"
dest_files=[ "res://.import/lineedit_deselect.png-45991e7209bc02828712ac76f58e16af.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/vscrollbar-grabber-deselect.png-41f1392911c0d83776adf73235c234f7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/vscrollbar-grabber-deselect.png"
dest_files=[ "res://.import/vscrollbar-grabber-deselect.png-41f1392911c0d83776adf73235c234f7.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/vscrollbar-grabber-select.png-72f3de637b203963d3a8fc9ea0b65abf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/vscrollbar-grabber-select.png"
dest_files=[ "res://.import/vscrollbar-grabber-select.png-72f3de637b203963d3a8fc9ea0b65abf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/vscrollbar-scroll-deselect.png-211048eb599996b436cb2b45ed32482b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/vscrollbar-scroll-deselect.png"
dest_files=[ "res://.import/vscrollbar-scroll-deselect.png-211048eb599996b436cb2b45ed32482b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/vscrollbar-scroll-select.png-0642361f149185c68fc0158fd364aa8b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/user_interface/textures/vscrollbar-scroll-select.png"
dest_files=[ "res://.import/vscrollbar-scroll-select.png-0642361f149185c68fc0158fd364aa8b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -1,17 +0,0 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://scenes/stages/MenuManager.tscn" type="PackedScene" id=1]
[ext_resource path="res://scenes/stages/StalkerCore.tscn" type="PackedScene" id=2]
[ext_resource path="res://scripts/GameRoot.cs" type="Script" id=3]
[ext_resource path="res://scenes/stages/ConsolePanel.tscn" type="PackedScene" id=4]
[node name="GameRoot" type="Node"]
script = ExtResource( 3 )
[node name="ConsolePanel" parent="." instance=ExtResource( 4 )]
visible = false
[node name="MenuManager" parent="." instance=ExtResource( 1 )]
visible = false
[node name="StalkerCore" parent="." instance=ExtResource( 2 )]

View File

@ -1,46 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://scenes/user_interface/LineEditBorderless.tscn" type="PackedScene" id=1]
[ext_resource path="res://scripts/stages/ConsolePanel.cs" type="Script" id=2]
[ext_resource path="res://resources/user_interface/default_theme.tres" type="Theme" id=3]
[node name="ConsolePanel" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 3 )
script = ExtResource( 2 )
[node name="CommandInput" parent="." instance=ExtResource( 1 )]
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = -44.0
margin_right = 0.0
margin_bottom = 0.0
size_flags_vertical = 3
placeholder_text = "Input your command here..."
placeholder_alpha = 0.3
caret_blink = true
[node name="ScrollSet" type="Control" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
margin_top = 24.0
margin_right = -48.0
margin_bottom = -64.0
[node name="ScrollBackground" type="ColorRect" parent="ScrollSet"]
anchor_right = 1.0
anchor_bottom = 1.0
color = Color( 0, 0, 0, 0.498039 )
[node name="Scrollbar" type="ScrollContainer" parent="ScrollSet"]
anchor_right = 1.0
anchor_bottom = 1.0
scroll_horizontal_enabled = false
[node name="MessageContainer" type="VBoxContainer" parent="ScrollSet/Scrollbar"]
margin_right = 976.0
margin_bottom = 680.0
size_flags_horizontal = 3
size_flags_vertical = 3

View File

@ -1,13 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://resources/user_interface/default_theme.tres" type="Theme" id=1]
[ext_resource path="res://scenes/stages/menus/MenuMain.tscn" type="PackedScene" id=2]
[ext_resource path="res://scripts/stages/MenuManager.cs" type="Script" id=3]
[node name="MenuManager" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 1 )
script = ExtResource( 3 )
[node name="MenuMain" parent="." instance=ExtResource( 2 )]

View File

@ -1,21 +0,0 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://resources/user_interface/styles/btn_style_select.tres" type="StyleBox" id=1]
[ext_resource path="res://resources/user_interface/styles/btn_style_deselect.tres" type="StyleBox" id=2]
[ext_resource path="res://resources/fonts/fontstyle_normal.tres" type="DynamicFont" id=3]
[ext_resource path="res://scripts/user_interface/ButtonCommon.cs" type="Script" id=4]
[ext_resource path="res://resources/user_interface/soundeffects/btn_click.wav" type="AudioStream" id=5]
[node name="ButtonNormal" type="Button"]
margin_right = 12.0
margin_bottom = 20.0
custom_fonts/font = ExtResource( 3 )
custom_styles/hover = ExtResource( 1 )
custom_styles/pressed = ExtResource( 1 )
custom_styles/focus = ExtResource( 1 )
custom_styles/disabled = ExtResource( 2 )
custom_styles/normal = ExtResource( 2 )
script = ExtResource( 4 )
[node name="AudioClick" type="AudioStreamPlayer" parent="."]
stream = ExtResource( 5 )

View File

@ -1,52 +0,0 @@
using Godot;
using System;
public class GameRoot : Node {
MenuManager mMenuManager;
StalkerCore mStalkerCore;
public override void _Ready() {
mMenuManager = GetNode<MenuManager>("MenuManager");
mStalkerCore = GetNode<StalkerCore>("StalkerCore");
//mMenuManager.Connect(nameof(MenuManager.SetMouseCapture), this, nameof(Proc_MenuManager_SetMouseCapture));
mMenuManager.Connect(nameof(MenuManager.ExitGame), this, nameof(Proc_MenuManager_ExitGame));
//// raw executing this func
//// to set proper status
//Proc_MenuManager_SetMouseCapture();
BallanceStalkerCore.StalkerManager.Singleton.EventControllerChanged += Proc_StalkerManager_EventControllerChanged;
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.None);
}
private void Proc_StalkerManager_EventControllerChanged(BallanceStalkerCore.EventControllerSource obj) {
switch (obj) {
case BallanceStalkerCore.EventControllerSource.None:
Input.SetMouseMode(Input.MouseMode.Captured);
break;
case BallanceStalkerCore.EventControllerSource.Menu:
case BallanceStalkerCore.EventControllerSource.Console:
case BallanceStalkerCore.EventControllerSource.Chat:
Input.SetMouseMode(Input.MouseMode.Visible);
break;
}
}
public override void _Input(InputEvent @event) {
}
//private void Proc_MenuManager_SetMouseCapture() {
// if (mMenuManager.Visible) {
// Input.SetMouseMode(Input.MouseMode.Visible);
// } else {
// Input.SetMouseMode(Input.MouseMode.Captured);
// }
//}
private void Proc_MenuManager_ExitGame() {
GetTree().Notification(MainLoop.NotificationWmQuitRequest);
}
}

View File

@ -1,101 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
public enum LabelConsoleMessageType {
Normal,
Highlight,
Error
}
public class ConsolePanel : Control {
private LineEdit mCmdInput;
private ScrollContainer mScrollbar;
private VScrollBar mScrollbarVChild;
private VBoxContainer mMessageContainer;
private PackedScene mTemplateLabelConsole;
private Queue<LabelConsole> mMessageQueue = new Queue<LabelConsole>();
private readonly int QUEUE_MAX_SIZE = 100;
public override void _Ready() {
mTemplateLabelConsole = ResourceLoader.Load<PackedScene>("res://scenes/user_interface/LabelConsole.tscn");
mCmdInput = GetNode<LineEdit>("CommandInput");
mScrollbar = GetNode<ScrollContainer>("ScrollSet/Scrollbar");
mScrollbarVChild = mScrollbar.GetVScrollbar();
mMessageContainer = GetNode<VBoxContainer>("ScrollSet/Scrollbar/MessageContainer");
mCmdInput.Connect("text_entered", this, nameof(Proc_LineEdit_TextEntered));
mScrollbarVChild.Connect("changed", this, nameof(Proc_ScrollbarVChild_Changed));
BallanceStalkerCore.StalkerManager.Singleton.EventControllerChanged += Proc_StalkerManager_EventControllerChanged;
}
private void Proc_StalkerManager_EventControllerChanged(BallanceStalkerCore.EventControllerSource obj) {
if (obj == BallanceStalkerCore.EventControllerSource.Chat) {
this.Visible = true;
mCmdInput.GrabFocus();
} else if (obj == BallanceStalkerCore.EventControllerSource.Console) {
// same process of chat
// but only add a extra preset charcater in cmd input
this.Visible = true;
mCmdInput.Text = "/";
mCmdInput.CaretPosition = 1;
mCmdInput.GrabFocus();
} else {
this.Visible = false;
}
}
public override void _Input(InputEvent @event) {
if (!this.Visible) return;
if (@event.IsActionPressed("ballance_esc")) {
// clean input
mCmdInput.Text = "";
// back to camera
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.None);
// mark handled to prevent loop call
GetTree().SetInputAsHandled();
}
}
private void AddMessage(string strl, LabelConsoleMessageType t) {
LabelConsole target;
if (mMessageQueue.Count > QUEUE_MAX_SIZE) {
// popup last item and remove it from scene first
target = mMessageQueue.Dequeue();
mMessageContainer.RemoveChild(target);
} else {
target = mTemplateLabelConsole.Instance<LabelConsole>();
}
// add into scene and queue
mMessageQueue.Enqueue(target);
mMessageContainer.AddChild(target);
// set text
target.SetText(strl, t);
}
private void Proc_LineEdit_TextEntered(string new_strl) {
if (new_strl != string.Empty) {
// todo: finish cmd parse
if (new_strl.StartsWith("/")) {
AddMessage(new_strl, LabelConsoleMessageType.Highlight);
} else if (new_strl.StartsWith("!")) {
AddMessage(new_strl, LabelConsoleMessageType.Error);
} else {
AddMessage(new_strl, LabelConsoleMessageType.Normal);
}
// clean cmd
mCmdInput.Text = "";
}
}
private void Proc_ScrollbarVChild_Changed() {
mScrollbar.ScrollVertical = (int)mScrollbarVChild.MaxValue;
}
}

View File

@ -1,75 +0,0 @@
using BallanceStalker;
using Godot;
using System;
public class MenuManager : Control {
public enum MenuPage : int {
Main,
LoadLevel,
LoadSky,
Multiplayer,
About
}
//[Signal]
//public delegate void SetMouseCapture();
[Signal]
public delegate void ExitGame();
private MenuMain mMenuMain;
private MenuPage mCurrentPage;
// Called when the node enters the scene tree for the first time.
public override void _Ready() {
mCurrentPage = MenuPage.Main;
mMenuMain = GetNode<MenuMain>("MenuMain");
mMenuMain.Connect(nameof(MenuMain.MenuMain_GotoPage), this, nameof(Proc_MenuMain_GotoPage));
mMenuMain.Connect(nameof(MenuMain.MenuMain_Back), this, nameof(Proc_MenuMain_Back));
mMenuMain.Connect(nameof(MenuMain.MenuMain_Exit), this, nameof(Proc_MenuMain_Exit));
BallanceStalkerCore.StalkerManager.Singleton.EventControllerChanged += Proc_StalkerManager_EventControllerChanged;
}
private void Proc_StalkerManager_EventControllerChanged(BallanceStalkerCore.EventControllerSource obj) {
if (obj == BallanceStalkerCore.EventControllerSource.Menu) {
this.Visible = true;
} else {
this.Visible = false;
}
}
public override void _Input(InputEvent @event) {
if (!this.Visible) return;
if (@event.IsActionPressed("ballance_esc")) {
if (mCurrentPage == MenuPage.Main) {
// we are in main menu, we need switch visible
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.None);
} else {
// otherwise, back from sub menu
RefreshMenuPage(MenuPage.Main);
}
// mark handled to prevent loop call
GetTree().SetInputAsHandled();
}
}
private void RefreshMenuPage(MenuPage page_type) {
;//todo:
//mCurrentPage = page_type;
}
private void Proc_MenuMain_GotoPage(MenuPage menu_type) {
RefreshMenuPage(menu_type);
}
private void Proc_MenuMain_Back() {
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.None);
}
private void Proc_MenuMain_Exit() {
EmitSignal(nameof(ExitGame));
}
}

View File

@ -1,231 +0,0 @@
using Godot;
using System;
// Reference: https://github.com/godotengine/godot-demo-projects/blob/master/3d/waypoints
public enum ShadowBallType : UInt32 {
Stone,
Wood,
Paper
}
public class ShadowBall : Spatial {
static readonly float MARGIN = 16f; // set it as half of arrow image
static readonly float TEXT_RADIUS = MARGIN + 16f;
private bool mAlwaysTracking = true;
Control mCtl2D;
Spatial mTextArchor, mModelArchor;
TextureRect mPlayerArrow;
Label mPlayername;
Camera mSpectatorCamera = null;
MeshInstance mMeshWood, mMeshStone, mMeshPaper;
ShadowBallType mOldState = ShadowBallType.Wood;
public override void _Ready() {
mCtl2D = GetNode<Control>("TextArchor/Ctl2D");
mTextArchor = GetNode<Spatial>("TextArchor");
mPlayerArrow = GetNode<TextureRect>("TextArchor/Ctl2D/PlayerArrow");
mPlayername = GetNode<Label>("TextArchor/Ctl2D/Playername");
mModelArchor = GetNode<Spatial>("ModelArchor");
mMeshWood = GetNode<MeshInstance>("ModelArchor/Ball_Wood");
mMeshStone = GetNode<MeshInstance>("ModelArchor/Ball_Stone");
mMeshPaper = GetNode<MeshInstance>("ModelArchor/Ball_Paper");
}
public void SetPlayerName(string new_name) {
mPlayername.Text = new_name;
}
public void SetBallState(Vector3 pos, Quat quad, ShadowBallType btype) {
this.Translation = pos;
mModelArchor.Rotation = quad.GetEuler();
if (mOldState != btype) {
switch (mOldState) {
case ShadowBallType.Stone:
mMeshStone.Visible = false;
break;
case ShadowBallType.Wood:
mMeshWood.Visible = false;
break;
case ShadowBallType.Paper:
mMeshPaper.Visible = false;
break;
}
switch (btype) {
case ShadowBallType.Stone:
mMeshStone.Visible = true;
break;
case ShadowBallType.Wood:
mMeshWood.Visible = true;
break;
case ShadowBallType.Paper:
mMeshPaper.Visible = true;
break;
}
mOldState = btype;
}
}
public override void _Process(float delta) {
if (mSpectatorCamera is null || !mSpectatorCamera.Current) {
mSpectatorCamera = GetViewport().GetCamera();
}
if (mSpectatorCamera is null) return;
var parent_translation = mTextArchor.GlobalTransform.origin;
var camera_transform = mSpectatorCamera.GlobalTransform;
var camera_translation = camera_transform.origin;
var unprojected_position = mSpectatorCamera.UnprojectPosition(parent_translation);
// `get_size_override()` will return a valid size only if the stretch mode is `2d`.
// Otherwise, the viewport size is used directly.
var viewport_base_size = GetViewport().GetSizeOverride() > Vector2.Zero ? GetViewport().GetSizeOverride() : GetViewport().Size;
// unprojected_position will return some illegal number, such as inf or nan, so we need to check them here
// if something bad happend, we need hide all UI elements and return immediately
if (Mathf.IsInf(unprojected_position.x) || Mathf.IsInf(unprojected_position.y) ||
Mathf.IsNaN(unprojected_position.x) || Mathf.IsNaN(unprojected_position.y)) {
mCtl2D.Visible = false;
return;
} else {
mCtl2D.Visible = true;
}
// We would use "camera.is_position_behind(parent_translation)", except
// that it also accounts for the near clip plane, which we don't want.
var is_behind = camera_transform.basis.z.Dot(parent_translation - camera_translation) > 0f;
// Fade the waypoint when the camera gets close.
//var distance = camera_translation.DistanceTo(parent_translation);
//mCtl2D.Modulate.a = Godot.Mathf.Clamp(RangeLerp range_lerp(distance, 0, 2, 0, 1), 0, 1);
if (!mAlwaysTracking) {
// For non-sticky waypoints, we don't need to clamp and calculate
// the position if the waypoint goes off screen.
mCtl2D.RectPosition = unprojected_position;
mCtl2D.Visible = !is_behind;
return;
}
// calculate corner position
// We use Liang - Barsky clip to implement this function
var viewport_center = viewport_base_size / 2f;
if (is_behind) {
unprojected_position = viewport_center + (viewport_center - unprojected_position);
}
var relative_pos = unprojected_position - viewport_center;
/*
Liang-Barsky clip
wx_left <= x1+u(x2-x1) <= wx_right
wy_top <= y1+u(y2-y1) <= wy_bottom
p1 = x1-x2;
p2 = x2-x1;
p3 = y1-y2;
p4 = y2-y1;
assume x1 = y1 = 0
left: u(-x2) <= -wx_left
right: u(x2) <= wx_right
bottom: u(y2) <= wy_bottom
top: u(-y2) <= -wy_top
when <= become ==, solve u to get corner data:
left: u1 = wx_left / x2
right: u2 = wx_right / x2
bottom: u3 = wy_bottom / y2
top: u4 = wy_top / y2
u = 0 and 1 indicate the start point and end point of this line.
but we don't need it when `is_behind` is true.
so we modify LB clip method in there
we dont need check requirement: uone > utwo, because it is impossible
that line is outside of viewport entirely.
*/
float u2 = (viewport_center.x - MARGIN) / relative_pos.x,
u1 = -u2;
float u3 = (viewport_center.y - MARGIN) / relative_pos.y,
u4 = -u3;
// becasue p1 = -p2, p3 = -p4
// we need move number to let u1 become negative one and u2 become positive one.
// also the u3, u4.
float cache;
if (Mathf.Sign(relative_pos.x) < 0) {
cache = u1;
u1 = u2;
u2 = cache;
}
if (Mathf.Sign(relative_pos.y) > 0) {
cache = u3;
u3 = u4;
u4 = cache;
}
// we don't need uone, because uone is a const
float uone = 0f, utwo = 1f;
if (relative_pos.x == 0f) {
// only y is valid
if (relative_pos.y == 0f) {
// something goes wrong.
mCtl2D.Visible = false;
return;
} else {
// pick
uone = u3;
utwo = u4;
}
} else {
uone = Mathf.Max(u1, u3);
utwo = Mathf.Min(u2, u4);
}
bool outside_window;
if (!is_behind) {
// if object is not behind the camera, we need to restore the real position of it.
// because previous process assume that the start point and end point of line is ignored.
uone = Mathf.Max(0f, uone);
utwo = Mathf.Min(1f, utwo);
outside_window = utwo != 1f;
} else {
outside_window = true;
}
mCtl2D.RectPosition = (relative_pos * utwo) + viewport_center;
// if player ball is bebind us camera, we need to show a arrow and a playername with it
// otherwise, we only need display username
mPlayerArrow.Visible = outside_window;
if (outside_window) {
// Used to display a diagonal arrow when the waypoint is displayed in
// one of the screen corners.
var deg = Mathf.Rad2Deg(mCtl2D.RectPosition.AngleToPoint(viewport_center));
mPlayerArrow.RectRotation = deg;
var text_pos = mCtl2D.RectPosition.DirectionTo(viewport_center) * TEXT_RADIUS;
text_pos.x -= RangeLerp(mCtl2D.RectPosition.x, MARGIN, viewport_base_size.x - MARGIN, 0f, mPlayername.RectSize.x);
text_pos.y -= RangeLerp(mCtl2D.RectPosition.y, MARGIN, viewport_base_size.y - MARGIN, 0f, mPlayername.RectSize.y);
mPlayername.RectPosition = text_pos;
} else {
mPlayername.RectPosition = (-mPlayername.RectSize) / 2f;
}
}
private static float RangeLerp(float value, float istart, float istop, float ostart, float ostop) {
return ostart + (ostop - ostart) * (value - istart) / (istop - istart);
}
}

View File

@ -1,44 +0,0 @@
using Godot;
using System;
using System.Collections.Generic;
public class ShadowBallManager : Spatial {
private Dictionary<Guid, ShadowBall> mBallDict = new Dictionary<Guid, ShadowBall>();
private PackedScene mTemplateShadowBall;
// Called when the node enters the scene tree for the first time.
public override void _Ready() {
mTemplateShadowBall = ResourceLoader.Load<PackedScene>("res://scenes/stages/ShadowBall.tscn");
}
public Guid AddBall() {
var guid = Guid.NewGuid();
var instance = mTemplateShadowBall.Instance<ShadowBall>();
AddChild(instance);
mBallDict.Add(guid, instance);
return guid;
}
public void SetBallName(Guid ballid, string new_name) {
if (mBallDict.TryGetValue(ballid, out ShadowBall entity)) {
entity.SetPlayerName(new_name);
}
}
public void SetBallState(Guid ballid, Vector3 pos, Quat quad, ShadowBallType btype) {
if (mBallDict.TryGetValue(ballid, out ShadowBall entity)) {
entity.SetBallState(pos, quad, btype);
}
}
public void RemoveBall(Guid ballid) {
if (mBallDict.TryGetValue(ballid, out ShadowBall entity)) {
RemoveChild(entity);
entity.QueueFree();
mBallDict.Remove(ballid);
}
}
}

View File

@ -1,117 +0,0 @@
using Godot;
using System;
public class StalkerCamera : Spatial {
Spatial mFreeCamOrigin = null, mSpecCam = null, mStaticCameraOrigin = null, mStaticCameraTracking = null;
Camera mFreeCam;
private static float BASIC_MOVEMENT = 0.2f;
private static float STATIC_MOVEMENT = 10f;
bool mEnableCamera = false;
object lockMotionMouse = new object();
Vector2 motionMouse = new Vector2(0, 0);
int movementScale = 1;
public override void _Ready() {
mFreeCam = GetNode<Camera>("FreeCam");
mFreeCamOrigin = GetNode<Spatial>("FreeCamOrigin");
mStaticCameraOrigin = GetNode<Spatial>("StaticCamOrigin");
mStaticCameraTracking = GetNode<Spatial>("StaticCamOrigin/StaticCamTracking");
mSpecCam = null;
//Input.SetMouseMode(Input.MouseMode.Captured);
BallanceStalkerCore.StalkerManager.Singleton.EventControllerChanged += Proc_StalkerManager_EventControllerChanged;
}
private void Proc_StalkerManager_EventControllerChanged(BallanceStalkerCore.EventControllerSource obj) {
mEnableCamera = obj == BallanceStalkerCore.EventControllerSource.None;
}
public override void _Process(float delta) {
if (!mEnableCamera) return;
if (mSpecCam is null) {
Vector3 motion3d = new Vector3(0, 0, 0);
if (Input.IsActionPressed("ballance_forward")) motion3d.z -= 1f;
if (Input.IsActionPressed("ballance_backward")) motion3d.z += 1f;
if (Input.IsActionPressed("ballance_left")) motion3d.x -= 1f;
if (Input.IsActionPressed("ballance_right")) motion3d.x += 1f;
if (Input.IsActionPressed("ballance_down")) motion3d.y -= 1f;
if (Input.IsActionPressed("ballance_up")) motion3d.y += 1f;
mFreeCam.Translate(motion3d * (BASIC_MOVEMENT * movementScale));
Vector2 copiedMotion2d;
lock (lockMotionMouse) {
copiedMotion2d = motionMouse;
motionMouse = new Vector2(0, 0);
}
var viewport_base_size = GetViewport().GetSizeOverride() > Vector2.Zero ? GetViewport().GetSizeOverride() : GetViewport().Size;
float window_x = viewport_base_size.x;
Vector3 camRot = mFreeCam.Rotation;
camRot.x = Mathf.Clamp(camRot.x - copiedMotion2d.y * 2 / window_x, -90f, 90f);
camRot.y = camRot.y - copiedMotion2d.x * 2 / window_x;
camRot.z = 0;
mFreeCam.Rotation = camRot;
} else {
mStaticCameraOrigin.Translation = mSpecCam.Translation;
mFreeCam.Transform = mFreeCam.Transform.InterpolateWith(mStaticCameraTracking.Transform, STATIC_MOVEMENT);
}
}
public override void _Input(InputEvent @event) {
if (!mEnableCamera) return;
if (@event.IsActionPressed("ballance_esc")) {
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.Menu);
// mark handled to prevent loop call
GetTree().SetInputAsHandled();
}
if (@event.IsActionPressed("ballance_cmd")) {
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.Console);
// mark handled to prevent loop call
GetTree().SetInputAsHandled();
}
if (@event.IsActionPressed("ballance_chat")) {
BallanceStalkerCore.StalkerManager.Singleton.SetEventController(BallanceStalkerCore.EventControllerSource.Chat);
// mark handled to prevent loop call
GetTree().SetInputAsHandled();
}
// mouse wheel
if (@event is InputEventMouseButton) {
InputEventMouseButton emb = (InputEventMouseButton)@event;
if (emb.IsPressed()) {
if (emb.ButtonIndex == (int)ButtonList.WheelUp) {
movementScale = Mathf.Clamp(movementScale + 1, 1, 50);
}
if (emb.ButtonIndex == (int)ButtonList.WheelDown) {
movementScale = Mathf.Clamp(movementScale - 1, 1, 50);
}
}
}
// mouse motion
if (@event is InputEventMouseMotion) {
var mov = (InputEventMouseMotion)@event;
lock (lockMotionMouse) {
motionMouse += mov.Relative;
}
}
}
public void SetTrackingTarget(Spatial target) {
if (target is null) {
if (!(mSpecCam is null)) {
// shift off from a player archor, we need move free cam origin to target
mFreeCamOrigin.Translation = mSpecCam.Translation;
}
}
// set cam origin
mSpecCam = target;
}
}

View File

@ -1,20 +0,0 @@
using Godot;
using System;
public class StalkerCore : Spatial {
// Declare member variables here. Examples:
// private int a = 2;
// private string b = "text";
// Called when the node enters the scene tree for the first time.
public override void _Ready() {
}
// // Called every frame. 'delta' is the elapsed time since the previous frame.
// public override void _Process(float delta)
// {
//
// }
}

View File

@ -1,34 +0,0 @@
using BallanceStalker;
using Godot;
using System;
public class MenuMain : Control {
[Signal]
public delegate void MenuMain_GotoPage(MenuManager.MenuPage menu_type);
[Signal]
public delegate void MenuMain_Back();
[Signal]
public delegate void MenuMain_Exit();
// Called when the node enters the scene tree for the first time.
public override void _Ready() {
GetNode<ButtonCommon>("MenuList/BtnLoadLevel").Connect("pressed", this, nameof(Proc_GotoPage), new Godot.Collections.Array() { MenuManager.MenuPage.LoadLevel });
GetNode<ButtonCommon>("MenuList/BtnLoadSky").Connect("pressed", this, nameof(Proc_GotoPage), new Godot.Collections.Array() { MenuManager.MenuPage.LoadSky });
GetNode<ButtonCommon>("MenuList/BtnMultiplayer").Connect("pressed", this, nameof(Proc_GotoPage), new Godot.Collections.Array() { MenuManager.MenuPage.Multiplayer });
GetNode<ButtonCommon>("MenuList/BtnAbout").Connect("pressed", this, nameof(Proc_GotoPage), new Godot.Collections.Array() { MenuManager.MenuPage.About });
GetNode<ButtonCommon>("MenuList/BtnBack").Connect("pressed", this, nameof(Proc_Back));
GetNode<ButtonCommon>("MenuList/BtnExit").Connect("pressed", this, nameof(Proc_Exit));
}
private void Proc_GotoPage(MenuManager.MenuPage menu_type) {
EmitSignal(nameof(MenuMain_GotoPage), menu_type);
}
private void Proc_Back() {
EmitSignal(nameof(MenuMain_Back));
}
private void Proc_Exit() {
EmitSignal(nameof(MenuMain_Exit));
}
}

View File

@ -1,10 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BallanceStalkerCore {
public class LogManager {
}
}

View File

@ -1,55 +0,0 @@
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BallanceStalkerCore {
public enum EventControllerSource {
/// <summary>
/// Default statue. It mean that we are now in camera mode.
/// </summary>
None,
/// <summary>
/// Menu take control of event input
/// </summary>
Menu,
/// <summary>
/// Console panel now take control of event input.
/// </summary>
Console,
/// <summary>
/// it is same as console, the only different is preset character
/// </summary>
Chat
}
public class StalkerManager {
public static StalkerManager Singleton = new StalkerManager();
private StalkerManager() {
mEventController = EventControllerSource.None;
mLogger = new LogManager();
mBmmoClient = new BmmoClient(mLogger);
}
public event Action<EventControllerSource> EventControllerChanged;
private EventControllerSource mEventController;
public BmmoClient mBmmoClient;
public LogManager mLogger;
public void SetEventController(EventControllerSource src) {
if (mEventController != src) {
mEventController = src;
}
EventControllerChanged?.Invoke(src);
}
public EventControllerSource GetEventController() {
return mEventController;
}
}
}

View File

@ -1,16 +0,0 @@
using Godot;
using System;
public class ButtonCommon : Button
{
AudioStreamPlayer audio;
public override void _Ready() {
this.Connect("pressed", this, nameof(event_Btn_pressed));
audio = GetNode<AudioStreamPlayer>("AudioClick");
}
private void event_Btn_pressed() {
audio.Play();
}
}

View File

@ -1,39 +0,0 @@
using Godot;
using System;
public class LabelConsole : Control {
Label mRealLabel;
// Called when the node enters the scene tree for the first time.
public override void _Ready() {
mRealLabel = GetNode<Label>("RealLabel");
mRealLabel.Connect("item_rect_changed", this, nameof(Proc_Label_ItemRectChanged));
}
public void SetText(string strl, LabelConsoleMessageType t) {
mRealLabel.Text = strl;
switch (t) {
case LabelConsoleMessageType.Normal:
mRealLabel.Modulate = Colors.White;
break;
case LabelConsoleMessageType.Highlight:
mRealLabel.Modulate = Colors.Yellow;
break;
case LabelConsoleMessageType.Error:
mRealLabel.Modulate = Colors.OrangeRed;
break;
}
this.RectMinSize = new Vector2(0, (mRealLabel.GetLineHeight() + mRealLabel.GetConstant("line_spacing")) * mRealLabel.GetLineCount());
}
private void Proc_Label_ItemRectChanged() {
this.RectMinSize = new Vector2(0, (mRealLabel.GetLineHeight() + mRealLabel.GetConstant("line_spacing")) * mRealLabel.GetLineCount());
}
// // Called every frame. 'delta' is the elapsed time since the previous frame.
// public override void _Process(float delta)
// {
//
// }
}

41
src/BallanceStalker.sln Normal file
View File

@ -0,0 +1,41 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31702.278
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BallanceStalker", "BallanceStalker.csproj", "{55B5D158-D2E5-4A32-9C96-5878BD379AD3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "debug_proj", "debug_proj\debug_proj.csproj", "{A203405D-3F18-4890-8DFC-8752E2BE8225}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
ExportDebug|Any CPU = ExportDebug|Any CPU
ExportRelease|Any CPU = ExportRelease|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Release|Any CPU.ActiveCfg = ExportRelease|Any CPU
{55B5D158-D2E5-4A32-9C96-5878BD379AD3}.Release|Any CPU.Build.0 = ExportRelease|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A203405D-3F18-4890-8DFC-8752E2BE8225}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0F74F6BC-8B1F-4D22-808E-4580D119177C}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B83A5A30-7D9A-4BCC-BB56-2974A2AAE767}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>DebugProj</RootNamespace>
<AssemblyName>DebugProj</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<ProjectTypeGuids>{8F3E2DF0-C35C-4265-82FC-BEA011F4A7ED};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\*.csproj">
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -11,7 +11,7 @@ config_version=4
[application] [application]
config/name="BallanceStalker" config/name="BallanceStalker"
run/main_scene="res://scenes/GameRoot.tscn" run/main_scene="res://scenes/StalkerBase.tscn"
config/icon="res://resources/icons/icon.png" config/icon="res://resources/icons/icon.png"
[display] [display]

View File

@ -1,19 +1,19 @@
[gd_resource type="Theme" load_steps=15 format=2] [gd_resource type="Theme" load_steps=15 format=2]
[ext_resource path="res://resources/user_interface/textures/vscrollbar-scroll-select.png" type="Texture" id=1] [ext_resource path="res://resources/textures/gui/hslider-grabber-select.png" type="Texture" id=1]
[ext_resource path="res://resources/user_interface/textures/vscrollbar-grabber-select.png" type="Texture" id=2] [ext_resource path="res://resources/textures/gui/vscrollbar-scroll-select.png" type="Texture" id=2]
[ext_resource path="res://resources/user_interface/textures/vscrollbar-grabber-deselect.png" type="Texture" id=3] [ext_resource path="res://resources/textures/gui/vscrollbar-grabber-select.png" type="Texture" id=3]
[ext_resource path="res://resources/user_interface/textures/vscrollbar-scroll-deselect.png" type="Texture" id=4] [ext_resource path="res://resources/textures/gui/vscrollbar-grabber-deselect.png" type="Texture" id=4]
[ext_resource path="res://resources/user_interface/textures/hslider-grabber-deselect.png" type="Texture" id=5] [ext_resource path="res://resources/textures/gui/hslider-grabber-deselect.png" type="Texture" id=5]
[ext_resource path="res://resources/user_interface/textures/hslider-grabber-select.png" type="Texture" id=6] [ext_resource path="res://resources/textures/gui/hslider-slider.png" type="Texture" id=6]
[ext_resource path="res://resources/user_interface/textures/hslider-slider.png" type="Texture" id=7] [ext_resource path="res://resources/textures/gui/vscrollbar-scroll-deselect.png" type="Texture" id=7]
[sub_resource type="StyleBoxEmpty" id=1] [sub_resource type="StyleBoxEmpty" id=1]
[sub_resource type="StyleBoxEmpty" id=2] [sub_resource type="StyleBoxEmpty" id=2]
[sub_resource type="StyleBoxTexture" id=3] [sub_resource type="StyleBoxTexture" id=3]
texture = ExtResource( 7 ) texture = ExtResource( 6 )
region_rect = Rect2( 0, 0, 64, 32 ) region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 1.0 margin_left = 1.0
margin_right = 1.0 margin_right = 1.0
@ -21,7 +21,7 @@ margin_top = 14.0
margin_bottom = 14.0 margin_bottom = 14.0
[sub_resource type="StyleBoxTexture" id=4] [sub_resource type="StyleBoxTexture" id=4]
texture = ExtResource( 3 ) texture = ExtResource( 4 )
region_rect = Rect2( 0, 0, 32, 64 ) region_rect = Rect2( 0, 0, 32, 64 )
margin_left = 13.0 margin_left = 13.0
margin_right = 13.0 margin_right = 13.0
@ -29,7 +29,7 @@ margin_top = 3.0
margin_bottom = 3.0 margin_bottom = 3.0
[sub_resource type="StyleBoxTexture" id=5] [sub_resource type="StyleBoxTexture" id=5]
texture = ExtResource( 2 ) texture = ExtResource( 3 )
region_rect = Rect2( 0, 0, 32, 64 ) region_rect = Rect2( 0, 0, 32, 64 )
margin_left = 13.0 margin_left = 13.0
margin_right = 13.0 margin_right = 13.0
@ -37,7 +37,7 @@ margin_top = 3.0
margin_bottom = 3.0 margin_bottom = 3.0
[sub_resource type="StyleBoxTexture" id=6] [sub_resource type="StyleBoxTexture" id=6]
texture = ExtResource( 4 ) texture = ExtResource( 7 )
region_rect = Rect2( 0, 0, 32, 64 ) region_rect = Rect2( 0, 0, 32, 64 )
margin_left = 11.0 margin_left = 11.0
margin_right = 11.0 margin_right = 11.0
@ -45,7 +45,7 @@ margin_top = 1.0
margin_bottom = 1.0 margin_bottom = 1.0
[sub_resource type="StyleBoxTexture" id=7] [sub_resource type="StyleBoxTexture" id=7]
texture = ExtResource( 1 ) texture = ExtResource( 2 )
region_rect = Rect2( 0, 0, 32, 64 ) region_rect = Rect2( 0, 0, 32, 64 )
margin_left = 11.0 margin_left = 11.0
margin_right = 11.0 margin_right = 11.0
@ -55,7 +55,7 @@ margin_bottom = 1.0
[resource] [resource]
HSlider/icons/grabber = ExtResource( 5 ) HSlider/icons/grabber = ExtResource( 5 )
HSlider/icons/grabber_disabled = ExtResource( 5 ) HSlider/icons/grabber_disabled = ExtResource( 5 )
HSlider/icons/grabber_highlight = ExtResource( 6 ) HSlider/icons/grabber_highlight = ExtResource( 1 )
HSlider/icons/tick = null HSlider/icons/tick = null
HSlider/styles/grabber_area = SubResource( 1 ) HSlider/styles/grabber_area = SubResource( 1 )
HSlider/styles/grabber_area_highlight = SubResource( 2 ) HSlider/styles/grabber_area_highlight = SubResource( 2 )

View File

@ -0,0 +1,9 @@
[gd_resource type="DynamicFont" load_steps=3 format=2]
[ext_resource path="res://resources/fonts/font_SquarishSansCT.tres" type="DynamicFontData" id=1]
[ext_resource path="res://resources/fonts/font_SourceHanSansCN.tres" type="DynamicFontData" id=2]
[resource]
size = 12
font_data = ExtResource( 1 )
fallback/0 = ExtResource( 2 )

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 518 KiB

After

Width:  |  Height:  |  Size: 518 KiB

View File

Before

Width:  |  Height:  |  Size: 576 KiB

After

Width:  |  Height:  |  Size: 576 KiB

View File

Before

Width:  |  Height:  |  Size: 631 KiB

After

Width:  |  Height:  |  Size: 631 KiB

View File

Before

Width:  |  Height:  |  Size: 580 KiB

After

Width:  |  Height:  |  Size: 580 KiB

View File

Before

Width:  |  Height:  |  Size: 591 KiB

After

Width:  |  Height:  |  Size: 591 KiB

View File

Before

Width:  |  Height:  |  Size: 446 KiB

After

Width:  |  Height:  |  Size: 446 KiB

View File

Before

Width:  |  Height:  |  Size: 537 KiB

After

Width:  |  Height:  |  Size: 537 KiB

View File

Before

Width:  |  Height:  |  Size: 602 KiB

After

Width:  |  Height:  |  Size: 602 KiB

View File

Before

Width:  |  Height:  |  Size: 546 KiB

After

Width:  |  Height:  |  Size: 546 KiB

View File

Before

Width:  |  Height:  |  Size: 596 KiB

After

Width:  |  Height:  |  Size: 596 KiB

View File

Before

Width:  |  Height:  |  Size: 607 KiB

After

Width:  |  Height:  |  Size: 607 KiB

View File

Before

Width:  |  Height:  |  Size: 486 KiB

After

Width:  |  Height:  |  Size: 486 KiB

View File

@ -0,0 +1,21 @@
[remap]
importer="wav"
type="AudioStreamSample"
path="res://.import/btn_click.wav-250737dca1a0428929c92b4ab8e70e0b.sample"
[deps]
source_file="res://resources/soundeffects/gui/btn_click.wav"
dest_files=[ "res://.import/btn_click.wav-250737dca1a0428929c92b4ab8e70e0b.sample" ]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop=false
compress/mode=0

View File

@ -0,0 +1,11 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/textures/gui/btn-small-deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,6 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2] [gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/btn-small-select.png" type="Texture" id=1] [ext_resource path="res://resources/textures/gui/btn-small-select.png" type="Texture" id=1]
[resource] [resource]
texture = ExtResource( 1 ) texture = ExtResource( 1 )

View File

@ -1,6 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2] [gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/btn_deselect.png" type="Texture" id=1] [ext_resource path="res://resources/textures/gui/btn_deselect.png" type="Texture" id=1]
[resource] [resource]
texture = ExtResource( 1 ) texture = ExtResource( 1 )

View File

@ -1,6 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2] [gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/btn_select.png" type="Texture" id=1] [ext_resource path="res://resources/textures/gui/btn_select.png" type="Texture" id=1]
[resource] [resource]
texture = ExtResource( 1 ) texture = ExtResource( 1 )

View File

@ -0,0 +1,7 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/textures/gui/lineedit_borderless_deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )

View File

@ -0,0 +1,7 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/textures/gui/lineedit_borderless_select.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )

View File

@ -0,0 +1,11 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/textures/gui/lineedit_deselect.png" type="Texture" id=1]
[resource]
texture = ExtResource( 1 )
region_rect = Rect2( 0, 0, 64, 32 )
margin_left = 14.1409
margin_right = 12.785
margin_top = 13.5598
margin_bottom = 13.3661

View File

@ -1,6 +1,6 @@
[gd_resource type="StyleBoxTexture" load_steps=2 format=2] [gd_resource type="StyleBoxTexture" load_steps=2 format=2]
[ext_resource path="res://resources/user_interface/textures/lineedit_select.png" type="Texture" id=1] [ext_resource path="res://resources/textures/gui/lineedit_select.png" type="Texture" id=1]
[resource] [resource]
texture = ExtResource( 1 ) texture = ExtResource( 1 )

View File

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 471 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/btn-small-deselect.png-d715a7f5faa567d48116fddb4bffad5c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/gui/btn-small-deselect.png"
dest_files=[ "res://.import/btn-small-deselect.png-d715a7f5faa567d48116fddb4bffad5c.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

Before

Width:  |  Height:  |  Size: 466 B

After

Width:  |  Height:  |  Size: 466 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/btn-small-select.png-be8ec72b83327ac478a6b9c59d2a7563.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/gui/btn-small-select.png"
dest_files=[ "res://.import/btn-small-select.png-be8ec72b83327ac478a6b9c59d2a7563.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 484 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/btn_deselect.png-00b7f2eab9128d91c7c719e4f6685df5.stex" path="res://.import/btn_deselect.png-f4c23ea1e7ff312deabd84b69eb24168.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/btn_deselect.png" source_file="res://resources/textures/gui/btn_deselect.png"
dest_files=[ "res://.import/btn_deselect.png-00b7f2eab9128d91c7c719e4f6685df5.stex" ] dest_files=[ "res://.import/btn_deselect.png-f4c23ea1e7ff312deabd84b69eb24168.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 493 B

After

Width:  |  Height:  |  Size: 493 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/btn_select.png-9d750292de91408d67d9b5679d5e14ad.stex" path="res://.import/btn_select.png-b16231b52adc557127984e6d58e1572a.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/btn_select.png" source_file="res://resources/textures/gui/btn_select.png"
dest_files=[ "res://.import/btn_select.png-9d750292de91408d67d9b5679d5e14ad.stex" ] dest_files=[ "res://.import/btn_select.png-b16231b52adc557127984e6d58e1572a.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 197 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/hslider-grabber-deselect.png-eb176a60004bc9dd86185e925bada1ca.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resources/textures/gui/hslider-grabber-deselect.png"
dest_files=[ "res://.import/hslider-grabber-deselect.png-eb176a60004bc9dd86185e925bada1ca.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 197 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/btn-small-deselect.png-50de40a7a56e5cc7a3f77da3a18182dc.stex" path="res://.import/hslider-grabber-select.png-f38b699d41ad00ae1de0bbbb40c0cd2e.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/btn-small-deselect.png" source_file="res://resources/textures/gui/hslider-grabber-select.png"
dest_files=[ "res://.import/btn-small-deselect.png-50de40a7a56e5cc7a3f77da3a18182dc.stex" ] dest_files=[ "res://.import/hslider-grabber-select.png-f38b699d41ad00ae1de0bbbb40c0cd2e.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 200 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/hslider-slider.png-e3144ca0191d69c66b3b6002e961fae8.stex" path="res://.import/hslider-slider.png-3eb2d7a672c3fa1416391d0279e35945.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/hslider-slider.png" source_file="res://resources/textures/gui/hslider-slider.png"
dest_files=[ "res://.import/hslider-slider.png-e3144ca0191d69c66b3b6002e961fae8.stex" ] dest_files=[ "res://.import/hslider-slider.png-3eb2d7a672c3fa1416391d0279e35945.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 165 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/lineedit_borderless_deselect.png-5a57d2f0a83a0ea3163638365fbb072b.stex" path="res://.import/lineedit_borderless_deselect.png-72e2e66dc3a8de40ef8cbd9b3b5162e7.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/lineedit_borderless_deselect.png" source_file="res://resources/textures/gui/lineedit_borderless_deselect.png"
dest_files=[ "res://.import/lineedit_borderless_deselect.png-5a57d2f0a83a0ea3163638365fbb072b.stex" ] dest_files=[ "res://.import/lineedit_borderless_deselect.png-72e2e66dc3a8de40ef8cbd9b3b5162e7.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 166 B

After

Width:  |  Height:  |  Size: 166 B

View File

@ -2,15 +2,15 @@
importer="texture" importer="texture"
type="StreamTexture" type="StreamTexture"
path="res://.import/lineedit_borderless_select.png-4aee58b7e500decf6960fa056582c12d.stex" path="res://.import/lineedit_borderless_select.png-60af708dfafe45ec5c1a02982e459da8.stex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://resources/user_interface/textures/lineedit_borderless_select.png" source_file="res://resources/textures/gui/lineedit_borderless_select.png"
dest_files=[ "res://.import/lineedit_borderless_select.png-4aee58b7e500decf6960fa056582c12d.stex" ] dest_files=[ "res://.import/lineedit_borderless_select.png-60af708dfafe45ec5c1a02982e459da8.stex" ]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 406 B

Some files were not shown because too many files have changed in this diff Show More