update render
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -21,3 +21,9 @@ steam/
|
||||
subprojects/*/
|
||||
build_dbg/
|
||||
modules/
|
||||
sdk/
|
||||
artifacts/
|
||||
discord_social_sdk/
|
||||
discord_partner_sdk/
|
||||
steam_api64.dll
|
||||
subprojects/.wraplock
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
- **Comments**: Focus on "why", keep lines to ~100 columns
|
||||
|
||||
### Cell Language Style (JavaScript-like)
|
||||
- **Language**: Cell resembles JavaScript but has key differences - equality operators (`==`, `!=`) perform strict comparisons (equivalent to `===`, `!==` in JavaScript, no type coercion)
|
||||
- **Indentation**: 2 spaces
|
||||
- **Declarations**: `def` for constants, `var` for block-scoped variables (like `let`)
|
||||
- **Equality**: Use `==` only (strict equality, no coercion)
|
||||
|
||||
1
Makefile
1
Makefile
@@ -1,7 +1,6 @@
|
||||
debug: FORCE
|
||||
meson setup build_dbg -Dbuildtype=debugoptimized
|
||||
meson install --only-changed -C build_dbg
|
||||
cp build_dbg/cell . && chmod +x cell
|
||||
|
||||
fast: FORCE
|
||||
meson setup build_fast
|
||||
|
||||
@@ -83,14 +83,11 @@ function mode_rect(src,dst,mode = "stretch")
|
||||
return out;
|
||||
}
|
||||
|
||||
// If camera viewport is defined, will draw to the screen
|
||||
// If target is defined, will render to a target, too
|
||||
cam.make = function()
|
||||
{
|
||||
var c = Object.create(basecam)
|
||||
c.transform = new transform
|
||||
c.transform.unit()
|
||||
c.zoom = 1
|
||||
c.size = [640,360]
|
||||
c.mode = 'keep'
|
||||
c.viewport = {x:0,y:0,width:1,height:1}
|
||||
|
||||
@@ -26,10 +26,18 @@ function make_camera_pblob(camera) {
|
||||
def cw = camera.surface ? camera.surface.width : win_size.width;
|
||||
def ch = camera.surface ? camera.surface.height : win_size.height;
|
||||
|
||||
def zoom = camera.zoom || ch
|
||||
var world_w, world_h;
|
||||
|
||||
def world_h = zoom;
|
||||
def world_w = zoom * cw / ch;
|
||||
if (camera.width && camera.aspect_ratio) {
|
||||
// Use direct world dimensions if specified
|
||||
world_w = camera.width;
|
||||
world_h = camera.width / camera.aspect_ratio;
|
||||
} else {
|
||||
// Fallback to zoom-based calculation
|
||||
def zoom = camera.zoom || ch;
|
||||
world_h = zoom;
|
||||
world_w = zoom * cw / ch;
|
||||
}
|
||||
|
||||
def l = camera.pos[0] - camera.anchor[0] * world_w;
|
||||
def b = camera.pos[1] - camera.anchor[1] * world_h;
|
||||
|
||||
115
tests/steam.ce
Normal file
115
tests/steam.ce
Normal file
@@ -0,0 +1,115 @@
|
||||
var steam = use('steam')
|
||||
|
||||
// Test Steam functionality
|
||||
if (steam && steam.user) {
|
||||
var isLoggedOn = steam.user.logged_on()
|
||||
log.console("Steam user logged on:", isLoggedOn)
|
||||
if (isLoggedOn) {
|
||||
var userName = steam.friends.name()
|
||||
var steamId = steam.user.steam_id()
|
||||
var appId = steam.app.id()
|
||||
log.console("Steam user name: '" + userName + "'")
|
||||
log.console("Steam user ID: '" + steamId.toString() + "'")
|
||||
log.console("Steam app ID: " + appId.toString())
|
||||
|
||||
// Request user stats for achievements
|
||||
steam.stats.request()
|
||||
|
||||
// Display online friends
|
||||
log.console("\n=== ONLINE FRIENDS ===")
|
||||
var friendCount = steam.friends.count(1) // EFriendFlagImmediate = 1
|
||||
if (friendCount > 0) {
|
||||
for (var i = 0; i < friendCount; i++) {
|
||||
var friend = steam.friends.get_friend(i, 1)
|
||||
if (friend) {
|
||||
var friendName = steam.friends.get_friend_persona_name(friend)
|
||||
var friendState = steam.friends.get_friend_persona_state(friend)
|
||||
// Only show online friends (state > 0)
|
||||
if (friendState > 0) {
|
||||
var stateNames = ["Offline", "Online", "Busy", "Away", "Snooze", "Looking to Trade", "Looking to Play"]
|
||||
var stateName = stateNames[friendState] || "Unknown"
|
||||
log.console(" " + friendName + " - " + stateName)
|
||||
|
||||
// Check if friend is playing a game
|
||||
var gameInfo = steam.friends.get_friend_game_played(friend)
|
||||
if (gameInfo && gameInfo.game_id) {
|
||||
var gameName = steam.friends.get_friend_rich_presence(friend, "steam_display")
|
||||
if (gameName) {
|
||||
log.console(" Playing: " + gameName)
|
||||
} else {
|
||||
log.console(" Playing game ID: " + gameInfo.game_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.console(" No friends found or friends list not loaded yet")
|
||||
}
|
||||
|
||||
// Display achievement information
|
||||
log.console("\n=== ACHIEVEMENTS ===")
|
||||
var achievementCount = steam.achievement.count()
|
||||
if (achievementCount > 0) {
|
||||
log.console("Total achievements: " + achievementCount)
|
||||
|
||||
for (var i = 0; i < achievementCount; i++) {
|
||||
var achName = steam.achievement.name(i)
|
||||
if (achName) {
|
||||
var achieved = steam.achievement.get(achName)
|
||||
var displayName = steam.achievement.get_display_attribute(achName, "name")
|
||||
var description = steam.achievement.get_display_attribute(achName, "desc")
|
||||
|
||||
if (achieved) {
|
||||
var unlockInfo = steam.achievement.get_and_unlock_time(achName)
|
||||
if (unlockInfo) {
|
||||
var unlockDate = new Date(unlockInfo.unlock_time * 1000)
|
||||
log.console(" ✓ " + (displayName || achName) + " - Unlocked " + unlockDate.toLocaleDateString())
|
||||
} else {
|
||||
log.console(" ✓ " + (displayName || achName) + " - Unlocked")
|
||||
}
|
||||
} else {
|
||||
// Check for progress on this achievement
|
||||
var progressInt = steam.achievement.get_progress_limits_int(achName)
|
||||
var progressFloat = steam.achievement.get_progress_limits_float(achName)
|
||||
|
||||
var progressText = ""
|
||||
if (progressInt && progressInt.max_progress > 0) {
|
||||
progressText = " (Progress: " + progressInt.min_progress + "/" + progressInt.max_progress + ")"
|
||||
} else if (progressFloat && progressFloat.max_progress > 0) {
|
||||
progressText = " (Progress: " + progressFloat.min_progress.toFixed(1) + "/" + progressFloat.max_progress.toFixed(1) + ")"
|
||||
}
|
||||
|
||||
log.console(" ✗ " + (displayName || achName) + progressText)
|
||||
if (description) {
|
||||
log.console(" " + description)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Show global achievement stats if available
|
||||
steam.stats.request_global_achievement_percentages()
|
||||
|
||||
// Get most achieved achievement info
|
||||
var mostAchieved = steam.achievement.get_most_achieved_info()
|
||||
if (mostAchieved) {
|
||||
log.console("\nMost achieved: " + mostAchieved.name + " (" + mostAchieved.percent.toFixed(1) + "% of players)")
|
||||
}
|
||||
} else {
|
||||
log.console("No achievements found for this game")
|
||||
}
|
||||
|
||||
// Display user phone/security status
|
||||
log.console("\n=== ACCOUNT SECURITY ===")
|
||||
log.console("Phone verified: " + steam.user.is_phone_verified())
|
||||
log.console("Two-factor enabled: " + steam.user.is_two_factor_enabled())
|
||||
log.console("Behind NAT: " + steam.user.is_behind_nat())
|
||||
|
||||
// Display user level and badge info if available
|
||||
var userLevel = steam.user.level()
|
||||
if (userLevel > 0) {
|
||||
log.console("Steam level: " + userLevel)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user