| @@ -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 | |||
| @@ -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; | |||
| @@ -349,7 +349,7 @@ namespace GameClass.GameObj | |||
| /// 加分 | |||
| /// </summary> | |||
| /// <param name="add">增加量</param> | |||
| 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()); | |||
| } | |||
| } | |||
| /// <summary> | |||
| /// 减分 | |||
| /// </summary> | |||
| /// <param name="sub">减少量</param> | |||
| public void SubScore(int sub) | |||
| { | |||
| lock (gameObjLock) | |||
| { | |||
| score -= sub; | |||
| Debugger.Output(this, " 's score has been subed to: " + score.ToString()); | |||
| } | |||
| } | |||
| /// <summary> | |||
| /// 角色所属队伍ID | |||
| @@ -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); | |||
| @@ -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; | |||
| } | |||