Skip to content
Merged

log #52

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
23 changes: 23 additions & 0 deletions installer/installer/obj/Debug/net8.0/installer.AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Reflection;

[assembly: System.Reflection.AssemblyCompanyAttribute("installer")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766320efb019d4e884b8edfa18de33081a87502a")]
[assembly: System.Reflection.AssemblyProductAttribute("installer")]
[assembly: System.Reflection.AssemblyTitleAttribute("installer")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

// 由 MSBuild WriteCodeFragment 类生成。

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
769cc5aa7bf6ff4abeb2d1325eeb86d7aeaca01abd0d0698e006095cf0112fb3
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = installer
build_property.ProjectDir = C:\Users\贾兴道\Documents\GitHub\THUAI9\installer\installer\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// <auto-generated/>
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
23 changes: 23 additions & 0 deletions installer/installer/obj/Release/net8.0/installer.AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Reflection;

[assembly: System.Reflection.AssemblyCompanyAttribute("installer")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+766320efb019d4e884b8edfa18de33081a87502a")]
[assembly: System.Reflection.AssemblyProductAttribute("installer")]
[assembly: System.Reflection.AssemblyTitleAttribute("installer")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

// 由 MSBuild WriteCodeFragment 类生成。

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1cb606ab90ed97054595fb1ebfec5f069c33efa5ccc93be4247ed2cba23943f3
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = installer
build_property.ProjectDir = C:\Users\贾兴道\Documents\GitHub\THUAI9\installer\installer\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 8.0
build_property.EnableCodeStyleSeverity =
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// <auto-generated/>
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
21 changes: 20 additions & 1 deletion logic/GameClass/GameObj/Character.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@
&& XY.DistanceCeil3(targetObj.Position, Position)
< Radius + targetObj.Radius - GameData.AdjustLength)
return true;
LogicLogging.logger.LogDebug(
LoggingFunctional.CharacterLogInfo(this) +
$" IgnoreCollideExecutor with target {targetObj.ID} of type {targetObj.Type} at position {targetObj.Position}");
return false;
}
private long ChangeCharacterState(CharacterState value = CharacterState.NULL_CHARACTER_STATE, GameObj? gameobj = null)
Expand All @@ -83,7 +86,14 @@
lock (actionLock)
{
CharacterState nowState = characterState;
if (nowState == value) return -1;
if (nowState == value)
{
LogicLogging.logger.LogDebug(
LoggingFunctional.CharacterLogInfo(this) +
$" SetCharacterState called with the same state {value}, no change made");
return -1;
}

else return ChangeCharacterState(value, gameobj);
}
}
Expand Down Expand Up @@ -135,6 +145,9 @@
CanMove.SetROri(false);
position = GameData.PosNotInGame;
}
LogicLogging.logger.LogDebug(
LoggingFunctional.CharacterLogInfo(this) +
$" TryToRemoveFromGame with state {state} succeeded");
return true;
}

Expand Down Expand Up @@ -190,6 +203,9 @@
GoodsLoad.SetInternal(type, newValue);
return true;
}
LogicLogging.logger.LogDebug(

Check warning on line 206 in logic/GameClass/GameObj/Character.cs

View workflow job for this annotation

GitHub Actions / dotnet-build-logic

Unreachable code detected
LoggingFunctional.CharacterLogInfo(this) +
$" SetLoad for {type} to {newValue} failed due to exceeding max carry");
}
internal bool AddLoad(GoodsType type, int delta)
{
Expand All @@ -206,6 +222,9 @@
GoodsLoad.SetInternal(type, target);
return true;
}
LogicLogging.logger.LogDebug(

Check warning on line 225 in logic/GameClass/GameObj/Character.cs

View workflow job for this annotation

GitHub Actions / dotnet-build-logic

Unreachable code detected
LoggingFunctional.CharacterLogInfo(this) +
$" AddLoad for {type} by {delta} failed due to exceeding max carry");
}
}

Expand Down
4 changes: 4 additions & 0 deletions logic/GameClass/GameObj/Map/Map.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,9 @@
XY pos2 = gameObj.Position;
XY del = pos1 - pos2;
if (del * del > character.AttackSize * character.AttackSize)
{
return false;
}
return true;
}
public bool Remove(GameObj gameObj)
Expand All @@ -145,6 +147,7 @@
ans.TryToRemove();
return true;
}
LogicLogging.logger.LogInfo("fail to remove map obj");
return false;
}
public bool RemoveJustFromMap(GameObj gameObj)
Expand All @@ -155,6 +158,7 @@
return true;
}
return false;
LogicLogging.logger.LogInfo("fail to remove from map");

