diff --git a/.github/workflows/upload_deploy.yml b/.github/workflows/upload_deploy.yml new file mode 100644 index 0000000..fec0f22 --- /dev/null +++ b/.github/workflows/upload_deploy.yml @@ -0,0 +1,78 @@ +name: "upload_deploy" + +############################################################################### +# This ci is skipped in THUAI6 for THUAI6 use cloud disk to distribute. +# To use automatically distribution, comment out `if: false` in the following +# two jobs. +############################################################################### + +on: + push: + branches: [ master, dev ] + +jobs: + build_upload: + runs-on: windows-latest + if: false # Skip this job + steps: + - uses: actions/checkout@v1 + + - name: Install SSH + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_PRIVATE_KEY }} + known_hosts: 127.0.0.1 + + - name: Setup dotnet Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 6.0.x + + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.9.2' + architecture: 'x64' + + - name: Git Submodule + run: git submodule update --init --recursive + + - name: Pip Install paramiko + run: pip install paramiko + + - name: Publish + run: | + New-Item -Path . -Name "THUAI6" -ItemType "directory" + cmd /c ./dependency/shell/publish.cmd + python ./dependency/py/upload.py --id 118.195.131.159 --key ${{ secrets.SERVER_PASSWORD }} CAPI THUAI6 + + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + + - name: make directory + run: mkdir ./Server + + - name: Log in to DockerHub + run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 6.0.x + + - name: Git Submodule + run: pushd ./CAPI && git submodule update --init --recursive && popd + + - name: Build CAPI_compile docker image + run: docker build -t ${{ secrets.DOCKER_USERNAME }}/thuai6_compiler:latest -f ./dependency/Dockerfile/Dockerfile_compile . + - name: Push CAPI_compile image to DockerHub + run: docker push ${{ secrets.DOCKER_USERNAME }}/thuai6_compiler:latest + + - name: Publish server + run: dotnet publish "./logic/Server/Server.csproj" -c Release -r linux-x64 --self-contained true -o ./Server + - name: Build runner docker image + run: docker build -t ${{ secrets.DOCKER_USERNAME }}/thuai6_runner:latest -f ./dependency/Dockerfile/Dockerfile_run . + - name: Push runner image to DockerHub + run: docker push ${{ secrets.DOCKER_USERNAME }}/thuai6_runner:latest diff --git a/logic/GameClass/GameObj/Character/Character.Student.cs b/logic/GameClass/GameObj/Character/Character.Student.cs index 60fa091..0aeeb0c 100644 --- a/logic/GameClass/GameObj/Character/Character.Student.cs +++ b/logic/GameClass/GameObj/Character/Character.Student.cs @@ -141,6 +141,12 @@ namespace GameClass.GameObj } } } + public override void AddScore(int add) + { + if (parent == null) + base.AddScore(add); + else parent.AddScore(add); + } public Golem(XY initPos, int initRadius, Character? parent) : base(initPos, initRadius, CharacterType.Robot) { this.parent = parent; diff --git a/logic/GameClass/GameObj/Character/Character.cs b/logic/GameClass/GameObj/Character/Character.cs index 502facf..b6d040a 100644 --- a/logic/GameClass/GameObj/Character/Character.cs +++ b/logic/GameClass/GameObj/Character/Character.cs @@ -349,7 +349,7 @@ namespace GameClass.GameObj /// 加分 /// /// 增加量 - public void AddScore(int add) + public virtual void AddScore(int add) { lock (gameObjLock) { @@ -357,18 +357,6 @@ namespace GameClass.GameObj //Debugger.Output(this, " 's score has been added to: " + score.ToString()); } } - /// - /// 减分 - /// - /// 减少量 - public void SubScore(int sub) - { - lock (gameObjLock) - { - score -= sub; - Debugger.Output(this, " 's score has been subed to: " + score.ToString()); - } - } /// /// 角色所属队伍ID diff --git a/logic/Gaming/CharacterManager .cs b/logic/Gaming/CharacterManager .cs index 5ca5692..071ac60 100644 --- a/logic/Gaming/CharacterManager .cs +++ b/logic/Gaming/CharacterManager .cs @@ -155,7 +155,7 @@ namespace Gaming newPlayer.AddBgm(BgmType.GhostIsComing, (double)newPlayer.AlertnessRadius / XY.Distance(newPlayer.Position, person.Position)); else newPlayer.AddBgm(BgmType.GhostIsComing, 0); } - if (newPlayer.CharacterType != CharacterType.Teacher && !newPlayer.NoHp() && newPlayer.PlayerState != PlayerStateType.Stunned && XY.Distance(newPlayer.Position, person.Position) <= GameData.PinningDownRange) + if (newPlayer.CharacterType != CharacterType.Teacher && newPlayer.CharacterType != CharacterType.Robot && !newPlayer.NoHp() && newPlayer.PlayerState != PlayerStateType.Stunned && XY.Distance(newPlayer.Position, person.Position) <= GameData.PinningDownRange) { TimePinningDown += GameData.checkInterval; newPlayer.AddScore(GameData.StudentScorePinDown(TimePinningDown) - ScoreAdded); diff --git a/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs b/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs index 6d03565..061dc79 100644 --- a/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs +++ b/logic/Gaming/SkillManager/SkillManager.ActiveSkill.cs @@ -103,14 +103,15 @@ namespace Gaming { }); } - public static bool UseRobot(Character player) + public bool UseRobot(Character player) { IGolem? golem = (IGolem?)(((SummonGolem)player.FindIActiveSkill(ActiveSkillType.SummonGolem)).GolemSummoned); - Debugger.Output(player, (golem != null).ToString()); if ((!player.Commandable()) || ((SummonGolem)player.FindIActiveSkill(ActiveSkillType.SummonGolem)).GolemSummoned == null) return false; - Debugger.Output(player, player.PlayerID.ToString()); + Debugger.Output(player, "use robot!"); IActiveSkill activeSkill = player.FindIActiveSkill(ActiveSkillType.UseRobot); activeSkill.IsBeingUsed = (activeSkill.IsBeingUsed) ? false : true; + if (activeSkill.IsBeingUsed) characterManager.SetPlayerState(player, PlayerStateType.UsingSkill); + else characterManager.SetPlayerState(player); return true; }