Check warning on line 161 in logic/GameClass/GameObj/Map/Map.cs

View workflow job for this annotation

GitHub Actions / dotnet-build-logic

Unreachable code detected
Comment thread
jxd136 marked this conversation as resolved.
}
public void Add(IGameObj gameObj)
{
Expand Down
2 changes: 2 additions & 0 deletions logic/Gaming/ActionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ public static bool Stop(Character character)
return true;
}
}
LogicLogging.logger.LogWarning("Character is not commandable");
return false;
}
public bool Harvest(Character character)
Expand Down Expand Up @@ -168,6 +169,7 @@ public bool Harvest(Character character)
}
)
{ IsBackground = true }.Start();
LogicLogging.logger.LogInfo("Character starts harvesting resource");
return true;
}
public bool Occupy(Character character)
Expand Down
79 changes: 67 additions & 12 deletions logic/Gaming/CharacterManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,30 @@ public Character CreateCharacter(long teamId, long playerId, CharacterType type)
teamDict[playerId] = ch;
// ensure the character is also added to the map collection
map.Add(ch);
LogicLogging.logger.LogInfo($"Character created: Team {teamId}, Player {playerId}, Type {type}");
return ch;
}

public bool RecruitCharacter(long teamId, long playerId, CharacterType type, XY birthPos)
{
var factory = game.GetTeamFactory(teamId);
if (factory == null) return false;
if (!factory.CanRecruit.Get()) return false;
if (factory == null)
{
LogicLogging.logger.LogError($"Factory not found for Team {teamId} when recruiting character.");
return false;
}
if (!factory.CanRecruit.Get())
{
LogicLogging.logger.LogWarning($"Factory for Team {teamId} cannot recruit at this time.");
return false;
}
var occ = OccupationFactory.FindIOccupation(type);
int cost = occ.Cost;
if (factory.ComputingPower.Get() < cost) return false;
if (factory.ComputingPower.Get() < cost)
{
LogicLogging.logger.LogWarning($"Not enough computing power for Team {teamId} to recruit character. Required: {cost}, Available: {factory.ComputingPower.Get()}");
return false;
}
factory.ComputingPower.SubRNow(cost);
var ch = CreateCharacter(teamId, playerId, type);
ActivateCharacter(teamId, playerId, birthPos);
Expand All @@ -53,8 +66,16 @@ public bool RecruitCharacter(long teamId, long playerId, CharacterType type, XY

public bool ActivateCharacter(long teamId, long playerId, XY pos)
{
if (!teamCharacters.TryGetValue(teamId, out var dict)) return false;
if (!dict.TryGetValue(playerId, out var ch)) return false;
if (!teamCharacters.TryGetValue(teamId, out var dict))
{
LogicLogging.logger.LogError($"Team {teamId} not found when activating character.");
return false;
}
if (!dict.TryGetValue(playerId, out var ch))
{
LogicLogging.logger.LogError($"Character for Team {teamId}, Player {playerId} not found when activating.");
return false;
}
ch.IsRemoved.SetROri(false);
ch.CanMove.SetROri(true);

Expand All @@ -73,7 +94,10 @@ public bool ActivateCharacter(long teamId, long playerId, XY pos)
// 如果找不到合法点则仍使用原位置(可能会导致角色被卡住),但尽量避免该情况
}
}
catch { }
catch
{
LogicLogging.logger.LogError($"Error occurred while checking for collisions or finding spawn position for Team {teamId}, Player {playerId}. Defaulting to original position.");
}

ch.ReSetPos(spawnPos);
ch.SetCharacterState(CharacterState.IDLE);
Expand Down Expand Up @@ -101,9 +125,13 @@ private bool IsPositionColliding(Character ch, XY pos)
{
if (((IMovable)ch).WillCollideWith(obj, pos)) return true;
}
catch { }
catch
{
LogicLogging.logger.LogError($"Error occurred while checking collision between Character (Team {ch.TeamID.Get()}, Player {ch.PlayerID.Get()}) and object ID {obj.ID}. Ignoring this object for collision check.");
}
}
}
LogicLogging.logger.LogDebug($"Position {pos} is free for Character (Team {ch.TeamID.Get()}, Player {ch.PlayerID.Get()}).");
return false;
}

Expand Down Expand Up @@ -138,8 +166,11 @@ private bool TryFindNearbyFreePosition(Character ch, XY center, out XY result)

private void CheckTech(long teamId, Character ch)
{
if (!game.teams.TryGetValue(teamId, out var t)) return;

if (!game.teams.TryGetValue(teamId, out var t))
{
LogicLogging.logger.LogError($"Team {teamId} not found when checking tech for character.");
return;
}
int effLevel = t.GetTech("Efficiency");
int robustLevel = t.GetTech("Robust");
int warriorLevel = t.GetTech("Warrior");
Expand Down Expand Up @@ -178,6 +209,7 @@ public bool TryGetCharacter(long playerId, out Character character)
if (teamDict.TryGetValue(playerId, out character!)) return true;
}
character = null!;
LogicLogging.logger.LogWarning($"Character for Player {playerId} not found in any team.");
return false;
}

Expand All @@ -188,6 +220,7 @@ public bool TryGetCharacter(long teamId, long playerId, out Character character)
{
return dict.TryGetValue(playerId, out character!);
}
LogicLogging.logger.LogWarning($"Team {teamId} not found when trying to get character for Player {playerId}.");
return false;
}

Expand All @@ -200,9 +233,21 @@ public IEnumerable<Character> GetTeamCharacters(long teamId)

public bool Destroy(long teamId, long playerId, CharacterState state = CharacterState.NULL_CHARACTER_STATE)
{
if (!teamCharacters.TryGetValue(teamId, out var dict)) return false;
if (!dict.TryGetValue(playerId, out var ch)) return false;
if (!ch.TryToRemoveFromGame(state)) return false;
if (!teamCharacters.TryGetValue(teamId, out var dict))
{
LogicLogging.logger.LogError($"Team {teamId} not found when trying to destroy character for Player {playerId}.");
return false;
}
if (!dict.TryGetValue(playerId, out var ch))
{
LogicLogging.logger.LogError($"Character for Team {teamId}, Player {playerId} not found when trying to destroy.");
return false;
}
if (!ch.TryToRemoveFromGame(state))
{
LogicLogging.logger.LogWarning($"Failed to remove Character for Team {teamId}, Player {playerId} from game.");
return false;
}
ch.CanMove.SetROri(false);
dict.TryRemove(playerId, out _);
map.Remove(ch);
Expand All @@ -213,6 +258,7 @@ public void BeAttacked(Character character, Character obj)
{
if (obj.TeamID.Get() == character.TeamID.Get())
{
LogicLogging.logger.LogWarning($"Character (Team {character.TeamID.Get()}, Player {character.PlayerID.Get()}) is being attacked by an ally (Team {obj.TeamID.Get()}, Player {obj.PlayerID.Get()}). No damage applied.");
return;
}
long subHP = (long)(obj.AttackPower - character.Robust);
Expand Down Expand Up @@ -243,15 +289,21 @@ public void BeAttacked(Character character, Character obj)
public bool Recover(Character character, long recover)
{
if (recover <= 0)
{
LogicLogging.logger.LogWarning($"Attempted to recover non-positive HP for Character (Team {character.TeamID.Get()}, Player {character.PlayerID.Get()}). No HP recovered.");
return false;
}
character.HP.AddPositiveV(recover);
return true;
}

public bool ImproveATK(Character character, long ATK)
{
if (ATK <= 0)
{
LogicLogging.logger.LogWarning($"Attempted to improve attack power by non-positive value for Character (Team {character.TeamID.Get()}, Player {character.PlayerID.Get()}). No attack power improved.");
return false;
}
character.AttackPower.SetMaxV(character.AttackPower + ATK);
character.AttackPower.AddPositiveV(ATK);
return true;
Expand All @@ -260,7 +312,10 @@ public bool ImproveATK(Character character, long ATK)
public bool ImproveEfficiency(Character character, long efficiency)
{
if (efficiency <= 0)
{
LogicLogging.logger.LogWarning($"Attempted to improve efficiency by non-positive value for Character (Team {character.TeamID.Get()}, Player {character.PlayerID.Get()}). No efficiency improved.");
return false;
}
character.Efficiency.AddPositiveV(efficiency);
return true;
}
Expand Down
Loading
Loading